{"version":3,"sources":["../src/types/Try.ts","../src/types/Case.ts","../src/validation/Validate.ts","../src/validation/When.ts"],"sourcesContent":["import { isDefined, isEmpty, isTrue } from './Is';\nimport { validate } from '../validation/Validate';\nimport { Construct, Constructor, ofConstruct } from './Constructor';\nimport { Validatable } from './Validatable';\nimport { Get, ofGet } from './Get';\nimport { Func } from './Func';\nimport { Optional } from './Types';\n\nexport abstract class Try<T = unknown> implements Validatable {\n  is = {\n    defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isDefined(prop ? prop(v) : v)),\n    empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isEmpty(prop ? prop(v) : v)),\n    valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => validate(prop ? prop(v) : v).isValid),\n    true: (prop?: Func<unknown, T>): Try<T> => this.filter(v => isTrue(prop ? prop(v) : v)),\n    false: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isTrue(prop ? prop(v) : v)),\n    not: {\n      defined: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isDefined(prop ? prop(v) : v)),\n      empty: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !isEmpty(prop ? prop(v) : v)),\n      valid: (prop?: Func<unknown, T>): Try<T> => this.filter(v => !validate(prop ? prop(v) : v).isValid),\n    },\n  };\n\n  if = this.is;\n\n  abstract get value(): T;\n\n  abstract get error(): Error;\n\n  abstract get isValid(): boolean;\n\n  static of = <T>(c: Get<T | Try<T>>, ...args: unknown[]): Try<T> => {\n    try {\n      const out = ofGet(c, ...args);\n      return new Success(out instanceof Try ? out.value : out);\n    } catch (e) {\n      return new Failure(e as Error);\n    }\n  };\n\n  abstract map<U>(f: Func<U | Try<U>, T>): Try<U>;\n\n  abstract recover(f: Func<T | Try<T>, Error>): Try<T>;\n\n  abstract recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T>;\n\n  abstract accept(f: Func<void, T>): Try<T>;\n\n  abstract filter(predicate: Func<boolean, T>): Try<T>;\n\n  abstract or(value: Get<T>): T;\n\n  abstract orElse(value?: Get<T>): Optional<T>;\n\n  abstract orThrow(error: Construct<Error>): T;\n}\n\nclass Success<T> extends Try<T> {\n  constructor(readonly value: T) {\n    super();\n  }\n\n  get error(): Error {\n    throw new Error('No error found');\n  }\n\n  get isValid(): boolean {\n    return true;\n  }\n\n  map<U>(f: Func<U | Try<U>, T>): Try<U> {\n    return tryTo<U>(f, this.value);\n  }\n\n  recover(f: Func<T | Try<T>, Error>): Try<T> {\n    return this;\n  }\n\n  recoverFrom(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n    return this;\n  }\n\n  accept(f: Func<void, T>): Try<T> {\n    return tryTo(() => {\n      f(this.value);\n      return this;\n    });\n  }\n\n  filter(predicate: Func<boolean, T>): Try<T> {\n    return tryTo(() => {\n      if (predicate(this.value)) return this;\n      throw new Error(`Applying filter(${predicate.toString()}) failed.`);\n    });\n  }\n\n  or(value: Get<T>): T {\n    return this.value;\n  }\n\n  orElse(value?: Get<T>): Optional<T> {\n    return this.value;\n  }\n\n  orThrow(_error: Construct<Error>): T {\n    return this.value;\n  }\n}\n\nclass Failure<T> extends Try<T> {\n  constructor(readonly error: Error) {\n    super();\n  }\n\n  get value(): T {\n    throw this.error;\n  }\n\n  get isValid(): boolean {\n    return false;\n  }\n\n  map<U>(f: Func<U | Try<U>, T>): Try<U> {\n    return new Failure<U>(this.error);\n  }\n\n  recover<U>(f: Func<U | Try<U>, Error>): Try<U> {\n    return tryTo<U>(f, this.error);\n  }\n\n  recoverFrom<U>(type: Constructor<Error>, f: Func<T | Try<T>, Error>): Try<T> {\n    return tryTo(() => (this.error instanceof type ? this.recover(f) : this));\n  }\n\n  accept(f: Func<void, T>): Try<T> {\n    return this;\n  }\n\n  filter(predicate: Func<boolean, T>): Try<T> {\n    return this;\n  }\n\n  or(value: Get<T>): T {\n    return ofGet(value);\n  }\n\n  orElse(value?: Get<T>): Optional<T> {\n    return ofGet(value);\n  }\n\n  orThrow(error: Construct<Error>): T {\n    throw ofConstruct(error);\n  }\n}\n\nexport const tryTo = <T>(c: Get<T | Try<T>>, ...args: unknown[]) => Try.of<T>(c, ...args);\n","import { Get, ofGet, Predicate } from './Get';\nimport { TypeGuard } from './TypeGuard';\nimport { Func } from './Func';\nimport { isDefined, isEmpty } from './Is';\nimport { validate } from '../validation/Validate';\nimport { tryTo } from './Try';\n\nclass CaseBuilder<V> {\n  constructor(readonly v: V) {}\n\n  case<T>(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n    return new Case<T, V>(this.v).case(pred, out);\n  }\n\n  type<T, U = unknown>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n    return new Case<T, V>(this.v).type<U>(guard, out);\n  }\n\n  equals<T>(value: V, out: Get<T, V>): Case<T, V> {\n    return new Case<T, V>(this.v).equals(value, out);\n  }\n\n  is = {\n    defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isDefined(prop(this.v)), out),\n    empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(isEmpty(prop(this.v)), out),\n    valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(validate(prop(this.v)).isValid, out),\n    not: {\n      defined: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isDefined(prop(this.v)), out),\n      empty: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!isEmpty(prop(this.v)), out),\n      valid: <T>(prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.v).case(!validate(prop(this.v)).isValid, out),\n    },\n  };\n\n  if = this.is;\n}\n\nclass Case<T, V = unknown> {\n  constructor(\n    protected value: V,\n    protected outcome?: T\n  ) {}\n\n  case(pred: Predicate<V>, out: Get<T, V>): Case<T, V> {\n    return tryTo(pred, this.value)\n      .is.true()\n      .map(() => ofGet(out, this.value))\n      .map(res => new Found(this.value, res) as Case<T, V>)\n      .or(this);\n  }\n\n  type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n    return tryTo(guard, this.value)\n      .is.true()\n      .map(() => out(this.value as unknown as U))\n      .map(res => new Found(this.value, res) as Case<T, V>)\n      .or(this);\n  }\n\n  equals(value: V, out: Get<T, V>): Case<T, V> {\n    return this.case(this.value === value, out);\n  }\n\n  is = {\n    defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isDefined(prop(this.value)), out),\n    empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(isEmpty(prop(this.value)), out),\n    valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(validate(prop(this.value)).isValid, out),\n    not: {\n      defined: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isDefined(prop(this.value)), out),\n      empty: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!isEmpty(prop(this.value)), out),\n      valid: (prop: Func<unknown, V>, out: Get<T, V>): Case<T, V> => new Case<T, V>(this.value).case(!validate(prop(this.value)).isValid, out),\n    },\n  };\n\n  if = this.is;\n\n  else(alt: Get<T, V>): T {\n    return ofGet<T, V>(alt, this.value);\n  }\n}\n\nclass Found<T, V> extends Case<T, V> {\n  constructor(\n    protected value: V,\n    protected outcome: T\n  ) {\n    super(value, outcome);\n  }\n\n  case(pred: Predicate<V>, out: Get<T, V>): this {\n    return this;\n  }\n\n  type<U>(guard: TypeGuard<U>, out: Func<T, U>): Case<T, V> {\n    return this;\n  }\n\n  equals(value: V, out: Get<T, V>): Case<T, V> {\n    return this;\n  }\n\n  is = {\n    defined: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n    empty: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n    valid: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n    not: {\n      defined: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n      empty: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n      valid: (_prop: Func<unknown, V>, _out: Get<T, V>): Case<T, V> => this,\n    },\n  };\n\n  if = this.is;\n\n  else(alt: Get<T, V>): T {\n    return this.outcome;\n  }\n}\n\nexport const choose = <V>(value: V) => new CaseBuilder<V>(value);\n","import { Constraint } from './Contraints';\nimport { when } from './When';\nimport { text } from '../types/Template';\nimport type { TemplateOptions } from '../types/Template';\nimport { isResults, Results, toResults } from '../types/Results';\nimport { toName } from '../types/Constructor';\nimport { toResult } from '../types/Result';\nimport { List, toList } from '../types/List';\nimport { meta } from '../types/Meta';\nimport { isArray, isFunction } from '../types/Is';\nimport { asString } from '../types/Text';\nimport { choose } from '../types/Case';\nimport { isEnum } from '../types/Enum';\nimport { isValue } from '../types/Value';\nimport { isValidatable } from '../types/Validatable';\nimport type { Text } from '../types/Text';\n\nexport type Validator = { property: string | symbol; constraint: Constraint; text: Text; actual?: Text };\n\nexport const asResults = (subject: unknown, template: Text, options: TemplateOptions = {}): Results =>\n  toResults(toResult(text(template).parse(subject, options), toName(subject)));\n\nconst validators = (subject: unknown): List<Validator> =>\n  meta(subject)\n    .keys<List<Validator>>('constraint')\n    .reduce((list, vs) => list.add(vs), toList<Validator>());\n\nconst runValidator = (v: Validator, subject?: unknown): Results => {\n  try {\n    const actual = isFunction((subject as any)[v.property]) ? (subject as any)[v.property]() : (subject as any)[v.property];\n    const constraint = v.constraint(actual);\n    return isResults(constraint) ? constraint : !constraint ? asResults(subject, v.text, { ...v, actual }) : toResults();\n  } catch (e) {\n    return asResults(subject, asString(e));\n  }\n};\n\nconst constraints = (subject?: unknown): Results =>\n  validators(subject)\n    .map(vs => runValidator(vs, subject))\n    .reduce((rs, r) => rs.add(...r.results), toResults());\n\nexport const validate = (subject?: unknown): Results =>\n  choose(subject)\n    .is.not.defined(\n      s => s,\n      () => toResults('Subject is not defined.')\n    )\n    .type(isEnum, e => (e.isValid ? toResults() : asResults(e, 'This is not a valid {type}.')))\n    .type(isValue, v => (v.isValid ? toResults() : asResults(v, 'This is not a valid {type}.')))\n    .type(isArray, a => a.map(i => validate(i)).reduce((rs, r) => rs.add(...r.results), toResults()))\n    .type(isValidatable, v => constraints(v))\n    .else(toResults());\n\nexport const validateReject = <T>(subject: T): Promise<T> => when(subject).not.isValid.reject();\n\nexport const isValid = <T>(t: T): boolean => validate(t).isValid;\n","import { validate } from './Validate';\nimport { Results } from '../types/Results';\nimport { Constructor } from '../types/Constructor';\nimport { Get, ofGet, Predicate } from '../types/Get';\nimport { isDefined, isEmpty, isIn } from '../types/Is';\nimport { toArray } from '../types/Array';\nimport { ErrorOrigin } from '../types/ErrorOrigin';\nimport { reject, resolve } from '../utils/Promise';\nimport { Exception } from '../types/Exception';\n\nexport class When<W> {\n  constructor(\n    readonly subject: W,\n    readonly valid = true,\n    private results?: Results\n  ) {}\n\n  get not(): When<W> {\n    return this.clone(!this.valid);\n  }\n\n  get and(): When<W> {\n    return this.clone(this.valid);\n  }\n\n  get isDefined(): When<W> {\n    return this.clone(this.valid === isDefined(this.subject));\n  }\n\n  get isEmpty(): When<W> {\n    return this.clone(this.valid === isEmpty(this.subject));\n  }\n\n  get isTrue(): When<W> {\n    return this.clone(this.valid === !!this.subject);\n  }\n\n  get isValid(): When<W> {\n    this.results = validate(this.subject);\n    return this.clone(this.valid === this.results.isValid);\n  }\n\n  isInstance = <U>(c: Constructor<U>): When<W> => this.clone(this.valid === this.subject instanceof c);\n\n  with = (pred: Predicate<W>): When<W> => this.clone(this.valid === ofGet(pred, this.subject));\n\n  contains = (property: (w: W) => unknown): When<W> => this.clone(this.valid === isDefined(ofGet(property, this.subject)));\n\n  in = (...items: W[]): When<W> => this.clone(this.valid === isIn(this.subject, toArray(...items)));\n\n  is = (item: W): When<W> => this.clone(this.valid === (this.subject === item));\n\n  reject = (error?: Get<ErrorOrigin, W>): Promise<NonNullable<W>> =>\n    !this.valid ? resolve(this.subject as NonNullable<W>) : reject(ofGet(error, this.subject) ?? this.results ?? Exception.Unknown);\n\n  recover = (f: (item: W) => W | Promise<W>): Promise<W> => resolve(!this.valid ? this.subject : f(this.subject));\n\n  protected clone = (result = true): When<W> => new When(this.subject, result, this.results);\n}\n\nexport const when = <T>(subject: T): When<T> => new When<T>(subject);\n"],"mappings":"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","names":[]}