@tsed/ajv 8.10.0-rc.3 → 8.11.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.
@@ -0,0 +1,9 @@
1
+ import { inject as e } from "@tsed/di";
2
+ import { AjvService as i } from "../services/AjvService.js";
3
+ function m(r, t) {
4
+ return e(i).validate(r, t);
5
+ }
6
+ export {
7
+ m as validate
8
+ };
9
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sources":["../../../src/fn/validate.ts"],"sourcesContent":["import {inject} from \"@tsed/di\";\nimport {JsonSchema} from \"@tsed/schema\";\n\nimport {AjvService, type AjvValidateOptions} from \"../services/AjvService.js\";\n\n/**\n * Validate a value against a JSON schema or a type.\n * @param value\n * @param options\n */\nexport function validate(value: unknown, options: AjvValidateOptions | JsonSchema) {\n return inject(AjvService).validate(value, options);\n}\n"],"names":["validate","value","options","inject","AjvService"],"mappings":";;AAUgB,SAAAA,EAASC,GAAgBC,GAA0C;AACjF,SAAOC,EAAOC,CAAU,EAAE,SAASH,GAAOC,CAAO;AACnD;"}
@@ -1,17 +1,19 @@
1
1
  import { Formats as e } from "./decorators/formats.js";
2
- import { Keyword as a } from "./decorators/keyword.js";
2
+ import { Keyword as m } from "./decorators/keyword.js";
3
3
  import { AjvValidationError as p } from "./errors/AjvValidationError.js";
4
+ import { validate as i } from "./fn/validate.js";
4
5
  import "./services/Ajv.js";
5
- import { AjvService as i } from "./services/AjvService.js";
6
+ import { AjvService as v } from "./services/AjvService.js";
6
7
  import { defaultErrorFormatter as n } from "./utils/defaultErrorFormatter.js";
7
- import { getInstancePath as c, getPath as g } from "./utils/getPath.js";
8
+ import { getInstancePath as g, getPath as h } from "./utils/getPath.js";
8
9
  export {
9
- i as AjvService,
10
+ v as AjvService,
10
11
  p as AjvValidationError,
11
12
  e as Formats,
12
- a as Keyword,
13
+ m as Keyword,
13
14
  n as defaultErrorFormatter,
14
- c as getInstancePath,
15
- g as getPath
15
+ g as getInstancePath,
16
+ h as getPath,
17
+ i as validate
16
18
  };
