@eggjs/typebox-validate 0.0.0-beta.1 → 0.0.0-beta.22
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/package.json +4 -4
- package/dist/app/extend/context.d.ts +0 -12
- package/dist/app/extend/context.js +0 -21
- package/dist/app.d.ts +0 -12
- package/dist/app.js +0 -43
- package/dist/config/config.default.d.ts +0 -17
- package/dist/config/config.default.js +0 -6
- package/dist/decorator.d.ts +0 -9
- package/dist/decorator.js +0 -31
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -3
- package/dist/typebox.d.ts +0 -1
- package/dist/typebox.js +0 -2
- package/dist/types.d.ts +0 -3
- package/dist/types.js +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/typebox-validate",
|
|
3
|
-
"version": "0.0.0-beta.
|
|
3
|
+
"version": "0.0.0-beta.22",
|
|
4
4
|
"description": "another validate for typescript egg projects",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"eggPlugin": {
|
|
@@ -62,15 +62,15 @@
|
|
|
62
62
|
"tsdown": "^0.15.4",
|
|
63
63
|
"typescript": "^5.9.3",
|
|
64
64
|
"vitest": "4.0.0-beta.16",
|
|
65
|
-
"@eggjs/tsconfig": "3.1.0-beta.22",
|
|
66
65
|
"@eggjs/mock": "7.0.0-beta.22",
|
|
67
|
-
"egg": "4.1.0-beta.22"
|
|
66
|
+
"egg": "4.1.0-beta.22",
|
|
67
|
+
"@eggjs/tsconfig": "3.1.0-beta.22"
|
|
68
68
|
},
|
|
69
69
|
"main": "./dist/index.js",
|
|
70
70
|
"module": "./dist/index.js",
|
|
71
71
|
"types": "./dist/index.d.ts",
|
|
72
72
|
"scripts": {
|
|
73
|
-
"build": "tsdown && rimraf dist
|
|
73
|
+
"build": "tsdown && rimraf dist && tsc -b --clean && tsc -p tsconfig.build.json",
|
|
74
74
|
"clean": "rimraf dist",
|
|
75
75
|
"typecheck": "tsc --noEmit",
|
|
76
76
|
"lint": "oxlint --type-aware",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Context } from 'egg';
|
|
2
|
-
import type { Schema } from 'ajv/dist/2019.js';
|
|
3
|
-
export default class AjvContext extends Context {
|
|
4
|
-
tValidate(schema: Schema, data: unknown): boolean;
|
|
5
|
-
tValidateWithoutThrow(schema: Schema, data: unknown): boolean;
|
|
6
|
-
}
|
|
7
|
-
declare module 'egg' {
|
|
8
|
-
interface Context {
|
|
9
|
-
tValidate(schema: Schema, data: unknown): boolean;
|
|
10
|
-
tValidateWithoutThrow(schema: Schema, data: unknown): boolean;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Context } from 'egg';
|
|
2
|
-
export default class AjvContext extends Context {
|
|
3
|
-
tValidate(schema, data) {
|
|
4
|
-
const ajv = this.app.ajv;
|
|
5
|
-
const res = ajv.validate(schema, data);
|
|
6
|
-
if (!res) {
|
|
7
|
-
this.throw(422, 'Validation Failed', {
|
|
8
|
-
code: 'invalid_param',
|
|
9
|
-
errorData: data,
|
|
10
|
-
currentSchema: JSON.stringify(schema),
|
|
11
|
-
errors: ajv.errors,
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
return res;
|
|
15
|
-
}
|
|
16
|
-
tValidateWithoutThrow(schema, data) {
|
|
17
|
-
const res = this.app.ajv.validate(schema, data);
|
|
18
|
-
return res;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvZXh0ZW5kL2NvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEtBQUssQ0FBQztBQUc5QixNQUFNLENBQUMsT0FBTyxPQUFPLFVBQVcsU0FBUSxPQUFPO0lBQzdDLFNBQVMsQ0FBQyxNQUFjLEVBQUUsSUFBYTtRQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQztRQUN6QixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxtQkFBbUIsRUFBRTtnQkFDbkMsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFNBQVMsRUFBRSxJQUFJO2dCQUNmLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDckMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxNQUFjLEVBQUUsSUFBYTtRQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztDQUNGIn0=
|
package/dist/app.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Application, ILifecycleBoot } from 'egg';
|
|
2
|
-
import { Ajv2019 as Ajv } from 'ajv/dist/2019.js';
|
|
3
|
-
export default class AppBootHook implements ILifecycleBoot {
|
|
4
|
-
app: Application;
|
|
5
|
-
constructor(app: Application);
|
|
6
|
-
configDidLoad(): Promise<void>;
|
|
7
|
-
}
|
|
8
|
-
declare module 'egg' {
|
|
9
|
-
interface Application {
|
|
10
|
-
ajv: Ajv;
|
|
11
|
-
}
|
|
12
|
-
}
|
package/dist/app.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import addFormats from 'ajv-formats';
|
|
2
|
-
import { Ajv2019 as Ajv } from 'ajv/dist/2019.js';
|
|
3
|
-
import keyWords from 'ajv-keywords';
|
|
4
|
-
const getAjvInstance = () => {
|
|
5
|
-
const ajv = new Ajv();
|
|
6
|
-
// @ts-expect-error - keyWords types are not fully compatible
|
|
7
|
-
keyWords(ajv, 'transform');
|
|
8
|
-
// @ts-expect-error - addFormats types are not fully compatible
|
|
9
|
-
addFormats(ajv, [
|
|
10
|
-
'date-time',
|
|
11
|
-
'time',
|
|
12
|
-
'date',
|
|
13
|
-
'email',
|
|
14
|
-
'hostname',
|
|
15
|
-
'ipv4',
|
|
16
|
-
'ipv6',
|
|
17
|
-
'uri',
|
|
18
|
-
'uri-reference',
|
|
19
|
-
'uuid',
|
|
20
|
-
'uri-template',
|
|
21
|
-
'json-pointer',
|
|
22
|
-
'relative-json-pointer',
|
|
23
|
-
'regex',
|
|
24
|
-
])
|
|
25
|
-
.addKeyword('kind')
|
|
26
|
-
.addKeyword('modifier');
|
|
27
|
-
return ajv;
|
|
28
|
-
};
|
|
29
|
-
export default class AppBootHook {
|
|
30
|
-
app;
|
|
31
|
-
constructor(app) {
|
|
32
|
-
this.app = app;
|
|
33
|
-
this.app.ajv = getAjvInstance();
|
|
34
|
-
}
|
|
35
|
-
async configDidLoad() {
|
|
36
|
-
const config = this.app.config;
|
|
37
|
-
const typeboxValidate = config.typeboxValidate;
|
|
38
|
-
if (typeboxValidate) {
|
|
39
|
-
typeboxValidate.patchAjv?.(this.app.ajv);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLFFBQVEsTUFBTSxjQUFjLENBQUM7QUFFcEMsTUFBTSxjQUFjLEdBQUcsR0FBRyxFQUFFO0lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7SUFDdEIsNkRBQTZEO0lBQzdELFFBQVEsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDM0IsK0RBQStEO0lBQy9ELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxXQUFXO1FBQ1gsTUFBTTtRQUNOLE1BQU07UUFDTixPQUFPO1FBQ1AsVUFBVTtRQUNWLE1BQU07UUFDTixNQUFNO1FBQ04sS0FBSztRQUNMLGVBQWU7UUFDZixNQUFNO1FBQ04sY0FBYztRQUNkLGNBQWM7UUFDZCx1QkFBdUI7UUFDdkIsT0FBTztLQUNSLENBQUM7U0FDQyxVQUFVLENBQUMsTUFBTSxDQUFDO1NBQ2xCLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMxQixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxPQUFPLE9BQU8sV0FBVztJQUN2QixHQUFHLENBQWM7SUFFeEIsWUFBWSxHQUFnQjtRQUMxQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLGNBQWMsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUMvQixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQy9DLElBQUksZUFBZSxFQUFFLENBQUM7WUFDcEIsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7Q0FDRiJ9
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { Ajv2019 as Ajv } from 'ajv/dist/2019.js';
|
|
2
|
-
export interface TypeboxValidateConfig {
|
|
3
|
-
patchAjv?: (ajv: Ajv) => void;
|
|
4
|
-
}
|
|
5
|
-
declare const _default: {
|
|
6
|
-
typeboxValidate: TypeboxValidateConfig;
|
|
7
|
-
};
|
|
8
|
-
export default _default;
|
|
9
|
-
declare module 'egg' {
|
|
10
|
-
interface EggAppConfig {
|
|
11
|
-
/**
|
|
12
|
-
* typebox validate options
|
|
13
|
-
* @member Config#typeboxValidate
|
|
14
|
-
*/
|
|
15
|
-
typeboxValidate: TypeboxValidateConfig;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
typeboxValidate: {
|
|
3
|
-
patchAjv: undefined,
|
|
4
|
-
},
|
|
5
|
-
};
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmRlZmF1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2NvbmZpZy5kZWZhdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLGVBQWU7SUFDYixlQUFlLEVBQUU7UUFDZixRQUFRLEVBQUUsU0FBUztLQUNLO0NBQzNCLENBQUMifQ==
|
package/dist/decorator.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Context } from 'egg';
|
|
2
|
-
import type { TSchema } from './typebox.ts';
|
|
3
|
-
import type { ErrorObject } from 'ajv/dist/2019.js';
|
|
4
|
-
type CustomErrorMessage = (ctx: Context, errors: ErrorObject[]) => string;
|
|
5
|
-
type GetData = (ctx: Context, args: unknown[]) => unknown;
|
|
6
|
-
export type ValidateRule = [TSchema, GetData, CustomErrorMessage?];
|
|
7
|
-
export declare function ValidateFactory(customHandler: (ctx: Context, data?: unknown, schema?: TSchema, customError?: CustomErrorMessage) => void): (rules: ValidateRule[]) => MethodDecorator;
|
|
8
|
-
export declare const Validate: (rules: ValidateRule[]) => MethodDecorator;
|
|
9
|
-
export {};
|
package/dist/decorator.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export function ValidateFactory(customHandler) {
|
|
2
|
-
return function Validate(rules) {
|
|
3
|
-
return (_, __, descriptor) => {
|
|
4
|
-
const fn = descriptor.value;
|
|
5
|
-
descriptor.value = async function (...args) {
|
|
6
|
-
const { ctx } = this;
|
|
7
|
-
for (const rule of rules) {
|
|
8
|
-
const [schema, getData, customError] = rule;
|
|
9
|
-
const data = getData(ctx, args);
|
|
10
|
-
const valid = ctx.tValidateWithoutThrow(schema, data);
|
|
11
|
-
if (!valid && customHandler) {
|
|
12
|
-
return customHandler(ctx, data, schema, customError);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return await fn.apply(this, args);
|
|
16
|
-
};
|
|
17
|
-
return descriptor;
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
export const Validate = ValidateFactory((ctx, data, schema, customError) => {
|
|
22
|
-
const app = ctx.app;
|
|
23
|
-
const message = customError ? customError(ctx, app.ajv.errors) : 'Validation Failed';
|
|
24
|
-
ctx.throw(422, message, {
|
|
25
|
-
code: 'invalid_param',
|
|
26
|
-
errorData: data,
|
|
27
|
-
currentSchema: JSON.stringify(schema),
|
|
28
|
-
errors: app.ajv.errors,
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2RlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTQSxNQUFNLFVBQVUsZUFBZSxDQUM3QixhQUF5RztJQUV6RyxPQUFPLFNBQVMsUUFBUSxDQUFDLEtBQXFCO1FBQzVDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFVBQThCLEVBQXNCLEVBQUU7WUFDbkUsTUFBTSxFQUFFLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM1QixVQUFVLENBQUMsS0FBSyxHQUFHLEtBQUssV0FBVyxHQUFHLElBQWU7Z0JBQ25ELE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUF3QixDQUFDO2dCQUN6QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO29CQUN6QixNQUFNLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQzVDLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3RELElBQUksQ0FBQyxLQUFLLElBQUksYUFBYSxFQUFFLENBQUM7d0JBQzVCLE9BQU8sYUFBYSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO29CQUN2RCxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsT0FBTyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3BDLENBQUMsQ0FBQztZQUNGLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsZUFBZSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUU7SUFDekUsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQztJQUNwQixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7SUFDdEYsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFO1FBQ3RCLElBQUksRUFBRSxlQUFlO1FBQ3JCLFNBQVMsRUFBRSxJQUFJO1FBQ2YsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQ3JDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
|
package/dist/index.d.ts
DELETED
package/dist/index.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import "./types.js";
|
|
2
|
-
export { Ajv2019 as Ajv } from 'ajv/dist/2019.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQyJ9
|
package/dist/typebox.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from '@sinclair/typebox';
|
package/dist/typebox.js
DELETED
package/dist/types.d.ts
DELETED
package/dist/types.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import "./config/config.default.js";
|
|
2
|
-
import "./app.js";
|
|
3
|
-
import "./app/extend/context.js";
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyw0QkFBNEIsQ0FBQztBQUNwQyxPQUFPLFVBQVUsQ0FBQztBQUNsQixPQUFPLHlCQUF5QixDQUFDIn0=
|