@wxn0brp/vql 0.1.13 → 0.2.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.
package/dist/ajv.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { ErrorObject } from "ajv";
2
+ export declare function buildAjvErrorTree(errors: ErrorObject[]): Record<string, any>;
package/dist/ajv.js ADDED
@@ -0,0 +1,81 @@
1
+ function parseInstancePath(path) {
2
+ if (!path)
3
+ return [];
4
+ const unescaped = path.slice(1).replace(/~0/g, "~").replace(/~1/g, "/");
5
+ return unescaped.split("/").filter(seg => seg !== "");
6
+ }
7
+ function formatSingleError(error) {
8
+ const { keyword, params, message } = error;
9
+ switch (keyword) {
10
+ case "type":
11
+ return `expected type: ${params.type}`;
12
+ case "required":
13
+ return `missing required property: ${params.missingProperty}`;
14
+ case "additionalProperties":
15
+ return `unexpected property: ${params.additionalProperty}`;
16
+ case "enum":
17
+ const allowedValues = params.allowedValues.join(", ");
18
+ return `value not in: [${allowedValues}]`;
19
+ case "minLength":
20
+ return `too short (min ${params.limit} characters)`;
21
+ case "maxLength":
22
+ return `too long (max ${params.limit} characters)`;
23
+ case "minimum":
24
+ return `value < ${params.limit}`;
25
+ case "maximum":
26
+ return `value > ${params.limit}`;
27
+ case "pattern":
28
+ return `does not match pattern`;
29
+ case "anyOf":
30
+ return `value does not satisfy any of the variants`;
31
+ case "oneOf":
32
+ return `value satisfies multiple variants`;
33
+ case "allOf":
34
+ return `value does not satisfy all conditions`;
35
+ default:
36
+ return message || `validation error: ${keyword}`;
37
+ }
38
+ }
39
+ // Recursively remove error types and leave only messages
40
+ function finalizeNode(node) {
41
+ if (node.__errors) {
42
+ node.__errors = node.__errors.map((e) => e.message);
43
+ }
44
+ for (const key in node) {
45
+ if (key !== "__errors" && typeof node[key] === "object") {
46
+ finalizeNode(node[key]);
47
+ }
48
+ }
49
+ }
50
+ export function buildAjvErrorTree(errors) {
51
+ const errorTree = {};
52
+ for (const error of errors) {
53
+ const segments = parseInstancePath(error.instancePath);
54
+ let currentNode = errorTree;
55
+ for (const segment of segments) {
56
+ if (!(segment in currentNode)) {
57
+ currentNode[segment] = {};
58
+ }
59
+ currentNode = currentNode[segment];
60
+ }
61
+ const formattedMessage = formatSingleError(error);
62
+ const isComposite = ["anyOf", "oneOf", "allOf"].includes(error.keyword);
63
+ if (!currentNode.__errors) {
64
+ currentNode.__errors = [];
65
+ }
66
+ if (isComposite) {
67
+ // Replace all previous errors with only this general one
68
+ currentNode.__errors = [{ keyword: error.keyword, message: formattedMessage }];
69
+ }
70
+ else {
71
+ // Check if there is already a general error
72
+ const hasComposite = currentNode.__errors.some((e) => ["anyOf", "oneOf", "allOf"].includes(e.keyword));
73
+ if (!hasComposite) {
74
+ currentNode.__errors.push({ keyword: error.keyword, message: formattedMessage });
75
+ }
76
+ }
77
+ }
78
+ finalizeNode(errorTree);
79
+ return errorTree;
80
+ }
81
+ //# sourceMappingURL=ajv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ajv.js","sourceRoot":"","sources":["../src/ajv.ts"],"names":[],"mappings":"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"}
package/dist/valid.d.ts CHANGED
@@ -6,12 +6,10 @@ export declare function validateRaw(query: VQLR): true | {
6
6
  msg: string;
7
7
  c: number;
8
8
  why: any;
9
- rawQuery: never;
10
9
  };
11
10
  export declare function validateVql(query: VQL): true | {
12
11
  err: boolean;
13
12
  msg: string;
14
13
  c: number;
15
14
  why: any;
16
- rawQuery: never;
17
15
  };
package/dist/valid.js CHANGED
@@ -3,6 +3,8 @@ import ajvFormat from "ajv-formats";
3
3
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
4
4
  import { dirname } from "path";
5
5
  import { VQLConfig } from "./config.js";
6
+ import { buildAjvErrorTree } from "./ajv.js";
7
+ import { deepMerge } from "@wxn0brp/wts-deep-merge";
6
8
  const filePath = import.meta.dirname + "/schema.json";
7
9
  let schema = null;
8
10
  if (!existsSync(filePath)) {
@@ -39,16 +41,18 @@ const validVQL = ajv.compile(modSchema);
39
41
  export function validateRaw(query) {
40
42
  if (!validVQLR(query)) {
41
43
  let why = validVQLR.errors;
42
- why = VQLConfig.formatAjv ? ajv.errorsText(why) : why;
43
- return { err: true, msg: "Invalid query raw", c: 400, why, rawQuery: query };
44
+ why = VQLConfig.formatAjv ? buildAjvErrorTree(why) : why;
45
+ why = deepMerge(why, query);
46
+ return { err: true, msg: "Invalid query raw", c: 400, why };
44
47
  }
45
48
  return true;
46
49
  }
47
50
  export function validateVql(query) {
48
51
  if (!validVQL(query)) {
49
52
  let why = validVQL.errors;
50
- why = VQLConfig.formatAjv ? ajv.errorsText(why) : why;
51
- return { err: true, msg: "Invalid query", c: 400, why, rawQuery: query };
53
+ why = VQLConfig.formatAjv ? buildAjvErrorTree(why) : why;
54
+ why = deepMerge(why, query);
55
+ return { err: true, msg: "Invalid query", c: 400, why };
52
56
  }
53
57
  return true;
54
58
  }
package/dist/valid.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"valid.js","sourceRoot":"","sources":["../src/valid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"valid.js","sourceRoot":"","sources":["../src/valid.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wxn0brp/vql",
3
- "version": "0.1.13",
3
+ "version": "0.2.0",
4
4
  "main": "dist/index.js",
5
5
  "author": "wxn0brP",
6
6
  "license": "MIT",