17
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Ajv.js","sources":["../../../src/services/Ajv.ts"],"sourcesContent":["import {cleanObject} from \"@tsed/core\";\nimport {constant, inject, injectable, injector, InjectorService, ProviderScope} from \"@tsed/di\";\nimport {Ajv, Format, KeywordDefinition, Options, Vocabulary} from \"ajv\";\nimport AjvErrors from \"ajv-errors\";\nimport AjvFormats from \"ajv-formats\";\n\nimport {FormatsMethods} from \"../interfaces/FormatsMethods.js\";\nimport {IAjvSettings} from \"../interfaces/IAjvSettings.js\";\n\nfunction getHandler(key: string, service: any) {\n if (service[key]) {\n return service[key].bind(service);\n }\n}\n\nfunction getKeywordProviders() {\n return injector().getProviders(\"ajv:keyword\");\n}\n\nfunction bindKeywords(): Vocabulary {\n return getKeywordProviders().map((provider) => {\n const options = provider.store.get<Omit<KeywordDefinition, \"compile\">>(\"ajv:keyword\", {})!;\n const service = inject(provider.token);\n\n return <KeywordDefinition>cleanObject({\n coerceTypes: \"array\",\n ...options,\n validate: getHandler(\"validate\", service),\n compile: getHandler(\"compile\", service),\n code: getHandler(\"code\", service),\n macro: getHandler(\"macro\", service)\n });\n });\n}\n\nfunction getFormatsProviders() {\n return injector().getProviders(\"ajv:formats\");\n}\n\nfunction getFormats(): {name: string; options: Format}[] {\n return getFormatsProviders().map((provider) => {\n const {name, options} = provider.store.get<any>(\"ajv:formats\", {})!;\n const service = inject<FormatsMethods<any>>(provider.token);\n\n return {\n name,\n options: {\n ...options,\n validate: service.validate.bind(service),\n compare: service.compare?.bind(service)\n }\n };\n });\n}\n\ninjectable(Ajv)\n .scope(ProviderScope.SINGLETON)\n .factory(() => {\n const {errorFormatter, keywords = [], ...props} = constant<IAjvSettings>(\"ajv\") || {};\n const options: Options = {\n verbose: false,\n coerceTypes: true,\n strict: false,\n keywords: [...keywords, ...bindKeywords()],\n discriminator: true,\n allErrors: true,\n ...props\n };\n\n // @ts-ignore\n const ajv = new Ajv(options);\n\n // add support for custom error messages\n // @ts-ignore\n AjvErrors(ajv);\n // @ts-ignore\n AjvFormats(ajv as any);\n\n getFormats().forEach(({name, options}) => {\n ajv.addFormat(name, options);\n });\n\n return ajv;\n });\n"],"names":["getHandler","key","service","getKeywordProviders","injector","bindKeywords","provider","options","inject","cleanObject","getFormatsProviders","getFormats","name","_a","injectable","Ajv","ProviderScope","errorFormatter","keywords","props","constant","ajv","AjvErrors","AjvFormats"],"mappings":";;;;;AASA,SAASA,EAAWC,GAAaC,GAAc;AACzC,MAAAA,EAAQD,CAAG;AACb,WAAOC,EAAQD,CAAG,EAAE,KAAKC,CAAO;AAEpC;AAEA,SAASC,IAAsB;AACtB,SAAAC,EAAA,EAAW,aAAa,aAAa;AAC9C;AAEA,SAASC,IAA2B;AAClC,SAAOF,EAAoB,EAAE,IAAI,CAACG,MAAa;AAC7C,UAAMC,IAAUD,EAAS,MAAM,IAAwC,eAAe,CAAA,CAAE,GAClFJ,IAAUM,EAAOF,EAAS,KAAK;AAErC,WAA0BG,EAAY;AAAA,MACpC,aAAa;AAAA,MACb,GAAGF;AAAA,MACH,UAAUP,EAAW,YAAYE,CAAO;AAAA,MACxC,SAASF,EAAW,WAAWE,CAAO;AAAA,MACtC,MAAMF,EAAW,QAAQE,CAAO;AAAA,MAChC,OAAOF,EAAW,SAASE,CAAO;AAAA,IAAA,CACnC;AAAA,EAAA,CACF;AACH;AAEA,SAASQ,IAAsB;AACtB,SAAAN,EAAA,EAAW,aAAa,aAAa;AAC9C;AAEA,SAASO,IAAgD;AACvD,SAAOD,EAAoB,EAAE,IAAI,CAACJ,MAAa;;AACvC,UAAA,EAAC,MAAAM,GAAM,SAAAL,MAAWD,EAAS,MAAM,IAAS,eAAe,EAAE,GAC3DJ,IAAUM,EAA4BF,EAAS,KAAK;AAEnD,WAAA;AAAA,MACL,MAAAM;AAAA,MACA,SAAS;AAAA,QACP,GAAGL;AAAA,QACH,UAAUL,EAAQ,SAAS,KAAKA,CAAO;AAAA,QACvC,UAASW,IAAAX,EAAQ,YAAR,gBAAAW,EAAiB,KAAKX;AAAA,MAAO;AAAA,IAE1C;AAAA,EAAA,CACD;AACH;AAEAY,EAAWC,CAAG,EACX,MAAMC,EAAc,SAAS,EAC7B,QAAQ,MAAM;AACP,QAAA,EAAC,gBAAAC,GAAgB,UAAAC,IAAW,CAAC,GAAG,GAAGC,MAASC,EAAuB,KAAK,KAAK,CAAC,GAC9Eb,IAAmB;AAAA,IACvB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU,CAAC,GAAGW,GAAU,GAAGb,GAAc;AAAA,IACzC,eAAe;AAAA,IACf,WAAW;AAAA,IACX,GAAGc;AAAA,EACL,GAGME,IAAM,IAAIN,EAAIR,CAAO;AAI3B,SAAAe,EAAUD,CAAG,GAEbE,EAAWF,CAAU,GAErBV,EAAA,EAAa,QAAQ,CAAC,EAAC,MAAAC,GAAM,SAAAL,QAAa;AACpC,IAAAc,EAAA,UAAUT,GAAML,CAAO;AAAA,EAAA,CAC5B,GAEMc;AACT,CAAC;"}
1
+ {"version":3,"file":"Ajv.js","sources":["../../../src/services/Ajv.ts"],"sourcesContent":["import {cleanObject} from \"@tsed/core\";\nimport {constant, inject, injectable, injector, ProviderScope} from \"@tsed/di\";\nimport {Ajv, Format, KeywordDefinition, Options, Vocabulary} from \"ajv\";\nimport AjvErrors from \"ajv-errors\";\nimport AjvFormats from \"ajv-formats\";\n\nimport {FormatsMethods} from \"../interfaces/FormatsMethods.js\";\nimport {IAjvSettings} from \"../interfaces/IAjvSettings.js\";\n\nfunction getHandler(key: string, service: any) {\n if (service[key]) {\n return service[key].bind(service);\n }\n}\n\nfunction getKeywordProviders() {\n return injector().getProviders(\"ajv:keyword\");\n}\n\nfunction bindKeywords(): Vocabulary {\n return getKeywordProviders().map((provider) => {\n const options = provider.store.get<Omit<KeywordDefinition, \"compile\">>(\"ajv:keyword\", {})!;\n const service = inject(provider.token);\n\n return <KeywordDefinition>cleanObject({\n coerceTypes: \"array\",\n ...options,\n validate: getHandler(\"validate\", service),\n compile: getHandler(\"compile\", service),\n code: getHandler(\"code\", service),\n macro: getHandler(\"macro\", service)\n });\n });\n}\n\nfunction getFormatsProviders() {\n return injector().getProviders(\"ajv:formats\");\n}\n\nfunction getFormats(): {name: string; options: Format}[] {\n return getFormatsProviders().map((provider) => {\n const {name, options} = provider.store.get<any>(\"ajv:formats\", {})!;\n const service = inject<FormatsMethods<any>>(provider.token);\n\n return {\n name,\n options: {\n ...options,\n validate: service.validate.bind(service),\n compare: service.compare?.bind(service)\n }\n };\n });\n}\n\ninjectable(Ajv)\n .scope(ProviderScope.SINGLETON)\n .factory(() => {\n const {errorFormatter, keywords = [], ...props} = constant<IAjvSettings>(\"ajv\") || {};\n const options: Options = {\n verbose: false,\n coerceTypes: true,\n strict: false,\n keywords: [...keywords, ...bindKeywords()],\n discriminator: true,\n allErrors: true,\n ...props\n };\n\n // @ts-ignore\n const ajv = new Ajv(options);\n\n // add support for custom error messages\n // @ts-ignore\n AjvErrors(ajv);\n // @ts-ignore\n AjvFormats(ajv as any);\n\n getFormats().forEach(({name, options}) => {\n ajv.addFormat(name, options);\n });\n\n return ajv;\n });\n"],"names":["getHandler","key","service","getKeywordProviders","injector","bindKeywords","provider","options","inject","cleanObject","getFormatsProviders","getFormats","name","_a","injectable","Ajv","ProviderScope","errorFormatter","keywords","props","constant","ajv","AjvErrors","AjvFormats"],"mappings":";;;;;AASA,SAASA,EAAWC,GAAaC,GAAc;AACzC,MAAAA,EAAQD,CAAG;AACb,WAAOC,EAAQD,CAAG,EAAE,KAAKC,CAAO;AAEpC;AAEA,SAASC,IAAsB;AACtB,SAAAC,EAAA,EAAW,aAAa,aAAa;AAC9C;AAEA,SAASC,IAA2B;AAClC,SAAOF,EAAoB,EAAE,IAAI,CAACG,MAAa;AAC7C,UAAMC,IAAUD,EAAS,MAAM,IAAwC,eAAe,CAAA,CAAE,GAClFJ,IAAUM,EAAOF,EAAS,KAAK;AAErC,WAA0BG,EAAY;AAAA,MACpC,aAAa;AAAA,MACb,GAAGF;AAAA,MACH,UAAUP,EAAW,YAAYE,CAAO;AAAA,MACxC,SAASF,EAAW,WAAWE,CAAO;AAAA,MACtC,MAAMF,EAAW,QAAQE,CAAO;AAAA,MAChC,OAAOF,EAAW,SAASE,CAAO;AAAA,IAAA,CACnC;AAAA,EAAA,CACF;AACH;AAEA,SAASQ,IAAsB;AACtB,SAAAN,EAAA,EAAW,aAAa,aAAa;AAC9C;AAEA,SAASO,IAAgD;AACvD,SAAOD,EAAoB,EAAE,IAAI,CAACJ,MAAa;;AACvC,UAAA,EAAC,MAAAM,GAAM,SAAAL,MAAWD,EAAS,MAAM,IAAS,eAAe,EAAE,GAC3DJ,IAAUM,EAA4BF,EAAS,KAAK;AAEnD,WAAA;AAAA,MACL,MAAAM;AAAA,MACA,SAAS;AAAA,QACP,GAAGL;AAAA,QACH,UAAUL,EAAQ,SAAS,KAAKA,CAAO;AAAA,QACvC,UAASW,IAAAX,EAAQ,YAAR,gBAAAW,EAAiB,KAAKX;AAAA,MAAO;AAAA,IAE1C;AAAA,EAAA,CACD;AACH;AAEAY,EAAWC,CAAG,EACX,MAAMC,EAAc,SAAS,EAC7B,QAAQ,MAAM;AACP,QAAA,EAAC,gBAAAC,GAAgB,UAAAC,IAAW,CAAC,GAAG,GAAGC,MAASC,EAAuB,KAAK,KAAK,CAAC,GAC9Eb,IAAmB;AAAA,IACvB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,QAAQ;AAAA,IACR,UAAU,CAAC,GAAGW,GAAU,GAAGb,GAAc;AAAA,IACzC,eAAe;AAAA,IACf,WAAW;AAAA,IACX,GAAGc;AAAA,EACL,GAGME,IAAM,IAAIN,EAAIR,CAAO;AAI3B,SAAAe,EAAUD,CAAG,GAEbE,EAAWF,CAAU,GAErBV,EAAA,EAAa,QAAQ,CAAC,EAAC,MAAAC,GAAM,SAAAL,QAAa;AACpC,IAAAc,EAAA,UAAUT,GAAML,CAAO;AAAA,EAAA,CAC5B,GAEMc;AACT,CAAC;"}
@@ -0,0 +1,11 @@
1
+ import { inject } from "@tsed/di";
2
+ import { AjvService } from "../services/AjvService.js";
3
+ /**
4
+ * Validate a value against a JSON schema or a type.
5
+ * @param value
6
+ * @param options
7
+ */
8
+ export function validate(value, options) {
9
+ return inject(AjvService).validate(value, options);
10
+ }
11
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/fn/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAGhC,OAAO,EAAC,UAAU,EAA0B,MAAM,2BAA2B,CAAC;AAE9E;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,OAAwC;IAC/E,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC"}
package/lib/esm/index.js CHANGED
@@ -4,6 +4,7 @@
4
4
  export * from "./decorators/formats.js";
