@inversifyjs/ajv-validation 2.0.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/lib/calculations/stringifyAjvErrors.d.ts +3 -0
  2. package/lib/calculations/stringifyAjvErrors.d.ts.map +1 -0
  3. package/lib/calculations/stringifyAjvErrors.js +6 -0
  4. package/lib/calculations/stringifyAjvErrors.js.map +1 -0
  5. package/lib/{cjs/calculations → calculations}/updateAjvValidationMetadata.d.ts +1 -1
  6. package/lib/calculations/updateAjvValidationMetadata.d.ts.map +1 -0
  7. package/lib/{cjs/calculations → calculations}/updateAjvValidationMetadata.js +1 -4
  8. package/lib/calculations/updateAjvValidationMetadata.js.map +1 -0
  9. package/lib/{cjs/decorators → decorators}/ValidateAjvSchema.d.ts +1 -1
  10. package/lib/decorators/ValidateAjvSchema.d.ts.map +1 -0
  11. package/lib/decorators/ValidateAjvSchema.js +10 -0
  12. package/lib/decorators/ValidateAjvSchema.js.map +1 -0
  13. package/lib/index.d.ts +4 -0
  14. package/lib/index.d.ts.map +1 -0
  15. package/lib/{cjs/index.d.ts → index.js} +4 -4
  16. package/lib/index.js.map +1 -0
  17. package/lib/pipes/AjvCompiledValidationPipe.d.ts +6 -0
  18. package/lib/pipes/AjvCompiledValidationPipe.d.ts.map +1 -0
  19. package/lib/pipes/AjvCompiledValidationPipe.js +36 -0
  20. package/lib/pipes/AjvCompiledValidationPipe.js.map +1 -0
  21. package/lib/{cjs/pipes → pipes}/AjvValidationPipe.d.ts +2 -2
  22. package/lib/pipes/AjvValidationPipe.d.ts.map +1 -0
  23. package/lib/pipes/AjvValidationPipe.js +45 -0
  24. package/lib/pipes/AjvValidationPipe.js.map +1 -0
  25. package/lib/reflectMetadata/models/ajvValidationMetadataReflectKey.d.ts.map +1 -0
  26. package/lib/reflectMetadata/models/ajvValidationMetadataReflectKey.js +2 -0
  27. package/lib/reflectMetadata/models/ajvValidationMetadataReflectKey.js.map +1 -0
  28. package/package.json +21 -28
  29. package/CHANGELOG.md +0 -31
  30. package/lib/cjs/calculations/stringifyAjvErrors.d.ts +0 -3
  31. package/lib/cjs/calculations/stringifyAjvErrors.d.ts.map +0 -1
  32. package/lib/cjs/calculations/stringifyAjvErrors.js +0 -9
  33. package/lib/cjs/calculations/stringifyAjvErrors.js.map +0 -1
  34. package/lib/cjs/calculations/stringifyAjvErrors.spec.d.ts +0 -2
  35. package/lib/cjs/calculations/stringifyAjvErrors.spec.d.ts.map +0 -1
  36. package/lib/cjs/calculations/updateAjvValidationMetadata.d.ts.map +0 -1
  37. package/lib/cjs/calculations/updateAjvValidationMetadata.js.map +0 -1
  38. package/lib/cjs/calculations/updateAjvValidationMetadata.spec.d.ts +0 -2
  39. package/lib/cjs/calculations/updateAjvValidationMetadata.spec.d.ts.map +0 -1
  40. package/lib/cjs/decorators/ValidateAjvSchema.d.ts.map +0 -1
  41. package/lib/cjs/decorators/ValidateAjvSchema.js +0 -13
  42. package/lib/cjs/decorators/ValidateAjvSchema.js.map +0 -1
  43. package/lib/cjs/decorators/ValidateAjvSchema.spec.d.ts +0 -2
  44. package/lib/cjs/decorators/ValidateAjvSchema.spec.d.ts.map +0 -1
  45. package/lib/cjs/index.d.ts.map +0 -1
  46. package/lib/cjs/index.js +0 -10
  47. package/lib/cjs/index.js.map +0 -1
  48. package/lib/cjs/package.json +0 -3
  49. package/lib/cjs/pipes/AjvCompiledValidationPipe.d.ts +0 -6
  50. package/lib/cjs/pipes/AjvCompiledValidationPipe.d.ts.map +0 -1
  51. package/lib/cjs/pipes/AjvCompiledValidationPipe.int.spec.d.ts +0 -9
  52. package/lib/cjs/pipes/AjvCompiledValidationPipe.int.spec.d.ts.map +0 -1
  53. package/lib/cjs/pipes/AjvCompiledValidationPipe.js +0 -41
  54. package/lib/cjs/pipes/AjvCompiledValidationPipe.js.map +0 -1
  55. package/lib/cjs/pipes/AjvValidationPipe.d.ts.map +0 -1
  56. package/lib/cjs/pipes/AjvValidationPipe.int.spec.d.ts +0 -9
  57. package/lib/cjs/pipes/AjvValidationPipe.int.spec.d.ts.map +0 -1
  58. package/lib/cjs/pipes/AjvValidationPipe.js +0 -50
  59. package/lib/cjs/pipes/AjvValidationPipe.js.map +0 -1
  60. package/lib/cjs/pipes/AjvValidationPipe.spec.d.ts +0 -2
  61. package/lib/cjs/pipes/AjvValidationPipe.spec.d.ts.map +0 -1
  62. package/lib/cjs/reflectMetadata/models/ajvValidationMetadataReflectKey.d.ts.map +0 -1
  63. package/lib/cjs/reflectMetadata/models/ajvValidationMetadataReflectKey.js +0 -5
  64. package/lib/cjs/reflectMetadata/models/ajvValidationMetadataReflectKey.js.map +0 -1
  65. package/lib/esm/index.d.ts +0 -18
  66. package/lib/esm/index.d.ts.map +0 -1
  67. package/lib/esm/index.js +0 -2
  68. package/lib/esm/index.js.map +0 -1
  69. package/lib/esm/package.json +0 -3
  70. /package/lib/{cjs/reflectMetadata → reflectMetadata}/models/ajvValidationMetadataReflectKey.d.ts +0 -0
