- ✅ Ticket 1.1: Estructura Clean Architecture en backend - ✅ Ticket 1.2: Schemas Zod compartidos - ✅ Ticket 1.3: Refactorización drugs.ts (1362 → 8 archivos modulares) - ✅ Ticket 1.4: Refactorización procedures.ts (3583 → 6 archivos modulares) - ✅ Ticket 1.5: Eliminación de duplicidades (~50 líneas) Cambios principales: - Creada estructura Clean Architecture en backend/src/ - Schemas Zod compartidos en backend/src/shared/schemas/ - Refactorización modular de drugs y procedures - Utilidades genéricas en src/utils/ (filter, validation) - Eliminados scripts obsoletos y documentación antigua - Corregidos errores: QueryClient, import test-error-handling - Build verificado y funcionando correctamente
53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
/*
|
|
* Displays a helpful message and the source of
|
|
* the format when it is invalid.
|
|
*/
|
|
class InvalidFormatError extends Error {
|
|
constructor(formatFn) {
|
|
super(`Format functions must be synchronous taking a two arguments: (info, opts)
|
|
Found: ${formatFn.toString().split('\n')[0]}\n`);
|
|
|
|
Error.captureStackTrace(this, InvalidFormatError);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* function format (formatFn)
|
|
* Returns a create function for the `formatFn`.
|
|
*/
|
|
module.exports = formatFn => {
|
|
if (formatFn.length > 2) {
|
|
throw new InvalidFormatError(formatFn);
|
|
}
|
|
|
|
/*
|
|
* function Format (options)
|
|
* Base prototype which calls a `_format`
|
|
* function and pushes the result.
|
|
*/
|
|
function Format(options = {}) {
|
|
this.options = options;
|
|
}
|
|
|
|
Format.prototype.transform = formatFn;
|
|
|
|
//
|
|
// Create a function which returns new instances of
|
|
// FormatWrap for simple syntax like:
|
|
//
|
|
// require('winston').formats.json();
|
|
//
|
|
function createFormatWrap(opts) {
|
|
return new Format(opts);
|
|
}
|
|
|
|
//
|
|
// Expose the FormatWrap through the create function
|
|
// for testability.
|
|
//
|
|
createFormatWrap.Format = Format;
|
|
return createFormatWrap;
|
|
};
|