@nmtjs/type 0.5.2 → 0.5.3

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/types/any.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class AnyType extends BaseType {
4
- _;
5
4
  static factory() {
6
5
  return new AnyType(Type.Any());
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/any.ts"],"sourcesContent":["import { type TAny, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class AnyType extends BaseType<TAny> {\n _!: ConstantType<this['schema']>\n\n static factory() {\n return new AnyType(Type.Any())\n }\n}\n"],"names":["Type","BaseType","AnyType","_","factory","Any"],"mappings":"AAAA,SAAoBA,IAAI,QAAQ,oBAAmB;AACnD,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,gBAAgBD;IAC3BE,EAAgC;IAEhC,OAAOC,UAAU;QACf,OAAO,IAAIF,QAAQF,KAAKK,GAAG;IAC7B;AACF"}
1
+ {"version":3,"sources":["../../../src/types/any.ts"],"sourcesContent":["import { type TAny, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class AnyType extends BaseType<TAny> {\n declare _: ConstantType<this['schema']>\n\n static factory() {\n return new AnyType(Type.Any())\n }\n}\n"],"names":["Type","BaseType","AnyType","factory","Any"],"mappings":"AAAA,SAAoBA,IAAI,QAAQ,oBAAmB;AACnD,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,gBAAgBD;IAG3B,OAAOE,UAAU;QACf,OAAO,IAAID,QAAQF,KAAKI,GAAG;IAC7B;AACF"}
@@ -1,9 +1,8 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class ArrayType extends BaseType {
4
- _;
5
4
  static factory(element, options = {}) {
6
- return new ArrayType(Type.Array(element.schema, options));
5
+ return new ArrayType(Type.Array(element.final, options));
7
6
  }
8
7
  min(value) {
9
8
  return ArrayType.factory(this.props.element, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/array.ts"],"sourcesContent":["import {\n type ArrayOptions,\n type StaticDecode,\n type TArray,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType } from './base.ts'\n\nexport class ArrayType<T extends BaseType = BaseType> extends BaseType<\n TArray<T['schema']>,\n { element: T; options: ArrayOptions }\n> {\n _!: {\n encoded: {\n input: TArray<T['_']['encoded']['input']>\n output: TArray<T['_']['encoded']['output']>\n }\n decoded: {\n input: TArray<T['_']['decoded']['input']>\n output: TArray<T['_']['decoded']['output']>\n }\n }\n\n static factory<T extends BaseType>(element: T, options: ArrayOptions = {}) {\n return new ArrayType<T>(Type.Array(element.schema, options))\n }\n\n min(value: number) {\n return ArrayType.factory(this.props.element, {\n ...this.props.options,\n minItems: value,\n })\n }\n\n max(value: number) {\n return ArrayType.factory(this.props.element, {\n ...this.props.options,\n maxItems: value,\n })\n }\n\n length(value: number) {\n return ArrayType.factory(this.props.element, {\n ...this.props.options,\n minItems: value,\n maxItems: value,\n })\n }\n}\n"],"names":["Type","BaseType","ArrayType","_","factory","element","options","Array","schema","min","value","props","minItems","max","maxItems","length"],"mappings":"AAAA,SAIEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAAQ,YAAW;AAEpC,OAAO,MAAMC,kBAAiDD;IAI5DE,EASC;IAED,OAAOC,QAA4BC,OAAU,EAAEC,UAAwB,CAAC,CAAC,EAAE;QACzE,OAAO,IAAIJ,UAAaF,KAAKO,KAAK,CAACF,QAAQG,MAAM,EAAEF;IACrD;IAEAG,IAAIC,KAAa,EAAE;QACjB,OAAOR,UAAUE,OAAO,CAAC,IAAI,CAACO,KAAK,CAACN,OAAO,EAAE;YAC3C,GAAG,IAAI,CAACM,KAAK,CAACL,OAAO;YACrBM,UAAUF;QACZ;IACF;IAEAG,IAAIH,KAAa,EAAE;QACjB,OAAOR,UAAUE,OAAO,CAAC,IAAI,CAACO,KAAK,CAACN,OAAO,EAAE;YAC3C,GAAG,IAAI,CAACM,KAAK,CAACL,OAAO;YACrBQ,UAAUJ;QACZ;IACF;IAEAK,OAAOL,KAAa,EAAE;QACpB,OAAOR,UAAUE,OAAO,CAAC,IAAI,CAACO,KAAK,CAACN,OAAO,EAAE;YAC3C,GAAG,IAAI,CAACM,KAAK,CAACL,OAAO;YACrBM,UAAUF;YACVI,UAAUJ;QACZ;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/types/array.ts"],"sourcesContent":["import {\n type ArrayOptions,\n type StaticDecode,\n type TArray,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType } from './base.ts'\n\nexport class ArrayType<T extends BaseType = BaseType> extends BaseType<\n TArray<T['schema']>,\n { element: T; options: ArrayOptions }\n> {\n declare _: {\n encoded: {\n input: TArray<T['_']['encoded']['input']>\n output: TArray<T['_']['encoded']['output']>\n }\n decoded: {\n input: TArray<T['_']['decoded']['input']>\n output: TArray<T['_']['decoded']['output']>\n }\n }\n\n static factory<T extends BaseType>(element: T, options: ArrayOptions = {}) {\n return new ArrayType<T>(Type.Array(element.final, options))\n }\n\n min(value: number) {\n return ArrayType.factory(this.props.element, {\n ...this.props.options,\n minItems: value,\n })\n }\n\n max(value: number) {\n return ArrayType.factory(this.props.element, {\n ...this.props.options,\n maxItems: value,\n })\n }\n\n length(value: number) {\n return ArrayType.factory(this.props.element, {\n ...this.props.options,\n minItems: value,\n maxItems: value,\n })\n }\n}\n"],"names":["Type","BaseType","ArrayType","factory","element","options","Array","final","min","value","props","minItems","max","maxItems","length"],"mappings":"AAAA,SAIEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAAQ,YAAW;AAEpC,OAAO,MAAMC,kBAAiDD;IAe5D,OAAOE,QAA4BC,OAAU,EAAEC,UAAwB,CAAC,CAAC,EAAE;QACzE,OAAO,IAAIH,UAAaF,KAAKM,KAAK,CAACF,QAAQG,KAAK,EAAEF;IACpD;IAEAG,IAAIC,KAAa,EAAE;QACjB,OAAOP,UAAUC,OAAO,CAAC,IAAI,CAACO,KAAK,CAACN,OAAO,EAAE;YAC3C,GAAG,IAAI,CAACM,KAAK,CAACL,OAAO;YACrBM,UAAUF;QACZ;IACF;IAEAG,IAAIH,KAAa,EAAE;QACjB,OAAOP,UAAUC,OAAO,CAAC,IAAI,CAACO,KAAK,CAACN,OAAO,EAAE;YAC3C,GAAG,IAAI,CAACM,KAAK,CAACL,OAAO;YACrBQ,UAAUJ;QACZ;IACF;IAEAK,OAAOL,KAAa,EAAE;QACpB,OAAOP,UAAUC,OAAO,CAAC,IAAI,CAACO,KAAK,CAACN,OAAO,EAAE;YAC3C,GAAG,IAAI,CAACM,KAAK,CAACL,OAAO;YACrBM,UAAUF;YACVI,UAAUJ;QACZ;IACF;AACF"}
@@ -9,7 +9,10 @@ export class BaseType {
9
9
  const { hasDefault = false, nullable = false, optional = false } = params;
10
10
  this.schema = schema;
11
11
  this.final = schema;
12
- if (nullable) this.final = Nullable(this.final);
12
+ if (nullable) this.final = Nullable({
13
+ ...this.final,
14
+ default: this.final.default ?? null
15
+ });
13
16
  if (optional || hasDefault) this.final = Optional(this.final);
14
17
  this.props = props;
15
18
  this.params = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/base.ts"],"sourcesContent":["import {\n Optional,\n type SchemaOptions,\n type StaticDecode,\n type StaticEncode,\n type TSchema,\n} from '@sinclair/typebox'\nimport {\n Nullable,\n type TNullable,\n type TOptionalUndefined,\n} from '../schemas/nullable.ts'\nimport type { Merge } from '../utils.ts'\n\nexport type TypeProps = Record<string, any>\n\nexport type TypeParams = {\n optional?: boolean\n nullable?: boolean\n hasDefault?: boolean\n encode?: (value: any) => any\n}\n\nexport type DefaultTypeParams = {\n optional: false\n nullable: false\n hasDefault: false\n encode?: TypeParams['encode']\n}\n\nexport type BaseTypeAny<T extends TSchema = TSchema> = BaseType<T, any, any>\n\ntype ResolveNullable<\n T extends TSchema,\n P extends TypeParams,\n> = P['nullable'] extends true\n ? T extends TNullable<infer S>\n ? TNullable<S>\n : TNullable<T>\n : T\n\ntype ResolveOptional<\n T extends TSchema,\n P extends TypeParams,\n> = P['optional'] extends true\n ? T extends TOptionalUndefined<infer S>\n ? TOptionalUndefined<S>\n : TOptionalUndefined<T>\n : T\n\ntype ResolveDefault<\n T extends TSchema,\n P extends TypeParams,\n> = P['hasDefault'] extends true\n ? T extends TOptionalUndefined<infer U>\n ? U\n : T\n : T\n\nexport abstract class BaseType<\n Schema extends TSchema = TSchema,\n Props extends TypeProps = TypeProps,\n Params extends TypeParams = DefaultTypeParams,\n> {\n abstract _: {\n encoded: {\n input: TSchema\n output: TSchema\n }\n decoded: {\n input: TSchema\n output: TSchema\n }\n }\n\n readonly schema: Schema\n readonly final: TSchema\n readonly props: Props\n readonly params: Params\n\n constructor(\n schema: Schema,\n props: Props = {} as Props,\n params: Params = {} as Params,\n ) {\n const { hasDefault = false, nullable = false, optional = false } = params\n this.schema = schema\n this.final = schema\n if (nullable) this.final = Nullable(this.final) as any\n if (optional || hasDefault) this.final = Optional(this.final) as any\n\n this.props = props\n this.params = {\n hasDefault,\n nullable,\n optional,\n } as Params\n }\n\n optional(): OptionalType<this> {\n return OptionalType.factory(this) as any\n }\n\n nullable(): NullableType<this> {\n return NullableType.factory(this) as any\n }\n\n nullish() {\n return this.nullable().optional()\n }\n\n default(\n value: StaticDecode<this['_']['decoded']['output']>,\n ): DefaultType<this> {\n return DefaultType.factory(\n this,\n this.params.encode?.(value) ?? value,\n ) as any\n }\n\n description(description: string): this {\n const ThisConstructor = this.constructor as any\n return new ThisConstructor(\n {\n ...this.schema,\n description,\n },\n this.props,\n this.params,\n ) as any\n }\n\n examples(...examples: any[]): this {\n const ThisConstructor = this.constructor as any\n return new ThisConstructor(\n {\n ...this.schema,\n examples,\n },\n this.props,\n this.params,\n ) as any\n }\n}\n\nexport type ConstantType<T extends TSchema> = {\n encoded: {\n input: T\n output: T\n }\n decoded: {\n input: T\n output: T\n }\n}\n\nexport type Static<\n T extends BaseTypeAny,\n P extends TypeProps,\n Params extends Merge<T['params'], P> = Merge<T['params'], P>,\n> = {\n encoded: {\n input: ResolveOptional<\n ResolveNullable<T['_']['encoded']['input'], Params>,\n Params\n >\n output: ResolveDefault<\n ResolveOptional<\n ResolveNullable<T['_']['encoded']['output'], Params>,\n Params\n >,\n Params\n >\n }\n decoded: {\n input: ResolveOptional<\n ResolveNullable<T['_']['decoded']['input'], Params>,\n Params\n >\n output: ResolveDefault<\n ResolveOptional<\n ResolveNullable<T['_']['decoded']['output'], Params>,\n Params\n >,\n Params\n >\n }\n}\n\nexport class OptionalType<\n Type extends BaseTypeAny<any>,\n Params extends TypeParams = DefaultTypeParams,\n> extends BaseType<Type['schema'], { inner: Type }, Params> {\n _!: Static<Type, Params>\n\n static factory<T extends BaseTypeAny<any>>(type: T) {\n return new OptionalType<T, Merge<T['params'], { optional: true }>>(\n type.schema,\n { inner: type },\n { ...type.params, optional: true } as any,\n )\n }\n}\n\nexport class NullableType<\n Type extends BaseTypeAny<any>,\n Params extends TypeParams = DefaultTypeParams,\n> extends BaseType<Type['schema'], { inner: Type }, Params> {\n _!: Static<Type, Params>\n\n static factory<T extends BaseTypeAny<any>>(type: T) {\n return new NullableType<T, Merge<T['params'], { nullable: true }>>(\n type.schema,\n { inner: type },\n { ...type.params, nullable: true } as any,\n )\n }\n}\n\nexport class DefaultType<\n Type extends BaseTypeAny<any>,\n Params extends TypeParams = DefaultTypeParams,\n> extends BaseType<Type['schema'], { inner: Type }, Params> {\n _!: Static<Type, Params>\n\n static factory<T extends BaseTypeAny<any>>(type: T, defaultValue: any) {\n return new DefaultType<T, Merge<T['params'], { hasDefault: true }>>(\n { ...type.schema, default: defaultValue },\n { inner: type },\n { ...type.params, hasDefault: true } as any,\n )\n }\n}\n"],"names":["Optional","Nullable","BaseType","schema","final","props","params","constructor","hasDefault","nullable","optional","OptionalType","factory","NullableType","nullish","default","value","DefaultType","encode","description","ThisConstructor","examples","_","type","inner","defaultValue"],"mappings":"AAAA,SACEA,QAAQ,QAKH,oBAAmB;AAC1B,SACEC,QAAQ,QAGH,yBAAwB;AAgD/B,OAAO,MAAeC;IAgBXC,OAAc;IACdC,MAAc;IACdC,MAAY;IACZC,OAAc;IAEvBC,YACEJ,MAAc,EACdE,QAAe,CAAC,CAAU,EAC1BC,SAAiB,CAAC,CAAW,CAC7B;QACA,MAAM,EAAEE,aAAa,KAAK,EAAEC,WAAW,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGJ;QACnE,IAAI,CAACH,MAAM,GAAGA;QACd,IAAI,CAACC,KAAK,GAAGD;QACb,IAAIM,UAAU,IAAI,CAACL,KAAK,GAAGH,SAAS,IAAI,CAACG,KAAK;QAC9C,IAAIM,YAAYF,YAAY,IAAI,CAACJ,KAAK,GAAGJ,SAAS,IAAI,CAACI,KAAK;QAE5D,IAAI,CAACC,KAAK,GAAGA;QACb,IAAI,CAACC,MAAM,GAAG;YACZE;YACAC;YACAC;QACF;IACF;IAEAA,WAA+B;QAC7B,OAAOC,aAAaC,OAAO,CAAC,IAAI;IAClC;IAEAH,WAA+B;QAC7B,OAAOI,aAAaD,OAAO,CAAC,IAAI;IAClC;IAEAE,UAAU;QACR,OAAO,IAAI,CAACL,QAAQ,GAAGC,QAAQ;IACjC;IAEAK,QACEC,KAAmD,EAChC;QACnB,OAAOC,YAAYL,OAAO,CACxB,IAAI,EACJ,IAAI,CAACN,MAAM,CAACY,MAAM,GAAGF,UAAUA;IAEnC;IAEAG,YAAYA,WAAmB,EAAQ;QACrC,MAAMC,kBAAkB,IAAI,CAACb,WAAW;QACxC,OAAO,IAAIa,gBACT;YACE,GAAG,IAAI,CAACjB,MAAM;YACdgB;QACF,GACA,IAAI,CAACd,KAAK,EACV,IAAI,CAACC,MAAM;IAEf;IAEAe,SAAS,GAAGA,QAAe,EAAQ;QACjC,MAAMD,kBAAkB,IAAI,CAACb,WAAW;QACxC,OAAO,IAAIa,gBACT;YACE,GAAG,IAAI,CAACjB,MAAM;YACdkB;QACF,GACA,IAAI,CAAChB,KAAK,EACV,IAAI,CAACC,MAAM;IAEf;AACF;AA8CA,OAAO,MAAMK,qBAGHT;IACRoB,EAAwB;IAExB,OAAOV,QAAoCW,IAAO,EAAE;QAClD,OAAO,IAAIZ,aACTY,KAAKpB,MAAM,EACX;YAAEqB,OAAOD;QAAK,GACd;YAAE,GAAGA,KAAKjB,MAAM;YAAEI,UAAU;QAAK;IAErC;AACF;AAEA,OAAO,MAAMG,qBAGHX;IACRoB,EAAwB;IAExB,OAAOV,QAAoCW,IAAO,EAAE;QAClD,OAAO,IAAIV,aACTU,KAAKpB,MAAM,EACX;YAAEqB,OAAOD;QAAK,GACd;YAAE,GAAGA,KAAKjB,MAAM;YAAEG,UAAU;QAAK;IAErC;AACF;AAEA,OAAO,MAAMQ,oBAGHf;IACRoB,EAAwB;IAExB,OAAOV,QAAoCW,IAAO,EAAEE,YAAiB,EAAE;QACrE,OAAO,IAAIR,YACT;YAAE,GAAGM,KAAKpB,MAAM;YAAEY,SAASU;QAAa,GACxC;YAAED,OAAOD;QAAK,GACd;YAAE,GAAGA,KAAKjB,MAAM;YAAEE,YAAY;QAAK;IAEvC;AACF"}
1
+ {"version":3,"sources":["../../../src/types/base.ts"],"sourcesContent":["import {\n Optional,\n type SchemaOptions,\n type StaticDecode,\n type StaticEncode,\n type TSchema,\n} from '@sinclair/typebox'\nimport {\n Nullable,\n type TNullable,\n type TOptionalUndefined,\n} from '../schemas/nullable.ts'\nimport type { Merge } from '../utils.ts'\n\nexport type TypeProps = Record<string, any>\n\nexport type TypeParams = {\n optional?: boolean\n nullable?: boolean\n hasDefault?: boolean\n encode?: (value: any) => any\n}\n\nexport type DefaultTypeParams = {\n optional: false\n nullable: false\n hasDefault: false\n encode?: TypeParams['encode']\n}\n\nexport type BaseTypeAny<T extends TSchema = TSchema> = BaseType<T, any, any>\n\ntype ResolveNullable<\n T extends TSchema,\n P extends TypeParams,\n> = P['nullable'] extends true\n ? T extends TNullable<infer S>\n ? TNullable<S>\n : TNullable<T>\n : T\n\ntype ResolveOptional<\n T extends TSchema,\n P extends TypeParams,\n> = P['optional'] extends true\n ? T extends TOptionalUndefined<infer S>\n ? TOptionalUndefined<S>\n : TOptionalUndefined<T>\n : T\n\ntype ResolveDefault<\n T extends TSchema,\n P extends TypeParams,\n> = P['hasDefault'] extends true\n ? T extends TOptionalUndefined<infer U>\n ? U\n : T\n : T\n\nexport abstract class BaseType<\n Schema extends TSchema = TSchema,\n Props extends TypeProps = TypeProps,\n Params extends TypeParams = DefaultTypeParams,\n> {\n abstract _: {\n encoded: {\n input: TSchema\n output: TSchema\n }\n decoded: {\n input: TSchema\n output: TSchema\n }\n }\n\n readonly schema: Schema\n readonly final: TSchema\n readonly props: Props\n readonly params: Params\n\n constructor(\n schema: Schema,\n props: Props = {} as Props,\n params: Params = {} as Params,\n ) {\n const { hasDefault = false, nullable = false, optional = false } = params\n this.schema = schema\n this.final = schema\n\n if (nullable)\n this.final = Nullable({\n ...this.final,\n default: this.final.default ?? null,\n }) as any\n if (optional || hasDefault) this.final = Optional(this.final) as any\n\n this.props = props\n this.params = {\n hasDefault,\n nullable,\n optional,\n } as Params\n }\n\n optional(): OptionalType<this> {\n return OptionalType.factory(this) as any\n }\n\n nullable(): NullableType<this> {\n return NullableType.factory(this) as any\n }\n\n nullish() {\n return this.nullable().optional()\n }\n\n default(\n value: StaticDecode<this['_']['decoded']['output']>,\n ): DefaultType<this> {\n return DefaultType.factory(\n this,\n this.params.encode?.(value) ?? value,\n ) as any\n }\n\n description(description: string): this {\n const ThisConstructor = this.constructor as any\n return new ThisConstructor(\n {\n ...this.schema,\n description,\n },\n this.props,\n this.params,\n ) as any\n }\n\n examples(...examples: any[]): this {\n const ThisConstructor = this.constructor as any\n return new ThisConstructor(\n {\n ...this.schema,\n examples,\n },\n this.props,\n this.params,\n ) as any\n }\n}\n\nexport type ConstantType<T extends TSchema> = {\n encoded: {\n input: T\n output: T\n }\n decoded: {\n input: T\n output: T\n }\n}\n\nexport type Static<\n T extends BaseTypeAny,\n P extends TypeProps,\n Params extends Merge<T['params'], P> = Merge<T['params'], P>,\n> = {\n encoded: {\n input: ResolveOptional<\n ResolveNullable<T['_']['encoded']['input'], Params>,\n Params\n >\n output: ResolveDefault<\n ResolveOptional<\n ResolveNullable<T['_']['encoded']['output'], Params>,\n Params\n >,\n Params\n >\n }\n decoded: {\n input: ResolveOptional<\n ResolveNullable<T['_']['decoded']['input'], Params>,\n Params\n >\n output: ResolveDefault<\n ResolveOptional<\n ResolveNullable<T['_']['decoded']['output'], Params>,\n Params\n >,\n Params\n >\n }\n}\n\nexport class OptionalType<\n Type extends BaseTypeAny<any>,\n Params extends TypeParams = DefaultTypeParams,\n> extends BaseType<Type['schema'], { inner: Type }, Params> {\n _!: Static<Type, Params>\n\n static factory<T extends BaseTypeAny<any>>(type: T) {\n return new OptionalType<T, Merge<T['params'], { optional: true }>>(\n type.schema,\n { inner: type },\n { ...type.params, optional: true } as any,\n )\n }\n}\n\nexport class NullableType<\n Type extends BaseTypeAny<any>,\n Params extends TypeParams = DefaultTypeParams,\n> extends BaseType<Type['schema'], { inner: Type }, Params> {\n _!: Static<Type, Params>\n\n static factory<T extends BaseTypeAny<any>>(type: T) {\n return new NullableType<T, Merge<T['params'], { nullable: true }>>(\n type.schema,\n { inner: type },\n { ...type.params, nullable: true } as any,\n )\n }\n}\n\nexport class DefaultType<\n Type extends BaseTypeAny<any>,\n Params extends TypeParams = DefaultTypeParams,\n> extends BaseType<Type['schema'], { inner: Type }, Params> {\n _!: Static<Type, Params>\n\n static factory<T extends BaseTypeAny<any>>(type: T, defaultValue: any) {\n return new DefaultType<T, Merge<T['params'], { hasDefault: true }>>(\n { ...type.schema, default: defaultValue },\n { inner: type },\n { ...type.params, hasDefault: true } as any,\n )\n }\n}\n"],"names":["Optional","Nullable","BaseType","schema","final","props","params","constructor","hasDefault","nullable","optional","default","OptionalType","factory","NullableType","nullish","value","DefaultType","encode","description","ThisConstructor","examples","_","type","inner","defaultValue"],"mappings":"AAAA,SACEA,QAAQ,QAKH,oBAAmB;AAC1B,SACEC,QAAQ,QAGH,yBAAwB;AAgD/B,OAAO,MAAeC;IAgBXC,OAAc;IACdC,MAAc;IACdC,MAAY;IACZC,OAAc;IAEvBC,YACEJ,MAAc,EACdE,QAAe,CAAC,CAAU,EAC1BC,SAAiB,CAAC,CAAW,CAC7B;QACA,MAAM,EAAEE,aAAa,KAAK,EAAEC,WAAW,KAAK,EAAEC,WAAW,KAAK,EAAE,GAAGJ;QACnE,IAAI,CAACH,MAAM,GAAGA;QACd,IAAI,CAACC,KAAK,GAAGD;QAEb,IAAIM,UACF,IAAI,CAACL,KAAK,GAAGH,SAAS;YACpB,GAAG,IAAI,CAACG,KAAK;YACbO,SAAS,IAAI,CAACP,KAAK,CAACO,OAAO,IAAI;QACjC;QACF,IAAID,YAAYF,YAAY,IAAI,CAACJ,KAAK,GAAGJ,SAAS,IAAI,CAACI,KAAK;QAE5D,IAAI,CAACC,KAAK,GAAGA;QACb,IAAI,CAACC,MAAM,GAAG;YACZE;YACAC;YACAC;QACF;IACF;IAEAA,WAA+B;QAC7B,OAAOE,aAAaC,OAAO,CAAC,IAAI;IAClC;IAEAJ,WAA+B;QAC7B,OAAOK,aAAaD,OAAO,CAAC,IAAI;IAClC;IAEAE,UAAU;QACR,OAAO,IAAI,CAACN,QAAQ,GAAGC,QAAQ;IACjC;IAEAC,QACEK,KAAmD,EAChC;QACnB,OAAOC,YAAYJ,OAAO,CACxB,IAAI,EACJ,IAAI,CAACP,MAAM,CAACY,MAAM,GAAGF,UAAUA;IAEnC;IAEAG,YAAYA,WAAmB,EAAQ;QACrC,MAAMC,kBAAkB,IAAI,CAACb,WAAW;QACxC,OAAO,IAAIa,gBACT;YACE,GAAG,IAAI,CAACjB,MAAM;YACdgB;QACF,GACA,IAAI,CAACd,KAAK,EACV,IAAI,CAACC,MAAM;IAEf;IAEAe,SAAS,GAAGA,QAAe,EAAQ;QACjC,MAAMD,kBAAkB,IAAI,CAACb,WAAW;QACxC,OAAO,IAAIa,gBACT;YACE,GAAG,IAAI,CAACjB,MAAM;YACdkB;QACF,GACA,IAAI,CAAChB,KAAK,EACV,IAAI,CAACC,MAAM;IAEf;AACF;AA8CA,OAAO,MAAMM,qBAGHV;IACRoB,EAAwB;IAExB,OAAOT,QAAoCU,IAAO,EAAE;QAClD,OAAO,IAAIX,aACTW,KAAKpB,MAAM,EACX;YAAEqB,OAAOD;QAAK,GACd;YAAE,GAAGA,KAAKjB,MAAM;YAAEI,UAAU;QAAK;IAErC;AACF;AAEA,OAAO,MAAMI,qBAGHZ;IACRoB,EAAwB;IAExB,OAAOT,QAAoCU,IAAO,EAAE;QAClD,OAAO,IAAIT,aACTS,KAAKpB,MAAM,EACX;YAAEqB,OAAOD;QAAK,GACd;YAAE,GAAGA,KAAKjB,MAAM;YAAEG,UAAU;QAAK;IAErC;AACF;AAEA,OAAO,MAAMQ,oBAGHf;IACRoB,EAAwB;IAExB,OAAOT,QAAoCU,IAAO,EAAEE,YAAiB,EAAE;QACrE,OAAO,IAAIR,YACT;YAAE,GAAGM,KAAKpB,MAAM;YAAEQ,SAASc;QAAa,GACxC;YAAED,OAAOD;QAAK,GACd;YAAE,GAAGA,KAAKjB,MAAM;YAAEE,YAAY;QAAK;IAEvC;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class BooleanType extends BaseType {
4
- _;
5
4
  static factory() {
6
5
  return new BooleanType(Type.Boolean());
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/boolean.ts"],"sourcesContent":["import {\n type SchemaOptions,\n type StaticDecode,\n type TBoolean,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class BooleanType extends BaseType<TBoolean> {\n _!: ConstantType<this['schema']>\n\n static factory() {\n return new BooleanType(Type.Boolean())\n }\n}\n"],"names":["Type","BaseType","BooleanType","_","factory","Boolean"],"mappings":"AAAA,SAIEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,oBAAoBD;IAC/BE,EAAgC;IAEhC,OAAOC,UAAU;QACf,OAAO,IAAIF,YAAYF,KAAKK,OAAO;IACrC;AACF"}
1
+ {"version":3,"sources":["../../../src/types/boolean.ts"],"sourcesContent":["import {\n type SchemaOptions,\n type StaticDecode,\n type TBoolean,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class BooleanType extends BaseType<TBoolean> {\n declare _: ConstantType<this['schema']>\n\n static factory() {\n return new BooleanType(Type.Boolean())\n }\n}\n"],"names":["Type","BaseType","BooleanType","factory","Boolean"],"mappings":"AAAA,SAIEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,oBAAoBD;IAG/B,OAAOE,UAAU;QACf,OAAO,IAAID,YAAYF,KAAKI,OAAO;IACrC;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class TransformType extends BaseType {
4
- _;
5
4
  }
6
5
  export class CustomType extends TransformType {
7
6
  static factory(decode, encode, schema = Type.Any()) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/custom.ts"],"sourcesContent":["import {\n type TAny,\n type TTransform,\n type TUnsafe,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport type CustomTypeDecode<T> = (value: any) => T\nexport type CustomTypeEncode<T> = (value: T) => any\n\nexport abstract class TransformType<T, S = TAny> extends BaseType<\n TTransform<TUnsafe<S>, T>\n> {\n _!: ConstantType<this['schema']>\n}\n\nexport class CustomType<T, S = TAny> extends TransformType<T, S> {\n static factory<T, S = TAny>(\n decode: CustomTypeDecode<T>,\n encode: CustomTypeEncode<T>,\n schema = Type.Any() as unknown as TUnsafe<S>,\n ) {\n return new CustomType<T, S>(\n Type.Transform(schema as unknown as TUnsafe<S>)\n .Decode(decode)\n .Encode(encode),\n {},\n { encode } as any,\n )\n }\n}\n"],"names":["Type","BaseType","TransformType","_","CustomType","factory","decode","encode","schema","Any","Transform","Decode","Encode"],"mappings":"AAAA,SAIEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAKvD,OAAO,MAAeC,sBAAmCD;IAGvDE,EAAgC;AAClC;AAEA,OAAO,MAAMC,mBAAgCF;IAC3C,OAAOG,QACLC,MAA2B,EAC3BC,MAA2B,EAC3BC,SAASR,KAAKS,GAAG,EAA2B,EAC5C;QACA,OAAO,IAAIL,WACTJ,KAAKU,SAAS,CAACF,QACZG,MAAM,CAACL,QACPM,MAAM,CAACL,SACV,CAAC,GACD;YAAEA;QAAO;IAEb;AACF"}
1
+ {"version":3,"sources":["../../../src/types/custom.ts"],"sourcesContent":["import {\n type TAny,\n type TTransform,\n type TUnsafe,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport type CustomTypeDecode<T> = (value: any) => T\nexport type CustomTypeEncode<T> = (value: T) => any\n\nexport abstract class TransformType<T, S = TAny> extends BaseType<\n TTransform<TUnsafe<S>, T>\n> {\n declare _: ConstantType<this['schema']>\n}\n\nexport class CustomType<T, S = TAny> extends TransformType<T, S> {\n static factory<T, S = TAny>(\n decode: CustomTypeDecode<T>,\n encode: CustomTypeEncode<T>,\n schema = Type.Any() as unknown as TUnsafe<S>,\n ) {\n return new CustomType<T, S>(\n Type.Transform(schema as unknown as TUnsafe<S>)\n .Decode(decode)\n .Encode(encode),\n {},\n { encode } as any,\n )\n }\n}\n"],"names":["Type","BaseType","TransformType","CustomType","factory","decode","encode","schema","Any","Transform","Decode","Encode"],"mappings":"AAAA,SAIEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAKvD,OAAO,MAAeC,sBAAmCD;AAIzD;AAEA,OAAO,MAAME,mBAAgCD;IAC3C,OAAOE,QACLC,MAA2B,EAC3BC,MAA2B,EAC3BC,SAASP,KAAKQ,GAAG,EAA2B,EAC5C;QACA,OAAO,IAAIL,WACTH,KAAKS,SAAS,CAACF,QACZG,MAAM,CAACL,QACPM,MAAM,CAACL,SACV,CAAC,GACD;YAAEA;QAAO;IAEb;AACF"}
@@ -1,13 +1,11 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class ObjectEnumType extends BaseType {
4
- _;
5
4
  static factory(values) {
6
5
  return new ObjectEnumType(Type.Enum(values));
7
6
  }
8
7
  }
9
8
  export class EnumType extends BaseType {
10
- _;
11
9
  static factory(values) {
12
10
  return new EnumType(Type.Enum(Object.fromEntries(values.map((v)=>[
13
11
  v,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/enum.ts"],"sourcesContent":["import {\n Enum,\n type SchemaOptions,\n type StaticDecode,\n type TEnum,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class ObjectEnumType<\n T extends { [K in string]: K } = { [K in string]: K },\n> extends BaseType<TEnum<T>> {\n _!: ConstantType<this['schema']>\n\n static factory<T extends { [K in string]: K }>(values: T) {\n return new ObjectEnumType<T>(Type.Enum(values as any))\n }\n}\n\nexport class EnumType<\n T extends (string | number)[] = (string | number)[],\n> extends BaseType<TEnum<Record<string, T[number]>>> {\n _!: ConstantType<this['schema']>\n\n static factory<T extends (string | number)[]>(values: [...T]) {\n return new EnumType<T>(\n Type.Enum(Object.fromEntries(values.map((v) => [v, v])) as any),\n )\n }\n}\n"],"names":["Type","BaseType","ObjectEnumType","_","factory","values","Enum","EnumType","Object","fromEntries","map","v"],"mappings":"AAAA,SAKEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,uBAEHD;IACRE,EAAgC;IAEhC,OAAOC,QAAwCC,MAAS,EAAE;QACxD,OAAO,IAAIH,eAAkBF,KAAKM,IAAI,CAACD;IACzC;AACF;AAEA,OAAO,MAAME,iBAEHN;IACRE,EAAgC;IAEhC,OAAOC,QAAuCC,MAAc,EAAE;QAC5D,OAAO,IAAIE,SACTP,KAAKM,IAAI,CAACE,OAAOC,WAAW,CAACJ,OAAOK,GAAG,CAAC,CAACC,IAAM;gBAACA;gBAAGA;aAAE;IAEzD;AACF"}
1
+ {"version":3,"sources":["../../../src/types/enum.ts"],"sourcesContent":["import {\n Enum,\n type SchemaOptions,\n type StaticDecode,\n type TEnum,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class ObjectEnumType<\n T extends { [K in string]: K } = { [K in string]: K },\n> extends BaseType<TEnum<T>> {\n declare _: ConstantType<this['schema']>\n\n static factory<T extends { [K in string]: K }>(values: T) {\n return new ObjectEnumType<T>(Type.Enum(values as any))\n }\n}\n\nexport class EnumType<\n T extends (string | number)[] = (string | number)[],\n> extends BaseType<TEnum<Record<string, T[number]>>> {\n declare _: ConstantType<this['schema']>\n\n static factory<T extends (string | number)[]>(values: [...T]) {\n return new EnumType<T>(\n Type.Enum(Object.fromEntries(values.map((v) => [v, v])) as any),\n )\n }\n}\n"],"names":["Type","BaseType","ObjectEnumType","factory","values","Enum","EnumType","Object","fromEntries","map","v"],"mappings":"AAAA,SAKEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,uBAEHD;IAGR,OAAOE,QAAwCC,MAAS,EAAE;QACxD,OAAO,IAAIF,eAAkBF,KAAKK,IAAI,CAACD;IACzC;AACF;AAEA,OAAO,MAAME,iBAEHL;IAGR,OAAOE,QAAuCC,MAAc,EAAE;QAC5D,OAAO,IAAIE,SACTN,KAAKK,IAAI,CAACE,OAAOC,WAAW,CAACJ,OAAOK,GAAG,CAAC,CAACC,IAAM;gBAACA;gBAAGA;aAAE;IAEzD;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class LiteralType extends BaseType {
4
- _;
5
4
  static factory(value) {
6
5
  return new LiteralType(Type.Literal(value));
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/literal.ts"],"sourcesContent":["import { type TLiteral, type TLiteralValue, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class LiteralType<\n T extends TLiteralValue = TLiteralValue,\n> extends BaseType<TLiteral<T>> {\n _!: ConstantType<this['schema']>\n\n static factory<T extends TLiteralValue>(value: T) {\n return new LiteralType<T>(Type.Literal(value))\n }\n}\n"],"names":["Type","BaseType","LiteralType","_","factory","value","Literal"],"mappings":"AAAA,SAA4CA,IAAI,QAAQ,oBAAmB;AAC3E,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,oBAEHD;IACRE,EAAgC;IAEhC,OAAOC,QAAiCC,KAAQ,EAAE;QAChD,OAAO,IAAIH,YAAeF,KAAKM,OAAO,CAACD;IACzC;AACF"}
1
+ {"version":3,"sources":["../../../src/types/literal.ts"],"sourcesContent":["import { type TLiteral, type TLiteralValue, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class LiteralType<\n T extends TLiteralValue = TLiteralValue,\n> extends BaseType<TLiteral<T>> {\n declare _: ConstantType<this['schema']>\n\n static factory<T extends TLiteralValue>(value: T) {\n return new LiteralType<T>(Type.Literal(value))\n }\n}\n"],"names":["Type","BaseType","LiteralType","factory","value","Literal"],"mappings":"AAAA,SAA4CA,IAAI,QAAQ,oBAAmB;AAC3E,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,oBAEHD;IAGR,OAAOE,QAAiCC,KAAQ,EAAE;QAChD,OAAO,IAAIF,YAAeF,KAAKK,OAAO,CAACD;IACzC;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class NeverType extends BaseType {
4
- _;
5
4
  static factory() {
6
5
  return new NeverType(Type.Never());
7
6
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/never.ts"],"sourcesContent":["import { type TNever, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class NeverType extends BaseType<TNever> {\n _!: ConstantType<this['schema']>\n\n static factory() {\n return new NeverType(Type.Never())\n }\n}\n"],"names":["Type","BaseType","NeverType","_","factory","Never"],"mappings":"AAAA,SAAsBA,IAAI,QAAQ,oBAAmB;AACrD,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,kBAAkBD;IAC7BE,EAAgC;IAEhC,OAAOC,UAAU;QACf,OAAO,IAAIF,UAAUF,KAAKK,KAAK;IACjC;AACF"}
1
+ {"version":3,"sources":["../../../src/types/never.ts"],"sourcesContent":["import { type TNever, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\n\nexport class NeverType extends BaseType<TNever> {\n declare _: ConstantType<this['schema']>\n\n static factory() {\n return new NeverType(Type.Never())\n }\n}\n"],"names":["Type","BaseType","NeverType","factory","Never"],"mappings":"AAAA,SAAsBA,IAAI,QAAQ,oBAAmB;AACrD,SAASC,QAAQ,QAA2B,YAAW;AAEvD,OAAO,MAAMC,kBAAkBD;IAG7B,OAAOE,UAAU;QACf,OAAO,IAAID,UAAUF,KAAKI,KAAK;IACjC;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class NumberType extends BaseType {
4
- _;
5
4
  static factory(options = {}) {
6
5
  return new NumberType(Type.Number(options), {
7
6
  options
@@ -33,7 +32,6 @@ export class NumberType extends BaseType {
33
32
  }
34
33
  }
35
34
  export class IntegerType extends BaseType {
36
- _;
37
35
  static factory(options = {}) {
38
36
  return new IntegerType(Type.Integer(options), {
39
37
  options
@@ -65,7 +63,6 @@ export class IntegerType extends BaseType {
65
63
  }
66
64
  }
67
65
  export class BigIntType extends BaseType {
68
- _;
69
66
  static factory(options = {}) {
70
67
  return new BigIntType(Type.BigInt(options), {
71
68
  options
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/number.ts"],"sourcesContent":["import {\n type BigIntOptions,\n type IntegerOptions,\n type NumberOptions,\n type Static,\n type StaticDecode,\n type StringOptions,\n type TBigInt,\n type TInteger,\n type TNumber,\n type TString,\n type TTransform,\n Type,\n TypeBoxError,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\nimport { CustomType, TransformType } from './custom.ts'\n\nexport class NumberType extends BaseType<TNumber, { options: NumberOptions }> {\n _!: ConstantType<this['schema']>\n\n static factory(options: NumberOptions = {}) {\n return new NumberType(Type.Number(options), { options })\n }\n\n positive() {\n return this.min(0, true)\n }\n\n negative() {\n return this.max(0, true)\n }\n\n max(value: number, exclusive?: true) {\n return NumberType.factory({\n ...this.props.options,\n maximum: value,\n ...(!exclusive ? {} : { exclusiveMaximum: value }),\n })\n }\n\n min(value: number, exclusive?: true) {\n return NumberType.factory({\n ...this.props.options,\n minimum: value,\n ...(!exclusive ? {} : { exclusiveMinimum: value }),\n })\n }\n}\n\nexport class IntegerType extends BaseType<\n TInteger,\n { options: IntegerOptions }\n> {\n _!: ConstantType<this['schema']>\n\n static factory(options: IntegerOptions = {}) {\n return new IntegerType(Type.Integer(options), { options })\n }\n\n positive() {\n return this.min(0, true)\n }\n\n negative() {\n return this.max(0, true)\n }\n\n max(value: number, exclusive?: true) {\n return IntegerType.factory({\n ...this.props.options,\n maximum: value,\n ...(!exclusive ? {} : { exclusiveMaximum: value }),\n })\n }\n\n min(value: number, exclusive?: true) {\n return IntegerType.factory({\n ...this.props.options,\n minimum: value,\n ...(!exclusive ? {} : { exclusiveMinimum: value }),\n })\n }\n}\n\n// TODO: this is not json schema compatible\nexport class BigIntType extends BaseType<TBigInt, { options: BigIntOptions }> {\n _!: ConstantType<this['schema']>\n\n static factory(options: BigIntOptions = {}) {\n return new BigIntType(Type.BigInt(options), { options })\n }\n\n positive() {\n return this.min(0n, true)\n }\n\n negative() {\n return this.max(0n, true)\n }\n\n max(value: bigint, exclusive?: true) {\n return BigIntType.factory({\n ...this.props.options,\n maximum: value,\n ...(!exclusive ? {} : { exclusiveMaximum: value }),\n })\n }\n\n min(value: bigint, exclusive?: true) {\n return BigIntType.factory({\n ...this.props.options,\n minimum: value,\n ...(!exclusive ? {} : { exclusiveMinimum: value }),\n })\n }\n}\n"],"names":["Type","BaseType","NumberType","_","factory","options","Number","positive","min","negative","max","value","exclusive","props","maximum","exclusiveMaximum","minimum","exclusiveMinimum","IntegerType","Integer","BigIntType","BigInt"],"mappings":"AAAA,SAYEA,IAAI,QAEC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAGvD,OAAO,MAAMC,mBAAmBD;IAC9BE,EAAgC;IAEhC,OAAOC,QAAQC,UAAyB,CAAC,CAAC,EAAE;QAC1C,OAAO,IAAIH,WAAWF,KAAKM,MAAM,CAACD,UAAU;YAAEA;QAAQ;IACxD;IAEAE,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAC,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAA,IAAIC,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOV,WAAWE,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBS,SAASH;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEG,kBAAkBJ;YAAM,CAAC;QACnD;IACF;IAEAH,IAAIG,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOV,WAAWE,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBW,SAASL;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEK,kBAAkBN;YAAM,CAAC;QACnD;IACF;AACF;AAEA,OAAO,MAAMO,oBAAoBjB;IAI/BE,EAAgC;IAEhC,OAAOC,QAAQC,UAA0B,CAAC,CAAC,EAAE;QAC3C,OAAO,IAAIa,YAAYlB,KAAKmB,OAAO,CAACd,UAAU;YAAEA;QAAQ;IAC1D;IAEAE,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAC,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAA,IAAIC,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOM,YAAYd,OAAO,CAAC;YACzB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBS,SAASH;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEG,kBAAkBJ;YAAM,CAAC;QACnD;IACF;IAEAH,IAAIG,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOM,YAAYd,OAAO,CAAC;YACzB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBW,SAASL;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEK,kBAAkBN;YAAM,CAAC;QACnD;IACF;AACF;AAGA,OAAO,MAAMS,mBAAmBnB;IAC9BE,EAAgC;IAEhC,OAAOC,QAAQC,UAAyB,CAAC,CAAC,EAAE;QAC1C,OAAO,IAAIe,WAAWpB,KAAKqB,MAAM,CAAChB,UAAU;YAAEA;QAAQ;IACxD;IAEAE,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,EAAE,EAAE;IACtB;IAEAC,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,EAAE,EAAE;IACtB;IAEAA,IAAIC,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOQ,WAAWhB,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBS,SAASH;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEG,kBAAkBJ;YAAM,CAAC;QACnD;IACF;IAEAH,IAAIG,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOQ,WAAWhB,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBW,SAASL;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEK,kBAAkBN;YAAM,CAAC;QACnD;IACF;AACF"}
1
+ {"version":3,"sources":["../../../src/types/number.ts"],"sourcesContent":["import {\n type BigIntOptions,\n type IntegerOptions,\n type NumberOptions,\n type Static,\n type StaticDecode,\n type StringOptions,\n type TBigInt,\n type TInteger,\n type TNumber,\n type TString,\n type TTransform,\n Type,\n TypeBoxError,\n} from '@sinclair/typebox'\nimport { BaseType, type ConstantType } from './base.ts'\nimport { CustomType, TransformType } from './custom.ts'\n\nexport class NumberType extends BaseType<TNumber, { options: NumberOptions }> {\n declare _: ConstantType<this['schema']>\n\n static factory(options: NumberOptions = {}) {\n return new NumberType(Type.Number(options), { options })\n }\n\n positive() {\n return this.min(0, true)\n }\n\n negative() {\n return this.max(0, true)\n }\n\n max(value: number, exclusive?: true) {\n return NumberType.factory({\n ...this.props.options,\n maximum: value,\n ...(!exclusive ? {} : { exclusiveMaximum: value }),\n })\n }\n\n min(value: number, exclusive?: true) {\n return NumberType.factory({\n ...this.props.options,\n minimum: value,\n ...(!exclusive ? {} : { exclusiveMinimum: value }),\n })\n }\n}\n\nexport class IntegerType extends BaseType<\n TInteger,\n { options: IntegerOptions }\n> {\n declare _: ConstantType<this['schema']>\n\n static factory(options: IntegerOptions = {}) {\n return new IntegerType(Type.Integer(options), { options })\n }\n\n positive() {\n return this.min(0, true)\n }\n\n negative() {\n return this.max(0, true)\n }\n\n max(value: number, exclusive?: true) {\n return IntegerType.factory({\n ...this.props.options,\n maximum: value,\n ...(!exclusive ? {} : { exclusiveMaximum: value }),\n })\n }\n\n min(value: number, exclusive?: true) {\n return IntegerType.factory({\n ...this.props.options,\n minimum: value,\n ...(!exclusive ? {} : { exclusiveMinimum: value }),\n })\n }\n}\n\n// TODO: this is not json schema compatible\nexport class BigIntType extends BaseType<TBigInt, { options: BigIntOptions }> {\n declare _: ConstantType<this['schema']>\n\n static factory(options: BigIntOptions = {}) {\n return new BigIntType(Type.BigInt(options), { options })\n }\n\n positive() {\n return this.min(0n, true)\n }\n\n negative() {\n return this.max(0n, true)\n }\n\n max(value: bigint, exclusive?: true) {\n return BigIntType.factory({\n ...this.props.options,\n maximum: value,\n ...(!exclusive ? {} : { exclusiveMaximum: value }),\n })\n }\n\n min(value: bigint, exclusive?: true) {\n return BigIntType.factory({\n ...this.props.options,\n minimum: value,\n ...(!exclusive ? {} : { exclusiveMinimum: value }),\n })\n }\n}\n"],"names":["Type","BaseType","NumberType","factory","options","Number","positive","min","negative","max","value","exclusive","props","maximum","exclusiveMaximum","minimum","exclusiveMinimum","IntegerType","Integer","BigIntType","BigInt"],"mappings":"AAAA,SAYEA,IAAI,QAEC,oBAAmB;AAC1B,SAASC,QAAQ,QAA2B,YAAW;AAGvD,OAAO,MAAMC,mBAAmBD;IAG9B,OAAOE,QAAQC,UAAyB,CAAC,CAAC,EAAE;QAC1C,OAAO,IAAIF,WAAWF,KAAKK,MAAM,CAACD,UAAU;YAAEA;QAAQ;IACxD;IAEAE,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAC,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAA,IAAIC,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOT,WAAWC,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBS,SAASH;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEG,kBAAkBJ;YAAM,CAAC;QACnD;IACF;IAEAH,IAAIG,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOT,WAAWC,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBW,SAASL;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEK,kBAAkBN;YAAM,CAAC;QACnD;IACF;AACF;AAEA,OAAO,MAAMO,oBAAoBhB;IAM/B,OAAOE,QAAQC,UAA0B,CAAC,CAAC,EAAE;QAC3C,OAAO,IAAIa,YAAYjB,KAAKkB,OAAO,CAACd,UAAU;YAAEA;QAAQ;IAC1D;IAEAE,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAC,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,GAAG;IACrB;IAEAA,IAAIC,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOM,YAAYd,OAAO,CAAC;YACzB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBS,SAASH;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEG,kBAAkBJ;YAAM,CAAC;QACnD;IACF;IAEAH,IAAIG,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOM,YAAYd,OAAO,CAAC;YACzB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBW,SAASL;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEK,kBAAkBN;YAAM,CAAC;QACnD;IACF;AACF;AAGA,OAAO,MAAMS,mBAAmBlB;IAG9B,OAAOE,QAAQC,UAAyB,CAAC,CAAC,EAAE;QAC1C,OAAO,IAAIe,WAAWnB,KAAKoB,MAAM,CAAChB,UAAU;YAAEA;QAAQ;IACxD;IAEAE,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,EAAE,EAAE;IACtB;IAEAC,WAAW;QACT,OAAO,IAAI,CAACC,GAAG,CAAC,EAAE,EAAE;IACtB;IAEAA,IAAIC,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOQ,WAAWhB,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBS,SAASH;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEG,kBAAkBJ;YAAM,CAAC;QACnD;IACF;IAEAH,IAAIG,KAAa,EAAEC,SAAgB,EAAE;QACnC,OAAOQ,WAAWhB,OAAO,CAAC;YACxB,GAAG,IAAI,CAACS,KAAK,CAACR,OAAO;YACrBW,SAASL;YACT,GAAI,CAACC,YAAY,CAAC,IAAI;gBAAEK,kBAAkBN;YAAM,CAAC;QACnD;IACF;AACF"}
@@ -4,7 +4,7 @@ export class ObjectType extends BaseType {
4
4
  static factory(properties, options = {}) {
5
5
  const schemaProperties = {};
6
6
  for(const key in properties){
7
- schemaProperties[key] = properties[key].schema;
7
+ schemaProperties[key] = properties[key].final;
8
8
  }
9
9
  return new ObjectType(Type.Object(schemaProperties, options), {
10
10
  properties
@@ -12,7 +12,6 @@ export class ObjectType extends BaseType {
12
12
  }
13
13
  }
14
14
  export class RecordType extends BaseType {
15
- _;
16
15
  static factory(key, element, options = {}) {
17
16
  return new RecordType(Type.Record(key.schema, element.schema, options));
18
17
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/object.ts"],"sourcesContent":["import {\n type ObjectOptions,\n type TObject,\n type TRecordOrObject,\n type TSchema,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type BaseTypeAny } from './base.ts'\nimport type { EnumType, ObjectEnumType } from './enum.ts'\nimport type { LiteralType } from './literal.ts'\nimport type { StringType } from './string.ts'\n\nexport type ObjectTypeProps = { [k: string]: BaseTypeAny<any> }\nexport class ObjectType<\n T extends ObjectTypeProps = ObjectTypeProps,\n> extends BaseType<\n TObject<{ [K in keyof T]: T[K]['schema'] }>,\n { properties: T }\n> {\n declare _: {\n encoded: {\n input: TObject<{ [K in keyof T]: T[K]['_']['encoded']['input'] }>\n output: TObject<{ [K in keyof T]: T[K]['_']['encoded']['output'] }>\n }\n decoded: {\n input: TObject<{ [K in keyof T]: T[K]['_']['decoded']['input'] }>\n output: TObject<{ [K in keyof T]: T[K]['_']['decoded']['output'] }>\n }\n }\n\n static factory<T extends ObjectTypeProps = ObjectTypeProps>(\n properties: T,\n options: ObjectOptions = {},\n ) {\n const schemaProperties = {} as {\n [K in keyof T]: T[K]['schema']\n }\n\n for (const key in properties) {\n schemaProperties[key] = properties[key].schema\n }\n\n return new ObjectType<T>(Type.Object(schemaProperties, options) as any, {\n properties,\n })\n }\n}\n\nexport class RecordType<\n K extends LiteralType | EnumType | ObjectEnumType | StringType,\n E extends BaseType,\n> extends BaseType<TRecordOrObject<K['schema'], E['schema']>> {\n _!: {\n encoded: {\n input: TRecordOrObject<\n K['_']['encoded']['input'],\n E['_']['encoded']['input']\n >\n output: TRecordOrObject<\n K['_']['encoded']['output'],\n E['_']['encoded']['output']\n >\n }\n decoded: {\n input: TRecordOrObject<\n K['_']['decoded']['input'],\n E['_']['decoded']['input']\n >\n output: TRecordOrObject<\n K['_']['decoded']['output'],\n E['_']['decoded']['output']\n >\n }\n }\n\n static factory<\n K extends\n | LiteralType<any>\n | EnumType<any>\n | ObjectEnumType<any>\n | StringType,\n E extends BaseType,\n >(key: K, element: E, options: ObjectOptions = {}) {\n return new RecordType<K, E>(\n Type.Record(key.schema, element.schema, options) as any,\n )\n }\n}\n"],"names":["Type","BaseType","ObjectType","factory","properties","options","schemaProperties","key","schema","Object","RecordType","_","element","Record"],"mappings":"AAAA,SAKEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA0B,YAAW;AAMtD,OAAO,MAAMC,mBAEHD;IAeR,OAAOE,QACLC,UAAa,EACbC,UAAyB,CAAC,CAAC,EAC3B;QACA,MAAMC,mBAAmB,CAAC;QAI1B,IAAK,MAAMC,OAAOH,WAAY;YAC5BE,gBAAgB,CAACC,IAAI,GAAGH,UAAU,CAACG,IAAI,CAACC,MAAM;QAChD;QAEA,OAAO,IAAIN,WAAcF,KAAKS,MAAM,CAACH,kBAAkBD,UAAiB;YACtED;QACF;IACF;AACF;AAEA,OAAO,MAAMM,mBAGHT;IACRU,EAqBC;IAED,OAAOR,QAOLI,GAAM,EAAEK,OAAU,EAAEP,UAAyB,CAAC,CAAC,EAAE;QACjD,OAAO,IAAIK,WACTV,KAAKa,MAAM,CAACN,IAAIC,MAAM,EAAEI,QAAQJ,MAAM,EAAEH;IAE5C;AACF"}
1
+ {"version":3,"sources":["../../../src/types/object.ts"],"sourcesContent":["import {\n type ObjectOptions,\n type TObject,\n type TRecordOrObject,\n type TSchema,\n Type,\n} from '@sinclair/typebox'\nimport { BaseType, type BaseTypeAny } from './base.ts'\nimport type { EnumType, ObjectEnumType } from './enum.ts'\nimport type { LiteralType } from './literal.ts'\nimport type { StringType } from './string.ts'\n\nexport type ObjectTypeProps = { [k: string]: BaseTypeAny<any> }\nexport class ObjectType<\n T extends ObjectTypeProps = ObjectTypeProps,\n> extends BaseType<\n TObject<{ [K in keyof T]: T[K]['schema'] }>,\n { properties: T }\n> {\n declare _: {\n encoded: {\n input: TObject<{ [K in keyof T]: T[K]['_']['encoded']['input'] }>\n output: TObject<{ [K in keyof T]: T[K]['_']['encoded']['output'] }>\n }\n decoded: {\n input: TObject<{ [K in keyof T]: T[K]['_']['decoded']['input'] }>\n output: TObject<{ [K in keyof T]: T[K]['_']['decoded']['output'] }>\n }\n }\n\n static factory<T extends ObjectTypeProps = ObjectTypeProps>(\n properties: T,\n options: ObjectOptions = {},\n ) {\n const schemaProperties = {} as {\n [K in keyof T]: T[K]['schema']\n }\n\n for (const key in properties) {\n schemaProperties[key] = properties[key].final\n }\n\n return new ObjectType<T>(Type.Object(schemaProperties, options) as any, {\n properties,\n })\n }\n}\n\nexport class RecordType<\n K extends LiteralType | EnumType | ObjectEnumType | StringType,\n E extends BaseType,\n> extends BaseType<TRecordOrObject<K['schema'], E['schema']>> {\n declare _: {\n encoded: {\n input: TRecordOrObject<\n K['_']['encoded']['input'],\n E['_']['encoded']['input']\n >\n output: TRecordOrObject<\n K['_']['encoded']['output'],\n E['_']['encoded']['output']\n >\n }\n decoded: {\n input: TRecordOrObject<\n K['_']['decoded']['input'],\n E['_']['decoded']['input']\n >\n output: TRecordOrObject<\n K['_']['decoded']['output'],\n E['_']['decoded']['output']\n >\n }\n }\n\n static factory<\n K extends\n | LiteralType<any>\n | EnumType<any>\n | ObjectEnumType<any>\n | StringType,\n E extends BaseType,\n >(key: K, element: E, options: ObjectOptions = {}) {\n return new RecordType<K, E>(\n Type.Record(key.schema, element.schema, options) as any,\n )\n }\n}\n"],"names":["Type","BaseType","ObjectType","factory","properties","options","schemaProperties","key","final","Object","RecordType","element","Record","schema"],"mappings":"AAAA,SAKEA,IAAI,QACC,oBAAmB;AAC1B,SAASC,QAAQ,QAA0B,YAAW;AAMtD,OAAO,MAAMC,mBAEHD;IAeR,OAAOE,QACLC,UAAa,EACbC,UAAyB,CAAC,CAAC,EAC3B;QACA,MAAMC,mBAAmB,CAAC;QAI1B,IAAK,MAAMC,OAAOH,WAAY;YAC5BE,gBAAgB,CAACC,IAAI,GAAGH,UAAU,CAACG,IAAI,CAACC,KAAK;QAC/C;QAEA,OAAO,IAAIN,WAAcF,KAAKS,MAAM,CAACH,kBAAkBD,UAAiB;YACtED;QACF;IACF;AACF;AAEA,OAAO,MAAMM,mBAGHT;IAwBR,OAAOE,QAOLI,GAAM,EAAEI,OAAU,EAAEN,UAAyB,CAAC,CAAC,EAAE;QACjD,OAAO,IAAIK,WACTV,KAAKY,MAAM,CAACL,IAAIM,MAAM,EAAEF,QAAQE,MAAM,EAAER;IAE5C;AACF"}
@@ -1,7 +1,6 @@
1
1
  import { Type } from '@sinclair/typebox';
2
2
  import { BaseType } from "./base.js";
3
3
  export class StringType extends BaseType {
4
- _;
5
4
  static factory(options = {}) {
6
5
  return new StringType(Type.String(options), {
7
6
  options
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/string.ts"],"sourcesContent":["import { type StringOptions, type TString, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType, type TypeParams } from './base.ts'\n\nexport class StringType extends BaseType<TString, { options: StringOptions }> {\n _!: ConstantType<TString>\n\n static factory(options: StringOptions = {}) {\n return new StringType(Type.String(options), { options })\n }\n\n max(value: number) {\n return StringType.factory({\n ...this.props.options,\n maxLength: value,\n })\n }\n\n min(value: number) {\n return StringType.factory({\n ...this.props.options,\n minLength: value,\n })\n }\n\n format(format: TString['format']) {\n return StringType.factory({\n ...this.props.options,\n pattern: undefined,\n format,\n })\n }\n\n pattern(pattern: string) {\n return StringType.factory({\n ...this.props.options,\n format: undefined,\n pattern,\n })\n }\n\n email() {\n return this.format('email')\n }\n\n url() {\n return this.format('uri')\n }\n\n ipv4() {\n return this.format('ipv4')\n }\n\n ipv6() {\n return this.format('ipv6')\n }\n\n uuid() {\n return this.format('uuid')\n }\n}\n"],"names":["Type","BaseType","StringType","_","factory","options","String","max","value","props","maxLength","min","minLength","format","pattern","undefined","email","url","ipv4","ipv6","uuid"],"mappings":"AAAA,SAA2CA,IAAI,QAAQ,oBAAmB;AAC1E,SAASC,QAAQ,QAA4C,YAAW;AAExE,OAAO,MAAMC,mBAAmBD;IAC9BE,EAAyB;IAEzB,OAAOC,QAAQC,UAAyB,CAAC,CAAC,EAAE;QAC1C,OAAO,IAAIH,WAAWF,KAAKM,MAAM,CAACD,UAAU;YAAEA;QAAQ;IACxD;IAEAE,IAAIC,KAAa,EAAE;QACjB,OAAON,WAAWE,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBK,WAAWF;QACb;IACF;IAEAG,IAAIH,KAAa,EAAE;QACjB,OAAON,WAAWE,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBO,WAAWJ;QACb;IACF;IAEAK,OAAOA,MAAyB,EAAE;QAChC,OAAOX,WAAWE,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBS,SAASC;YACTF;QACF;IACF;IAEAC,QAAQA,OAAe,EAAE;QACvB,OAAOZ,WAAWE,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBQ,QAAQE;YACRD;QACF;IACF;IAEAE,QAAQ;QACN,OAAO,IAAI,CAACH,MAAM,CAAC;IACrB;IAEAI,MAAM;QACJ,OAAO,IAAI,CAACJ,MAAM,CAAC;IACrB;IAEAK,OAAO;QACL,OAAO,IAAI,CAACL,MAAM,CAAC;IACrB;IAEAM,OAAO;QACL,OAAO,IAAI,CAACN,MAAM,CAAC;IACrB;IAEAO,OAAO;QACL,OAAO,IAAI,CAACP,MAAM,CAAC;IACrB;AACF"}
1
+ {"version":3,"sources":["../../../src/types/string.ts"],"sourcesContent":["import { type StringOptions, type TString, Type } from '@sinclair/typebox'\nimport { BaseType, type ConstantType, type TypeParams } from './base.ts'\n\nexport class StringType extends BaseType<TString, { options: StringOptions }> {\n declare _: ConstantType<TString>\n\n static factory(options: StringOptions = {}) {\n return new StringType(Type.String(options), { options })\n }\n\n max(value: number) {\n return StringType.factory({\n ...this.props.options,\n maxLength: value,\n })\n }\n\n min(value: number) {\n return StringType.factory({\n ...this.props.options,\n minLength: value,\n })\n }\n\n format(format: TString['format']) {\n return StringType.factory({\n ...this.props.options,\n pattern: undefined,\n format,\n })\n }\n\n pattern(pattern: string) {\n return StringType.factory({\n ...this.props.options,\n format: undefined,\n pattern,\n })\n }\n\n email() {\n return this.format('email')\n }\n\n url() {\n return this.format('uri')\n }\n\n ipv4() {\n return this.format('ipv4')\n }\n\n ipv6() {\n return this.format('ipv6')\n }\n\n uuid() {\n return this.format('uuid')\n }\n}\n"],"names":["Type","BaseType","StringType","factory","options","String","max","value","props","maxLength","min","minLength","format","pattern","undefined","email","url","ipv4","ipv6","uuid"],"mappings":"AAAA,SAA2CA,IAAI,QAAQ,oBAAmB;AAC1E,SAASC,QAAQ,QAA4C,YAAW;AAExE,OAAO,MAAMC,mBAAmBD;IAG9B,OAAOE,QAAQC,UAAyB,CAAC,CAAC,EAAE;QAC1C,OAAO,IAAIF,WAAWF,KAAKK,MAAM,CAACD,UAAU;YAAEA;QAAQ;IACxD;IAEAE,IAAIC,KAAa,EAAE;QACjB,OAAOL,WAAWC,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBK,WAAWF;QACb;IACF;IAEAG,IAAIH,KAAa,EAAE;QACjB,OAAOL,WAAWC,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBO,WAAWJ;QACb;IACF;IAEAK,OAAOA,MAAyB,EAAE;QAChC,OAAOV,WAAWC,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBS,SAASC;YACTF;QACF;IACF;IAEAC,QAAQA,OAAe,EAAE;QACvB,OAAOX,WAAWC,OAAO,CAAC;YACxB,GAAG,IAAI,CAACK,KAAK,CAACJ,OAAO;YACrBQ,QAAQE;YACRD;QACF;IACF;IAEAE,QAAQ;QACN,OAAO,IAAI,CAACH,MAAM,CAAC;IACrB;IAEAI,MAAM;QACJ,OAAO,IAAI,CAACJ,MAAM,CAAC;IACrB;IAEAK,OAAO;QACL,OAAO,IAAI,CAACL,MAAM,CAAC;IACrB;IAEAM,OAAO;QACL,OAAO,IAAI,CAACN,MAAM,CAAC;IACrB;IAEAO,OAAO;QACL,OAAO,IAAI,CAACP,MAAM,CAAC;IACrB;AACF"}
@@ -2,21 +2,18 @@ import { Type } from '@sinclair/typebox';
2
2
  import { DiscriminatedUnion } from "../schemas/discriminated-union.js";
3
3
  import { BaseType } from "./base.js";
4
4
  export class UnionType extends BaseType {
5
- _;
6
5
  static factory(...types) {
7
6
  return new UnionType(Type.Union(types.map((t)=>t.schema)));
8
7
  }
9
8
  }
10
9
  export class IntersactionType extends BaseType {
11
- _;
12
10
  static factory(...types) {
13
11
  return new IntersactionType(Type.Intersect(types.map((t)=>t.schema)));
14
12
  }
15
13
  }
16
14
  export class DiscriminatedUnionType extends BaseType {
17
- _;
18
15
  static factory(key, ...options) {
19
- return new DiscriminatedUnionType(DiscriminatedUnion(key, options.map((t)=>t.schema)), {
16
+ return new DiscriminatedUnionType(DiscriminatedUnion(key, options.map((t)=>t.final)), {
20
17
  key,
21
18
  options
22
19
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/types/union.ts"],"sourcesContent":["import {\n type TIntersect,\n type TUnion,\n Type,\n type UnionToTuple,\n} from '@sinclair/typebox'\nimport {\n DiscriminatedUnion,\n type TDiscriminatedUnion,\n} from '../schemas/discriminated-union.ts'\nimport { BaseType, type BaseTypeAny } from './base.ts'\nimport type { LiteralType } from './literal.ts'\nimport type { ObjectType, ObjectTypeProps } from './object.ts'\n\nexport class UnionType<\n T extends readonly BaseType[] = readonly BaseType[],\n> extends BaseType<TUnion<UnionToTuple<T[number]['schema']>>> {\n _!: {\n encoded: {\n input: TUnion<UnionToTuple<T[number]['_']['encoded']['input']>>\n output: TUnion<UnionToTuple<T[number]['_']['encoded']['output']>>\n }\n decoded: {\n input: TUnion<UnionToTuple<T[number]['_']['decoded']['input']>>\n output: TUnion<UnionToTuple<T[number]['_']['decoded']['output']>>\n }\n }\n\n static factory<T extends readonly BaseType[] = readonly BaseType[]>(\n ...types: T\n ) {\n return new UnionType<T>(Type.Union(types.map((t) => t.schema)) as any)\n }\n}\n\nexport class IntersactionType<\n T extends readonly BaseType[] = readonly BaseType[],\n> extends BaseType<TIntersect<UnionToTuple<T[number]['schema']>>> {\n _!: {\n encoded: {\n input: TIntersect<UnionToTuple<T[number]['_']['encoded']['input']>>\n output: TIntersect<UnionToTuple<T[number]['_']['encoded']['output']>>\n }\n decoded: {\n input: TIntersect<UnionToTuple<T[number]['_']['decoded']['input']>>\n output: TIntersect<UnionToTuple<T[number]['_']['decoded']['output']>>\n }\n }\n\n static factory<T extends readonly BaseType[] = readonly BaseType[]>(\n ...types: T\n ) {\n return new IntersactionType<T>(\n Type.Intersect(types.map((t) => t.schema)) as any,\n )\n }\n}\n\nexport type DiscriminatedUnionOptionType<K extends string> = ObjectType<\n ObjectTypeProps & { [_ in K]: BaseTypeAny }\n>\n\nexport class DiscriminatedUnionType<\n K extends string,\n T extends readonly [\n DiscriminatedUnionOptionType<K>,\n ...DiscriminatedUnionOptionType<K>[],\n ],\n> extends BaseType<\n TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['schema']>\n >,\n {\n key: K\n options: T\n }\n> {\n _!: {\n encoded: {\n input: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['encoded']['input']>\n >\n output: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['encoded']['output']>\n >\n }\n decoded: {\n input: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['decoded']['input']>\n >\n output: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['decoded']['output']>\n >\n }\n }\n\n static factory<\n K extends string,\n T extends readonly [\n DiscriminatedUnionOptionType<K>,\n ...DiscriminatedUnionOptionType<K>[],\n ],\n >(key: K, ...options: T) {\n return new DiscriminatedUnionType<K, T>(\n DiscriminatedUnion(key, options.map((t) => t.schema) as any),\n { key, options },\n )\n }\n}\n"],"names":["Type","DiscriminatedUnion","BaseType","UnionType","_","factory","types","Union","map","t","schema","IntersactionType","Intersect","DiscriminatedUnionType","key","options"],"mappings":"AAAA,SAGEA,IAAI,QAEC,oBAAmB;AAC1B,SACEC,kBAAkB,QAEb,oCAAmC;AAC1C,SAASC,QAAQ,QAA0B,YAAW;AAItD,OAAO,MAAMC,kBAEHD;IACRE,EASC;IAED,OAAOC,QACL,GAAGC,KAAQ,EACX;QACA,OAAO,IAAIH,UAAaH,KAAKO,KAAK,CAACD,MAAME,GAAG,CAAC,CAACC,IAAMA,EAAEC,MAAM;IAC9D;AACF;AAEA,OAAO,MAAMC,yBAEHT;IACRE,EASC;IAED,OAAOC,QACL,GAAGC,KAAQ,EACX;QACA,OAAO,IAAIK,iBACTX,KAAKY,SAAS,CAACN,MAAME,GAAG,CAAC,CAACC,IAAMA,EAAEC,MAAM;IAE5C;AACF;AAMA,OAAO,MAAMG,+BAMHX;IAWRE,EAyBC;IAED,OAAOC,QAMLS,GAAM,EAAE,GAAGC,OAAU,EAAE;QACvB,OAAO,IAAIF,uBACTZ,mBAAmBa,KAAKC,QAAQP,GAAG,CAAC,CAACC,IAAMA,EAAEC,MAAM,IACnD;YAAEI;YAAKC;QAAQ;IAEnB;AACF"}
1
+ {"version":3,"sources":["../../../src/types/union.ts"],"sourcesContent":["import {\n type TIntersect,\n type TUnion,\n Type,\n type UnionToTuple,\n} from '@sinclair/typebox'\nimport {\n DiscriminatedUnion,\n type TDiscriminatedUnion,\n} from '../schemas/discriminated-union.ts'\nimport { BaseType, type BaseTypeAny } from './base.ts'\nimport type { LiteralType } from './literal.ts'\nimport type { ObjectType, ObjectTypeProps } from './object.ts'\n\nexport class UnionType<\n T extends readonly BaseType[] = readonly BaseType[],\n> extends BaseType<TUnion<UnionToTuple<T[number]['schema']>>> {\n declare _: {\n encoded: {\n input: TUnion<UnionToTuple<T[number]['_']['encoded']['input']>>\n output: TUnion<UnionToTuple<T[number]['_']['encoded']['output']>>\n }\n decoded: {\n input: TUnion<UnionToTuple<T[number]['_']['decoded']['input']>>\n output: TUnion<UnionToTuple<T[number]['_']['decoded']['output']>>\n }\n }\n\n static factory<T extends readonly BaseType[] = readonly BaseType[]>(\n ...types: T\n ) {\n return new UnionType<T>(Type.Union(types.map((t) => t.schema)) as any)\n }\n}\n\nexport class IntersactionType<\n T extends readonly BaseType[] = readonly BaseType[],\n> extends BaseType<TIntersect<UnionToTuple<T[number]['schema']>>> {\n declare _: {\n encoded: {\n input: TIntersect<UnionToTuple<T[number]['_']['encoded']['input']>>\n output: TIntersect<UnionToTuple<T[number]['_']['encoded']['output']>>\n }\n decoded: {\n input: TIntersect<UnionToTuple<T[number]['_']['decoded']['input']>>\n output: TIntersect<UnionToTuple<T[number]['_']['decoded']['output']>>\n }\n }\n\n static factory<T extends readonly BaseType[] = readonly BaseType[]>(\n ...types: T\n ) {\n return new IntersactionType<T>(\n Type.Intersect(types.map((t) => t.schema)) as any,\n )\n }\n}\n\nexport type DiscriminatedUnionOptionType<K extends string> = ObjectType<\n ObjectTypeProps & { [_ in K]: BaseTypeAny }\n>\n\nexport class DiscriminatedUnionType<\n K extends string,\n T extends readonly [\n DiscriminatedUnionOptionType<K>,\n ...DiscriminatedUnionOptionType<K>[],\n ],\n> extends BaseType<\n TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['schema']>\n >,\n {\n key: K\n options: T\n }\n> {\n declare _: {\n encoded: {\n input: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['encoded']['input']>\n >\n output: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['encoded']['output']>\n >\n }\n decoded: {\n input: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['decoded']['input']>\n >\n output: TDiscriminatedUnion<\n K,\n //@ts-expect-error\n UnionToTuple<T[number]['_']['decoded']['output']>\n >\n }\n }\n\n static factory<\n K extends string,\n T extends readonly [\n DiscriminatedUnionOptionType<K>,\n ...DiscriminatedUnionOptionType<K>[],\n ],\n >(key: K, ...options: T) {\n return new DiscriminatedUnionType<K, T>(\n DiscriminatedUnion(key, options.map((t) => t.final) as any),\n { key, options },\n )\n }\n}\n"],"names":["Type","DiscriminatedUnion","BaseType","UnionType","factory","types","Union","map","t","schema","IntersactionType","Intersect","DiscriminatedUnionType","key","options","final"],"mappings":"AAAA,SAGEA,IAAI,QAEC,oBAAmB;AAC1B,SACEC,kBAAkB,QAEb,oCAAmC;AAC1C,SAASC,QAAQ,QAA0B,YAAW;AAItD,OAAO,MAAMC,kBAEHD;IAYR,OAAOE,QACL,GAAGC,KAAQ,EACX;QACA,OAAO,IAAIF,UAAaH,KAAKM,KAAK,CAACD,MAAME,GAAG,CAAC,CAACC,IAAMA,EAAEC,MAAM;IAC9D;AACF;AAEA,OAAO,MAAMC,yBAEHR;IAYR,OAAOE,QACL,GAAGC,KAAQ,EACX;QACA,OAAO,IAAIK,iBACTV,KAAKW,SAAS,CAACN,MAAME,GAAG,CAAC,CAACC,IAAMA,EAAEC,MAAM;IAE5C;AACF;AAMA,OAAO,MAAMG,+BAMHV;IAsCR,OAAOE,QAMLS,GAAM,EAAE,GAAGC,OAAU,EAAE;QACvB,OAAO,IAAIF,uBACTX,mBAAmBY,KAAKC,QAAQP,GAAG,CAAC,CAACC,IAAMA,EAAEO,KAAK,IAClD;YAAEF;YAAKC;QAAQ;IAEnB;AACF"}
package/package.json CHANGED
@@ -21,12 +21,12 @@
21
21
  "peerDependencies": {
22
22
  "@sinclair/typebox": "^0.34.13",
23
23
  "temporal-polyfill": "^0.2.5",
24
- "@nmtjs/common": "0.5.2"
24
+ "@nmtjs/common": "0.5.3"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@sinclair/typebox": "^0.34.13",
28
28
  "temporal-polyfill": "^0.2.5",
29
- "@nmtjs/common": "0.5.2"
29
+ "@nmtjs/common": "0.5.3"
30
30
  },
31
31
  "files": [
32
32
  "src",
@@ -35,7 +35,7 @@
35
35
  "LICENSE.md",
36
36
  "README.md"
37
37
  ],
38
- "version": "0.5.2",
38
+ "version": "0.5.3",
39
39
  "scripts": {
40
40
  "build": "neemata-build -p neutral --root=./src './**/*.ts'",
41
41
  "type-check": "tsc --noEmit"
package/src/types/any.ts CHANGED
@@ -2,7 +2,7 @@ import { type TAny, Type } from '@sinclair/typebox'
2
2
  import { BaseType, type ConstantType } from './base.ts'
3
3
 
4
4
  export class AnyType extends BaseType<TAny> {
5
- _!: ConstantType<this['schema']>
5
+ declare _: ConstantType<this['schema']>
6
6
 
7
7
  static factory() {
8
8
  return new AnyType(Type.Any())
@@ -10,7 +10,7 @@ export class ArrayType<T extends BaseType = BaseType> extends BaseType<
10
10
  TArray<T['schema']>,
11
11
  { element: T; options: ArrayOptions }
12
12
  > {
13
- _!: {
13
+ declare _: {
14
14
  encoded: {
15
15
  input: TArray<T['_']['encoded']['input']>
16
16
  output: TArray<T['_']['encoded']['output']>
@@ -22,7 +22,7 @@ export class ArrayType<T extends BaseType = BaseType> extends BaseType<
22
22
  }
23
23
 
24
24
  static factory<T extends BaseType>(element: T, options: ArrayOptions = {}) {
25
- return new ArrayType<T>(Type.Array(element.schema, options))
25
+ return new ArrayType<T>(Type.Array(element.final, options))
26
26
  }
27
27
 
28
28
  min(value: number) {
package/src/types/base.ts CHANGED
@@ -86,7 +86,12 @@ export abstract class BaseType<
86
86
  const { hasDefault = false, nullable = false, optional = false } = params
87
87
  this.schema = schema
88
88
  this.final = schema
89
- if (nullable) this.final = Nullable(this.final) as any
89
+
90
+ if (nullable)
91
+ this.final = Nullable({
92
+ ...this.final,
93
+ default: this.final.default ?? null,
94
+ }) as any
90
95
  if (optional || hasDefault) this.final = Optional(this.final) as any
91
96
 
92
97
  this.props = props
@@ -7,7 +7,7 @@ import {
7
7
  import { BaseType, type ConstantType } from './base.ts'
8
8
 
9
9
  export class BooleanType extends BaseType<TBoolean> {
10
- _!: ConstantType<this['schema']>
10
+ declare _: ConstantType<this['schema']>
11
11
 
12
12
  static factory() {
13
13
  return new BooleanType(Type.Boolean())
@@ -12,7 +12,7 @@ export type CustomTypeEncode<T> = (value: T) => any
12
12
  export abstract class TransformType<T, S = TAny> extends BaseType<
13
13
  TTransform<TUnsafe<S>, T>
14
14
  > {
15
- _!: ConstantType<this['schema']>
15
+ declare _: ConstantType<this['schema']>
16
16
  }
17
17
 
18
18
  export class CustomType<T, S = TAny> extends TransformType<T, S> {
package/src/types/enum.ts CHANGED
@@ -10,7 +10,7 @@ import { BaseType, type ConstantType } from './base.ts'
10
10
  export class ObjectEnumType<
11
11
  T extends { [K in string]: K } = { [K in string]: K },
12
12
  > extends BaseType<TEnum<T>> {
13
- _!: ConstantType<this['schema']>
13
+ declare _: ConstantType<this['schema']>
14
14
 
15
15
  static factory<T extends { [K in string]: K }>(values: T) {
16
16
  return new ObjectEnumType<T>(Type.Enum(values as any))
@@ -20,7 +20,7 @@ export class ObjectEnumType<
20
20
  export class EnumType<
21
21
  T extends (string | number)[] = (string | number)[],
22
22
  > extends BaseType<TEnum<Record<string, T[number]>>> {
23
- _!: ConstantType<this['schema']>
23
+ declare _: ConstantType<this['schema']>
24
24
 
25
25
  static factory<T extends (string | number)[]>(values: [...T]) {
26
26
  return new EnumType<T>(
@@ -4,7 +4,7 @@ import { BaseType, type ConstantType } from './base.ts'
4
4
  export class LiteralType<
5
5
  T extends TLiteralValue = TLiteralValue,
6
6
  > extends BaseType<TLiteral<T>> {
7
- _!: ConstantType<this['schema']>
7
+ declare _: ConstantType<this['schema']>
8
8
 
9
9
  static factory<T extends TLiteralValue>(value: T) {
10
10
  return new LiteralType<T>(Type.Literal(value))
@@ -2,7 +2,7 @@ import { type TNever, Type } from '@sinclair/typebox'
2
2
  import { BaseType, type ConstantType } from './base.ts'
3
3
 
4
4
  export class NeverType extends BaseType<TNever> {
5
- _!: ConstantType<this['schema']>
5
+ declare _: ConstantType<this['schema']>
6
6
 
7
7
  static factory() {
8
8
  return new NeverType(Type.Never())
@@ -17,7 +17,7 @@ import { BaseType, type ConstantType } from './base.ts'
17
17
  import { CustomType, TransformType } from './custom.ts'
18
18
 
19
19
  export class NumberType extends BaseType<TNumber, { options: NumberOptions }> {
20
- _!: ConstantType<this['schema']>
20
+ declare _: ConstantType<this['schema']>
21
21
 
22
22
  static factory(options: NumberOptions = {}) {
23
23
  return new NumberType(Type.Number(options), { options })
@@ -52,7 +52,7 @@ export class IntegerType extends BaseType<
52
52
  TInteger,
53
53
  { options: IntegerOptions }
54
54
  > {
55
- _!: ConstantType<this['schema']>
55
+ declare _: ConstantType<this['schema']>
56
56
 
57
57
  static factory(options: IntegerOptions = {}) {
58
58
  return new IntegerType(Type.Integer(options), { options })
@@ -85,7 +85,7 @@ export class IntegerType extends BaseType<
85
85
 
86
86
  // TODO: this is not json schema compatible
87
87
  export class BigIntType extends BaseType<TBigInt, { options: BigIntOptions }> {
88
- _!: ConstantType<this['schema']>
88
+ declare _: ConstantType<this['schema']>
89
89
 
90
90
  static factory(options: BigIntOptions = {}) {
91
91
  return new BigIntType(Type.BigInt(options), { options })
@@ -37,7 +37,7 @@ export class ObjectType<
37
37
  }
38
38
 
39
39
  for (const key in properties) {
40
- schemaProperties[key] = properties[key].schema
40
+ schemaProperties[key] = properties[key].final
41
41
  }
42
42
 
43
43
  return new ObjectType<T>(Type.Object(schemaProperties, options) as any, {
@@ -50,7 +50,7 @@ export class RecordType<
50
50
  K extends LiteralType | EnumType | ObjectEnumType | StringType,
51
51
  E extends BaseType,
52
52
  > extends BaseType<TRecordOrObject<K['schema'], E['schema']>> {
53
- _!: {
53
+ declare _: {
54
54
  encoded: {
55
55
  input: TRecordOrObject<
56
56
  K['_']['encoded']['input'],
@@ -2,7 +2,7 @@ import { type StringOptions, type TString, Type } from '@sinclair/typebox'
2
2
  import { BaseType, type ConstantType, type TypeParams } from './base.ts'
3
3
 
4
4
  export class StringType extends BaseType<TString, { options: StringOptions }> {
5
- _!: ConstantType<TString>
5
+ declare _: ConstantType<TString>
6
6
 
7
7
  static factory(options: StringOptions = {}) {
8
8
  return new StringType(Type.String(options), { options })
@@ -15,7 +15,7 @@ import type { ObjectType, ObjectTypeProps } from './object.ts'
15
15
  export class UnionType<
16
16
  T extends readonly BaseType[] = readonly BaseType[],
17
17
  > extends BaseType<TUnion<UnionToTuple<T[number]['schema']>>> {
18
- _!: {
18
+ declare _: {
19
19
  encoded: {
20
20
  input: TUnion<UnionToTuple<T[number]['_']['encoded']['input']>>
21
21
  output: TUnion<UnionToTuple<T[number]['_']['encoded']['output']>>
@@ -36,7 +36,7 @@ export class UnionType<
36
36
  export class IntersactionType<
37
37
  T extends readonly BaseType[] = readonly BaseType[],
38
38
  > extends BaseType<TIntersect<UnionToTuple<T[number]['schema']>>> {
39
- _!: {
39
+ declare _: {
40
40
  encoded: {
41
41
  input: TIntersect<UnionToTuple<T[number]['_']['encoded']['input']>>
42
42
  output: TIntersect<UnionToTuple<T[number]['_']['encoded']['output']>>
@@ -77,7 +77,7 @@ export class DiscriminatedUnionType<
77
77
  options: T
78
78
  }
79
79
  > {
80
- _!: {
80
+ declare _: {
81
81
  encoded: {
82
82
  input: TDiscriminatedUnion<
83
83
  K,
@@ -112,7 +112,7 @@ export class DiscriminatedUnionType<
112
112
  ],
113
113
  >(key: K, ...options: T) {
114
114
  return new DiscriminatedUnionType<K, T>(
115
- DiscriminatedUnion(key, options.map((t) => t.schema) as any),
115
+ DiscriminatedUnion(key, options.map((t) => t.final) as any),
116
116
  { key, options },
117
117
  )
118
118
  }