- ✅ 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
56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
"use strict";
|
|
|
|
const parsers = require("../parsers");
|
|
|
|
const { AST_TYPES } = parsers;
|
|
|
|
const getPropertyDescriptor = (property) => ({
|
|
set(v) {
|
|
const value = parsers.prepareValue(v);
|
|
if (parsers.hasVarFunc(value)) {
|
|
this._setProperty(property, value);
|
|
} else {
|
|
const parsedValue = parsers.parsePropertyValue(property, v, {
|
|
globalObject: this._global,
|
|
inArray: true
|
|
});
|
|
if (Array.isArray(parsedValue)) {
|
|
if (parsedValue.length === 1) {
|
|
const [{ name, type, value: itemValue }] = parsedValue;
|
|
switch (type) {
|
|
case AST_TYPES.CALC: {
|
|
this._setProperty(property, `${name}(${itemValue})`);
|
|
break;
|
|
}
|
|
case AST_TYPES.GLOBAL_KEYWORD:
|
|
case AST_TYPES.IDENTIFIER: {
|
|
// Set the normalized name for keywords or identifiers.
|
|
this._setProperty(property, name);
|
|
break;
|
|
}
|
|
default: {
|
|
// Set the prepared value for Dimension, Function, etc.
|
|
this._setProperty(property, value);
|
|
}
|
|
}
|
|
} else {
|
|
// Set the prepared value for lists containing multiple values.
|
|
this._setProperty(property, value);
|
|
}
|
|
} else if (typeof parsedValue === "string") {
|
|
// Empty string.
|
|
this._setProperty(property, parsedValue);
|
|
}
|
|
}
|
|
},
|
|
get() {
|
|
return this.getPropertyValue(property);
|
|
},
|
|
enumerable: true,
|
|
configurable: true
|
|
});
|
|
|
|
module.exports = {
|
|
getPropertyDescriptor
|
|
};
|