@@ -0,0 +1,3 @@
1
+ import { type ErrorObject } from 'ajv';
2
+ export declare function stringifyAjvErrors(errors: Partial<ErrorObject>[]): string;
3
+ //# sourceMappingURL=stringifyAjvErrors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringifyAjvErrors.d.ts","sourceRoot":"","sources":["../../src/calculations/stringifyAjvErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAEvC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,CAOzE"}
@@ -0,0 +1,6 @@
1
+ export function stringifyAjvErrors(errors) {
2
+ return errors
3
+ .map((error) => `[schema: ${error.schemaPath ?? '-'}, instance: ${error.instancePath ?? '-'}]: "${error.message ?? '-'}"`)
4
+ .join('\n');
5
+ }
6
+ //# sourceMappingURL=stringifyAjvErrors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringifyAjvErrors.js","sourceRoot":"","sources":["../../src/calculations/stringifyAjvErrors.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAA8B;IAC/D,OAAO,MAAM;SACV,GAAG,CACF,CAAC,KAA2B,EAAU,EAAE,CACtC,YAAY,KAAK,CAAC,UAAU,IAAI,GAAG,eAAe,KAAK,CAAC,YAAY,IAAI,GAAG,OAAO,KAAK,CAAC,OAAO,IAAI,GAAG,GAAG,CAC5G;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -1,3 +1,3 @@
1
- import { AnySchema } from 'ajv';
1
+ import { type AnySchema } from 'ajv';
2
2
  export declare function updateAjvValidationMetadata(typeList: AnySchema[], index: number): (metadata: AnySchema[][]) => AnySchema[][];
3
3
  //# sourceMappingURL=updateAjvValidationMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateAjvValidationMetadata.d.ts","sourceRoot":"","sources":["../../src/calculations/updateAjvValidationMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,KAAK,CAAC;AAErC,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,EAAE,EACrB,KAAK,EAAE,MAAM,GACZ,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,CAc5C"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateAjvValidationMetadata = updateAjvValidationMetadata;
