@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,934 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/backend/core/validators/zod/index.ts
|
|
21
|
+
var zod_exports = {};
|
|
22
|
+
__export(zod_exports, {
|
|
23
|
+
AuditByVo: () => AuditByVo,
|
|
24
|
+
AuditInfoVo: () => AuditInfoVo,
|
|
25
|
+
AuditOnVo: () => AuditOnVo,
|
|
26
|
+
Dto: () => Dto,
|
|
27
|
+
EmailVo: () => EmailVo,
|
|
28
|
+
LongTextVo: () => LongTextVo,
|
|
29
|
+
MediumTextVo: () => MediumTextVo,
|
|
30
|
+
PaginationVo: () => PaginationVo,
|
|
31
|
+
ShortTextVo: () => ShortTextVo,
|
|
32
|
+
UuidV4Vo: () => UuidV4Vo,
|
|
33
|
+
UuidV7Vo: () => UuidV7Vo,
|
|
34
|
+
ZodObjectValidator: () => ZodObjectValidator,
|
|
35
|
+
createZodValidator: () => createZodValidator,
|
|
36
|
+
zodObjectValidator: () => zodObjectValidator
|
|
37
|
+
});
|
|
38
|
+
module.exports = __toCommonJS(zod_exports);
|
|
39
|
+
|
|
40
|
+
// src/backend/core/global/exceptions/coded-error.error.ts
|
|
41
|
+
var CodedError = class extends Error {
|
|
42
|
+
/** Machine-readable error code for programmatic handling. */
|
|
43
|
+
code;
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new CodedError instance.
|
|
46
|
+
*
|
|
47
|
+
* @param options - Error configuration
|
|
48
|
+
* @param options.message - Human-readable error message
|
|
49
|
+
* @param options.code - Machine-readable error code from ErrorCodes registry or custom string
|
|
50
|
+
* @param options.cause - Optional underlying error that caused this error
|
|
51
|
+
*/
|
|
52
|
+
constructor({
|
|
53
|
+
message,
|
|
54
|
+
code,
|
|
55
|
+
cause
|
|
56
|
+
}) {
|
|
57
|
+
super(message);
|
|
58
|
+
this.name = this.constructor.name;
|
|
59
|
+
this.code = code;
|
|
60
|
+
if (cause !== void 0) {
|
|
61
|
+
Object.defineProperty(this, "cause", {
|
|
62
|
+
value: cause,
|
|
63
|
+
writable: false,
|
|
64
|
+
enumerable: false,
|
|
65
|
+
configurable: true
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Factory method to create a typed error from a caught error.
|
|
71
|
+
*
|
|
72
|
+
* Subclasses should override this to provide proper error transformation.
|
|
73
|
+
* Designed for use with {@link wrapErrorAsync} and {@link wrapError}.
|
|
74
|
+
*
|
|
75
|
+
* @param _cause - The original caught error
|
|
76
|
+
* @returns A new CodedError instance
|
|
77
|
+
* @throws {Error} If not overridden by subclass
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* class NotFoundError extends UseCaseError {
|
|
82
|
+
* static override fromError(cause: unknown): NotFoundError {
|
|
83
|
+
* return new NotFoundError({
|
|
84
|
+
* message: 'Resource not found',
|
|
85
|
+
* cause,
|
|
86
|
+
* });
|
|
87
|
+
* }
|
|
88
|
+
* }
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
static fromError(_cause) {
|
|
92
|
+
throw new Error(`${this.name}.fromError() must be implemented by subclass`);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// src/backend/core/global/exceptions/error-codes.const.ts
|
|
97
|
+
var ErrorCodes = {
|
|
98
|
+
/**
|
|
99
|
+
* Domain layer error codes.
|
|
100
|
+
* Used for business rule violations and invariant failures.
|
|
101
|
+
*/
|
|
102
|
+
Domain: {
|
|
103
|
+
/** Generic domain error */
|
|
104
|
+
DOMAIN_ERROR: "DOMAIN_ERROR",
|
|
105
|
+
/** Business invariant was violated */
|
|
106
|
+
INVARIANT_VIOLATION: "INVARIANT_VIOLATION",
|
|
107
|
+
/** Aggregate was partially loaded (missing required relations) */
|
|
108
|
+
PARTIAL_LOAD: "PARTIAL_LOAD"
|
|
109
|
+
},
|
|
110
|
+
/**
|
|
111
|
+
* Application layer (use case) error codes.
|
|
112
|
+
* Used for orchestration failures and business operation errors.
|
|
113
|
+
*/
|
|
114
|
+
App: {
|
|
115
|
+
/** Generic use case error */
|
|
116
|
+
USE_CASE_ERROR: "USE_CASE_ERROR",
|
|
117
|
+
/** Requested resource was not found */
|
|
118
|
+
NOT_FOUND: "NOT_FOUND",
|
|
119
|
+
/** Resource state conflict (e.g., duplicate, already exists) */
|
|
120
|
+
CONFLICT: "CONFLICT",
|
|
121
|
+
/** Request is valid but cannot be processed due to business rules */
|
|
122
|
+
UNPROCESSABLE: "UNPROCESSABLE"
|
|
123
|
+
},
|
|
124
|
+
/**
|
|
125
|
+
* Infrastructure layer error codes.
|
|
126
|
+
* Used for data access, external services, and I/O failures.
|
|
127
|
+
*/
|
|
128
|
+
Infra: {
|
|
129
|
+
/** Generic infrastructure error */
|
|
130
|
+
INFRA_ERROR: "INFRA_ERROR",
|
|
131
|
+
/** Database operation failed */
|
|
132
|
+
DB_ERROR: "DB_ERROR",
|
|
133
|
+
/** Network connectivity or communication error */
|
|
134
|
+
NETWORK_ERROR: "NETWORK_ERROR",
|
|
135
|
+
/** Operation timed out */
|
|
136
|
+
TIMEOUT_ERROR: "TIMEOUT_ERROR",
|
|
137
|
+
/** External/third-party service error */
|
|
138
|
+
EXTERNAL_SERVICE_ERROR: "EXTERNAL_SERVICE_ERROR"
|
|
139
|
+
},
|
|
140
|
+
/**
|
|
141
|
+
* Presentation layer error codes.
|
|
142
|
+
* Used for controller, request handling, and authorization errors.
|
|
143
|
+
*/
|
|
144
|
+
Presentation: {
|
|
145
|
+
/** Generic controller error */
|
|
146
|
+
CONTROLLER_ERROR: "CONTROLLER_ERROR",
|
|
147
|
+
/** Request denied due to authorization failure */
|
|
148
|
+
ACCESS_DENIED: "ACCESS_DENIED",
|
|
149
|
+
/** Request validation failed (malformed input) */
|
|
150
|
+
INVALID_REQUEST: "INVALID_REQUEST"
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* Global/cross-cutting error codes.
|
|
154
|
+
* Used for validation and other cross-layer concerns.
|
|
155
|
+
*/
|
|
156
|
+
Global: {
|
|
157
|
+
/** Object/schema validation failed */
|
|
158
|
+
OBJECT_VALIDATION_ERROR: "OBJECT_VALIDATION_ERROR"
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
// src/backend/core/global/exceptions/object-validation.error.ts
|
|
163
|
+
var ObjectValidationError = class _ObjectValidationError extends CodedError {
|
|
164
|
+
/**
|
|
165
|
+
* Array of field-level validation errors.
|
|
166
|
+
*
|
|
167
|
+
* Each entry contains:
|
|
168
|
+
* - `field`: Dot-notation path to the invalid field (e.g., 'user.email')
|
|
169
|
+
* - `message`: Human-readable validation failure message
|
|
170
|
+
*/
|
|
171
|
+
validationErrors;
|
|
172
|
+
/**
|
|
173
|
+
* Creates a new ObjectValidationError instance.
|
|
174
|
+
*
|
|
175
|
+
* @param options - Error configuration
|
|
176
|
+
* @param options.message - Human-readable summary message
|
|
177
|
+
* @param options.code - Machine-readable error code (default: 'OBJECT_VALIDATION_ERROR')
|
|
178
|
+
* @param options.cause - Optional underlying error from validation library
|
|
179
|
+
* @param options.validationErrors - Array of field-level validation errors
|
|
180
|
+
*/
|
|
181
|
+
constructor({
|
|
182
|
+
message,
|
|
183
|
+
code = ErrorCodes.Global.OBJECT_VALIDATION_ERROR,
|
|
184
|
+
cause,
|
|
185
|
+
validationErrors
|
|
186
|
+
}) {
|
|
187
|
+
super({ message, code, cause });
|
|
188
|
+
this.validationErrors = validationErrors;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Creates an ObjectValidationError from a caught error.
|
|
192
|
+
*
|
|
193
|
+
* @param cause - The original caught error
|
|
194
|
+
* @returns A new ObjectValidationError instance with the cause attached
|
|
195
|
+
*/
|
|
196
|
+
static fromError(cause) {
|
|
197
|
+
return new _ObjectValidationError({
|
|
198
|
+
message: cause instanceof Error ? cause.message : "Validation failed",
|
|
199
|
+
cause,
|
|
200
|
+
validationErrors: []
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
// src/backend/core/validators/zod/object-validator.zod.ts
|
|
206
|
+
var formatPath = (path) => {
|
|
207
|
+
if (!path.length) return "root";
|
|
208
|
+
return path.map((segment, index) => {
|
|
209
|
+
if (typeof segment === "number") return `[${segment}]`;
|
|
210
|
+
if (typeof segment === "symbol") return segment.description ?? String(segment);
|
|
211
|
+
return index === 0 ? segment : `.${segment}`;
|
|
212
|
+
}).join("");
|
|
213
|
+
};
|
|
214
|
+
var toValidationErrors = (issues) => issues.map((issue) => ({
|
|
215
|
+
field: formatPath(issue?.path ?? []),
|
|
216
|
+
message: issue?.message ?? "Validation failed"
|
|
217
|
+
}));
|
|
218
|
+
var ZodObjectValidator = class {
|
|
219
|
+
validateObject(schema11, value) {
|
|
220
|
+
const result = schema11.safeParse(value);
|
|
221
|
+
if (result.success) {
|
|
222
|
+
return result.data;
|
|
223
|
+
}
|
|
224
|
+
throw new ObjectValidationError({
|
|
225
|
+
message: "Object validation failed",
|
|
226
|
+
cause: result.error,
|
|
227
|
+
validationErrors: toValidationErrors(result.error.issues)
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
withSchema(schema11) {
|
|
231
|
+
return {
|
|
232
|
+
validate: (value) => this.validateObject(schema11, value)
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
// src/backend/core/validators/zod/bootstrap.ts
|
|
238
|
+
var zodObjectValidator = new ZodObjectValidator();
|
|
239
|
+
var createZodValidator = (schema11) => zodObjectValidator.withSchema(schema11);
|
|
240
|
+
|
|
241
|
+
// src/backend/core/global/classes/base-dto.class.ts
|
|
242
|
+
var SKIP_DTO_VALIDATION = "skip dto validation";
|
|
243
|
+
var BaseDto = class {
|
|
244
|
+
_data;
|
|
245
|
+
/**
|
|
246
|
+
* Creates a new DTO instance.
|
|
247
|
+
*
|
|
248
|
+
* @param data - The raw data to validate and wrap
|
|
249
|
+
* @param validator - A bound validator or SKIP_DTO_VALIDATION to bypass
|
|
250
|
+
* @throws {ObjectValidationError} When validation fails
|
|
251
|
+
*/
|
|
252
|
+
constructor(data, validator) {
|
|
253
|
+
this._data = validator === SKIP_DTO_VALIDATION ? data : validator.validate(data);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* The validated data payload.
|
|
257
|
+
*
|
|
258
|
+
* @returns The validated data of type T
|
|
259
|
+
*/
|
|
260
|
+
get data() {
|
|
261
|
+
return this._data;
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
// src/backend/core/validators/zod/wrappers/dto.ts
|
|
266
|
+
var Dto = class extends BaseDto {
|
|
267
|
+
constructor(schema11, value) {
|
|
268
|
+
super(value, createZodValidator(schema11));
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
// src/backend/core/validators/zod/wrappers/value-objects/audit-by.vo.ts
|
|
273
|
+
var import_zod2 = require("zod");
|
|
274
|
+
|
|
275
|
+
// src/backend/core/onion-layers/domain/classes/base-value-object.class.ts
|
|
276
|
+
var SKIP_VALUE_OBJECT_VALIDATION = "skip value object validation";
|
|
277
|
+
function deepEquals(a, b) {
|
|
278
|
+
if (a === b) return true;
|
|
279
|
+
if (a === null || a === void 0 || b === null || b === void 0) {
|
|
280
|
+
return a === b;
|
|
281
|
+
}
|
|
282
|
+
if (a instanceof Date && b instanceof Date) {
|
|
283
|
+
return a.getTime() === b.getTime();
|
|
284
|
+
}
|
|
285
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
286
|
+
if (a.length !== b.length) return false;
|
|
287
|
+
return a.every((item, index) => deepEquals(item, b[index]));
|
|
288
|
+
}
|
|
289
|
+
if (typeof a === "object" && typeof b === "object") {
|
|
290
|
+
const aObj = a;
|
|
291
|
+
const bObj = b;
|
|
292
|
+
const aKeys = Object.keys(aObj);
|
|
293
|
+
const bKeys = Object.keys(bObj);
|
|
294
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
295
|
+
return aKeys.every((key) => deepEquals(aObj[key], bObj[key]));
|
|
296
|
+
}
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
var BaseValueObject = class {
|
|
300
|
+
_value;
|
|
301
|
+
/**
|
|
302
|
+
* Creates a new Value Object instance.
|
|
303
|
+
*
|
|
304
|
+
* @param value - The raw value to wrap
|
|
305
|
+
* @param validator - A bound validator or SKIP_VALUE_OBJECT_VALIDATION to bypass
|
|
306
|
+
* @throws {ObjectValidationError} When validation fails
|
|
307
|
+
*/
|
|
308
|
+
constructor(value, validator) {
|
|
309
|
+
this._value = validator === SKIP_VALUE_OBJECT_VALIDATION ? value : validator.validate(value);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Compares this Value Object with another for equality.
|
|
313
|
+
*
|
|
314
|
+
* Uses deep equality comparison to handle nested objects, arrays, and dates.
|
|
315
|
+
* Two Value Objects are equal if their underlying values are deeply equal.
|
|
316
|
+
*
|
|
317
|
+
* @param other - The Value Object to compare with
|
|
318
|
+
* @returns `true` if the values are deeply equal, `false` otherwise
|
|
319
|
+
*/
|
|
320
|
+
equals(other) {
|
|
321
|
+
if (this === other) return true;
|
|
322
|
+
return deepEquals(this.value, other.value);
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* The underlying immutable value.
|
|
326
|
+
*
|
|
327
|
+
* @returns The wrapped value of type T
|
|
328
|
+
*/
|
|
329
|
+
get value() {
|
|
330
|
+
return this._value;
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
|
|
334
|
+
// src/backend/core/onion-layers/domain/value-objects/base-audit-by.vo.ts
|
|
335
|
+
var BaseAuditByVo = class extends BaseValueObject {
|
|
336
|
+
/**
|
|
337
|
+
* Creates a new BaseAuditByVo instance.
|
|
338
|
+
*
|
|
339
|
+
* @param value - The user tracking values
|
|
340
|
+
* @param value.createdBy - User who created the entity (optional for system ops)
|
|
341
|
+
* @param value.updatedBy - User who last updated the entity (optional)
|
|
342
|
+
* @param validator - Bound validator or skip validation symbol
|
|
343
|
+
*/
|
|
344
|
+
constructor(value, validator) {
|
|
345
|
+
super(value, validator);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* The user ID who created the entity.
|
|
349
|
+
* Returns `undefined` for system-created entities.
|
|
350
|
+
*/
|
|
351
|
+
get createdBy() {
|
|
352
|
+
return this.value.createdBy;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* The user ID who last updated the entity.
|
|
356
|
+
* Returns `undefined` for system-updated entities.
|
|
357
|
+
*/
|
|
358
|
+
get updatedBy() {
|
|
359
|
+
return this.value.updatedBy;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
// src/backend/core/validators/zod/wrappers/value-objects/uuid-v4.vo.ts
|
|
364
|
+
var import_zod = require("zod");
|
|
365
|
+
|
|
366
|
+
// src/backend/core/onion-layers/domain/value-objects/base-uuid-v4.vo.ts
|
|
367
|
+
var import_uuid = require("uuid");
|
|
368
|
+
var BaseUuidV4Vo = class extends BaseValueObject {
|
|
369
|
+
/**
|
|
370
|
+
* Creates a new BaseUuidV4Vo instance.
|
|
371
|
+
*
|
|
372
|
+
* @param value - The UUID v4 string value
|
|
373
|
+
* @param validator - Bound validator or skip validation symbol
|
|
374
|
+
*/
|
|
375
|
+
constructor(value, validator) {
|
|
376
|
+
super(value, validator);
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Generates a new UUID v4 value object.
|
|
380
|
+
*
|
|
381
|
+
* Creates a random UUID, skipping validation since the
|
|
382
|
+
* `uuid` library guarantees format.
|
|
383
|
+
*
|
|
384
|
+
* @returns A new BaseUuidV4Vo with a freshly generated UUID
|
|
385
|
+
*/
|
|
386
|
+
static generate() {
|
|
387
|
+
return new this((0, import_uuid.v4)(), SKIP_VALUE_OBJECT_VALIDATION);
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Creates a UUID v4 value object from an existing string.
|
|
391
|
+
*
|
|
392
|
+
* **Important:** This base implementation skips validation and accepts
|
|
393
|
+
* any string value. Subclasses should override this method with a
|
|
394
|
+
* validator to ensure UUID format correctness.
|
|
395
|
+
*
|
|
396
|
+
* @param value - The UUID v4 string value (not validated at base level)
|
|
397
|
+
* @returns A new BaseUuidV4Vo with the provided value
|
|
398
|
+
*
|
|
399
|
+
* @example Subclass with validation (recommended)
|
|
400
|
+
* ```typescript
|
|
401
|
+
* class UserId extends BaseUuidV4Vo {
|
|
402
|
+
* static override create(value: string): UserId {
|
|
403
|
+
* return new UserId(value, uuidV4Validator);
|
|
404
|
+
* }
|
|
405
|
+
* }
|
|
406
|
+
* ```
|
|
407
|
+
*
|
|
408
|
+
* @see generate - For creating new UUIDs (always valid)
|
|
409
|
+
*/
|
|
410
|
+
static create(value) {
|
|
411
|
+
return new this(value, SKIP_VALUE_OBJECT_VALIDATION);
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
// src/backend/core/validators/zod/wrappers/value-objects/uuid-v4.vo.ts
|
|
416
|
+
var schema = import_zod.z.uuidv4();
|
|
417
|
+
var UuidV4Vo = class _UuidV4Vo extends BaseUuidV4Vo {
|
|
418
|
+
constructor(value) {
|
|
419
|
+
super(value, createZodValidator(schema));
|
|
420
|
+
}
|
|
421
|
+
static create(value) {
|
|
422
|
+
return new _UuidV4Vo(value);
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
// src/backend/core/validators/zod/wrappers/value-objects/audit-by.vo.ts
|
|
427
|
+
var schema2 = import_zod2.z.object({
|
|
428
|
+
createdBy: import_zod2.z.uuidv4().optional(),
|
|
429
|
+
updatedBy: import_zod2.z.uuidv4().optional()
|
|
430
|
+
});
|
|
431
|
+
var AuditByVo = class _AuditByVo extends BaseAuditByVo {
|
|
432
|
+
constructor(value) {
|
|
433
|
+
super(value, SKIP_VALUE_OBJECT_VALIDATION);
|
|
434
|
+
}
|
|
435
|
+
static create({ createdBy, updatedBy }) {
|
|
436
|
+
const validated = createZodValidator(schema2).validate({
|
|
437
|
+
createdBy,
|
|
438
|
+
updatedBy
|
|
439
|
+
});
|
|
440
|
+
return new _AuditByVo({
|
|
441
|
+
createdBy: validated.createdBy ? UuidV4Vo.create(validated.createdBy) : void 0,
|
|
442
|
+
updatedBy: validated.updatedBy ? UuidV4Vo.create(validated.updatedBy) : void 0
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
update(updatedBy) {
|
|
446
|
+
return new _AuditByVo({ createdBy: this.createdBy, updatedBy });
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
|
|
450
|
+
// src/backend/core/validators/zod/wrappers/value-objects/audit-info.vo.ts
|
|
451
|
+
var import_zod4 = require("zod");
|
|
452
|
+
|
|
453
|
+
// src/backend/core/onion-layers/domain/value-objects/base-audit-info.vo.ts
|
|
454
|
+
var BaseAuditInfoVo = class extends BaseValueObject {
|
|
455
|
+
/**
|
|
456
|
+
* Creates a new BaseAuditInfoVo instance.
|
|
457
|
+
*
|
|
458
|
+
* @param value - Composite value containing audit by and on VOs
|
|
459
|
+
* @param value.by - User tracking value object
|
|
460
|
+
* @param value.on - Timestamp tracking value object
|
|
461
|
+
* @param validator - Bound validator or skip validation symbol
|
|
462
|
+
*/
|
|
463
|
+
constructor(value, validator) {
|
|
464
|
+
super(value, validator);
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* The user ID who created the entity.
|
|
468
|
+
* Returns `undefined` for system-created entities.
|
|
469
|
+
*/
|
|
470
|
+
get createdBy() {
|
|
471
|
+
return this.value.by.createdBy;
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* The timestamp when the entity was created.
|
|
475
|
+
* Returns a cloned Date to prevent mutation.
|
|
476
|
+
*/
|
|
477
|
+
get createdAt() {
|
|
478
|
+
return new Date(this.value.on.createdAt.getTime());
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* The user ID who last updated the entity.
|
|
482
|
+
* Returns `undefined` for system-updated entities.
|
|
483
|
+
*/
|
|
484
|
+
get updatedBy() {
|
|
485
|
+
return this.value.by.updatedBy;
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* The timestamp when the entity was last updated.
|
|
489
|
+
* Returns a cloned Date to prevent mutation.
|
|
490
|
+
*/
|
|
491
|
+
get updatedAt() {
|
|
492
|
+
return new Date(this.value.on.updatedAt.getTime());
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Whether the entity has been modified since creation.
|
|
496
|
+
*
|
|
497
|
+
* Compares both timestamps and user IDs. Returns `true` if either:
|
|
498
|
+
* - The updatedAt timestamp differs from createdAt
|
|
499
|
+
* - The updatedBy user differs from createdBy
|
|
500
|
+
*
|
|
501
|
+
* Note: When both createdBy and updatedBy are undefined (system-created
|
|
502
|
+
* entities), this correctly returns false for the user comparison.
|
|
503
|
+
*/
|
|
504
|
+
get isModified() {
|
|
505
|
+
const timestampChanged = this.updatedAt.getTime() !== this.createdAt.getTime();
|
|
506
|
+
const userChanged = this.updatedBy?.value !== this.createdBy?.value;
|
|
507
|
+
return timestampChanged || userChanged;
|
|
508
|
+
}
|
|
509
|
+
/**
|
|
510
|
+
* Alias for `updatedBy` for semantic clarity.
|
|
511
|
+
*/
|
|
512
|
+
get lastModifiedBy() {
|
|
513
|
+
return this.updatedBy;
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Alias for `updatedAt` for semantic clarity.
|
|
517
|
+
*/
|
|
518
|
+
get lastModifiedAt() {
|
|
519
|
+
return this.updatedAt;
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
// src/backend/core/validators/zod/wrappers/value-objects/audit-on.vo.ts
|
|
524
|
+
var import_zod3 = require("zod");
|
|
525
|
+
|
|
526
|
+
// src/backend/core/onion-layers/domain/exceptions/domain.error.ts
|
|
527
|
+
var DomainError = class _DomainError extends CodedError {
|
|
528
|
+
/**
|
|
529
|
+
* Creates a new DomainError instance.
|
|
530
|
+
*
|
|
531
|
+
* @param options - Error configuration
|
|
532
|
+
* @param options.message - Human-readable error description
|
|
533
|
+
* @param options.code - Machine-readable error code (default: 'DOMAIN_ERROR')
|
|
534
|
+
* @param options.cause - Optional underlying error
|
|
535
|
+
*/
|
|
536
|
+
constructor({
|
|
537
|
+
message,
|
|
538
|
+
code = ErrorCodes.Domain.DOMAIN_ERROR,
|
|
539
|
+
cause
|
|
540
|
+
}) {
|
|
541
|
+
super({ message, code, cause });
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Creates a DomainError from a caught error.
|
|
545
|
+
*
|
|
546
|
+
* @param cause - The original caught error
|
|
547
|
+
* @returns A new DomainError instance with the cause attached
|
|
548
|
+
*/
|
|
549
|
+
static fromError(cause) {
|
|
550
|
+
return new _DomainError({
|
|
551
|
+
message: cause instanceof Error ? cause.message : "Domain error",
|
|
552
|
+
cause
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
};
|
|
556
|
+
|
|
557
|
+
// src/backend/core/onion-layers/domain/exceptions/invariant-violation.error.ts
|
|
558
|
+
var InvariantViolationError = class _InvariantViolationError extends DomainError {
|
|
559
|
+
/**
|
|
560
|
+
* Creates a new InvariantViolationError instance.
|
|
561
|
+
*
|
|
562
|
+
* @param options - Error configuration
|
|
563
|
+
* @param options.message - Description of the violated invariant
|
|
564
|
+
* @param options.code - Machine-readable error code (default: 'INVARIANT_VIOLATION')
|
|
565
|
+
* @param options.cause - Optional underlying error
|
|
566
|
+
*/
|
|
567
|
+
constructor({
|
|
568
|
+
message,
|
|
569
|
+
code = ErrorCodes.Domain.INVARIANT_VIOLATION,
|
|
570
|
+
cause
|
|
571
|
+
}) {
|
|
572
|
+
super({ message, code, cause });
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Creates an InvariantViolationError from a caught error.
|
|
576
|
+
*
|
|
577
|
+
* @param cause - The original caught error
|
|
578
|
+
* @returns A new InvariantViolationError instance with the cause attached
|
|
579
|
+
*/
|
|
580
|
+
static fromError(cause) {
|
|
581
|
+
return new _InvariantViolationError({
|
|
582
|
+
message: cause instanceof Error ? cause.message : "Invariant violation",
|
|
583
|
+
cause
|
|
584
|
+
});
|
|
585
|
+
}
|
|
586
|
+
};
|
|
587
|
+
|
|
588
|
+
// src/backend/core/onion-layers/domain/value-objects/base-audit-on.vo.ts
|
|
589
|
+
var BaseAuditOnVo = class extends BaseValueObject {
|
|
590
|
+
/**
|
|
591
|
+
* Creates a new BaseAuditOnVo instance.
|
|
592
|
+
*
|
|
593
|
+
* @param value - The timestamp values
|
|
594
|
+
* @param value.createdAt - When the entity was created
|
|
595
|
+
* @param value.updatedAt - When the entity was last updated
|
|
596
|
+
* @param validator - Bound validator or skip validation symbol
|
|
597
|
+
* @throws {InvariantViolationError} When `updatedAt < createdAt`
|
|
598
|
+
*/
|
|
599
|
+
constructor(value, validator) {
|
|
600
|
+
if (value.updatedAt < value.createdAt) {
|
|
601
|
+
throw new InvariantViolationError({
|
|
602
|
+
message: "UpdatedAt cannot be earlier than createdAt",
|
|
603
|
+
code: "INVALID_AUDIT_TIMESTAMPS"
|
|
604
|
+
});
|
|
605
|
+
}
|
|
606
|
+
super(value, validator);
|
|
607
|
+
}
|
|
608
|
+
/**
|
|
609
|
+
* When the entity was created.
|
|
610
|
+
* Returns a cloned Date to prevent mutation.
|
|
611
|
+
*/
|
|
612
|
+
get createdAt() {
|
|
613
|
+
return new Date(this.value.createdAt);
|
|
614
|
+
}
|
|
615
|
+
/**
|
|
616
|
+
* When the entity was last updated.
|
|
617
|
+
* Returns a cloned Date to prevent mutation.
|
|
618
|
+
*/
|
|
619
|
+
get updatedAt() {
|
|
620
|
+
return new Date(this.value.updatedAt);
|
|
621
|
+
}
|
|
622
|
+
};
|
|
623
|
+
|
|
624
|
+
// src/backend/core/validators/zod/wrappers/value-objects/audit-on.vo.ts
|
|
625
|
+
var schema3 = import_zod3.z.object({
|
|
626
|
+
createdAt: import_zod3.z.date().optional(),
|
|
627
|
+
updatedAt: import_zod3.z.date().optional()
|
|
628
|
+
});
|
|
629
|
+
var AuditOnVo = class _AuditOnVo extends BaseAuditOnVo {
|
|
630
|
+
constructor(value) {
|
|
631
|
+
super(value, SKIP_VALUE_OBJECT_VALIDATION);
|
|
632
|
+
}
|
|
633
|
+
static create({ createdAt, updatedAt }) {
|
|
634
|
+
const validated = createZodValidator(schema3).validate({
|
|
635
|
+
createdAt,
|
|
636
|
+
updatedAt
|
|
637
|
+
});
|
|
638
|
+
const finalCreatedAt = validated.createdAt ?? /* @__PURE__ */ new Date();
|
|
639
|
+
const finalUpdatedAt = validated.updatedAt ?? finalCreatedAt;
|
|
640
|
+
return new _AuditOnVo({
|
|
641
|
+
createdAt: new Date(finalCreatedAt),
|
|
642
|
+
updatedAt: new Date(finalUpdatedAt)
|
|
643
|
+
});
|
|
644
|
+
}
|
|
645
|
+
update() {
|
|
646
|
+
return new _AuditOnVo({ createdAt: this.createdAt, updatedAt: /* @__PURE__ */ new Date() });
|
|
647
|
+
}
|
|
648
|
+
};
|
|
649
|
+
|
|
650
|
+
// src/backend/core/validators/zod/wrappers/value-objects/audit-info.vo.ts
|
|
651
|
+
var schema4 = import_zod4.z.object({
|
|
652
|
+
createdBy: import_zod4.z.uuidv4().optional(),
|
|
653
|
+
createdAt: import_zod4.z.date().optional(),
|
|
654
|
+
updatedBy: import_zod4.z.uuidv4().optional(),
|
|
655
|
+
updatedAt: import_zod4.z.date().optional()
|
|
656
|
+
});
|
|
657
|
+
var AuditInfoVo = class _AuditInfoVo extends BaseAuditInfoVo {
|
|
658
|
+
constructor(value) {
|
|
659
|
+
super(value, SKIP_VALUE_OBJECT_VALIDATION);
|
|
660
|
+
}
|
|
661
|
+
static create({
|
|
662
|
+
createdBy,
|
|
663
|
+
createdAt,
|
|
664
|
+
updatedBy,
|
|
665
|
+
updatedAt
|
|
666
|
+
}) {
|
|
667
|
+
const validated = createZodValidator(schema4).validate({
|
|
668
|
+
createdBy,
|
|
669
|
+
createdAt,
|
|
670
|
+
updatedBy,
|
|
671
|
+
updatedAt
|
|
672
|
+
});
|
|
673
|
+
const by = AuditByVo.create({
|
|
674
|
+
createdBy: validated.createdBy,
|
|
675
|
+
updatedBy: validated.updatedBy
|
|
676
|
+
});
|
|
677
|
+
const on = AuditOnVo.create({
|
|
678
|
+
createdAt: validated.createdAt,
|
|
679
|
+
updatedAt: validated.updatedAt
|
|
680
|
+
});
|
|
681
|
+
return new _AuditInfoVo({ by, on });
|
|
682
|
+
}
|
|
683
|
+
static createNew(createdBy) {
|
|
684
|
+
const by = AuditByVo.create({ createdBy });
|
|
685
|
+
const on = AuditOnVo.create({});
|
|
686
|
+
return new _AuditInfoVo({ by, on });
|
|
687
|
+
}
|
|
688
|
+
update(updatedBy) {
|
|
689
|
+
const by = this.value.by.update(updatedBy);
|
|
690
|
+
const on = this.value.on.update();
|
|
691
|
+
return new _AuditInfoVo({ by, on });
|
|
692
|
+
}
|
|
693
|
+
};
|
|
694
|
+
|
|
695
|
+
// src/backend/core/validators/zod/wrappers/value-objects/email.vo.ts
|
|
696
|
+
var import_zod5 = require("zod");
|
|
697
|
+
|
|
698
|
+
// src/backend/core/onion-layers/domain/value-objects/base-email.vo.ts
|
|
699
|
+
var BaseEmailVo = class extends BaseValueObject {
|
|
700
|
+
/**
|
|
701
|
+
* Creates a new BaseEmailVo instance.
|
|
702
|
+
*
|
|
703
|
+
* @param value - The email address string
|
|
704
|
+
* @param validator - Bound validator or skip validation symbol
|
|
705
|
+
*/
|
|
706
|
+
constructor(value, validator) {
|
|
707
|
+
super(value, validator);
|
|
708
|
+
}
|
|
709
|
+
};
|
|
710
|
+
|
|
711
|
+
// src/backend/core/validators/zod/wrappers/value-objects/email.vo.ts
|
|
712
|
+
var schema5 = import_zod5.z.string().email();
|
|
713
|
+
var EmailVo = class _EmailVo extends BaseEmailVo {
|
|
714
|
+
constructor(value) {
|
|
715
|
+
super(value, createZodValidator(schema5));
|
|
716
|
+
}
|
|
717
|
+
static create(value) {
|
|
718
|
+
return new _EmailVo(value);
|
|
719
|
+
}
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
// src/backend/core/validators/zod/wrappers/value-objects/long-text.vo.ts
|
|
723
|
+
var import_zod6 = require("zod");
|
|
724
|
+
|
|
725
|
+
// src/backend/core/onion-layers/domain/value-objects/base-long-text.vo.ts
|
|
726
|
+
var BaseLongTextVo = class extends BaseValueObject {
|
|
727
|
+
/**
|
|
728
|
+
* Creates a new BaseLongTextVo instance.
|
|
729
|
+
*
|
|
730
|
+
* @param value - The long text string
|
|
731
|
+
* @param validator - Bound validator or skip validation symbol
|
|
732
|
+
*/
|
|
733
|
+
constructor(value, validator) {
|
|
734
|
+
super(value, validator);
|
|
735
|
+
}
|
|
736
|
+
};
|
|
737
|
+
|
|
738
|
+
// src/backend/core/validators/zod/wrappers/value-objects/long-text.vo.ts
|
|
739
|
+
var schema6 = (maxLength) => import_zod6.z.string().min(1).max(maxLength);
|
|
740
|
+
var LongTextVo = class _LongTextVo extends BaseLongTextVo {
|
|
741
|
+
constructor(value, maxLength = 2e3) {
|
|
742
|
+
super(value, createZodValidator(schema6(maxLength)));
|
|
743
|
+
}
|
|
744
|
+
static create(value, maxLength = 2e3) {
|
|
745
|
+
return new _LongTextVo(value, maxLength);
|
|
746
|
+
}
|
|
747
|
+
};
|
|
748
|
+
|
|
749
|
+
// src/backend/core/validators/zod/wrappers/value-objects/medium-text.vo.ts
|
|
750
|
+
var import_zod7 = require("zod");
|
|
751
|
+
|
|
752
|
+
// src/backend/core/onion-layers/domain/value-objects/base-medium-text.vo.ts
|
|
753
|
+
var BaseMediumTextVo = class extends BaseValueObject {
|
|
754
|
+
/**
|
|
755
|
+
* Creates a new BaseMediumTextVo instance.
|
|
756
|
+
*
|
|
757
|
+
* @param value - The medium text string
|
|
758
|
+
* @param validator - Bound validator or skip validation symbol
|
|
759
|
+
*/
|
|
760
|
+
constructor(value, validator) {
|
|
761
|
+
super(value, validator);
|
|
762
|
+
}
|
|
763
|
+
};
|
|
764
|
+
|
|
765
|
+
// src/backend/core/validators/zod/wrappers/value-objects/medium-text.vo.ts
|
|
766
|
+
var schema7 = (maxLength) => import_zod7.z.string().min(1).max(maxLength);
|
|
767
|
+
var MediumTextVo = class _MediumTextVo extends BaseMediumTextVo {
|
|
768
|
+
constructor(value, maxLength = 500) {
|
|
769
|
+
super(value, createZodValidator(schema7(maxLength)));
|
|
770
|
+
}
|
|
771
|
+
static create(value, maxLength = 500) {
|
|
772
|
+
return new _MediumTextVo(value, maxLength);
|
|
773
|
+
}
|
|
774
|
+
};
|
|
775
|
+
|
|
776
|
+
// src/backend/core/validators/zod/wrappers/value-objects/pagination.vo.ts
|
|
777
|
+
var import_zod8 = require("zod");
|
|
778
|
+
|
|
779
|
+
// src/backend/core/onion-layers/domain/value-objects/base-pagination.vo.ts
|
|
780
|
+
var BasePaginationVo = class extends BaseValueObject {
|
|
781
|
+
/**
|
|
782
|
+
* Creates a new BasePaginationVo instance.
|
|
783
|
+
*
|
|
784
|
+
* @param value - The pagination parameters
|
|
785
|
+
* @param value.page - The page number (typically 1-indexed)
|
|
786
|
+
* @param value.pageSize - The number of items per page
|
|
787
|
+
* @param validator - Bound validator or skip validation symbol
|
|
788
|
+
*/
|
|
789
|
+
constructor(value, validator) {
|
|
790
|
+
super(value, validator);
|
|
791
|
+
}
|
|
792
|
+
/**
|
|
793
|
+
* The current page number.
|
|
794
|
+
*/
|
|
795
|
+
get page() {
|
|
796
|
+
return this.value.page;
|
|
797
|
+
}
|
|
798
|
+
/**
|
|
799
|
+
* The number of items per page.
|
|
800
|
+
*/
|
|
801
|
+
get pageSize() {
|
|
802
|
+
return this.value.pageSize;
|
|
803
|
+
}
|
|
804
|
+
};
|
|
805
|
+
|
|
806
|
+
// src/backend/core/validators/zod/wrappers/value-objects/pagination.vo.ts
|
|
807
|
+
var schema8 = (maxPageSize) => import_zod8.z.object({
|
|
808
|
+
page: import_zod8.z.coerce.number().int().min(1),
|
|
809
|
+
pageSize: import_zod8.z.coerce.number().int().min(1).max(maxPageSize)
|
|
810
|
+
});
|
|
811
|
+
var PaginationVo = class _PaginationVo extends BasePaginationVo {
|
|
812
|
+
constructor(value) {
|
|
813
|
+
super(value, SKIP_VALUE_OBJECT_VALIDATION);
|
|
814
|
+
}
|
|
815
|
+
static create({
|
|
816
|
+
page,
|
|
817
|
+
pageSize,
|
|
818
|
+
maxPageSize = 100
|
|
819
|
+
}) {
|
|
820
|
+
const validated = createZodValidator(schema8(maxPageSize)).validate({
|
|
821
|
+
page,
|
|
822
|
+
pageSize
|
|
823
|
+
});
|
|
824
|
+
return new _PaginationVo(validated);
|
|
825
|
+
}
|
|
826
|
+
};
|
|
827
|
+
|
|
828
|
+
// src/backend/core/validators/zod/wrappers/value-objects/short-text.vo.ts
|
|
829
|
+
var import_zod9 = require("zod");
|
|
830
|
+
|
|
831
|
+
// src/backend/core/onion-layers/domain/value-objects/base-short-text.vo.ts
|
|
832
|
+
var BaseShortTextVo = class extends BaseValueObject {
|
|
833
|
+
/**
|
|
834
|
+
* Creates a new BaseShortTextVo instance.
|
|
835
|
+
*
|
|
836
|
+
* @param value - The short text string
|
|
837
|
+
* @param validator - Bound validator or skip validation symbol
|
|
838
|
+
*/
|
|
839
|
+
constructor(value, validator) {
|
|
840
|
+
super(value, validator);
|
|
841
|
+
}
|
|
842
|
+
};
|
|
843
|
+
|
|
844
|
+
// src/backend/core/validators/zod/wrappers/value-objects/short-text.vo.ts
|
|
845
|
+
var schema9 = (maxLength) => import_zod9.z.string().min(1).max(maxLength);
|
|
846
|
+
var ShortTextVo = class _ShortTextVo extends BaseShortTextVo {
|
|
847
|
+
constructor(value, maxLength = 100) {
|
|
848
|
+
super(value, createZodValidator(schema9(maxLength)));
|
|
849
|
+
}
|
|
850
|
+
static create(value, maxLength = 100) {
|
|
851
|
+
return new _ShortTextVo(value, maxLength);
|
|
852
|
+
}
|
|
853
|
+
};
|
|
854
|
+
|
|
855
|
+
// src/backend/core/validators/zod/wrappers/value-objects/uuid-v7.vo.ts
|
|
856
|
+
var import_zod10 = require("zod");
|
|
857
|
+
|
|
858
|
+
// src/backend/core/onion-layers/domain/value-objects/base-uuid-v7.vo.ts
|
|
859
|
+
var import_uuid2 = require("uuid");
|
|
860
|
+
var BaseUuidV7Vo = class extends BaseValueObject {
|
|
861
|
+
/**
|
|
862
|
+
* Creates a new BaseUuidV7Vo instance.
|
|
863
|
+
*
|
|
864
|
+
* @param value - The UUID v7 string value
|
|
865
|
+
* @param validator - Bound validator or skip validation symbol
|
|
866
|
+
*/
|
|
867
|
+
constructor(value, validator) {
|
|
868
|
+
super(value, validator);
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* Generates a new UUID v7 value object.
|
|
872
|
+
*
|
|
873
|
+
* Creates a time-ordered UUID using the current timestamp,
|
|
874
|
+
* skipping validation since the `uuid` library guarantees format.
|
|
875
|
+
*
|
|
876
|
+
* @returns A new BaseUuidV7Vo with a freshly generated UUID
|
|
877
|
+
*/
|
|
878
|
+
static generate() {
|
|
879
|
+
return new this((0, import_uuid2.v7)(), SKIP_VALUE_OBJECT_VALIDATION);
|
|
880
|
+
}
|
|
881
|
+
/**
|
|
882
|
+
* Creates a UUID v7 value object from an existing string.
|
|
883
|
+
*
|
|
884
|
+
* **Important:** This base implementation skips validation and accepts
|
|
885
|
+
* any string value. Subclasses should override this method with a
|
|
886
|
+
* validator to ensure UUID format correctness.
|
|
887
|
+
*
|
|
888
|
+
* @param value - The UUID v7 string value (not validated at base level)
|
|
889
|
+
* @returns A new BaseUuidV7Vo with the provided value
|
|
890
|
+
*
|
|
891
|
+
* @example Subclass with validation (recommended)
|
|
892
|
+
* ```typescript
|
|
893
|
+
* class OrderId extends BaseUuidV7Vo {
|
|
894
|
+
* static override create(value: string): OrderId {
|
|
895
|
+
* return new OrderId(value, uuidV7Validator);
|
|
896
|
+
* }
|
|
897
|
+
* }
|
|
898
|
+
* ```
|
|
899
|
+
*
|
|
900
|
+
* @see generate - For creating new UUIDs (always valid)
|
|
901
|
+
*/
|
|
902
|
+
static create(value) {
|
|
903
|
+
return new this(value, SKIP_VALUE_OBJECT_VALIDATION);
|
|
904
|
+
}
|
|
905
|
+
};
|
|
906
|
+
|
|
907
|
+
// src/backend/core/validators/zod/wrappers/value-objects/uuid-v7.vo.ts
|
|
908
|
+
var schema10 = import_zod10.z.uuidv7();
|
|
909
|
+
var UuidV7Vo = class _UuidV7Vo extends BaseUuidV7Vo {
|
|
910
|
+
constructor(value) {
|
|
911
|
+
super(value, createZodValidator(schema10));
|
|
912
|
+
}
|
|
913
|
+
static create(value) {
|
|
914
|
+
return new _UuidV7Vo(value);
|
|
915
|
+
}
|
|
916
|
+
};
|
|
917
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
918
|
+
0 && (module.exports = {
|
|
919
|
+
AuditByVo,
|
|
920
|
+
AuditInfoVo,
|
|
921
|
+
AuditOnVo,
|
|
922
|
+
Dto,
|
|
923
|
+
EmailVo,
|
|
924
|
+
LongTextVo,
|
|
925
|
+
MediumTextVo,
|
|
926
|
+
PaginationVo,
|
|
927
|
+
ShortTextVo,
|
|
928
|
+
UuidV4Vo,
|
|
929
|
+
UuidV7Vo,
|
|
930
|
+
ZodObjectValidator,
|
|
931
|
+
createZodValidator,
|
|
932
|
+
zodObjectValidator
|
|
933
|
+
});
|
|
934
|
+
//# sourceMappingURL=zod.cjs.map
|