@kaapi/validator-valibot 0.0.17
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/LICENSE +21 -0
- package/README.md +241 -0
- package/lib/declarations.d.ts +13 -0
- package/lib/doc-helpers.d.ts +79 -0
- package/lib/doc-helpers.js +379 -0
- package/lib/doc-helpers.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/types.d.ts +26 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/validator.d.ts +3 -0
- package/lib/validator.js +163 -0
- package/lib/validator.js.map +1 -0
- package/package.json +39 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 demingongo
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# π§ͺ @kaapi/validator-valibot
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
**Valibot-powered validation plugin for [Kaapi](https://www.npmjs.com/package/@kaapi/kaapi)**. Validate request `params`, `payload`, `query`, `headers`, and `state` using [Valibot](https://www.npmjs.com/package/valibot) schemas. Includes built-in documentation helpers for seamless API docs generation.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## π Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @kaapi/validator-valibot
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### π¦ Peer Dependency
|
|
17
|
+
|
|
18
|
+
Requires Valibot:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install valibot@^1.1.0
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## π οΈ Usage
|
|
27
|
+
|
|
28
|
+
### π Register the Plugin
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
import { Kaapi } from '@kaapi/kaapi'
|
|
32
|
+
import { validatorValibot } from '@kaapi/validator-valibot'
|
|
33
|
+
|
|
34
|
+
const app = new Kaapi({
|
|
35
|
+
port: 3000,
|
|
36
|
+
host: 'localhost',
|
|
37
|
+
docs: {
|
|
38
|
+
disabled: false // explicitly enables documentation generation
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
await app.extend(validatorValibot); // register the plugin
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### π Define a Schema
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { object, string } from 'valibot'
|
|
51
|
+
import { ValidatorValibotSchema } from '@kaapi/validator-valibot'
|
|
52
|
+
|
|
53
|
+
const routeSchema: ValidatorValibotSchema = {
|
|
54
|
+
payload: object({
|
|
55
|
+
name: string()
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
### π§ Create a Route
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
app.base().valibot(routeSchema).route(
|
|
66
|
+
{
|
|
67
|
+
method: 'POST',
|
|
68
|
+
path: '/items'
|
|
69
|
+
},
|
|
70
|
+
req => ({ id: Date.now(), name: req.payload.name })
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
// or using inline handler
|
|
74
|
+
/*
|
|
75
|
+
app.base().valibot(routeSchema).route({
|
|
76
|
+
method: 'POST',
|
|
77
|
+
path: '/items',
|
|
78
|
+
handler: req => ({ id: Date.now(), name: req.payload.name })
|
|
79
|
+
})
|
|
80
|
+
*/
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## βοΈ Advanced Configuration
|
|
86
|
+
|
|
87
|
+
### π§ `options`
|
|
88
|
+
|
|
89
|
+
Customize Valibot parsing behavior:
|
|
90
|
+
|
|
91
|
+
| Property | Type | Default | Description |
|
|
92
|
+
|---------------|---------------------------|-------------|-----------------------------------------------------------------------------|
|
|
93
|
+
| `abortEarly` | `boolean` | `undefined` | Whether it should be aborted early |
|
|
94
|
+
| `abortPipeEarly` | `boolean` | `undefined` | Whether a pipe should be aborted early |
|
|
95
|
+
| `lang` | `string` | `undefined` | The selected language |
|
|
96
|
+
| `message` | `ErrorMessage<TIssue>` | `undefined` | The error message |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
### π¨ `failAction`
|
|
101
|
+
|
|
102
|
+
Control how validation failures are handled:
|
|
103
|
+
|
|
104
|
+
| Value | Behavior | Safe? | Description |
|
|
105
|
+
|---------------|------------------------------|-------|--------------------------------------------------|
|
|
106
|
+
| `'error'` | Reject with validation error | β
| Default safe behavior |
|
|
107
|
+
| `'log'` | Log and reject | β
| Useful for observability |
|
|
108
|
+
| `function` | Custom handler | β
(developer-controlled) | Must return or throw explicitly |
|
|
109
|
+
| `'ignore'` | β Not supported | β | Unsafe and not implemented |
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
### π§ͺ Example with Overrides
|
|
114
|
+
|
|
115
|
+
You can override Valibot validation behavior **globally** for all routes, or **per route** as needed.
|
|
116
|
+
|
|
117
|
+
#### π Global Override (All Routes)
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
const app = new Kaapi({
|
|
121
|
+
// ...
|
|
122
|
+
routes: {
|
|
123
|
+
plugins: {
|
|
124
|
+
valibot: {
|
|
125
|
+
options: {
|
|
126
|
+
abortEarly: true
|
|
127
|
+
},
|
|
128
|
+
failAction: 'log'
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
await app.extend(validatorValibot);
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
This sets `abortEarly` to `true` for all Valibot-validated routes, and logs validation errors before throwing them.
|
|
138
|
+
|
|
139
|
+
#### π Per-Route Override
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
app.base().valibot({
|
|
143
|
+
query: object({
|
|
144
|
+
name: optional(pipe(string(), trim(), nonEmpty(), maxLength(10), description('Optional name to personalize the greeting response')), 'World'),
|
|
145
|
+
age: optional(
|
|
146
|
+
pipe(
|
|
147
|
+
string(),
|
|
148
|
+
transform((input) => typeof input === 'string' ? Number(input) : input),
|
|
149
|
+
number(),
|
|
150
|
+
integer(),
|
|
151
|
+
minValue(1)
|
|
152
|
+
)
|
|
153
|
+
)
|
|
154
|
+
}),
|
|
155
|
+
options: {
|
|
156
|
+
abortEarly: false
|
|
157
|
+
},
|
|
158
|
+
failAction: async (request, h, err) => {
|
|
159
|
+
if (Boom.isBoom(err)) {
|
|
160
|
+
return h.response({
|
|
161
|
+
...err.output.payload,
|
|
162
|
+
details: err.data.validationError.issues
|
|
163
|
+
}).code(err.output.statusCode).takeover()
|
|
164
|
+
}
|
|
165
|
+
return err
|
|
166
|
+
}
|
|
167
|
+
}).route({
|
|
168
|
+
path: '/greetings',
|
|
169
|
+
method: 'GET',
|
|
170
|
+
handler: ({ query: { name } }) => `Hello ${name}!`
|
|
171
|
+
});
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## π€ File Upload Example
|
|
177
|
+
|
|
178
|
+
Multipart file uploads with Valibot validation is supported. Here's how to validate an uploaded image file and stream it back in the response:
|
|
179
|
+
|
|
180
|
+
```ts
|
|
181
|
+
app.base().valibot({
|
|
182
|
+
payload: object({
|
|
183
|
+
file: pipe(
|
|
184
|
+
looseObject({
|
|
185
|
+
_data: instance(Buffer),
|
|
186
|
+
hapi: looseObject({
|
|
187
|
+
filename: string(),
|
|
188
|
+
headers: looseObject({
|
|
189
|
+
'content-type': picklist(['image/jpeg', 'image/jpg', 'image/png'] as const)
|
|
190
|
+
})
|
|
191
|
+
})
|
|
192
|
+
}),
|
|
193
|
+
description('The image to upload')
|
|
194
|
+
)
|
|
195
|
+
})
|
|
196
|
+
}).route({
|
|
197
|
+
method: 'POST',
|
|
198
|
+
path: '/upload-image',
|
|
199
|
+
options: {
|
|
200
|
+
description: 'Upload an image',
|
|
201
|
+
payload: {
|
|
202
|
+
output: 'stream',
|
|
203
|
+
parse: true,
|
|
204
|
+
allow: 'multipart/form-data',
|
|
205
|
+
multipart: { output: 'stream' },
|
|
206
|
+
maxBytes: 1024 * 3_000
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}, (req, h) =>
|
|
210
|
+
h.response(req.payload.file._data)
|
|
211
|
+
.type(req.payload.file.hapi.headers['content-type'])
|
|
212
|
+
);
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
### π§Ύ Notes
|
|
216
|
+
|
|
217
|
+
- `looseObject` is used to accommodate the structure of multipart file metadata.
|
|
218
|
+
- The `_data: instanceof(Buffer)` field is automatically interpreted as a binary field by the documentation generator.
|
|
219
|
+
- This ensures correct OpenAPI and Postman documentation is generated, with the file field shown as a binary upload.
|
|
220
|
+
- The route streams the uploaded image back with its original content type.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## π Flexible API Design
|
|
225
|
+
|
|
226
|
+
Prefer `Joi` or migrating gradually? No problem.
|
|
227
|
+
|
|
228
|
+
You can still use `app.route(...)` with Joi-based validation while adopting Valibot via `app.base().valibot(...).route(...)`. This dual-mode support ensures **graceful evolution**, allowing traditional and modern routes to coexist without breaking changes.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## π License
|
|
233
|
+
|
|
234
|
+
MIT
|
|
235
|
+
|
|
236
|
+
> This package is tested as part of the Kaapi monorepo. See the [main Kaapi README](../../README.md) for coverage details.
|
|
237
|
+
|
|
238
|
+
## π€ Contributing
|
|
239
|
+
|
|
240
|
+
Contributions, issues, and feature requests are welcome! Feel free to open a discussion or submit a pull request.
|
|
241
|
+
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ValidatorValibotSchema, ValidatorValibot } from './types'
|
|
2
|
+
|
|
3
|
+
declare module '@kaapi/kaapi' {
|
|
4
|
+
interface PluginSpecificConfiguration {
|
|
5
|
+
valibot?: ValidatorValibotSchema;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
interface Server {
|
|
9
|
+
valibot: ValidatorValibot
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export { }
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { BaseHelperInterface } from '@novice1/api-doc-generator/lib/helpers/baseHelper';
|
|
2
|
+
import { type JSONSchema7 } from '@valibot/to-json-schema';
|
|
3
|
+
import type { NonEmptyValibotSchema } from './types';
|
|
4
|
+
import type { OpenAPIHelperInterface, PostmanHelperInterface } from '@novice1/api-doc-generator';
|
|
5
|
+
import type { AdditionalProperties, DiscriminatorObject, EncodingObject, ExampleObject, ReferenceObject, XMLObject } from '@novice1/api-doc-generator/lib/generators/openapi/definitions';
|
|
6
|
+
import type { KaapiOpenAPIHelperInterface } from '@kaapi/kaapi';
|
|
7
|
+
/**
|
|
8
|
+
* Valibot helper for \@novice1/api-doc-generator
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class BaseValibotHelper implements BaseHelperInterface {
|
|
11
|
+
#private;
|
|
12
|
+
protected _schema: JSONSchema7;
|
|
13
|
+
protected _valibotSchema?: NonEmptyValibotSchema;
|
|
14
|
+
protected _isRequired: boolean;
|
|
15
|
+
constructor({ value: schema }: {
|
|
16
|
+
value?: object | unknown;
|
|
17
|
+
isRoot?: boolean;
|
|
18
|
+
}, isRequired?: boolean);
|
|
19
|
+
protected hasMeta(v: string): boolean;
|
|
20
|
+
protected getMeta(v: string): unknown;
|
|
21
|
+
protected hasOptionalWrapper(): boolean;
|
|
22
|
+
isValid(): boolean;
|
|
23
|
+
getType(): string;
|
|
24
|
+
getDescription(): string;
|
|
25
|
+
isRequired(): boolean;
|
|
26
|
+
isUnique(): boolean;
|
|
27
|
+
hasDefaultValue(): boolean;
|
|
28
|
+
getDefaultValue(): unknown;
|
|
29
|
+
hasExampleValue(): boolean;
|
|
30
|
+
getExampleValue(): unknown;
|
|
31
|
+
isDeprecated(): boolean;
|
|
32
|
+
allowsEmptyValue(): boolean;
|
|
33
|
+
getEnum(): unknown[];
|
|
34
|
+
hasMin(): boolean;
|
|
35
|
+
hasMax(): boolean;
|
|
36
|
+
getMin(): number | undefined;
|
|
37
|
+
getMax(): number | undefined;
|
|
38
|
+
getUnit(): string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Valibot helper for \@novice1/api-doc-generator
|
|
42
|
+
*/
|
|
43
|
+
export declare class OpenAPIValibotHelper extends BaseValibotHelper implements OpenAPIHelperInterface, KaapiOpenAPIHelperInterface {
|
|
44
|
+
isFile(): boolean | undefined;
|
|
45
|
+
getRawSchema(): import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").BaseSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").SchemaWithFallback<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | import("valibot").SchemaWithFallbackAsync<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").BaseSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | (import("valibot").ExactOptionalSchema<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | import("valibot").NullishSchema<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | import("valibot").OptionalSchema<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown>) | (import("valibot").ExactOptionalSchemaAsync<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").BaseSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | import("valibot").NullishSchemaAsync<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").BaseSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | import("valibot").OptionalSchemaAsync<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").BaseSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown>) | undefined;
|
|
46
|
+
getMostInnerRawSchema(): import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").BaseSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").SchemaWithFallback<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | import("valibot").SchemaWithFallbackAsync<import("valibot").BaseSchema<unknown, unknown, import("valibot").BaseIssue<unknown>> | import("valibot").BaseSchemaAsync<unknown, unknown, import("valibot").BaseIssue<unknown>>, unknown> | undefined;
|
|
47
|
+
getFilesChildren(): Record<string, unknown>;
|
|
48
|
+
getFirstItem(): OpenAPIValibotHelper | undefined;
|
|
49
|
+
getChildren(): Record<string, OpenAPIValibotHelper>;
|
|
50
|
+
getAlternatives(): OpenAPIValibotHelper[];
|
|
51
|
+
hasStyle(): boolean;
|
|
52
|
+
getStyle(): string;
|
|
53
|
+
hasAdditionalProperties(): boolean;
|
|
54
|
+
getAdditionalProperties(): AdditionalProperties;
|
|
55
|
+
hasRef(): boolean;
|
|
56
|
+
getRef(): string | undefined;
|
|
57
|
+
hasDiscriminator(): boolean;
|
|
58
|
+
getDiscriminator(): DiscriminatorObject | undefined;
|
|
59
|
+
hasXml(): boolean;
|
|
60
|
+
getXml(): XMLObject | undefined;
|
|
61
|
+
hasExamples(): boolean;
|
|
62
|
+
getExamples(): Record<string, ExampleObject | ReferenceObject> | undefined;
|
|
63
|
+
hasEncoding(): boolean;
|
|
64
|
+
getEncoding(): Record<string, EncodingObject> | undefined;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Valibot helper for \@novice1/api-doc-generator
|
|
68
|
+
*/
|
|
69
|
+
export declare class PostmanValibotHelper extends BaseValibotHelper implements PostmanHelperInterface {
|
|
70
|
+
getFirstItem(): PostmanValibotHelper | undefined;
|
|
71
|
+
getChildren(): Record<string, PostmanValibotHelper>;
|
|
72
|
+
getAlternatives(): PostmanValibotHelper[];
|
|
73
|
+
hasContentType(): boolean;
|
|
74
|
+
getContentType(): string | undefined;
|
|
75
|
+
hasDescriptionType(): boolean;
|
|
76
|
+
getDescriptionType(): string | undefined;
|
|
77
|
+
hasXml(): boolean;
|
|
78
|
+
getXml(): XMLObject | undefined;
|
|
79
|
+
}
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _BaseValibotHelper_instances, _BaseValibotHelper_getAllMeta;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.PostmanValibotHelper = exports.OpenAPIValibotHelper = exports.BaseValibotHelper = void 0;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const to_json_schema_1 = require("@valibot/to-json-schema");
|
|
7
|
+
const valibot_1 = require("valibot");
|
|
8
|
+
/**
|
|
9
|
+
* Valibot helper for \@novice1/api-doc-generator
|
|
10
|
+
*/
|
|
11
|
+
class BaseValibotHelper {
|
|
12
|
+
constructor({ value: schema = {} }, isRequired) {
|
|
13
|
+
_BaseValibotHelper_instances.add(this);
|
|
14
|
+
this._isRequired = false;
|
|
15
|
+
this._schema = {};
|
|
16
|
+
if (schema && typeof schema === 'object') {
|
|
17
|
+
if ('type' in schema && schema.type === 'instance' &&
|
|
18
|
+
'kind' in schema && schema.kind === 'schema') {
|
|
19
|
+
// special schemas that cannot be converted to JSON
|
|
20
|
+
this._valibotSchema = schema;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
const s = (0, to_json_schema_1.toJsonSchema)(schema, { errorMode: 'ignore' });
|
|
24
|
+
this._schema = s;
|
|
25
|
+
this._valibotSchema = schema;
|
|
26
|
+
}
|
|
27
|
+
catch (_e) {
|
|
28
|
+
//
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (isRequired) {
|
|
32
|
+
this._isRequired = isRequired;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
hasMeta(v) {
|
|
36
|
+
return typeof tslib_1.__classPrivateFieldGet(this, _BaseValibotHelper_instances, "m", _BaseValibotHelper_getAllMeta).call(this)[v] !== 'undefined';
|
|
37
|
+
}
|
|
38
|
+
getMeta(v) {
|
|
39
|
+
return tslib_1.__classPrivateFieldGet(this, _BaseValibotHelper_instances, "m", _BaseValibotHelper_getAllMeta).call(this)[v];
|
|
40
|
+
}
|
|
41
|
+
hasOptionalWrapper() {
|
|
42
|
+
let r = this._valibotSchema;
|
|
43
|
+
let result = false;
|
|
44
|
+
while (!result && r && 'wrapped' in r) {
|
|
45
|
+
result = r.kind === 'schema' && r.type === 'optional';
|
|
46
|
+
r = r.wrapped;
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
isValid() {
|
|
51
|
+
return !!(this._valibotSchema && this._schema.$schema);
|
|
52
|
+
}
|
|
53
|
+
getType() {
|
|
54
|
+
let r = '';
|
|
55
|
+
if ('type' in this._schema && typeof this._schema.type === 'string') {
|
|
56
|
+
r = this._schema.type;
|
|
57
|
+
}
|
|
58
|
+
if ('format' in this._schema && typeof this._schema.format === 'string') {
|
|
59
|
+
r = this._schema.format;
|
|
60
|
+
}
|
|
61
|
+
return r;
|
|
62
|
+
}
|
|
63
|
+
getDescription() {
|
|
64
|
+
let r = '';
|
|
65
|
+
if ('description' in this._schema && typeof this._schema.description === 'string') {
|
|
66
|
+
r = this._schema.description;
|
|
67
|
+
}
|
|
68
|
+
return r;
|
|
69
|
+
}
|
|
70
|
+
isRequired() {
|
|
71
|
+
return this._isRequired || (this.getType() === 'object' && !this.hasOptionalWrapper());
|
|
72
|
+
}
|
|
73
|
+
isUnique() {
|
|
74
|
+
return !!('uniqueItems' in this._schema && this._schema.uniqueItems);
|
|
75
|
+
}
|
|
76
|
+
hasDefaultValue() {
|
|
77
|
+
return !!('default' in this._schema && typeof this._schema.default != 'undefined');
|
|
78
|
+
}
|
|
79
|
+
getDefaultValue() {
|
|
80
|
+
return 'default' in this._schema ? this._schema.default : undefined;
|
|
81
|
+
}
|
|
82
|
+
hasExampleValue() {
|
|
83
|
+
const schema = this._schema;
|
|
84
|
+
return !!('examples' in schema && Array.isArray(schema.examples) && schema.examples.length);
|
|
85
|
+
}
|
|
86
|
+
getExampleValue() {
|
|
87
|
+
const schema = this._schema;
|
|
88
|
+
if ('examples' in schema && Array.isArray(schema.examples) && schema.examples.length) {
|
|
89
|
+
return schema.examples[0];
|
|
90
|
+
}
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
isDeprecated() {
|
|
94
|
+
return !!this.getMeta('deprecated');
|
|
95
|
+
}
|
|
96
|
+
allowsEmptyValue() {
|
|
97
|
+
let r = false;
|
|
98
|
+
if ('enum' in this._schema && Array.isArray(this._schema.enum)) {
|
|
99
|
+
const enume = this._schema.enum;
|
|
100
|
+
r = ['', null].some(v => enume.includes(v));
|
|
101
|
+
}
|
|
102
|
+
return r;
|
|
103
|
+
}
|
|
104
|
+
getEnum() {
|
|
105
|
+
let r = [];
|
|
106
|
+
if ('enum' in this._schema && Array.isArray(this._schema.enum)) {
|
|
107
|
+
r = this._schema.enum;
|
|
108
|
+
}
|
|
109
|
+
else if ('anyOf' in this._schema && Array.isArray(this._schema.anyOf)) {
|
|
110
|
+
for (const p of this._schema.anyOf) {
|
|
111
|
+
if (p && typeof p === 'object' && 'const' in p) {
|
|
112
|
+
r.push(p.const);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return r;
|
|
117
|
+
}
|
|
118
|
+
hasMin() {
|
|
119
|
+
return 'minProperties' in this._schema || 'minItems' in this._schema || 'minimum' in this._schema || 'minLength' in this._schema;
|
|
120
|
+
}
|
|
121
|
+
hasMax() {
|
|
122
|
+
return 'maxProperties' in this._schema || 'maxItems' in this._schema || 'maximum' in this._schema || 'maxLength' in this._schema;
|
|
123
|
+
}
|
|
124
|
+
getMin() {
|
|
125
|
+
if ('minProperties' in this._schema && typeof this._schema.minProperties === 'number') {
|
|
126
|
+
return this._schema.minProperties;
|
|
127
|
+
}
|
|
128
|
+
if ('minItems' in this._schema && typeof this._schema.minItems === 'number') {
|
|
129
|
+
return this._schema.minItems;
|
|
130
|
+
}
|
|
131
|
+
if ('minimum' in this._schema && typeof this._schema.minimum === 'number') {
|
|
132
|
+
return this._schema.minimum;
|
|
133
|
+
}
|
|
134
|
+
if ('minLength' in this._schema && typeof this._schema.minLength === 'number') {
|
|
135
|
+
return this._schema.minLength;
|
|
136
|
+
}
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
getMax() {
|
|
140
|
+
if ('maxProperties' in this._schema && typeof this._schema.maxProperties === 'number') {
|
|
141
|
+
return this._schema.maxProperties;
|
|
142
|
+
}
|
|
143
|
+
if ('maxItems' in this._schema && typeof this._schema.maxItems === 'number') {
|
|
144
|
+
return this._schema.maxItems;
|
|
145
|
+
}
|
|
146
|
+
if ('maximum' in this._schema && typeof this._schema.maximum === 'number') {
|
|
147
|
+
return this._schema.maximum;
|
|
148
|
+
}
|
|
149
|
+
if ('maxLength' in this._schema && typeof this._schema.maxLength === 'number') {
|
|
150
|
+
return this._schema.maxLength;
|
|
151
|
+
}
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
getUnit() {
|
|
155
|
+
const unit = this.getMeta('unit');
|
|
156
|
+
if (typeof unit === 'string') {
|
|
157
|
+
return unit;
|
|
158
|
+
}
|
|
159
|
+
return '';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
exports.BaseValibotHelper = BaseValibotHelper;
|
|
163
|
+
_BaseValibotHelper_instances = new WeakSet(), _BaseValibotHelper_getAllMeta = function _BaseValibotHelper_getAllMeta() {
|
|
164
|
+
if (this.isValid() && this._valibotSchema && 'pipe' in this._valibotSchema &&
|
|
165
|
+
Array.isArray(this._valibotSchema.pipe)) {
|
|
166
|
+
const r = this._valibotSchema.pipe.find(v => v.type === 'metadata' && v.kind === 'metadata');
|
|
167
|
+
return r || {};
|
|
168
|
+
}
|
|
169
|
+
return {};
|
|
170
|
+
};
|
|
171
|
+
/**
|
|
172
|
+
* Valibot helper for \@novice1/api-doc-generator
|
|
173
|
+
*/
|
|
174
|
+
class OpenAPIValibotHelper extends BaseValibotHelper {
|
|
175
|
+
isFile() {
|
|
176
|
+
var _a;
|
|
177
|
+
const children = this.getChildren();
|
|
178
|
+
const schema = (_a = children._data) === null || _a === void 0 ? void 0 : _a.getRawSchema();
|
|
179
|
+
return (schema === null || schema === void 0 ? void 0 : schema.kind) === 'schema' && schema.type === 'instance' && schema.expects === 'Buffer';
|
|
180
|
+
}
|
|
181
|
+
getRawSchema() {
|
|
182
|
+
return this._valibotSchema;
|
|
183
|
+
}
|
|
184
|
+
getMostInnerRawSchema() {
|
|
185
|
+
let r = this._valibotSchema;
|
|
186
|
+
while (r && 'wrapped' in r) {
|
|
187
|
+
r = r.wrapped;
|
|
188
|
+
}
|
|
189
|
+
return r;
|
|
190
|
+
}
|
|
191
|
+
getFilesChildren() {
|
|
192
|
+
const r = {};
|
|
193
|
+
const schema = this._schema;
|
|
194
|
+
const vSchema = this.getMostInnerRawSchema();
|
|
195
|
+
if (vSchema && 'entries' in vSchema && typeof vSchema.entries === 'object' && vSchema.entries) {
|
|
196
|
+
const properties = vSchema.entries;
|
|
197
|
+
for (const p in properties) {
|
|
198
|
+
const isRequired = 'required' in schema && Array.isArray(schema.required) && schema.required.includes(p);
|
|
199
|
+
const ch = new OpenAPIValibotHelper({ value: properties[p] }, isRequired);
|
|
200
|
+
if (ch.isValid() && ch.isFile())
|
|
201
|
+
r[p] = ch.getRawSchema();
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
const files = (0, valibot_1.object)(r);
|
|
205
|
+
return files;
|
|
206
|
+
}
|
|
207
|
+
getFirstItem() {
|
|
208
|
+
const schema = this._schema;
|
|
209
|
+
if ('items' in schema && typeof schema.items === 'object') {
|
|
210
|
+
return new OpenAPIValibotHelper({ value: schema.items });
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
getChildren() {
|
|
215
|
+
const r = {};
|
|
216
|
+
const schema = this._schema;
|
|
217
|
+
const vSchema = this.getMostInnerRawSchema();
|
|
218
|
+
if (vSchema && 'entries' in vSchema && typeof vSchema.entries === 'object' && vSchema.entries) {
|
|
219
|
+
const properties = vSchema.entries;
|
|
220
|
+
for (const p in properties) {
|
|
221
|
+
const isRequired = 'required' in schema && Array.isArray(schema.required) && schema.required.includes(p);
|
|
222
|
+
r[p] = new OpenAPIValibotHelper({ value: properties[p] }, isRequired);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return r;
|
|
226
|
+
}
|
|
227
|
+
getAlternatives() {
|
|
228
|
+
const r = [];
|
|
229
|
+
const schema = this._schema;
|
|
230
|
+
if ('oneOf' in schema && Array.isArray(schema.oneOf)) {
|
|
231
|
+
for (const p of schema.oneOf) {
|
|
232
|
+
r.push(new OpenAPIValibotHelper({ value: p }));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return r;
|
|
236
|
+
}
|
|
237
|
+
hasStyle() {
|
|
238
|
+
return typeof this.getMeta('style') === 'string';
|
|
239
|
+
}
|
|
240
|
+
getStyle() {
|
|
241
|
+
const style = this.getMeta('style');
|
|
242
|
+
if (typeof style === 'string') {
|
|
243
|
+
return style;
|
|
244
|
+
}
|
|
245
|
+
return '';
|
|
246
|
+
}
|
|
247
|
+
hasAdditionalProperties() {
|
|
248
|
+
const schema = this._schema;
|
|
249
|
+
return !!('additionalProperties' in schema && schema.additionalProperties);
|
|
250
|
+
}
|
|
251
|
+
getAdditionalProperties() {
|
|
252
|
+
const schema = this._schema;
|
|
253
|
+
return 'additionalProperties' in schema && schema.additionalProperties;
|
|
254
|
+
}
|
|
255
|
+
hasRef() {
|
|
256
|
+
const schema = this._schema;
|
|
257
|
+
return !!('$ref' in schema && typeof schema.$ref === 'string') || !!('$id' in schema && typeof schema.$id === 'string');
|
|
258
|
+
}
|
|
259
|
+
getRef() {
|
|
260
|
+
const schema = this._schema;
|
|
261
|
+
return '$ref' in schema && typeof schema.$ref === 'string' ? schema.$ref :
|
|
262
|
+
'$id' in schema && typeof schema.$id === 'string' ? schema.$id : undefined;
|
|
263
|
+
}
|
|
264
|
+
hasDiscriminator() {
|
|
265
|
+
const discriminator = this.getMeta('discriminator');
|
|
266
|
+
return !!(discriminator &&
|
|
267
|
+
typeof discriminator === 'object' &&
|
|
268
|
+
'propertyName' in discriminator &&
|
|
269
|
+
discriminator.propertyName &&
|
|
270
|
+
typeof discriminator.propertyName === 'string');
|
|
271
|
+
}
|
|
272
|
+
getDiscriminator() {
|
|
273
|
+
const discriminator = this.getMeta('discriminator');
|
|
274
|
+
return discriminator &&
|
|
275
|
+
typeof discriminator === 'object' &&
|
|
276
|
+
'propertyName' in discriminator &&
|
|
277
|
+
discriminator.propertyName &&
|
|
278
|
+
discriminator.propertyName === 'string' ?
|
|
279
|
+
discriminator :
|
|
280
|
+
undefined;
|
|
281
|
+
}
|
|
282
|
+
hasXml() {
|
|
283
|
+
const xmlMeta = this.getMeta('xml');
|
|
284
|
+
return !!(xmlMeta && typeof xmlMeta === 'object');
|
|
285
|
+
}
|
|
286
|
+
getXml() {
|
|
287
|
+
return this.getMeta('xml');
|
|
288
|
+
}
|
|
289
|
+
hasExamples() {
|
|
290
|
+
const schema = this._schema;
|
|
291
|
+
return !!('examples' in schema && Array.isArray(schema.examples));
|
|
292
|
+
}
|
|
293
|
+
getExamples() {
|
|
294
|
+
const schema = this._schema;
|
|
295
|
+
if ('examples' in schema && Array.isArray(schema.examples)) {
|
|
296
|
+
const r = {};
|
|
297
|
+
let i = 1;
|
|
298
|
+
for (const value of schema.examples) {
|
|
299
|
+
r[`${i}`] = {
|
|
300
|
+
value
|
|
301
|
+
};
|
|
302
|
+
i++;
|
|
303
|
+
}
|
|
304
|
+
return r;
|
|
305
|
+
}
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
hasEncoding() {
|
|
309
|
+
const encodingMeta = this.getMeta('encoding');
|
|
310
|
+
return !!(encodingMeta && typeof encodingMeta === 'object');
|
|
311
|
+
}
|
|
312
|
+
getEncoding() {
|
|
313
|
+
return this.getMeta('encoding');
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
exports.OpenAPIValibotHelper = OpenAPIValibotHelper;
|
|
317
|
+
/**
|
|
318
|
+
* Valibot helper for \@novice1/api-doc-generator
|
|
319
|
+
*/
|
|
320
|
+
class PostmanValibotHelper extends BaseValibotHelper {
|
|
321
|
+
getFirstItem() {
|
|
322
|
+
const schema = this._schema;
|
|
323
|
+
if ('items' in schema && typeof schema.items === 'object') {
|
|
324
|
+
return new PostmanValibotHelper({ value: schema.items });
|
|
325
|
+
}
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
getChildren() {
|
|
329
|
+
const r = {};
|
|
330
|
+
const schema = this._schema;
|
|
331
|
+
if ('properties' in schema && typeof schema.properties === 'object' && schema.properties) {
|
|
332
|
+
const properties = schema.properties;
|
|
333
|
+
for (const p in properties) {
|
|
334
|
+
const isRequired = 'required' in schema && Array.isArray(schema.required) && schema.required.includes(p);
|
|
335
|
+
r[p] = new PostmanValibotHelper({ value: properties[p] }, isRequired);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return r;
|
|
339
|
+
}
|
|
340
|
+
getAlternatives() {
|
|
341
|
+
const r = [];
|
|
342
|
+
const schema = this._schema;
|
|
343
|
+
if ('oneOf' in schema && Array.isArray(schema.oneOf)) {
|
|
344
|
+
for (const p of schema.oneOf) {
|
|
345
|
+
r.push(new PostmanValibotHelper({ value: p }));
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return r;
|
|
349
|
+
}
|
|
350
|
+
hasContentType() {
|
|
351
|
+
return typeof this.getMeta('contentType') === 'string';
|
|
352
|
+
}
|
|
353
|
+
getContentType() {
|
|
354
|
+
const contentType = this.getMeta('contentType');
|
|
355
|
+
if (typeof contentType === 'string') {
|
|
356
|
+
return contentType;
|
|
357
|
+
}
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
hasDescriptionType() {
|
|
361
|
+
return typeof this.getMeta('descriptionType') === 'string';
|
|
362
|
+
}
|
|
363
|
+
getDescriptionType() {
|
|
364
|
+
const descriptionType = this.getMeta('descriptionType');
|
|
365
|
+
if (typeof descriptionType === 'string') {
|
|
366
|
+
return descriptionType;
|
|
367
|
+
}
|
|
368
|
+
return;
|
|
369
|
+
}
|
|
370
|
+
hasXml() {
|
|
371
|
+
const xmlMeta = this.getMeta('xml');
|
|
372
|
+
return !!(xmlMeta && typeof xmlMeta === 'object');
|
|
373
|
+
}
|
|
374
|
+
getXml() {
|
|
375
|
+
return this.getMeta('xml');
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
exports.PostmanValibotHelper = PostmanValibotHelper;
|
|
379
|
+
//# sourceMappingURL=doc-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-helpers.js","sourceRoot":"","sources":["../src/doc-helpers.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./types"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./doc-helpers"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./validator"), exports);
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,kDAAuB;AACvB,wDAA6B;AAC7B,sDAA2B"}
|
package/lib/types.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ReqRefDefaults, ReqRef, KaapiServerRoute, HandlerDecorations, Lifecycle, Server } from '@kaapi/kaapi';
|
|
2
|
+
import type { Config, InferIssue, InferOutput, ObjectEntriesAsync } from 'valibot';
|
|
3
|
+
export type NonEmptyValibotSchema = ObjectEntriesAsync[string];
|
|
4
|
+
export type ValibotSchema = NonEmptyValibotSchema | undefined | null;
|
|
5
|
+
export type ValidatorValibotOptions<TSchema extends NonEmptyValibotSchema> = Config<InferIssue<TSchema>>;
|
|
6
|
+
export type ValidatorValibotSchema = {
|
|
7
|
+
payload?: ValibotSchema;
|
|
8
|
+
query?: ValibotSchema;
|
|
9
|
+
params?: ValibotSchema;
|
|
10
|
+
headers?: ValibotSchema;
|
|
11
|
+
state?: ValibotSchema;
|
|
12
|
+
options?: ValidatorValibotOptions<NonEmptyValibotSchema>;
|
|
13
|
+
failAction?: 'error' | 'log' | Lifecycle.Method | undefined;
|
|
14
|
+
};
|
|
15
|
+
export type ValibotlessReqRefDefaults = Omit<ReqRefDefaults, 'Query' | 'Headers' | 'Params' | 'Payload'>;
|
|
16
|
+
export type ValibotlessReqRef = Omit<ReqRef, 'Query' | 'Headers' | 'Params' | 'Payload'>;
|
|
17
|
+
export type output<T> = T extends NonEmptyValibotSchema ? InferOutput<T> : unknown;
|
|
18
|
+
export interface ValidatorValibotReqRef<RS extends ValidatorValibotSchema = ValidatorValibotSchema> {
|
|
19
|
+
Query: output<RS['query']>;
|
|
20
|
+
Headers: output<RS['headers']>;
|
|
21
|
+
Params: output<RS['params']>;
|
|
22
|
+
Payload: output<RS['payload']>;
|
|
23
|
+
}
|
|
24
|
+
export type ValidatorValibot = <V extends ValidatorValibotSchema>(schema: V) => {
|
|
25
|
+
route<R extends ValibotlessReqRef = ValibotlessReqRefDefaults>(serverRoute: KaapiServerRoute<ValidatorValibotReqRef<V> & R>, handler?: HandlerDecorations | Lifecycle.Method<ValidatorValibotReqRef<V> & R, Lifecycle.ReturnValue<ValidatorValibotReqRef<V> & R>>): Server;
|
|
26
|
+
};
|
package/lib/types.js
ADDED
package/lib/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/lib/validator.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validatorValibot = exports.supportedProps = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const boom_1 = tslib_1.__importDefault(require("@hapi/boom"));
|
|
6
|
+
const valibot_1 = require("valibot");
|
|
7
|
+
const doc_helpers_1 = require("./doc-helpers");
|
|
8
|
+
const package_json_1 = tslib_1.__importDefault(require("../package.json"));
|
|
9
|
+
const { parse = { payload: true, query: true, params: true, headers: true, state: true } } = {};
|
|
10
|
+
exports.supportedProps = ['payload', 'query', 'params', 'headers', 'state'];
|
|
11
|
+
const normalizeBooleans = (obj) => {
|
|
12
|
+
for (const key in obj) {
|
|
13
|
+
const val = obj[key];
|
|
14
|
+
if (typeof val === 'string') {
|
|
15
|
+
if (val === 'true')
|
|
16
|
+
obj[key] = true;
|
|
17
|
+
else if (val === 'false')
|
|
18
|
+
obj[key] = false;
|
|
19
|
+
}
|
|
20
|
+
else if (Array.isArray(val)) {
|
|
21
|
+
obj[key] = val.map((v) => (v === 'true' ? true : v === 'false' ? false : v));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return obj;
|
|
25
|
+
};
|
|
26
|
+
exports.validatorValibot = {
|
|
27
|
+
integrate(t) {
|
|
28
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const validator = (schema) => {
|
|
30
|
+
return {
|
|
31
|
+
route(serverRoute, handler) {
|
|
32
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
33
|
+
if (!serverRoute.options) {
|
|
34
|
+
serverRoute.options = {};
|
|
35
|
+
}
|
|
36
|
+
if (typeof serverRoute.options === 'object') {
|
|
37
|
+
// validate
|
|
38
|
+
if (!serverRoute.options.plugins) {
|
|
39
|
+
serverRoute.options.plugins = {};
|
|
40
|
+
}
|
|
41
|
+
serverRoute.options.plugins.valibot = schema;
|
|
42
|
+
// docs
|
|
43
|
+
serverRoute.options.plugins.kaapi = serverRoute.options.plugins.kaapi || {};
|
|
44
|
+
if (serverRoute.options.plugins.kaapi.docs != false && // docs not disabled
|
|
45
|
+
!((_a = serverRoute.options.plugins.kaapi.docs) === null || _a === void 0 ? void 0 : _a.disabled) // docs not disabled
|
|
46
|
+
) {
|
|
47
|
+
if (!((_d = (_c = (_b = serverRoute.options.plugins) === null || _b === void 0 ? void 0 : _b.kaapi) === null || _c === void 0 ? void 0 : _c.docs) === null || _d === void 0 ? void 0 : _d.helperSchemaProperty)) // docs have not helperSchemaProperty
|
|
48
|
+
serverRoute.options.plugins.kaapi.docs = Object.assign(Object.assign({}, serverRoute.options.plugins.kaapi.docs), { helperSchemaProperty: 'valibot' });
|
|
49
|
+
if (!((_g = (_f = (_e = serverRoute.options.plugins) === null || _e === void 0 ? void 0 : _e.kaapi) === null || _f === void 0 ? void 0 : _f.docs) === null || _g === void 0 ? void 0 : _g.openAPIHelperClass)) // docs have not openAPIHelperClass
|
|
50
|
+
serverRoute.options.plugins.kaapi.docs = Object.assign(Object.assign({}, serverRoute.options.plugins.kaapi.docs), { openAPIHelperClass: doc_helpers_1.OpenAPIValibotHelper });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
t.route(serverRoute, handler);
|
|
54
|
+
return t.server;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
yield t.server.register({
|
|
59
|
+
name: 'kaapi-validator-valibot',
|
|
60
|
+
version: package_json_1.default.version,
|
|
61
|
+
register: function (server) {
|
|
62
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
server.ext('onPreHandler', (request, h) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
var _a, _b, _c;
|
|
65
|
+
const routeValidation = (_c = (_b = (_a = request === null || request === void 0 ? void 0 : request.route) === null || _a === void 0 ? void 0 : _a.settings) === null || _b === void 0 ? void 0 : _b.plugins) === null || _c === void 0 ? void 0 : _c.valibot;
|
|
66
|
+
try {
|
|
67
|
+
// Initialize empty objects to hold the parsed data and corresponding Valibot schemas
|
|
68
|
+
const data = {};
|
|
69
|
+
const dataSchema = {};
|
|
70
|
+
// Loop through all supported properties for this route
|
|
71
|
+
for (const prop of exports.supportedProps) {
|
|
72
|
+
// Check if validation exists for this property and there is a parser defined
|
|
73
|
+
if ((routeValidation === null || routeValidation === void 0 ? void 0 : routeValidation[prop]) && parse[prop]) {
|
|
74
|
+
// Add the Valibot schema for this property to the dataSchema
|
|
75
|
+
dataSchema[prop] = routeValidation[prop];
|
|
76
|
+
// Prepare the value for parsing:
|
|
77
|
+
// - For query params, normalize boolean strings to actual booleans
|
|
78
|
+
// - Otherwise, take the raw value from the request object
|
|
79
|
+
data[prop] = prop === 'query' ? normalizeBooleans(request[prop]) : request[prop];
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Determine if there are any properties to validate
|
|
83
|
+
let hasProps = false;
|
|
84
|
+
for (const key in dataSchema) {
|
|
85
|
+
// Safely check own properties to avoid inherited keys
|
|
86
|
+
if (Object.prototype.hasOwnProperty.call(dataSchema, key)) {
|
|
87
|
+
hasProps = true;
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// If we have any props to validate, parse them using Valibot
|
|
92
|
+
if (hasProps) {
|
|
93
|
+
// Create a Valibot object from the collected schema and parse asynchronously
|
|
94
|
+
// Options (like error maps or jitless) can come from routeValidation.options
|
|
95
|
+
const parsedProps = yield (0, valibot_1.parseAsync)((0, valibot_1.objectAsync)(dataSchema), data, routeValidation === null || routeValidation === void 0 ? void 0 : routeValidation.options);
|
|
96
|
+
// Merge the parsed and validated properties back into the request object
|
|
97
|
+
Object.assign(request, parsedProps);
|
|
98
|
+
}
|
|
99
|
+
// Continue the Hapi request lifecycle
|
|
100
|
+
return h.continue;
|
|
101
|
+
}
|
|
102
|
+
catch (err) {
|
|
103
|
+
// Initialize a set to track which paths (properties) failed validation
|
|
104
|
+
const issuePaths = new Set();
|
|
105
|
+
let message;
|
|
106
|
+
// Check if the error is instance of ValiError
|
|
107
|
+
if (err instanceof valibot_1.ValiError && err.issues.length) {
|
|
108
|
+
const firstIssue = err.issues[0];
|
|
109
|
+
message = firstIssue.message;
|
|
110
|
+
// Track which property caused the issue
|
|
111
|
+
if (Array.isArray(firstIssue.path) && firstIssue.path.length) {
|
|
112
|
+
let errorPath = '';
|
|
113
|
+
for (const p of firstIssue.path) {
|
|
114
|
+
if (p && typeof p.key === 'string') {
|
|
115
|
+
errorPath += `.${p.key}`;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (errorPath.length) {
|
|
119
|
+
message += ` at "${errorPath.substring(1)}"`;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (err instanceof Error) {
|
|
124
|
+
// If itβs a regular Error, use its message
|
|
125
|
+
message = err.message;
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
// Unknown error type
|
|
129
|
+
message = 'Unknown error';
|
|
130
|
+
}
|
|
131
|
+
// Create a Boom badRequest response with the error message
|
|
132
|
+
const response = boom_1.default.badRequest(message);
|
|
133
|
+
// Attach the raw validation error object for debugging/logging
|
|
134
|
+
response.data = {
|
|
135
|
+
validationError: err
|
|
136
|
+
};
|
|
137
|
+
// Handle custom failAction if itβs a function
|
|
138
|
+
if (typeof (routeValidation === null || routeValidation === void 0 ? void 0 : routeValidation.failAction) === 'function') {
|
|
139
|
+
return routeValidation.failAction(request, h, response);
|
|
140
|
+
}
|
|
141
|
+
// If failAction is 'log', log the validation error with the request
|
|
142
|
+
if ((routeValidation === null || routeValidation === void 0 ? void 0 : routeValidation.failAction) === 'log') {
|
|
143
|
+
request.log(['validation', 'error', 'valibot', ...issuePaths], response);
|
|
144
|
+
// Note: unlike Hapi's failAction 'log', 'log' here still returns a Boom response
|
|
145
|
+
}
|
|
146
|
+
// Return the error response to halt request processing
|
|
147
|
+
return response;
|
|
148
|
+
}
|
|
149
|
+
}));
|
|
150
|
+
server.decorate('server', 'valibot', validator);
|
|
151
|
+
});
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
if (t.openapi) {
|
|
155
|
+
t.openapi.addHelperClass(doc_helpers_1.OpenAPIValibotHelper);
|
|
156
|
+
}
|
|
157
|
+
if (t.postman) {
|
|
158
|
+
t.postman.addHelperClass(doc_helpers_1.PostmanValibotHelper);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kaapi/validator-valibot",
|
|
3
|
+
"version": "0.0.17",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "Valibot-powered request validation and documentation plugin for Kaapi.",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./lib/index.d.ts",
|
|
10
|
+
"default": "./lib/index.js"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"lint": "eslint .",
|
|
15
|
+
"build": "tsc && node ./scripts/buildDT.mjs",
|
|
16
|
+
"test": "kaukau --require ts-node/register --config kaukau.config.mjs",
|
|
17
|
+
"coverage": "c8 npm test"
|
|
18
|
+
},
|
|
19
|
+
"author": "demingongo",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "git+https://github.com/demingongo/kaapi.git",
|
|
23
|
+
"directory": "packages/validator-valibot"
|
|
24
|
+
},
|
|
25
|
+
"license": "MIT",
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@hapi/boom": "^10.0.1",
|
|
28
|
+
"@kaapi/kaapi": "workspace:^",
|
|
29
|
+
"@novice1/api-doc-generator": "^1.0.2",
|
|
30
|
+
"@valibot/to-json-schema": "^1.3.0",
|
|
31
|
+
"tslib": "^2.8.1"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"valibot": "^1.1.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/mocha": "^10.0.10"
|
|
38
|
+
}
|
|
39
|
+
}
|