codigo0/node_modules/trim-lines/index.js
planetazuzu 5d7a6500fe refactor: Fase 1 - Clean Architecture, refactorización modular y eliminación de duplicidades
-  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
2026-01-25 21:09:47 +01:00

70 lines
1.5 KiB
JavaScript

const tab = 9 /* `\t` */
const space = 32 /* ` ` */
/**
* Remove initial and final spaces and tabs at the line breaks in `value`.
* Does not trim initial and final spaces and tabs of the value itself.
*
* @param {string} value
* Value to trim.
* @returns {string}
* Trimmed value.
*/
export function trimLines(value) {
const source = String(value)
const search = /\r?\n|\r/g
let match = search.exec(source)
let last = 0
/** @type {Array<string>} */
const lines = []
while (match) {
lines.push(
trimLine(source.slice(last, match.index), last > 0, true),
match[0]
)
last = match.index + match[0].length
match = search.exec(source)
}
lines.push(trimLine(source.slice(last), last > 0, false))
return lines.join('')
}
/**
* @param {string} value
* Line to trim.
* @param {boolean} start
* Whether to trim the start of the line.
* @param {boolean} end
* Whether to trim the end of the line.
* @returns {string}
* Trimmed line.
*/
function trimLine(value, start, end) {
let startIndex = 0
let endIndex = value.length
if (start) {
let code = value.codePointAt(startIndex)
while (code === tab || code === space) {
startIndex++
code = value.codePointAt(startIndex)
}
}
if (end) {
let code = value.codePointAt(endIndex - 1)
while (code === tab || code === space) {
endIndex--
code = value.codePointAt(endIndex - 1)
}
}
return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''
}