@nmtjs/type 0.5.1 → 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/compiler.js CHANGED
@@ -96,23 +96,23 @@ export function compile(schema) {
96
96
  export var runtime;
97
97
  (function(runtime) {
98
98
  function parse(type, value) {
99
- return _parse(type.schema, value);
99
+ return _parse(type.final, value);
100
100
  }
101
101
  runtime.parse = parse;
102
102
  function errors(type, value) {
103
- return _errors(Value.Errors(type.schema, value));
103
+ return _errors(Value.Errors(type.final, value));
104
104
  }
105
105
  runtime.errors = errors;
106
106
  function check(type, value) {
107
- return Value.Check(type.schema, value);
107
+ return Value.Check(type.final, value);
108
108
  }
109
109
  runtime.check = check;
110
110
  function decode(type, value) {
111
- return TransformDecode(type.schema, [], value);
111
+ return TransformDecode(type.final, [], value);
112
112
  }
113
113
  runtime.decode = decode;
114
114
  function encode(type, value) {
115
- return TransformEncode(type.schema, [], value);
115
+ return TransformEncode(type.final, [], value);
116
116
  }
117
117
  runtime.encode = encode;
118
118
  })(runtime || (runtime = {}));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/compiler.ts"],"sourcesContent":["import type { TSchema } from '@sinclair/typebox'\nimport {\n TypeCompiler,\n type ValueErrorIterator,\n} from '@sinclair/typebox/compiler'\nimport {\n TransformDecode,\n TransformEncode,\n Value,\n} from '@sinclair/typebox/value'\nimport type { t } from './index.ts'\nimport { IsDiscriminatedUnion } from './schemas/discriminated-union.ts'\nimport type { BaseType } from './types/base.ts'\n\ntype ValidationError = {\n path: string\n message: string\n value: unknown\n}\n\nexport type Compiled<T extends BaseType = BaseType> = {\n check: (val: unknown) => boolean\n errors: (val: unknown) => ValidationError[]\n parse: (val: unknown) => unknown\n /**\n * Requires to `check` before calling\n */\n decode: (val: unknown) => t.infer.decoded<T>\n /**\n * Requires to `check` before calling\n */\n encode: (val: unknown) => t.infer.encoded<T>\n /**\n * Requires to `check` before calling\n */\n decodeSafe: (\n val: unknown,\n ) =>\n | { success: true; value: t.infer.decoded<T> }\n | { success: false; error: any }\n /**\n * Requires to `check` before calling\n */\n encodeSafe: (\n val: unknown,\n ) =>\n | { success: true; value: t.infer.encoded<T> }\n | { success: false; error: any }\n}\n\n// FIXME: this one is very slow\nfunction _parse(schema: TSchema, value: any) {\n // Clone -> Clean -> Default -> Convert\n return Value.Convert(\n schema,\n Value.Default(schema, Value.Clean(schema, Value.Clone(value))),\n )\n}\n\nfunction _errors(errors: ValueErrorIterator) {\n const result: ValidationError[] = []\n\n for (const error of errors) {\n if (IsDiscriminatedUnion(error.schema)) {\n const discriminator = error.schema.discriminator\n const discriminatorValue = error.value?.[discriminator]\n if (discriminatorValue !== undefined) {\n const variantSchema = error.schema.anyOf.find(\n (schema) =>\n schema.properties[discriminator].const === discriminatorValue,\n )\n if (variantSchema) {\n const propertiesSchemas: TSchema[] = []\n for (const element in variantSchema.properties) {\n const propertySchema = variantSchema.properties[element]\n if (propertySchema !== variantSchema.properties[discriminator]) {\n propertiesSchemas.push(propertySchema)\n }\n }\n\n for (const iter of error.errors) {\n for (const err of iter) {\n if (!propertiesSchemas.includes(err.schema)) continue\n result.push({\n path: err.path,\n message: err.message,\n value: err.value,\n })\n }\n }\n\n continue\n }\n }\n }\n\n result.push({\n path: error.path,\n message: error.message,\n value: error.value,\n })\n\n for (const nestedError of error.errors) {\n result.push(..._errors(nestedError))\n }\n }\n\n return result\n}\n\nfunction compileType(type: BaseType) {\n const { final: schema } = type\n const compiled = TypeCompiler.Compile(schema)\n const errors = (value) => {\n return _errors(compiled.Errors(value))\n }\n\n return {\n check: compiled.Check.bind(compiled),\n parse: _parse.bind(null, schema),\n errors,\n decode: TransformDecode.bind(null, schema, compiled.References()),\n encode: TransformEncode.bind(null, schema, compiled.References()),\n }\n}\n\nexport function compile<T extends BaseType>(schema: T): Compiled<T> {\n const compiled = compileType(schema)\n\n function decodeSafe(val: unknown) {\n try {\n return {\n success: true as const,\n value: compiled.decode(val),\n }\n } catch (error) {\n return { success: false as const, error }\n }\n }\n\n function encodeSafe(val: unknown) {\n try {\n return {\n success: true as const,\n value: compiled.encode(val),\n }\n } catch (error) {\n return { success: false as const, error }\n }\n }\n\n return {\n ...compiled,\n decodeSafe,\n encodeSafe,\n } as any\n}\n\nexport namespace runtime {\n export function parse(type: BaseType, value: any) {\n return _parse(type.schema, value)\n }\n\n export function errors(type: BaseType, value: any): ValidationError[] {\n return _errors(Value.Errors(type.schema, value))\n }\n\n export function check(type: BaseType, value: any): boolean {\n return Value.Check(type.schema, value)\n }\n\n export function decode<T extends BaseType>(\n type: T,\n value: any,\n ): t.infer.decoded<T> {\n return TransformDecode(type.schema, [], value)\n }\n\n export function encode<T extends BaseType>(\n type: T,\n value: any,\n ): t.infer.encoded<T> {\n return TransformEncode(type.schema, [], value)\n }\n}\n"],"names":["TypeCompiler","TransformDecode","TransformEncode","Value","IsDiscriminatedUnion","_parse","schema","value","Convert","Default","Clean","Clone","_errors","errors","result","error","discriminator","discriminatorValue","undefined","variantSchema","anyOf","find","properties","const","propertiesSchemas","element","propertySchema","push","iter","err","includes","path","message","nestedError","compileType","type","final","compiled","Compile","Errors","check","Check","bind","parse","decode","References","encode","compile","decodeSafe","val","success","encodeSafe","runtime"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/compiler.ts"],"sourcesContent":["import type { TSchema } from '@sinclair/typebox'\nimport {\n TypeCompiler,\n type ValueErrorIterator,\n} from '@sinclair/typebox/compiler'\nimport {\n TransformDecode,\n TransformEncode,\n Value,\n} from '@sinclair/typebox/value'\nimport type { t } from './index.ts'\nimport { IsDiscriminatedUnion } from './schemas/discriminated-union.ts'\nimport type { BaseType } from './types/base.ts'\n\ntype ValidationError = {\n path: string\n message: string\n value: unknown\n}\n\nexport type Compiled<T extends BaseType = BaseType> = {\n check: (val: unknown) => boolean\n errors: (val: unknown) => ValidationError[]\n parse: (val: unknown) => unknown\n /**\n * Requires to `check` before calling\n */\n decode: (val: unknown) => t.infer.decoded<T>\n /**\n * Requires to `check` before calling\n */\n encode: (val: unknown) => t.infer.encoded<T>\n /**\n * Requires to `check` before calling\n */\n decodeSafe: (\n val: unknown,\n ) =>\n | { success: true; value: t.infer.decoded<T> }\n | { success: false; error: any }\n /**\n * Requires to `check` before calling\n */\n encodeSafe: (\n val: unknown,\n ) =>\n | { success: true; value: t.infer.encoded<T> }\n | { success: false; error: any }\n}\n\n// FIXME: this one is very slow\nfunction _parse(schema: TSchema, value: any) {\n // Clone -> Clean -> Default -> Convert\n return Value.Convert(\n schema,\n Value.Default(schema, Value.Clean(schema, Value.Clone(value))),\n )\n}\n\nfunction _errors(errors: ValueErrorIterator) {\n const result: ValidationError[] = []\n\n for (const error of errors) {\n if (IsDiscriminatedUnion(error.schema)) {\n const discriminator = error.schema.discriminator\n const discriminatorValue = error.value?.[discriminator]\n if (discriminatorValue !== undefined) {\n const variantSchema = error.schema.anyOf.find(\n (schema) =>\n schema.properties[discriminator].const === discriminatorValue,\n )\n if (variantSchema) {\n const propertiesSchemas: TSchema[] = []\n for (const element in variantSchema.properties) {\n const propertySchema = variantSchema.properties[element]\n if (propertySchema !== variantSchema.properties[discriminator]) {\n propertiesSchemas.push(propertySchema)\n }\n }\n\n for (const iter of error.errors) {\n for (const err of iter) {\n if (!propertiesSchemas.includes(err.schema)) continue\n result.push({\n path: err.path,\n message: err.message,\n value: err.value,\n })\n }\n }\n\n continue\n }\n }\n }\n\n result.push({\n path: error.path,\n message: error.message,\n value: error.value,\n })\n\n for (const nestedError of error.errors) {\n result.push(..._errors(nestedError))\n }\n }\n\n return result\n}\n\nfunction compileType(type: BaseType) {\n const { final: schema } = type\n const compiled = TypeCompiler.Compile(schema)\n const errors = (value) => {\n return _errors(compiled.Errors(value))\n }\n\n return {\n check: compiled.Check.bind(compiled),\n parse: _parse.bind(null, schema),\n errors,\n decode: TransformDecode.bind(null, schema, compiled.References()),\n encode: TransformEncode.bind(null, schema, compiled.References()),\n }\n}\n\nexport function compile<T extends BaseType>(schema: T): Compiled<T> {\n const compiled = compileType(schema)\n\n function decodeSafe(val: unknown) {\n try {\n return {\n success: true as const,\n value: compiled.decode(val),\n }\n } catch (error) {\n return { success: false as const, error }\n }\n }\n\n function encodeSafe(val: unknown) {\n try {\n return {\n success: true as const,\n value: compiled.encode(val),\n }\n } catch (error) {\n return { success: false as const, error }\n }\n }\n\n return {\n ...compiled,\n decodeSafe,\n encodeSafe,\n } as any\n}\n\nexport namespace runtime {\n export function parse(type: BaseType, value: any) {\n return _parse(type.final, value)\n }\n\n export function errors(type: BaseType, value: any): ValidationError[] {\n return _errors(Value.Errors(type.final, value))\n }\n\n export function check(type: BaseType, value: any): boolean {\n return Value.Check(type.final, value)\n }\n\n export function decode<T extends BaseType>(\n type: T,\n value: any,\n ): t.infer.decoded<T> {\n return TransformDecode(type.final, [], value)\n }\n\n export function encode<T extends BaseType>(\n type: T,\n value: any,\n ): t.infer.encoded<T> {\n return TransformEncode(type.final, [], value)\n }\n}\n"],"names":["TypeCompiler","TransformDecode","TransformEncode","Value","IsDiscriminatedUnion","_parse","schema","value","Convert","Default","Clean","Clone","_errors","errors","result","error","discriminator","discriminatorValue","undefined","variantSchema","anyOf","find","properties","const","propertiesSchemas","element","propertySchema","push","iter","err","includes","path","message","nestedError","compileType","type","final","compiled","Compile","Errors","check","Check","bind","parse","decode","References","encode","compile","decodeSafe","val","success","encodeSafe","runtime"],"mappings":"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"}
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.1"
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.1"
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.1",
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/compiler.ts CHANGED
@@ -158,28 +158,28 @@ export function compile<T extends BaseType>(schema: T): Compiled<T> {
158
158
 
159
159
  export namespace runtime {
160
160
  export function parse(type: BaseType, value: any) {
161
- return _parse(type.schema, value)
161
+ return _parse(type.final, value)
162
162
  }
163
163
 
164
164
  export function errors(type: BaseType, value: any): ValidationError[] {
165
- return _errors(Value.Errors(type.schema, value))
165
+ return _errors(Value.Errors(type.final, value))
166
166
  }
167
167
 
168
168
  export function check(type: BaseType, value: any): boolean {
169
- return Value.Check(type.schema, value)
169
+ return Value.Check(type.final, value)
170
170
  }
171
171
 
172
172
  export function decode<T extends BaseType>(
173
173
  type: T,
174
174
  value: any,
175
175
  ): t.infer.decoded<T> {
176
- return TransformDecode(type.schema, [], value)
176
+ return TransformDecode(type.final, [], value)
177
177
  }
178
178
 
179
179
  export function encode<T extends BaseType>(
180
180
  type: T,
181
181
  value: any,
182
182
  ): t.infer.encoded<T> {
183
- return TransformEncode(type.schema, [], value)
183
+ return TransformEncode(type.final, [], value)
184
184
  }
185
185
  }
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
  }