- ✅ 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
35 lines
885 B
JavaScript
35 lines
885 B
JavaScript
/**
|
|
* @typedef {import('hast').Nodes} Nodes
|
|
*/
|
|
|
|
// HTML whitespace expression.
|
|
// See <https://infra.spec.whatwg.org/#ascii-whitespace>.
|
|
const re = /[ \t\n\f\r]/g
|
|
|
|
/**
|
|
* Check if the given value is *inter-element whitespace*.
|
|
*
|
|
* @param {Nodes | string} thing
|
|
* Thing to check (`Node` or `string`).
|
|
* @returns {boolean}
|
|
* Whether the `value` is inter-element whitespace (`boolean`): consisting of
|
|
* zero or more of space, tab (`\t`), line feed (`\n`), carriage return
|
|
* (`\r`), or form feed (`\f`); if a node is passed it must be a `Text` node,
|
|
* whose `value` field is checked.
|
|
*/
|
|
export function whitespace(thing) {
|
|
return typeof thing === 'object'
|
|
? thing.type === 'text'
|
|
? empty(thing.value)
|
|
: false
|
|
: empty(thing)
|
|
}
|
|
|
|
/**
|
|
* @param {string} value
|
|
* @returns {boolean}
|
|
*/
|
|
function empty(value) {
|
|
return value.replace(re, '') === ''
|
|
}
|