@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 +2 -0
- package/dist/ajv.js +81 -0
- package/dist/ajv.js.map +1 -0
- package/dist/valid.d.ts +0 -2
- package/dist/valid.js +8 -4
- package/dist/valid.js.map +1 -1
- package/package.json +1 -1
package/dist/ajv.d.ts
ADDED
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
|
package/dist/ajv.js.map
ADDED
|
@@ -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 ?
|
|
43
|
-
|
|
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 ?
|
|
51
|
-
|
|
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":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,SAAS,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"valid.js","sourceRoot":"","sources":["../src/valid.ts"],"names":[],"mappings":"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"}
|