@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.
Files changed (97) hide show
  1. package/dist/backend/core/global.cjs +283 -0
  2. package/dist/backend/core/global.cjs.map +1 -0
  3. package/dist/backend/core/global.d.cts +294 -0
  4. package/dist/backend/core/global.d.ts +294 -0
  5. package/dist/backend/core/global.js +39 -0
  6. package/dist/backend/core/global.js.map +1 -0
  7. package/dist/backend/core/onion-layers.cjs +2302 -0
  8. package/dist/backend/core/onion-layers.cjs.map +1 -0
  9. package/dist/backend/core/onion-layers.d.cts +1675 -0
  10. package/dist/backend/core/onion-layers.d.ts +1675 -0
  11. package/dist/backend/core/onion-layers.js +1158 -0
  12. package/dist/backend/core/onion-layers.js.map +1 -0
  13. package/dist/backend/core/presentation.cjs +573 -0
  14. package/dist/backend/core/presentation.cjs.map +1 -0
  15. package/dist/backend/core/presentation.d.cts +5 -0
  16. package/dist/backend/core/presentation.d.ts +5 -0
  17. package/dist/backend/core/presentation.js +28 -0
  18. package/dist/backend/core/presentation.js.map +1 -0
  19. package/dist/backend/core/validators/arktype.cjs +947 -0
  20. package/dist/backend/core/validators/arktype.cjs.map +1 -0
  21. package/dist/backend/core/validators/arktype.d.cts +188 -0
  22. package/dist/backend/core/validators/arktype.d.ts +188 -0
  23. package/dist/backend/core/validators/arktype.js +287 -0
  24. package/dist/backend/core/validators/arktype.js.map +1 -0
  25. package/dist/backend/core/validators/typebox.cjs +939 -0
  26. package/dist/backend/core/validators/typebox.cjs.map +1 -0
  27. package/dist/backend/core/validators/typebox.d.cts +189 -0
  28. package/dist/backend/core/validators/typebox.d.ts +189 -0
  29. package/dist/backend/core/validators/typebox.js +281 -0
  30. package/dist/backend/core/validators/typebox.js.map +1 -0
  31. package/dist/backend/core/validators/valibot.cjs +942 -0
  32. package/dist/backend/core/validators/valibot.cjs.map +1 -0
  33. package/dist/backend/core/validators/valibot.d.cts +160 -0
  34. package/dist/backend/core/validators/valibot.d.ts +160 -0
  35. package/dist/backend/core/validators/valibot.js +294 -0
  36. package/dist/backend/core/validators/valibot.js.map +1 -0
  37. package/dist/backend/core/validators/zod.cjs +934 -0
  38. package/dist/backend/core/validators/zod.cjs.map +1 -0
  39. package/dist/backend/core/validators/zod.d.cts +188 -0
  40. package/dist/backend/core/validators/zod.d.ts +188 -0
  41. package/dist/backend/core/validators/zod.js +278 -0
  42. package/dist/backend/core/validators/zod.js.map +1 -0
  43. package/dist/backend/frameworks/elysia.cjs +715 -0
  44. package/dist/backend/frameworks/elysia.cjs.map +1 -0
  45. package/dist/backend/frameworks/elysia.d.cts +208 -0
  46. package/dist/backend/frameworks/elysia.d.ts +208 -0
  47. package/dist/backend/frameworks/elysia.js +251 -0
  48. package/dist/backend/frameworks/elysia.js.map +1 -0
  49. package/dist/backend/frameworks/fastify.cjs +677 -0
  50. package/dist/backend/frameworks/fastify.cjs.map +1 -0
  51. package/dist/backend/frameworks/fastify.d.cts +201 -0
  52. package/dist/backend/frameworks/fastify.d.ts +201 -0
  53. package/dist/backend/frameworks/fastify.js +213 -0
  54. package/dist/backend/frameworks/fastify.js.map +1 -0
  55. package/dist/backend/frameworks/hono.cjs +715 -0
  56. package/dist/backend/frameworks/hono.cjs.map +1 -0
  57. package/dist/backend/frameworks/hono.d.cts +163 -0
  58. package/dist/backend/frameworks/hono.d.ts +163 -0
  59. package/dist/backend/frameworks/hono.js +249 -0
  60. package/dist/backend/frameworks/hono.js.map +1 -0
  61. package/dist/backend/frameworks/nestjs.cjs +260 -0
  62. package/dist/backend/frameworks/nestjs.cjs.map +1 -0
  63. package/dist/backend/frameworks/nestjs.d.cts +168 -0
  64. package/dist/backend/frameworks/nestjs.d.ts +168 -0
  65. package/dist/backend/frameworks/nestjs.js +193 -0
  66. package/dist/backend/frameworks/nestjs.js.map +1 -0
  67. package/dist/base-dto.class-D7W9iqoU.d.cts +146 -0
  68. package/dist/base-dto.class-D7W9iqoU.d.ts +146 -0
  69. package/dist/base-uuid-v7.vo-BPGEIWLM.d.ts +799 -0
  70. package/dist/base-uuid-v7.vo-BjqKX44G.d.cts +799 -0
  71. package/dist/chunk-74IKUOSE.js +116 -0
  72. package/dist/chunk-74IKUOSE.js.map +1 -0
  73. package/dist/chunk-BKZOLGQW.js +29 -0
  74. package/dist/chunk-BKZOLGQW.js.map +1 -0
  75. package/dist/chunk-CGZBV6BD.js +54 -0
  76. package/dist/chunk-CGZBV6BD.js.map +1 -0
  77. package/dist/chunk-DDAHJZVK.js +258 -0
  78. package/dist/chunk-DDAHJZVK.js.map +1 -0
  79. package/dist/chunk-MQD5GXMT.js +171 -0
  80. package/dist/chunk-MQD5GXMT.js.map +1 -0
  81. package/dist/chunk-OKFXZHBC.js +43 -0
  82. package/dist/chunk-OKFXZHBC.js.map +1 -0
  83. package/dist/chunk-RLLWYFPI.js +168 -0
  84. package/dist/chunk-RLLWYFPI.js.map +1 -0
  85. package/dist/chunk-VCHFXT5W.js +425 -0
  86. package/dist/chunk-VCHFXT5W.js.map +1 -0
  87. package/dist/chunk-ZWLYNGO3.js +40 -0
  88. package/dist/chunk-ZWLYNGO3.js.map +1 -0
  89. package/dist/http-response-BAhi8lF4.d.cts +124 -0
  90. package/dist/http-response-BAhi8lF4.d.ts +124 -0
  91. package/dist/index-DingXh7B.d.cts +1187 -0
  92. package/dist/index-tOH7XBa3.d.ts +1187 -0
  93. package/dist/routing.type-DB4pt-d9.d.ts +184 -0
  94. package/dist/routing.type-DF2BIL7x.d.cts +184 -0
  95. package/dist/validation-error.type-kD4_qNZ9.d.cts +199 -0
  96. package/dist/validation-error.type-kD4_qNZ9.d.ts +199 -0
  97. 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 };