5
5
  export * from "./decorators/keyword.js";
6
6
  export * from "./errors/AjvValidationError.js";
7
+ export * from "./fn/validate.js";
7
8
  export * from "./interfaces/FormatsMethods.js";
8
9
  export * from "./interfaces/IAjvSettings.js";
9
10
  export * from "./interfaces/interfaces.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Ajv.js","sourceRoot":"","sources":["../../../src/services/Ajv.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Ajv.js","sourceRoot":"","sources":["../../../src/services/Ajv.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { JsonSchema } from "@tsed/schema";
2
+ import { type AjvValidateOptions } from "../services/AjvService.js";
3
+ /**
4
+ * Validate a value against a JSON schema or a type.
5
+ * @param value
6
+ * @param options
7
+ */
8
+ export declare function validate(value: unknown, options: AjvValidateOptions | JsonSchema): Promise<any>;
@@ -4,6 +4,7 @@
4
4
  export * from "./decorators/formats.js";
5
5
  export * from "./decorators/keyword.js";
6
6
  export * from "./errors/AjvValidationError.js";
7
+ export * from "./fn/validate.js";
7
8
  export * from "./interfaces/FormatsMethods.js";
8
9
  export * from "./interfaces/IAjvSettings.js";
9
10
  export * from "./interfaces/interfaces.js";
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@tsed/ajv",
3
3
  "description": "AJV package for Ts.ED framework",
4
4
  "type": "module",
5
- "version": "8.10.0-rc.3",
5
+ "version": "8.11.0",
6
6
  "source": "./src/index.ts",
7
7
  "main": "./lib/esm/index.js",
8
8
  "module": "./lib/esm/index.js",
@@ -32,12 +32,12 @@
32
32
  "tslib": "2.7.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@tsed/barrels": "8.10.0-rc.3",
36
- "@tsed/core": "8.10.0-rc.3",
37
- "@tsed/di": "8.10.0-rc.3",
38
- "@tsed/exceptions": "8.10.0-rc.3",
39
- "@tsed/schema": "8.10.0-rc.3",
40
- "@tsed/typescript": "8.10.0-rc.3",
35
+ "@tsed/barrels": "8.11.0",
36
+ "@tsed/core": "8.11.0",
37
+ "@tsed/di": "8.11.0",
38
+ "@tsed/exceptions": "8.11.0",
39
+ "@tsed/schema": "8.11.0",
40
+ "@tsed/typescript": "8.11.0",
41
41
  "ajv": "^8.17.1",
42
42
  "eslint": "9.12.0",
43
43
  "typescript": "5.4.5",
@@ -72,8 +72,5 @@
72
72
  },
73
73
  "homepage": "https://github.com/tsedio/tsed/tree/production/packages/specs/ajv",
74
74
  "author": "Romain Lenzotti",
75
- "license": "MIT",
76
- "publishConfig": {
77
- "tag": "rc"
78
- }
75
+ "license": "MIT"
79
76
  }
