@cosmneo/onion-lasagna 0.1.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/backend/core/global.cjs +283 -0
- package/dist/backend/core/global.cjs.map +1 -0
- package/dist/backend/core/global.d.cts +294 -0
- package/dist/backend/core/global.d.ts +294 -0
- package/dist/backend/core/global.js +39 -0
- package/dist/backend/core/global.js.map +1 -0
- package/dist/backend/core/onion-layers.cjs +2302 -0
- package/dist/backend/core/onion-layers.cjs.map +1 -0
- package/dist/backend/core/onion-layers.d.cts +1675 -0
- package/dist/backend/core/onion-layers.d.ts +1675 -0
- package/dist/backend/core/onion-layers.js +1158 -0
- package/dist/backend/core/onion-layers.js.map +1 -0
- package/dist/backend/core/presentation.cjs +573 -0
- package/dist/backend/core/presentation.cjs.map +1 -0
- package/dist/backend/core/presentation.d.cts +5 -0
- package/dist/backend/core/presentation.d.ts +5 -0
- package/dist/backend/core/presentation.js +28 -0
- package/dist/backend/core/presentation.js.map +1 -0
- package/dist/backend/core/validators/arktype.cjs +947 -0
- package/dist/backend/core/validators/arktype.cjs.map +1 -0
- package/dist/backend/core/validators/arktype.d.cts +188 -0
- package/dist/backend/core/validators/arktype.d.ts +188 -0
- package/dist/backend/core/validators/arktype.js +287 -0
- package/dist/backend/core/validators/arktype.js.map +1 -0
- package/dist/backend/core/validators/typebox.cjs +939 -0
- package/dist/backend/core/validators/typebox.cjs.map +1 -0
- package/dist/backend/core/validators/typebox.d.cts +189 -0
- package/dist/backend/core/validators/typebox.d.ts +189 -0
- package/dist/backend/core/validators/typebox.js +281 -0
- package/dist/backend/core/validators/typebox.js.map +1 -0
- package/dist/backend/core/validators/valibot.cjs +942 -0
- package/dist/backend/core/validators/valibot.cjs.map +1 -0
- package/dist/backend/core/validators/valibot.d.cts +160 -0
- package/dist/backend/core/validators/valibot.d.ts +160 -0
- package/dist/backend/core/validators/valibot.js +294 -0
- package/dist/backend/core/validators/valibot.js.map +1 -0
- package/dist/backend/core/validators/zod.cjs +934 -0
- package/dist/backend/core/validators/zod.cjs.map +1 -0
- package/dist/backend/core/validators/zod.d.cts +188 -0
- package/dist/backend/core/validators/zod.d.ts +188 -0
- package/dist/backend/core/validators/zod.js +278 -0
- package/dist/backend/core/validators/zod.js.map +1 -0
- package/dist/backend/frameworks/elysia.cjs +715 -0
- package/dist/backend/frameworks/elysia.cjs.map +1 -0
- package/dist/backend/frameworks/elysia.d.cts +208 -0
- package/dist/backend/frameworks/elysia.d.ts +208 -0
- package/dist/backend/frameworks/elysia.js +251 -0
- package/dist/backend/frameworks/elysia.js.map +1 -0
- package/dist/backend/frameworks/fastify.cjs +677 -0
- package/dist/backend/frameworks/fastify.cjs.map +1 -0
- package/dist/backend/frameworks/fastify.d.cts +201 -0
- package/dist/backend/frameworks/fastify.d.ts +201 -0
- package/dist/backend/frameworks/fastify.js +213 -0
- package/dist/backend/frameworks/fastify.js.map +1 -0
- package/dist/backend/frameworks/hono.cjs +715 -0
- package/dist/backend/frameworks/hono.cjs.map +1 -0
- package/dist/backend/frameworks/hono.d.cts +163 -0
- package/dist/backend/frameworks/hono.d.ts +163 -0
- package/dist/backend/frameworks/hono.js +249 -0
- package/dist/backend/frameworks/hono.js.map +1 -0
- package/dist/backend/frameworks/nestjs.cjs +260 -0
- package/dist/backend/frameworks/nestjs.cjs.map +1 -0
- package/dist/backend/frameworks/nestjs.d.cts +168 -0
- package/dist/backend/frameworks/nestjs.d.ts +168 -0
- package/dist/backend/frameworks/nestjs.js +193 -0
- package/dist/backend/frameworks/nestjs.js.map +1 -0
- package/dist/base-dto.class-D7W9iqoU.d.cts +146 -0
- package/dist/base-dto.class-D7W9iqoU.d.ts +146 -0
- package/dist/base-uuid-v7.vo-BPGEIWLM.d.ts +799 -0
- package/dist/base-uuid-v7.vo-BjqKX44G.d.cts +799 -0
- package/dist/chunk-74IKUOSE.js +116 -0
- package/dist/chunk-74IKUOSE.js.map +1 -0
- package/dist/chunk-BKZOLGQW.js +29 -0
- package/dist/chunk-BKZOLGQW.js.map +1 -0
- package/dist/chunk-CGZBV6BD.js +54 -0
- package/dist/chunk-CGZBV6BD.js.map +1 -0
- package/dist/chunk-DDAHJZVK.js +258 -0
- package/dist/chunk-DDAHJZVK.js.map +1 -0
- package/dist/chunk-MQD5GXMT.js +171 -0
- package/dist/chunk-MQD5GXMT.js.map +1 -0
- package/dist/chunk-OKFXZHBC.js +43 -0
- package/dist/chunk-OKFXZHBC.js.map +1 -0
- package/dist/chunk-RLLWYFPI.js +168 -0
- package/dist/chunk-RLLWYFPI.js.map +1 -0
- package/dist/chunk-VCHFXT5W.js +425 -0
- package/dist/chunk-VCHFXT5W.js.map +1 -0
- package/dist/chunk-ZWLYNGO3.js +40 -0
- package/dist/chunk-ZWLYNGO3.js.map +1 -0
- package/dist/http-response-BAhi8lF4.d.cts +124 -0
- package/dist/http-response-BAhi8lF4.d.ts +124 -0
- package/dist/index-DingXh7B.d.cts +1187 -0
- package/dist/index-tOH7XBa3.d.ts +1187 -0
- package/dist/routing.type-DB4pt-d9.d.ts +184 -0
- package/dist/routing.type-DF2BIL7x.d.cts +184 -0
- package/dist/validation-error.type-kD4_qNZ9.d.cts +199 -0
- package/dist/validation-error.type-kD4_qNZ9.d.ts +199 -0
- package/package.json +191 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function signature for validating an object against a schema.
|
|
3
|
+
*
|
|
4
|
+
* @typeParam TSchema - The schema type (e.g., z.ZodType, Type from ArkType)
|
|
5
|
+
*/
|
|
6
|
+
type ValidateObject<TSchema> = <T>(schema: TSchema, value: unknown) => T;
|
|
7
|
+
/**
|
|
8
|
+
* A validator bound to a specific schema.
|
|
9
|
+
*
|
|
10
|
+
* Created by {@link ObjectValidatorPort.withSchema} and used by
|
|
11
|
+
* {@link BaseDto} and {@link BaseValueObject} for validation.
|
|
12
|
+
*
|
|
13
|
+
* @typeParam T - The validated output type
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const validator: BoundValidator<User> = createZodValidator(userSchema);
|
|
18
|
+
* const user = validator.validate(unknownInput); // Returns User or throws
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
interface BoundValidator<T> {
|
|
22
|
+
/**
|
|
23
|
+
* Validates unknown input against the bound schema.
|
|
24
|
+
*
|
|
25
|
+
* @param value - The unknown value to validate
|
|
26
|
+
* @returns The validated and typed value
|
|
27
|
+
* @throws {ObjectValidationError} When validation fails
|
|
28
|
+
*/
|
|
29
|
+
validate: (value: unknown) => T;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Port interface for object validation (Strategy pattern).
|
|
33
|
+
*
|
|
34
|
+
* This abstraction allows swapping between validation libraries
|
|
35
|
+
* (Zod, ArkType, TypeBox, Valibot) without changing application code.
|
|
36
|
+
*
|
|
37
|
+
* Implementations:
|
|
38
|
+
* - `ZodObjectValidator` - Zod schema validation
|
|
39
|
+
* - `ArkTypeObjectValidator` - ArkType validation
|
|
40
|
+
* - `TypeBoxObjectValidator` - TypeBox validation
|
|
41
|
+
* - `ValibotObjectValidator` - Valibot validation
|
|
42
|
+
*
|
|
43
|
+
* @typeParam TSchema - The schema type for the validation library
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Using Zod
|
|
48
|
+
* import { createZodValidator } from '@cosmneo/onion-lasagna/backend/core/validators/zod';
|
|
49
|
+
* import { z } from 'zod';
|
|
50
|
+
*
|
|
51
|
+
* const schema = z.object({ name: z.string(), age: z.number() });
|
|
52
|
+
* const validator = createZodValidator(schema);
|
|
53
|
+
* const data = validator.validate({ name: 'John', age: 30 });
|
|
54
|
+
*
|
|
55
|
+
* // Using ArkType
|
|
56
|
+
* import { createArkTypeValidator } from '@cosmneo/onion-lasagna/backend/core/validators/arktype';
|
|
57
|
+
* import { type } from 'arktype';
|
|
58
|
+
*
|
|
59
|
+
* const schema = type({ name: 'string', age: 'number' });
|
|
60
|
+
* const validator = createArkTypeValidator(schema);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
interface ObjectValidatorPort<TSchema> {
|
|
64
|
+
/**
|
|
65
|
+
* Validates a value directly against a schema.
|
|
66
|
+
*
|
|
67
|
+
* @param schema - The validation schema
|
|
68
|
+
* @param value - The unknown value to validate
|
|
69
|
+
* @returns The validated and typed value
|
|
70
|
+
* @throws {ObjectValidationError} When validation fails
|
|
71
|
+
*/
|
|
72
|
+
validateObject: ValidateObject<TSchema>;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a reusable validator bound to a specific schema.
|
|
75
|
+
*
|
|
76
|
+
* Use this to create validators for DTOs and Value Objects.
|
|
77
|
+
*
|
|
78
|
+
* @param schema - The validation schema to bind
|
|
79
|
+
* @returns A BoundValidator that can validate values against the schema
|
|
80
|
+
*/
|
|
81
|
+
withSchema: <T>(schema: TSchema) => BoundValidator<T>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Sentinel value to skip validation in DTO constructors.
|
|
86
|
+
*
|
|
87
|
+
* Use this when creating a DTO from already-validated data,
|
|
88
|
+
* such as when mapping between layers or in tests.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* // Skip validation for already-validated data
|
|
93
|
+
* const dto = new CreateUserInputDto(validatedData, SKIP_DTO_VALIDATION);
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
declare const SKIP_DTO_VALIDATION: "skip dto validation";
|
|
97
|
+
/**
|
|
98
|
+
* Base class for Data Transfer Objects (DTOs).
|
|
99
|
+
*
|
|
100
|
+
* DTOs are validated data containers used to transfer data between layers.
|
|
101
|
+
* Unlike Value Objects, DTOs are not domain concepts - they are purely
|
|
102
|
+
* for data transfer and validation at system boundaries.
|
|
103
|
+
*
|
|
104
|
+
* Key differences from Value Objects:
|
|
105
|
+
* - **DTOs**: Transfer data between layers (e.g., request/response payloads)
|
|
106
|
+
* - **Value Objects**: Represent domain concepts with behavior (e.g., Email, Money)
|
|
107
|
+
*
|
|
108
|
+
* @typeParam T - The shape of the data being transferred
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Define a DTO with validation
|
|
113
|
+
* class CreateUserInputDto extends BaseDto<{ name: string; email: string }> {
|
|
114
|
+
* private constructor(data: unknown, validator: BoundValidator<{ name: string; email: string }>) {
|
|
115
|
+
* super(data, validator);
|
|
116
|
+
* }
|
|
117
|
+
*
|
|
118
|
+
* static create(data: unknown): CreateUserInputDto {
|
|
119
|
+
* return new CreateUserInputDto(data, createUserValidator);
|
|
120
|
+
* }
|
|
121
|
+
* }
|
|
122
|
+
*
|
|
123
|
+
* // Usage in a controller
|
|
124
|
+
* const dto = CreateUserInputDto.create(request.body);
|
|
125
|
+
* console.log(dto.data.name); // Typed and validated
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
declare class BaseDto<T> {
|
|
129
|
+
private readonly _data;
|
|
130
|
+
/**
|
|
131
|
+
* Creates a new DTO instance.
|
|
132
|
+
*
|
|
133
|
+
* @param data - The raw data to validate and wrap
|
|
134
|
+
* @param validator - A bound validator or SKIP_DTO_VALIDATION to bypass
|
|
135
|
+
* @throws {ObjectValidationError} When validation fails
|
|
136
|
+
*/
|
|
137
|
+
constructor(data: T, validator: BoundValidator<T> | typeof SKIP_DTO_VALIDATION);
|
|
138
|
+
/**
|
|
139
|
+
* The validated data payload.
|
|
140
|
+
*
|
|
141
|
+
* @returns The validated data of type T
|
|
142
|
+
*/
|
|
143
|
+
get data(): T;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export { BaseDto as B, type ObjectValidatorPort as O, SKIP_DTO_VALIDATION as S, type ValidateObject as V, type BoundValidator as a };
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function signature for validating an object against a schema.
|
|
3
|
+
*
|
|
4
|
+
* @typeParam TSchema - The schema type (e.g., z.ZodType, Type from ArkType)
|
|
5
|
+
*/
|
|
6
|
+
type ValidateObject<TSchema> = <T>(schema: TSchema, value: unknown) => T;
|
|
7
|
+
/**
|
|
8
|
+
* A validator bound to a specific schema.
|
|
9
|
+
*
|
|
10
|
+
* Created by {@link ObjectValidatorPort.withSchema} and used by
|
|
11
|
+
* {@link BaseDto} and {@link BaseValueObject} for validation.
|
|
12
|
+
*
|
|
13
|
+
* @typeParam T - The validated output type
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const validator: BoundValidator<User> = createZodValidator(userSchema);
|
|
18
|
+
* const user = validator.validate(unknownInput); // Returns User or throws
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
interface BoundValidator<T> {
|
|
22
|
+
/**
|
|
23
|
+
* Validates unknown input against the bound schema.
|
|
24
|
+
*
|
|
25
|
+
* @param value - The unknown value to validate
|
|
26
|
+
* @returns The validated and typed value
|
|
27
|
+
* @throws {ObjectValidationError} When validation fails
|
|
28
|
+
*/
|
|
29
|
+
validate: (value: unknown) => T;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Port interface for object validation (Strategy pattern).
|
|
33
|
+
*
|
|
34
|
+
* This abstraction allows swapping between validation libraries
|
|
35
|
+
* (Zod, ArkType, TypeBox, Valibot) without changing application code.
|
|
36
|
+
*
|
|
37
|
+
* Implementations:
|
|
38
|
+
* - `ZodObjectValidator` - Zod schema validation
|
|
39
|
+
* - `ArkTypeObjectValidator` - ArkType validation
|
|
40
|
+
* - `TypeBoxObjectValidator` - TypeBox validation
|
|
41
|
+
* - `ValibotObjectValidator` - Valibot validation
|
|
42
|
+
*
|
|
43
|
+
* @typeParam TSchema - The schema type for the validation library
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* // Using Zod
|
|
48
|
+
* import { createZodValidator } from '@cosmneo/onion-lasagna/backend/core/validators/zod';
|
|
49
|
+
* import { z } from 'zod';
|
|
50
|
+
*
|
|
51
|
+
* const schema = z.object({ name: z.string(), age: z.number() });
|
|
52
|
+
* const validator = createZodValidator(schema);
|
|
53
|
+
* const data = validator.validate({ name: 'John', age: 30 });
|
|
54
|
+
*
|
|
55
|
+
* // Using ArkType
|
|
56
|
+
* import { createArkTypeValidator } from '@cosmneo/onion-lasagna/backend/core/validators/arktype';
|
|
57
|
+
* import { type } from 'arktype';
|
|
58
|
+
*
|
|
59
|
+
* const schema = type({ name: 'string', age: 'number' });
|
|
60
|
+
* const validator = createArkTypeValidator(schema);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
interface ObjectValidatorPort<TSchema> {
|
|
64
|
+
/**
|
|
65
|
+
* Validates a value directly against a schema.
|
|
66
|
+
*
|
|
67
|
+
* @param schema - The validation schema
|
|
68
|
+
* @param value - The unknown value to validate
|
|
69
|
+
* @returns The validated and typed value
|
|
70
|
+
* @throws {ObjectValidationError} When validation fails
|
|
71
|
+
*/
|
|
72
|
+
validateObject: ValidateObject<TSchema>;
|
|
73
|
+
/**
|
|
74
|
+
* Creates a reusable validator bound to a specific schema.
|
|
75
|
+
*
|
|
76
|
+
* Use this to create validators for DTOs and Value Objects.
|
|
77
|
+
*
|
|
78
|
+
* @param schema - The validation schema to bind
|
|
79
|
+
* @returns A BoundValidator that can validate values against the schema
|
|
80
|
+
*/
|
|
81
|
+
withSchema: <T>(schema: TSchema) => BoundValidator<T>;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Sentinel value to skip validation in DTO constructors.
|
|
86
|
+
*
|
|
87
|
+
* Use this when creating a DTO from already-validated data,
|
|
88
|
+
* such as when mapping between layers or in tests.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* // Skip validation for already-validated data
|
|
93
|
+
* const dto = new CreateUserInputDto(validatedData, SKIP_DTO_VALIDATION);
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
declare const SKIP_DTO_VALIDATION: "skip dto validation";
|
|
97
|
+
/**
|
|
98
|
+
* Base class for Data Transfer Objects (DTOs).
|
|
99
|
+
*
|
|
100
|
+
* DTOs are validated data containers used to transfer data between layers.
|
|
101
|
+
* Unlike Value Objects, DTOs are not domain concepts - they are purely
|
|
102
|
+
* for data transfer and validation at system boundaries.
|
|
103
|
+
*
|
|
104
|
+
* Key differences from Value Objects:
|
|
105
|
+
* - **DTOs**: Transfer data between layers (e.g., request/response payloads)
|
|
106
|
+
* - **Value Objects**: Represent domain concepts with behavior (e.g., Email, Money)
|
|
107
|
+
*
|
|
108
|
+
* @typeParam T - The shape of the data being transferred
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Define a DTO with validation
|
|
113
|
+
* class CreateUserInputDto extends BaseDto<{ name: string; email: string }> {
|
|
114
|
+
* private constructor(data: unknown, validator: BoundValidator<{ name: string; email: string }>) {
|
|
115
|
+
* super(data, validator);
|
|
116
|
+
* }
|
|
117
|
+
*
|
|
118
|
+
* static create(data: unknown): CreateUserInputDto {
|
|
119
|
+
* return new CreateUserInputDto(data, createUserValidator);
|
|
120
|
+
* }
|
|
121
|
+
* }
|
|
122
|
+
*
|
|
123
|
+
* // Usage in a controller
|
|
124
|
+
* const dto = CreateUserInputDto.create(request.body);
|
|
125
|
+
* console.log(dto.data.name); // Typed and validated
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
declare class BaseDto<T> {
|
|
129
|
+
private readonly _data;
|
|
130
|
+
/**
|
|
131
|
+
* Creates a new DTO instance.
|
|
132
|
+
*
|
|
133
|
+
* @param data - The raw data to validate and wrap
|
|
134
|
+
* @param validator - A bound validator or SKIP_DTO_VALIDATION to bypass
|
|
135
|
+
* @throws {ObjectValidationError} When validation fails
|
|
136
|
+
*/
|
|
137
|
+
constructor(data: T, validator: BoundValidator<T> | typeof SKIP_DTO_VALIDATION);
|
|
138
|
+
/**
|
|
139
|
+
* The validated data payload.
|
|
140
|
+
*
|
|
141
|
+
* @returns The validated data of type T
|
|
142
|
+
*/
|
|
143
|
+
get data(): T;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export { BaseDto as B, type ObjectValidatorPort as O, SKIP_DTO_VALIDATION as S, type ValidateObject as V, type BoundValidator as a };
|