{"version":3,"file":"index-node18.mjs","sources":["../src/ParamValueValidator.ts","../src/ParamValueStringValidator.ts","../src/ParamValidator.ts","../src/ParamValidatorValid.ts","../src/index.ts"],"sourcesContent":["import type { ParamValidator } from './ParamValidator';\n\nexport default class ParamValueValidator<T> {\n  readonly validator: ParamValidator;\n\n  readonly name: string;\n\n  readonly value: T;\n\n  constructor(validator: ParamValidator, name: string, value: T) {\n    this.validator = validator;\n    this.name = name;\n    this.value = value;\n  }\n\n  _error(key: string): void {\n    this.validator._error(this.name, key, this.value);\n  }\n}\n","import ParamValueValidator from './ParamValueValidator';\n\nexport default class ParamValueStringValidator<\n  T extends string = string,\n> extends ParamValueValidator<T | null | undefined> {\n  notEmpty(): ParamValueValidator<T> {\n    if (this.value == null || this.value.trim() === '') {\n      this._error('notEmpty');\n    }\n\n    return this as ParamValueValidator<T>;\n  }\n}\n","import type { Context } from 'alp-types';\nimport ParamValueStringValidator from './ParamValueStringValidator';\n\nexport type Errors = Record<string, any>;\n\nexport class ParamValidator {\n  context: Context;\n\n  _errors?: Errors;\n\n  constructor(context: Context) {\n    this.context = context;\n  }\n\n  _error(name: string, key: string, value: unknown): void {\n    if (!this._errors) {\n      this._errors = {};\n    }\n\n    this._errors[name] = { error: key, value };\n  }\n\n  getErrors(): Errors | undefined {\n    return this._errors;\n  }\n\n  hasErrors(): boolean {\n    return this._errors !== undefined;\n  }\n\n  isValid(): boolean {\n    return this._errors === undefined;\n  }\n\n  string(name: string): ParamValueStringValidator {\n    return new ParamValueStringValidator(this, name, this.context.param(name));\n  }\n  /* int(name, position) {\n   return new ParamValueIntValidator(this, name, this.context.param(name, position));\n   }\n   model(modelName, name) {\n   name = name || S.string.lcFirst(modelName);\n   console.log('paramvalidator model', modelName, M[modelName]);\n   let data = this.context.getOrPostParam(name);\n   return new ParamValueModelValidator(this, name, !data ? null : new M[modelName](data));\n   } */\n}\n","import { ParamValidator } from './ParamValidator';\n\nexport default class ParamValidatorValid extends ParamValidator {\n  override _error(): void {\n    this.context.throw(404, 'Invalid params', { validator: this });\n  }\n}\n","import type { Context, ApplicationInCreation } from 'alp-types';\nimport 'alp-router';\nimport { defineLazyProperty } from 'object-properties';\nimport { ParamValidator } from './ParamValidator';\nimport ParamValidatorValid from './ParamValidatorValid';\n\nexport { ParamValidator } from './ParamValidator';\n\ndeclare module 'alp-types' {\n  // eslint-disable-next-line @typescript-eslint/no-shadow\n  interface Context {\n    params: ParamValidator;\n    validParams: ParamValidator;\n    param: (name: string) => string | undefined;\n    namedParam: (name: string) => string | undefined;\n    otherParam: (position: number) => string | undefined;\n    paramGET: (name: string) => string | undefined;\n    paramGETorPOST: <T>(name: string) => T | undefined;\n  }\n}\n\nexport default function alpParams(app: ApplicationInCreation): void {\n  Object.assign(app.context, {\n    param(this: Context, name: string): string | undefined {\n      return this.namedParam(name) || this.paramGET(name);\n    },\n\n    namedParam(this: Context, name: string): string | undefined {\n      const namedParams = this.route.namedParams;\n      return namedParams?.get(name);\n    },\n\n    otherParam(this: Context, position: number): string | undefined {\n      const otherParams = this.route.otherParams;\n      return otherParams?.[position - 1];\n    },\n\n    paramGET(this: Context, name: string): string | undefined {\n      const searchParams = this.request.searchParams;\n      return searchParams.get(name) ?? undefined;\n    },\n\n    paramGETorPOST<T>(this: Context, name: string): T | undefined {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-return\n      return this.body[name] !== undefined\n        ? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n          this.body[name]\n        : this.paramGET(name);\n    },\n  });\n\n  defineLazyProperty(\n    app.request,\n    'searchParams',\n    function (this: Context['request']): URLSearchParams {\n      return new URLSearchParams(this.search);\n    },\n  );\n\n  defineLazyProperty(\n    app.context,\n    'params',\n    function (this: Context): ParamValidator {\n      return new ParamValidator(this);\n    },\n  );\n\n  defineLazyProperty(\n    app.context,\n    'validParams',\n    function (this: Context): ParamValidatorValid {\n      return new ParamValidatorValid(this);\n    },\n  );\n}\n"],"names":["ParamValueValidator","constructor","validator","name","value","_error","key","ParamValueStringValidator","notEmpty","trim","ParamValidator","context","_errors","error","getErrors","hasErrors","undefined","isValid","string","param","ParamValidatorValid","throw","alpParams","app","Object","assign","namedParam","paramGET","namedParams","route","get","otherParam","position","otherParams","searchParams","request","paramGETorPOST","body","defineLazyProperty","URLSearchParams","search"],"mappings":";;;AAEe,MAAMA,mBAAmB,CAAI;AAO1CC,EAAAA,WAAWA,CAACC,SAAyB,EAAEC,IAAY,EAAEC,KAAQ,EAAE;IAC7D,IAAI,CAACF,SAAS,GAAGA,SAAS,CAAA;IAC1B,IAAI,CAACC,IAAI,GAAGA,IAAI,CAAA;IAChB,IAAI,CAACC,KAAK,GAAGA,KAAK,CAAA;AACpB,GAAA;EAEAC,MAAMA,CAACC,GAAW,EAAQ;AACxB,IAAA,IAAI,CAACJ,SAAS,CAACG,MAAM,CAAC,IAAI,CAACF,IAAI,EAAEG,GAAG,EAAE,IAAI,CAACF,KAAK,CAAC,CAAA;AACnD,GAAA;AACF;;AChBe,MAAMG,yBAAyB,SAEpCP,mBAAmB,CAAuB;AAClDQ,EAAAA,QAAQA,GAA2B;AACjC,IAAA,IAAI,IAAI,CAACJ,KAAK,IAAI,IAAI,IAAI,IAAI,CAACA,KAAK,CAACK,IAAI,EAAE,KAAK,EAAE,EAAE;AAClD,MAAA,IAAI,CAACJ,MAAM,CAAC,UAAU,CAAC,CAAA;AACzB,KAAA;AAEA,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AACF;;ACPO,MAAMK,cAAc,CAAC;EAK1BT,WAAWA,CAACU,OAAgB,EAAE;IAC5B,IAAI,CAACA,OAAO,GAAGA,OAAO,CAAA;AACxB,GAAA;AAEAN,EAAAA,MAAMA,CAACF,IAAY,EAAEG,GAAW,EAAEF,KAAc,EAAQ;AACtD,IAAA,IAAI,CAAC,IAAI,CAACQ,OAAO,EAAE;AACjB,MAAA,IAAI,CAACA,OAAO,GAAG,EAAE,CAAA;AACnB,KAAA;AAEA,IAAA,IAAI,CAACA,OAAO,CAACT,IAAI,CAAC,GAAG;AAAEU,MAAAA,KAAK,EAAEP,GAAG;AAAEF,MAAAA,KAAAA;KAAO,CAAA;AAC5C,GAAA;AAEAU,EAAAA,SAASA,GAAuB;IAC9B,OAAO,IAAI,CAACF,OAAO,CAAA;AACrB,GAAA;AAEAG,EAAAA,SAASA,GAAY;AACnB,IAAA,OAAO,IAAI,CAACH,OAAO,KAAKI,SAAS,CAAA;AACnC,GAAA;AAEAC,EAAAA,OAAOA,GAAY;AACjB,IAAA,OAAO,IAAI,CAACL,OAAO,KAAKI,SAAS,CAAA;AACnC,GAAA;EAEAE,MAAMA,CAACf,IAAY,EAA6B;AAC9C,IAAA,OAAO,IAAII,yBAAyB,CAAC,IAAI,EAAEJ,IAAI,EAAE,IAAI,CAACQ,OAAO,CAACQ,KAAK,CAAChB,IAAI,CAAC,CAAC,CAAA;AAC5E,GAAA;AACA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5Ce,MAAMiB,mBAAmB,SAASV,cAAc,CAAC;AACrDL,EAAAA,MAAMA,GAAS;IACtB,IAAI,CAACM,OAAO,CAACU,KAAK,CAAC,GAAG,EAAE,gBAAgB,EAAE;AAAEnB,MAAAA,SAAS,EAAE,IAAA;AAAK,KAAC,CAAC,CAAA;AAChE,GAAA;AACF;;ACee,SAASoB,SAASA,CAACC,GAA0B,EAAQ;AAClEC,EAAAA,MAAM,CAACC,MAAM,CAACF,GAAG,CAACZ,OAAO,EAAE;IACzBQ,KAAKA,CAAgBhB,IAAY,EAAsB;AACrD,MAAA,OAAO,IAAI,CAACuB,UAAU,CAACvB,IAAI,CAAC,IAAI,IAAI,CAACwB,QAAQ,CAACxB,IAAI,CAAC,CAAA;KACpD;IAEDuB,UAAUA,CAAgBvB,IAAY,EAAsB;AAC1D,MAAA,MAAMyB,WAAW,GAAG,IAAI,CAACC,KAAK,CAACD,WAAW,CAAA;AAC1C,MAAA,OAAOA,WAAW,EAAEE,GAAG,CAAC3B,IAAI,CAAC,CAAA;KAC9B;IAED4B,UAAUA,CAAgBC,QAAgB,EAAsB;AAC9D,MAAA,MAAMC,WAAW,GAAG,IAAI,CAACJ,KAAK,CAACI,WAAW,CAAA;AAC1C,MAAA,OAAOA,WAAW,GAAGD,QAAQ,GAAG,CAAC,CAAC,CAAA;KACnC;IAEDL,QAAQA,CAAgBxB,IAAY,EAAsB;AACxD,MAAA,MAAM+B,YAAY,GAAG,IAAI,CAACC,OAAO,CAACD,YAAY,CAAA;AAC9C,MAAA,OAAOA,YAAY,CAACJ,GAAG,CAAC3B,IAAI,CAAC,IAAIa,SAAS,CAAA;KAC3C;IAEDoB,cAAcA,CAAmBjC,IAAY,EAAiB;AAC5D;AACA,MAAA,OAAO,IAAI,CAACkC,IAAI,CAAClC,IAAI,CAAC,KAAKa,SAAS;AAChC;MACA,IAAI,CAACqB,IAAI,CAAClC,IAAI,CAAC,GACf,IAAI,CAACwB,QAAQ,CAACxB,IAAI,CAAC,CAAA;AACzB,KAAA;AACF,GAAC,CAAC,CAAA;AAEFmC,EAAAA,kBAAkB,CAChBf,GAAG,CAACY,OAAO,EACX,cAAc,EACd,YAAqD;AACnD,IAAA,OAAO,IAAII,eAAe,CAAC,IAAI,CAACC,MAAM,CAAC,CAAA;AACzC,GACF,CAAC,CAAA;AAEDF,EAAAA,kBAAkB,CAChBf,GAAG,CAACZ,OAAO,EACX,QAAQ,EACR,YAAyC;AACvC,IAAA,OAAO,IAAID,cAAc,CAAC,IAAI,CAAC,CAAA;AACjC,GACF,CAAC,CAAA;AAED4B,EAAAA,kBAAkB,CAChBf,GAAG,CAACZ,OAAO,EACX,aAAa,EACb,YAA8C;AAC5C,IAAA,OAAO,IAAIS,mBAAmB,CAAC,IAAI,CAAC,CAAA;AACtC,GACF,CAAC,CAAA;AACH;;;;"}