@@ -0,0 +1,20 @@
1
+ import {DITest} from "@tsed/di";
2
+ import {object, string} from "@tsed/schema";
3
+
4
+ import {validate} from "./validate.js";
5
+
6
+ describe("validate", () => {
7
+ beforeEach(() => DITest.create());
8
+ afterEach(() => DITest.reset());
9
+
10
+ it("should validate a value against a JSON schema or a type", async () => {
11
+ const value = {name: "John"};
12
+ const options = object({
13
+ name: string()
14
+ });
15
+
16
+ const result = await validate(value, options);
17
+
18
+ expect(result).toEqual(value);
19
+ });
20
+ });
@@ -0,0 +1,13 @@
1
+ import {inject} from "@tsed/di";
2
+ import {JsonSchema} from "@tsed/schema";
3
+
4
+ import {AjvService, type AjvValidateOptions} from "../services/AjvService.js";
5
+
6
+ /**
7
+ * Validate a value against a JSON schema or a type.
8
+ * @param value
9
+ * @param options
10
+ */
11
+ export function validate(value: unknown, options: AjvValidateOptions | JsonSchema) {
12
+ return inject(AjvService).validate(value, options);
13
+ }
package/src/index.ts CHANGED
@@ -4,6 +4,7 @@
4
4
  export * from "./decorators/formats.js";
5
5
  export * from "./decorators/keyword.js";
6
6
  export * from "./errors/AjvValidationError.js";
7
+ export * from "./fn/validate.js";
7
8
  export * from "./interfaces/FormatsMethods.js";
8
9
  export * from "./interfaces/IAjvSettings.js";
9
10
  export * from "./interfaces/interfaces.js";
@@ -1,5 +1,5 @@
1
1
  import {cleanObject} from "@tsed/core";
2
- import {constant, inject, injectable, injector, InjectorService, ProviderScope} from "@tsed/di";
2
+ import {constant, inject, injectable, injector, ProviderScope} from "@tsed/di";
3
3
  import {Ajv, Format, KeywordDefinition, Options, Vocabulary} from "ajv";
4
4
  import AjvErrors from "ajv-errors";
5
5
  import AjvFormats from "ajv-formats";