4
- function updateAjvValidationMetadata(typeList, index) {
1
+ export function updateAjvValidationMetadata(typeList, index) {
5
2
  return (metadata) => {
6
3
  let schemaList = metadata[index];
7
4
  if (schemaList === undefined) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateAjvValidationMetadata.js","sourceRoot":"","sources":["../../src/calculations/updateAjvValidationMetadata.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,2BAA2B,CACzC,QAAqB,EACrB,KAAa;IAEb,OAAO,CAAC,QAAuB,EAAiB,EAAE;QAChD,IAAI,UAAU,GAA4B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,UAAU,GAAG,EAAE,CAAC;YAEhB,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7B,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,3 @@
1
- import { AnySchema } from 'ajv';
1
+ import { type AnySchema } from 'ajv';
2
2
  export declare function ValidateAjvSchema(...schemaList: AnySchema[]): ParameterDecorator;
3
3
  //# sourceMappingURL=ValidateAjvSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidateAjvSchema.d.ts","sourceRoot":"","sources":["../../src/decorators/ValidateAjvSchema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,KAAK,CAAC;AAMrC,wBAAgB,iBAAiB,CAC/B,GAAG,UAAU,EAAE,SAAS,EAAE,GACzB,kBAAkB,CAcpB"}
@@ -0,0 +1,10 @@
1
+ import { buildEmptyArrayMetadata, updateOwnReflectMetadata, } from '@inversifyjs/reflect-metadata-utils';
2
+ import { updateAjvValidationMetadata } from '../calculations/updateAjvValidationMetadata.js';
3
+ import { ajvValidationMetadataReflectKey } from '../reflectMetadata/models/ajvValidationMetadataReflectKey.js';
4
+ // eslint-disable-next-line @typescript-eslint/naming-convention
5
+ export function ValidateAjvSchema(...schemaList) {
6
+ return (target, key, index) => {
7
+ updateOwnReflectMetadata(target.constructor, ajvValidationMetadataReflectKey, buildEmptyArrayMetadata, updateAjvValidationMetadata(schemaList, index), key);
8
+ };
9
+ }
10
+ //# sourceMappingURL=ValidateAjvSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ValidateAjvSchema.js","sourceRoot":"","sources":["../../src/decorators/ValidateAjvSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,OAAO,EAAE,+BAA+B,EAAE,MAAM,8DAA8D,CAAC;AAE/G,gEAAgE;AAChE,MAAM,UAAU,iBAAiB,CAC/B,GAAG,UAAuB;IAE1B,OAAO,CACL,MAAc,EACd,GAAgC,EAChC,KAAa,EACP,EAAE;QACR,wBAAwB,CACtB,MAAM,CAAC,WAAW,EAClB,+BAA+B,EAC/B,uBAAuB,EACvB,2BAA2B,CAAC,UAAU,EAAE,KAAK,CAAC,EAC9C,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export { ValidateAjvSchema } from './decorators/ValidateAjvSchema.js';
2
+ export { AjvCompiledValidationPipe } from './pipes/AjvCompiledValidationPipe.js';
3
+ export { AjvValidationPipe } from './pipes/AjvValidationPipe.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,4 +1,4 @@
1
- export { ValidateAjvSchema } from './decorators/ValidateAjvSchema';
2
- export { AjvCompiledValidationPipe } from './pipes/AjvCompiledValidationPipe';
3
- export { AjvValidationPipe } from './pipes/AjvValidationPipe';
4
- //# sourceMappingURL=index.d.ts.map
1
+ export { ValidateAjvSchema } from './decorators/ValidateAjvSchema.js';
2
+ export { AjvCompiledValidationPipe } from './pipes/AjvCompiledValidationPipe.js';
3
+ export { AjvValidationPipe } from './pipes/AjvValidationPipe.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type AnySchema } from 'ajv';
2
+ import { AjvValidationPipe } from './AjvValidationPipe.js';
3
+ export declare class AjvCompiledValidationPipe extends AjvValidationPipe {
4
+ protected _validate(schema: AnySchema, input: unknown): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=AjvCompiledValidationPipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AjvCompiledValidationPipe.d.ts","sourceRoot":"","sources":["../../src/pipes/AjvCompiledValidationPipe.ts"],"names":[],"mappings":"AAKA,OAAY,EAAE,KAAK,SAAS,EAAyB,MAAM,KAAK,CAAC;AAGjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,qBAAa,yBAA0B,SAAQ,iBAAiB;cACrC,SAAS,CAChC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC;CA+CjB"}
@@ -0,0 +1,36 @@
1
+ import { isPromise } from '@inversifyjs/common';
2
+ import { InversifyValidationError, InversifyValidationErrorKind, } from '@inversifyjs/validation-common';
3
+ import Ajv from 'ajv';
4
+ import { stringifyAjvErrors } from '../calculations/stringifyAjvErrors.js';
5
+ import { AjvValidationPipe } from './AjvValidationPipe.js';
6
+ export class AjvCompiledValidationPipe extends AjvValidationPipe {
7
+ async _validate(schema, input) {
8
+ if (typeof schema === 'boolean') {
9
+ return super._validate(schema, input);
10
+ }
11
+ if (schema.$id === undefined) {
12
+ throw new InversifyValidationError(InversifyValidationErrorKind.invalidConfiguration, 'Schema must have an $id property when using AjvCompiledValidationPipe');
13
+ }
14
+ const validateFunction = this._ajv.getSchema(schema.$id) ??
15
+ this._ajv.addSchema(schema, schema.$id).getSchema(schema.$id);
16
+ if (validateFunction === undefined) {
17
+ throw new InversifyValidationError(InversifyValidationErrorKind.unknown, `Unexpected missing schema after being added to Ajv instance: ${schema.$id}`);
18
+ }
19
+ const result = validateFunction(input);
20
+ if (!isPromise(result)) {
21
+ if (result) {
22
+ return;
23
+ }
24
+ throw new InversifyValidationError(InversifyValidationErrorKind.validationFailed, stringifyAjvErrors(validateFunction.errors ?? []));
25
+ }
26
+ try {
27
+ await this._ajv.validate(schema, input);
28
+ }
29
+ catch (error) {
30
+ if (error instanceof Ajv.ValidationError) {
31
+ throw new InversifyValidationError(InversifyValidationErrorKind.validationFailed, stringifyAjvErrors(error.errors));
32
+ }
33
+ }
34
+ }
35
+ }
36
+ //# sourceMappingURL=AjvCompiledValidationPipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AjvCompiledValidationPipe.js","sourceRoot":"","sources":["../../src/pipes/AjvCompiledValidationPipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,GAA8C,MAAM,KAAK,CAAC;AAEjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,OAAO,yBAA0B,SAAQ,iBAAiB;IAC3C,KAAK,CAAC,SAAS,CAChC,MAAiB,EACjB,KAAc;QAEd,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,wBAAwB,CAChC,4BAA4B,CAAC,oBAAoB,EACjD,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhE,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,wBAAwB,CAChC,4BAA4B,CAAC,OAAO,EACpC,gEAAgE,MAAM,CAAC,GAAG,EAAE,CAC7E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAA+B,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,MAAM,IAAI,wBAAwB,CAChC,4BAA4B,CAAC,gBAAgB,EAC7C,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,CAClD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,GAAG,CAAC,eAAe,EAAE,CAAC;gBACzC,MAAM,IAAI,wBAAwB,CAChC,4BAA4B,CAAC,gBAAgB,EAC7C,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CACjC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
- import { Pipe, PipeMetadata } from '@inversifyjs/framework-core';
2
- import Ajv, { AnySchema } from 'ajv';
1
+ import { type Pipe, type PipeMetadata } from '@inversifyjs/framework-core';
2
+ import Ajv, { type AnySchema } from 'ajv';
3
3
  export declare class AjvValidationPipe implements Pipe {
4
4
  #private;
5
5
  protected readonly _ajv: Ajv;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AjvValidationPipe.d.ts","sourceRoot":"","sources":["../../src/pipes/AjvValidationPipe.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAM3E,OAAO,GAAG,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,KAAK,CAAC;AAK1C,qBAAa,iBAAkB,YAAW,IAAI;;IAC5C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;gBAGjB,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE;IAK/B,OAAO,CAClB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC;cAmBH,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAuC5E"}
@@ -0,0 +1,45 @@
1
+ import { isPromise } from '@inversifyjs/common';
2
+ import { getOwnReflectMetadata } from '@inversifyjs/reflect-metadata-utils';
3
+ import { InversifyValidationError, InversifyValidationErrorKind, } from '@inversifyjs/validation-common';
4
+ import Ajv from 'ajv';
5
+ import { stringifyAjvErrors } from '../calculations/stringifyAjvErrors.js';
6
+ import { ajvValidationMetadataReflectKey } from '../reflectMetadata/models/ajvValidationMetadataReflectKey.js';
7
+ export class AjvValidationPipe {
8
+ _ajv;
9
+ #schemaList;
10
+ constructor(ajv, typeList) {
11
+ this._ajv = ajv;
12
+ this.#schemaList = typeList ?? [];
13
+ }
14
+ async execute(input, metadata) {
15
+ const parameterSchemaList = getOwnReflectMetadata(metadata.targetClass, ajvValidationMetadataReflectKey, metadata.methodName)?.[metadata.parameterIndex];
16
+ if (parameterSchemaList === undefined) {
17
+ return this.#applySchemaList(input, this.#schemaList);
18
+ }
19
+ return this.#applySchemaList(await this.#applySchemaList(input, this.#schemaList), parameterSchemaList);
20
+ }
21
+ async _validate(schema, input) {
22
+ const result = this._ajv.validate(schema, input);
23
+ if (!isPromise(result)) {
24
+ if (result) {
25
+ return;
26
+ }
27
+ throw new InversifyValidationError(InversifyValidationErrorKind.validationFailed, stringifyAjvErrors(this._ajv.errors ?? []));
28
+ }
29
+ try {
30
+ await result;
31
+ }
32
+ catch (error) {
33
+ if (error instanceof Ajv.ValidationError) {
34
+ throw new InversifyValidationError(InversifyValidationErrorKind.validationFailed, stringifyAjvErrors(error.errors));
35
+ }
36
+ }
37
+ }
38
+ async #applySchemaList(input, schemaList) {
39
+ for (const schema of schemaList) {
40
+ await this._validate(schema, input);
41
+ }
42
+ return input;
43
+ }
44
+ }
45
+ //# sourceMappingURL=AjvValidationPipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AjvValidationPipe.js","sourceRoot":"","sources":["../../src/pipes/AjvValidationPipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EACL,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,GAAuB,MAAM,KAAK,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,8DAA8D,CAAC;AAE/G,MAAM,OAAO,iBAAiB;IACT,IAAI,CAAM;IACpB,WAAW,CAAc;IAElC,YAAY,GAAQ,EAAE,QAAsB;QAC1C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,QAAQ,IAAI,EAAE,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAc,EACd,QAAsB;QAEtB,MAAM,mBAAmB,GAA4B,qBAAqB,CAGxE,QAAQ,CAAC,WAAW,EACpB,+BAA+B,EAC/B,QAAQ,CAAC,UAAU,CACpB,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE7B,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAC1B,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EACpD,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,KAAc;QACzD,MAAM,MAAM,GAA+B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAC3D,MAAM,EACN,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,MAAM,IAAI,wBAAwB,CAChC,4BAA4B,CAAC,gBAAgB,EAC7C,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAC3C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC;QACf,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,GAAG,CAAC,eAAe,EAAE,CAAC;gBACzC,MAAM,IAAI,wBAAwB,CAChC,4BAA4B,CAAC,gBAAgB,EAC7C,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CACjC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,KAAc,EACd,UAAuB;QAEvB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajvValidationMetadataReflectKey.d.ts","sourceRoot":"","sources":["../../../src/reflectMetadata/models/ajvValidationMetadataReflectKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,EAAE,MACiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const ajvValidationMetadataReflectKey = '@inversifyjs/ajv-validation/ajvValidationMetadataReflectKey';
2
+ //# sourceMappingURL=ajvValidationMetadataReflectKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajvValidationMetadataReflectKey.js","sourceRoot":"","sources":["../../../src/reflectMetadata/models/ajvValidationMetadataReflectKey.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,+BAA+B,GAC1C,6DAA6D,CAAC"}
package/package.json CHANGED
@@ -5,29 +5,28 @@
5
5
  },
6
6
  "description": "InversifyJs http ajv validation package",
7
7
  "dependencies": {
8
- "@inversifyjs/common": "1.5.2",
9
- "@inversifyjs/framework-core": "1.0.1",
10
- "@inversifyjs/validation-common": "2.0.2",
11
- "@inversifyjs/reflect-metadata-utils": "1.4.1"
8
+ "@inversifyjs/common": "2.0.0",
9
+ "@inversifyjs/reflect-metadata-utils": "1.5.0",
10
+ "@inversifyjs/validation-common": "3.0.0"
12
11
  },
13
12
  "devDependencies": {
14
- "@stryker-mutator/core": "9.4.0",
15
- "@stryker-mutator/typescript-checker": "9.4.0",
16
- "@stryker-mutator/vitest-runner": "9.4.0",
13
+ "@stryker-mutator/core": "9.6.0",
14
+ "@stryker-mutator/typescript-checker": "9.6.0",
15
+ "@stryker-mutator/vitest-runner": "9.6.0",
17
16
  "@types/express": "5.0.6",
18
- "@types/node": "24.10.9",
19
- "@vitest/coverage-v8": "4.0.18",
20
- "eslint": "9.39.2",
21
- "inversify": "^7.11.0",
17
+ "@types/node": "24.12.0",
18
+ "@vitest/coverage-v8": "4.1.0",
19
+ "eslint": "10.0.3",
20
+ "inversify": "8.0.0",
22
21
  "prettier": "3.8.1",
23
- "rimraf": "6.1.2",
24
- "rollup": "4.56.0",
25
- "ts-loader": "9.5.4",
22
+ "rimraf": "6.1.3",
26
23
  "tslib": "2.8.1",
27
24
  "typescript": "5.9.3",
28
- "vitest": "4.0.18",
29
- "@inversifyjs/http-core": "4.10.2",
30
- "@inversifyjs/http-express": "4.10.2"
25
+ "vitest": "4.1.0",
26
+ "@inversifyjs/eslint-plugin-require-extensions": "0.2.0",
27
+ "@inversifyjs/framework-core": "2.0.0",
28
+ "@inversifyjs/http-core": "5.0.0",
29
+ "@inversifyjs/http-express": "5.0.0"
31
30
  },
32
31
  "devEngines": {
33
32
  "node": "^24.10.0",
@@ -45,17 +44,12 @@
45
44
  "typescript"
46
45
  ],
47
46
  "license": "MIT",
48
- "main": "lib/cjs/index.js",
49
- "module": "lib/esm/index.js",
50
47
  "exports": {
51
- ".": {
52
- "import": "./lib/esm/index.js",
53
- "require": "./lib/cjs/index.js"
54
- }
48
+ ".": "./lib/index.js"
55
49
  },
56
50
  "name": "@inversifyjs/ajv-validation",
57
51
  "peerDependencies": {
58
- "ajv": "^8.17.1"
52
+ "ajv": "^8.18.0"
59
53
  },
60
54
  "publishConfig": {
61
55
  "access": "public"
@@ -64,11 +58,10 @@
64
58
  "type": "git",
65
59
  "url": "git+https://github.com/inversify/monorepo.git"
66
60
  },
67
- "version": "2.0.2",
61
+ "version": "3.0.0",
62
+ "type": "module",
68
63
  "scripts": {
69
- "build": "pnpm run build:cjs && pnpm run build:esm",
70
- "build:cjs": "tsc --build tsconfig.cjs.json && pnpm exec foundation-ts-package-cjs ./lib/cjs",
71
- "build:esm": "rollup -c ./rollup.config.mjs && pnpm exec foundation-ts-package-esm ./lib/esm",
64
+ "build": "tsc",
72
65
  "build:clean": "rimraf lib",
73
66
  "format": "prettier --write ./src",
74
67
  "lint": "eslint ./src",
package/CHANGELOG.md DELETED
@@ -1,31 +0,0 @@
1
- # @inversifyjs/ajv-validation
2
-
3
- ## 2.0.2
4
-
5
- ### Patch Changes
6
-
7
- - Updated dependencies
8
- - @inversifyjs/validation-common@2.0.2
9
-
10
- ## 2.0.1
11
-
12
- ### Patch Changes
13
-
14
- - Updated dependencies
15
- - @inversifyjs/reflect-metadata-utils@1.4.1
16
- - @inversifyjs/framework-core@1.0.1
17
- - @inversifyjs/validation-common@2.0.1
18
-
19
- ## 2.0.0
20
-
21
- ### Minor Changes
22
-
23
- - Added `AjvValidationPipe`
24
- - Added `ValidateAjvSchema` decorator
25
- - Added `AjvCompiledValidationPipe`
26
-
27
- ### Patch Changes
28
-
29
- - Updated dependencies
30
- - @inversifyjs/framework-core@1.0.0
31
- - @inversifyjs/validation-common@2.0.0
@@ -1,3 +0,0 @@
1
- import { ErrorObject } from 'ajv';
2
- export declare function stringifyAjvErrors(errors: Partial<ErrorObject>[]): string;
3
- //# sourceMappingURL=stringifyAjvErrors.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stringifyAjvErrors.d.ts","sourceRoot":"","sources":["../../../src/calculations/stringifyAjvErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAElC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,CAOzE"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stringifyAjvErrors = stringifyAjvErrors;
4
- function stringifyAjvErrors(errors) {
5
- return errors
6
- .map((error) => `[schema: ${error.schemaPath ?? '-'}, instance: ${error.instancePath ?? '-'}]: "${error.message ?? '-'}"`)
7
- .join('\n');
8
- }
9
- //# sourceMappingURL=stringifyAjvErrors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stringifyAjvErrors.js","sourceRoot":"","sources":["../../../src/calculations/stringifyAjvErrors.ts"],"names":[],"mappings":";;AAEA,gDAOC;AAPD,SAAgB,kBAAkB,CAAC,MAA8B;IAC/D,OAAO,MAAM;SACV,GAAG,CACF,CAAC,KAA2B,EAAU,EAAE,CACtC,YAAY,KAAK,CAAC,UAAU,IAAI,GAAG,eAAe,KAAK,CAAC,YAAY,IAAI,GAAG,OAAO,KAAK,CAAC,OAAO,IAAI,GAAG,GAAG,CAC5G;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=stringifyAjvErrors.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stringifyAjvErrors.spec.d.ts","sourceRoot":"","sources":["../../../src/calculations/stringifyAjvErrors.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateAjvValidationMetadata.d.ts","sourceRoot":"","sources":["../../../src/calculations/updateAjvValidationMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAEhC,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,SAAS,EAAE,EACrB,KAAK,EAAE,MAAM,GACZ,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,CAc5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateAjvValidationMetadata.js","sourceRoot":"","sources":["../../../src/calculations/updateAjvValidationMetadata.ts"],"names":[],"mappings":";;AAEA,kEAiBC;AAjBD,SAAgB,2BAA2B,CACzC,QAAqB,EACrB,KAAa;IAEb,OAAO,CAAC,QAAuB,EAAiB,EAAE;QAChD,IAAI,UAAU,GAA4B,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE1D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,UAAU,GAAG,EAAE,CAAC;YAEhB,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QAC/B,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAE7B,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=updateAjvValidationMetadata.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"updateAjvValidationMetadata.spec.d.ts","sourceRoot":"","sources":["../../../src/calculations/updateAjvValidationMetadata.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValidateAjvSchema.d.ts","sourceRoot":"","sources":["../../../src/decorators/ValidateAjvSchema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAMhC,wBAAgB,iBAAiB,CAC/B,GAAG,UAAU,EAAE,SAAS,EAAE,GACzB,kBAAkB,CAcpB"}
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ValidateAjvSchema = ValidateAjvSchema;
4
- const reflect_metadata_utils_1 = require("@inversifyjs/reflect-metadata-utils");
5
- const updateAjvValidationMetadata_1 = require("../calculations/updateAjvValidationMetadata");
6
- const ajvValidationMetadataReflectKey_1 = require("../reflectMetadata/models/ajvValidationMetadataReflectKey");
7
- // eslint-disable-next-line @typescript-eslint/naming-convention
8
- function ValidateAjvSchema(...schemaList) {
9
- return (target, key, index) => {
10
- (0, reflect_metadata_utils_1.updateOwnReflectMetadata)(target.constructor, ajvValidationMetadataReflectKey_1.ajvValidationMetadataReflectKey, reflect_metadata_utils_1.buildEmptyArrayMetadata, (0, updateAjvValidationMetadata_1.updateAjvValidationMetadata)(schemaList, index), key);
11
- };
12
- }
13
- //# sourceMappingURL=ValidateAjvSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValidateAjvSchema.js","sourceRoot":"","sources":["../../../src/decorators/ValidateAjvSchema.ts"],"names":[],"mappings":";;AAUA,8CAgBC;AA1BD,gFAG6C;AAG7C,6FAA0F;AAC1F,+GAA4G;AAE5G,gEAAgE;AAChE,SAAgB,iBAAiB,CAC/B,GAAG,UAAuB;IAE1B,OAAO,CACL,MAAc,EACd,GAAgC,EAChC,KAAa,EACP,EAAE;QACR,IAAA,iDAAwB,EACtB,MAAM,CAAC,WAAW,EAClB,iEAA+B,EAC/B,gDAAuB,EACvB,IAAA,yDAA2B,EAAC,UAAU,EAAE,KAAK,CAAC,EAC9C,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ValidateAjvSchema.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ValidateAjvSchema.spec.d.ts","sourceRoot":"","sources":["../../../src/decorators/ValidateAjvSchema.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
package/lib/cjs/index.js DELETED
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AjvValidationPipe = exports.AjvCompiledValidationPipe = exports.ValidateAjvSchema = void 0;
4
- var ValidateAjvSchema_1 = require("./decorators/ValidateAjvSchema");
5
- Object.defineProperty(exports, "ValidateAjvSchema", { enumerable: true, get: function () { return ValidateAjvSchema_1.ValidateAjvSchema; } });
6
- var AjvCompiledValidationPipe_1 = require("./pipes/AjvCompiledValidationPipe");
7
- Object.defineProperty(exports, "AjvCompiledValidationPipe", { enumerable: true, get: function () { return AjvCompiledValidationPipe_1.AjvCompiledValidationPipe; } });
8
- var AjvValidationPipe_1 = require("./pipes/AjvValidationPipe");
9
- Object.defineProperty(exports, "AjvValidationPipe", { enumerable: true, get: function () { return AjvValidationPipe_1.AjvValidationPipe; } });
10
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,oEAAmE;AAA1D,sHAAA,iBAAiB,OAAA;AAC1B,+EAA8E;AAArE,sIAAA,yBAAyB,OAAA;AAClC,+DAA8D;AAArD,sHAAA,iBAAiB,OAAA"}
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,6 +0,0 @@
1
- import { AnySchema } from 'ajv';
2
- import { AjvValidationPipe } from './AjvValidationPipe';
3
- export declare class AjvCompiledValidationPipe extends AjvValidationPipe {
4
- protected _validate(schema: AnySchema, input: unknown): Promise<void>;
5
- }
6
- //# sourceMappingURL=AjvCompiledValidationPipe.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AjvCompiledValidationPipe.d.ts","sourceRoot":"","sources":["../../../src/pipes/AjvCompiledValidationPipe.ts"],"names":[],"mappings":"AAKA,OAAY,EAAE,SAAS,EAAoB,MAAM,KAAK,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,yBAA0B,SAAQ,iBAAiB;cACrC,SAAS,CAChC,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC;CA+CjB"}
@@ -1,9 +0,0 @@
1
- import { ErrorFilter, Pipe } from '@inversifyjs/framework-core';
2
- import { Container, Newable } from 'inversify';
3
- export interface Server {
4
- host: string;
5
- port: number;
6
- shutdown: () => Promise<void>;
7
- }
8
- export declare function buildExpressServer(container: Container, errorFilterList: Newable<ErrorFilter>[], pipeList: (Newable<Pipe> | Pipe)[]): Promise<Server>;
9
- //# sourceMappingURL=AjvCompiledValidationPipe.int.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AjvCompiledValidationPipe.int.spec.d.ts","sourceRoot":"","sources":["../../../src/pipes/AjvCompiledValidationPipe.int.spec.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,WAAW,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAW5E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAK/C,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EACvC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GACjC,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AjvCompiledValidationPipe = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@inversifyjs/common");
6
- const validation_common_1 = require("@inversifyjs/validation-common");
7
- const ajv_1 = tslib_1.__importDefault(require("ajv"));
8
- const stringifyAjvErrors_1 = require("../calculations/stringifyAjvErrors");
9
- const AjvValidationPipe_1 = require("./AjvValidationPipe");
10
- class AjvCompiledValidationPipe extends AjvValidationPipe_1.AjvValidationPipe {
11
- async _validate(schema, input) {
12
- if (typeof schema === 'boolean') {
13
- return super._validate(schema, input);
14
- }
15
- if (schema.$id === undefined) {
16
- throw new validation_common_1.InversifyValidationError(validation_common_1.InversifyValidationErrorKind.invalidConfiguration, 'Schema must have an $id property when using AjvCompiledValidationPipe');
17
- }
18
- const validateFunction = this._ajv.getSchema(schema.$id) ??
19
- this._ajv.addSchema(schema, schema.$id).getSchema(schema.$id);
20
- if (validateFunction === undefined) {
21
- throw new validation_common_1.InversifyValidationError(validation_common_1.InversifyValidationErrorKind.unknown, `Unexpected missing schema after being added to Ajv instance: ${schema.$id}`);
22
- }
23
- const result = validateFunction(input);
24
- if (!(0, common_1.isPromise)(result)) {
25
- if (result) {
26
- return;
27
- }
28
- throw new validation_common_1.InversifyValidationError(validation_common_1.InversifyValidationErrorKind.validationFailed, (0, stringifyAjvErrors_1.stringifyAjvErrors)(validateFunction.errors ?? []));
29
- }
30
- try {
31
- await this._ajv.validate(schema, input);
32
- }
33
- catch (error) {
34
- if (error instanceof ajv_1.default.ValidationError) {
35
- throw new validation_common_1.InversifyValidationError(validation_common_1.InversifyValidationErrorKind.validationFailed, (0, stringifyAjvErrors_1.stringifyAjvErrors)(error.errors));
36
- }
37
- }
38
- }
39
- }
40
- exports.AjvCompiledValidationPipe = AjvCompiledValidationPipe;
41
- //# sourceMappingURL=AjvCompiledValidationPipe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AjvCompiledValidationPipe.js","sourceRoot":"","sources":["../../../src/pipes/AjvCompiledValidationPipe.ts"],"names":[],"mappings":";;;;AAAA,gDAAgD;AAChD,sEAGwC;AACxC,sDAAuD;AAEvD,2EAAwE;AACxE,2DAAwD;AAExD,MAAa,yBAA0B,SAAQ,qCAAiB;IAC3C,KAAK,CAAC,SAAS,CAChC,MAAiB,EACjB,KAAc;QAEd,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,4CAAwB,CAChC,gDAA4B,CAAC,oBAAoB,EACjD,uEAAuE,CACxE,CAAC;QACJ,CAAC;QAED,MAAM,gBAAgB,GACpB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEhE,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,4CAAwB,CAChC,gDAA4B,CAAC,OAAO,EACpC,gEAAgE,MAAM,CAAC,GAAG,EAAE,CAC7E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAA+B,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAA,kBAAS,EAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,MAAM,IAAI,4CAAwB,CAChC,gDAA4B,CAAC,gBAAgB,EAC7C,IAAA,uCAAkB,EAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE,CAAC,CAClD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,aAAG,CAAC,eAAe,EAAE,CAAC;gBACzC,MAAM,IAAI,4CAAwB,CAChC,gDAA4B,CAAC,gBAAgB,EAC7C,IAAA,uCAAkB,EAAC,KAAK,CAAC,MAAM,CAAC,CACjC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAnDD,8DAmDC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"AjvValidationPipe.d.ts","sourceRoot":"","sources":["../../../src/pipes/AjvValidationPipe.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAMjE,OAAO,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AAKrC,qBAAa,iBAAkB,YAAW,IAAI;;IAC5C,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;gBAGjB,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE;IAK/B,OAAO,CAClB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,OAAO,CAAC;cAmBH,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAuC5E"}
@@ -1,9 +0,0 @@
1
- import { ErrorFilter, Pipe } from '@inversifyjs/framework-core';
2
- import { Container, Newable } from 'inversify';
3
- export interface Server {
4
- host: string;
5
- port: number;
6
- shutdown: () => Promise<void>;
7
- }
8
- export declare function buildExpressServer(container: Container, errorFilterList: Newable<ErrorFilter>[], pipeList: (Newable<Pipe> | Pipe)[]): Promise<Server>;
9
- //# sourceMappingURL=AjvValidationPipe.int.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AjvValidationPipe.int.spec.d.ts","sourceRoot":"","sources":["../../../src/pipes/AjvValidationPipe.int.spec.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,WAAW,EAAE,IAAI,EAAE,MAAM,6BAA6B,CAAC;AAW5E,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAK/C,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAED,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,EACvC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,GACjC,OAAO,CAAC,MAAM,CAAC,CAoDjB"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AjvValidationPipe = void 0;
4
- const tslib_1 = require("tslib");
5
- const common_1 = require("@inversifyjs/common");
6
- const reflect_metadata_utils_1 = require("@inversifyjs/reflect-metadata-utils");
7
- const validation_common_1 = require("@inversifyjs/validation-common");
8
- const ajv_1 = tslib_1.__importDefault(require("ajv"));
9
- const stringifyAjvErrors_1 = require("../calculations/stringifyAjvErrors");
10
- const ajvValidationMetadataReflectKey_1 = require("../reflectMetadata/models/ajvValidationMetadataReflectKey");
11
- class AjvValidationPipe {
12
- _ajv;
13
- #schemaList;
14
- constructor(ajv, typeList) {
15
- this._ajv = ajv;
16
- this.#schemaList = typeList ?? [];
17
- }
18
- async execute(input, metadata) {
19
- const parameterSchemaList = (0, reflect_metadata_utils_1.getOwnReflectMetadata)(metadata.targetClass, ajvValidationMetadataReflectKey_1.ajvValidationMetadataReflectKey, metadata.methodName)?.[metadata.parameterIndex];
20
- if (parameterSchemaList === undefined) {
21
- return this.#applySchemaList(input, this.#schemaList);
22
- }
23
- return this.#applySchemaList(await this.#applySchemaList(input, this.#schemaList), parameterSchemaList);
24
- }
25
- async _validate(schema, input) {
26
- const result = this._ajv.validate(schema, input);
27
- if (!(0, common_1.isPromise)(result)) {
28
- if (result) {
29
- return;
30
- }
31
- throw new validation_common_1.InversifyValidationError(validation_common_1.InversifyValidationErrorKind.validationFailed, (0, stringifyAjvErrors_1.stringifyAjvErrors)(this._ajv.errors ?? []));
32
- }
33
- try {
34
- await result;
35
- }
36
- catch (error) {
37
- if (error instanceof ajv_1.default.ValidationError) {
38
- throw new validation_common_1.InversifyValidationError(validation_common_1.InversifyValidationErrorKind.validationFailed, (0, stringifyAjvErrors_1.stringifyAjvErrors)(error.errors));
39
- }
40
- }
41
- }
42
- async #applySchemaList(input, schemaList) {
43
- for (const schema of schemaList) {
44
- await this._validate(schema, input);
45
- }
46
- return input;
47
- }
48
- }
49
- exports.AjvValidationPipe = AjvValidationPipe;
50
- //# sourceMappingURL=AjvValidationPipe.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AjvValidationPipe.js","sourceRoot":"","sources":["../../../src/pipes/AjvValidationPipe.ts"],"names":[],"mappings":";;;;AAAA,gDAAgD;AAEhD,gFAA4E;AAC5E,sEAGwC;AACxC,sDAAqC;AAErC,2EAAwE;AACxE,+GAA4G;AAE5G,MAAa,iBAAiB;IACT,IAAI,CAAM;IACpB,WAAW,CAAc;IAElC,YAAY,GAAQ,EAAE,QAAsB;QAC1C,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,WAAW,GAAG,QAAQ,IAAI,EAAE,CAAC;IACpC,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAc,EACd,QAAsB;QAEtB,MAAM,mBAAmB,GAA4B,IAAA,8CAAqB,EAGxE,QAAQ,CAAC,WAAW,EACpB,iEAA+B,EAC/B,QAAQ,CAAC,UAAU,CACpB,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAE7B,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAC1B,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,EACpD,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,KAAc;QACzD,MAAM,MAAM,GAA+B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAC3D,MAAM,EACN,KAAK,CACN,CAAC;QAEF,IAAI,CAAC,IAAA,kBAAS,EAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;YACT,CAAC;YAED,MAAM,IAAI,4CAAwB,CAChC,gDAA4B,CAAC,gBAAgB,EAC7C,IAAA,uCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAC3C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC;QACf,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,KAAK,YAAY,aAAG,CAAC,eAAe,EAAE,CAAC;gBACzC,MAAM,IAAI,4CAAwB,CAChC,gDAA4B,CAAC,gBAAgB,EAC7C,IAAA,uCAAkB,EAAC,KAAK,CAAC,MAAM,CAAC,CACjC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,KAAc,EACd,UAAuB;QAEvB,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAtED,8CAsEC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=AjvValidationPipe.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AjvValidationPipe.spec.d.ts","sourceRoot":"","sources":["../../../src/pipes/AjvValidationPipe.spec.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ajvValidationMetadataReflectKey.d.ts","sourceRoot":"","sources":["../../../../src/reflectMetadata/models/ajvValidationMetadataReflectKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,EAAE,MACiB,CAAC"}
@@ -1,5 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ajvValidationMetadataReflectKey = void 0;
4
- exports.ajvValidationMetadataReflectKey = '@inversifyjs/ajv-validation/ajvValidationMetadataReflectKey';
5
- //# sourceMappingURL=ajvValidationMetadataReflectKey.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ajvValidationMetadataReflectKey.js","sourceRoot":"","sources":["../../../../src/reflectMetadata/models/ajvValidationMetadataReflectKey.ts"],"names":[],"mappings":";;;AAAa,QAAA,+BAA+B,GAC1C,6DAA6D,CAAC"}
@@ -1,18 +0,0 @@
1
- import Ajv, { AnySchema } from 'ajv';
2
- import { Pipe, PipeMetadata } from '@inversifyjs/framework-core';
3
-
4
- declare function ValidateAjvSchema(...schemaList: AnySchema[]): ParameterDecorator;
5
-
6
- declare class AjvValidationPipe implements Pipe {
7
- #private;
8
- protected readonly _ajv: Ajv;
9
- constructor(ajv: Ajv, typeList?: AnySchema[]);
10
- execute(input: unknown, metadata: PipeMetadata): Promise<unknown>;
11
- protected _validate(schema: AnySchema, input: unknown): Promise<void>;
12
- }
13
-
14
- declare class AjvCompiledValidationPipe extends AjvValidationPipe {
15
- protected _validate(schema: AnySchema, input: unknown): Promise<void>;
16
- }
17
-
18
- export { AjvCompiledValidationPipe, AjvValidationPipe, ValidateAjvSchema };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
package/lib/esm/index.js DELETED
@@ -1,2 +0,0 @@
1
- import{updateOwnReflectMetadata as a,buildEmptyArrayMetadata as t,getOwnReflectMetadata as i}from"@inversifyjs/reflect-metadata-utils";import{isPromise as e}from"@inversifyjs/common";import{InversifyValidationError as n,InversifyValidationErrorKind as s}from"@inversifyjs/validation-common";import r from"ajv";const o="@inversifyjs/ajv-validation/ajvValidationMetadataReflectKey";function c(...i){return(e,n,s)=>{a(e.constructor,o,t,function(a,t){return i=>{let e=i[t];return void 0===e&&(e=[],i[t]=e),e.push(...a),i}}(i,s),n)}}function d(a){return a.map(a=>`[schema: ${a.schemaPath??"-"}, instance: ${a.instancePath??"-"}]: "${a.message??"-"}"`).join("\n")}class h{_ajv;#a;constructor(a,t){this._ajv=a,this.#a=t??[]}async execute(a,t){const e=i(t.targetClass,o,t.methodName)?.[t.parameterIndex];return void 0===e?this.#t(a,this.#a):this.#t(await this.#t(a,this.#a),e)}async _validate(a,t){const i=this._ajv.validate(a,t);if(!e(i)){if(i)return;throw new n(s.validationFailed,d(this._ajv.errors??[]))}try{await i}catch(a){if(a instanceof r.ValidationError)throw new n(s.validationFailed,d(a.errors))}}async#t(a,t){for(const i of t)await this._validate(i,a);return a}}class m extends h{async _validate(a,t){if("boolean"==typeof a)return super._validate(a,t);if(void 0===a.$id)throw new n(s.invalidConfiguration,"Schema must have an $id property when using AjvCompiledValidationPipe");const i=this._ajv.getSchema(a.$id)??this._ajv.addSchema(a,a.$id).getSchema(a.$id);if(void 0===i)throw new n(s.unknown,`Unexpected missing schema after being added to Ajv instance: ${a.$id}`);const o=i(t);if(!e(o)){if(o)return;throw new n(s.validationFailed,d(i.errors??[]))}try{await this._ajv.validate(a,t)}catch(a){if(a instanceof r.ValidationError)throw new n(s.validationFailed,d(a.errors))}}}export{m as AjvCompiledValidationPipe,h as AjvValidationPipe,c as ValidateAjvSchema};
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/reflectMetadata/models/ajvValidationMetadataReflectKey.ts","../../src/decorators/ValidateAjvSchema.ts","../../src/calculations/updateAjvValidationMetadata.ts","../../src/calculations/stringifyAjvErrors.ts","../../src/pipes/AjvValidationPipe.ts","../../src/pipes/AjvCompiledValidationPipe.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["ajvValidationMetadataReflectKey","ValidateAjvSchema","schemaList","target","key","index","updateOwnReflectMetadata","constructor","buildEmptyArrayMetadata","typeList","metadata","undefined","push","updateAjvValidationMetadata","stringifyAjvErrors","errors","map","error","schemaPath","instancePath","message","join","AjvValidationPipe","_ajv","ajv","this","execute","input","parameterSchemaList","getOwnReflectMetadata","targetClass","methodName","parameterIndex","applySchemaList","_validate","schema","result","validate","isPromise","InversifyValidationError","InversifyValidationErrorKind","validationFailed","Ajv","ValidationError","AjvCompiledValidationPipe","super","$id","invalidConfiguration","validateFunction","getSchema","addSchema","unknown"],"mappings":"sTAAO,MAAMA,EACX,8DCSI,SAAUC,KACXC,GAEH,MAAO,CACLC,EACAC,EACAC,KAEAC,EACEH,EAAOI,YACPP,EACAQ,ECnBA,SACJC,EACAJ,GAEA,OAAQK,IACN,IAAIR,EAAsCQ,EAASL,GAUnD,YARmBM,IAAfT,IACFA,EAAa,GAEbQ,EAASL,GAASH,GAGpBA,EAAWU,QAAQH,GAEZC,EAEX,CDGMG,CAA4BX,EAAYG,GACxCD,GAGN,CExBM,SAAUU,EAAmBC,GACjC,OAAOA,EACJC,IACEC,GACC,YAAYA,EAAMC,YAAc,kBAAkBD,EAAME,cAAgB,UAAUF,EAAMG,SAAW,QAEtGC,KAAK,KACV,OCGaC,EACQC,KACVrB,GAET,WAAAK,CAAYiB,EAAUf,GACpBgB,KAAKF,KAAOC,EACZC,MAAKvB,EAAcO,GAAY,EACjC,CAEO,aAAMiB,CACXC,EACAjB,GAEA,MAAMkB,EAA+CC,EAGnDnB,EAASoB,YACT9B,EACAU,EAASqB,cACPrB,EAASsB,gBAEb,YAA4BrB,IAAxBiB,EACKH,MAAKQ,EAAiBN,EAAOF,MAAKvB,GAGpCuB,MAAKQ,QACJR,MAAKQ,EAAiBN,EAAOF,MAAKvB,GACxC0B,EAEJ,CAEU,eAAMM,CAAUC,EAAmBR,GAC3C,MAAMS,EAAqCX,KAAKF,KAAKc,SACnDF,EACAR,GAGF,IAAKW,EAAUF,GAAS,CACtB,GAAIA,EACF,OAGF,MAAM,IAAIG,EACRC,EAA6BC,iBAC7B3B,EAAmBW,KAAKF,KAAKR,QAAU,IAE3C,CAEA,UACQqB,CACR,CAAE,MAAOnB,GACP,GAAIA,aAAiByB,EAAIC,gBACvB,MAAM,IAAIJ,EACRC,EAA6BC,iBAC7B3B,EAAmBG,EAAMF,QAG/B,CACF,CAEA,OAAMkB,CACJN,EACAzB,GAEA,IAAK,MAAMiC,KAAUjC,QACbuB,KAAKS,UAAUC,EAAQR,GAG/B,OAAOA,CACT,ECvEI,MAAOiB,UAAkCtB,EAC1B,eAAMY,CACvBC,EACAR,GAEA,GAAsB,kBAAXQ,EACT,OAAOU,MAAMX,UAAUC,EAAQR,GAGjC,QAAmBhB,IAAfwB,EAAOW,IACT,MAAM,IAAIP,EACRC,EAA6BO,qBAC7B,yEAIJ,MAAMC,EACJvB,KAAKF,KAAK0B,UAAUd,EAAOW,MAC3BrB,KAAKF,KAAK2B,UAAUf,EAAQA,EAAOW,KAAKG,UAAUd,EAAOW,KAE3D,QAAyBnC,IAArBqC,EACF,MAAM,IAAIT,EACRC,EAA6BW,QAC7B,gEAAgEhB,EAAOW,OAI3E,MAAMV,EAAqCY,EAAiBrB,GAE5D,IAAKW,EAAUF,GAAS,CACtB,GAAIA,EACF,OAGF,MAAM,IAAIG,EACRC,EAA6BC,iBAC7B3B,EAAmBkC,EAAiBjC,QAAU,IAElD,CAEA,UACQU,KAAKF,KAAKc,SAASF,EAAQR,EACnC,CAAE,MAAOV,GACP,GAAIA,aAAiByB,EAAIC,gBACvB,MAAM,IAAIJ,EACRC,EAA6BC,iBAC7B3B,EAAmBG,EAAMF,QAG/B,CACF"}
@@ -1,3 +0,0 @@
1
- {
2
- "type": "module"
3
- }