- ✅ 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
51 lines
1.2 KiB
JavaScript
51 lines
1.2 KiB
JavaScript
/**
|
||
* @import {Parents, RootContent} from 'hast'
|
||
*/
|
||
|
||
import {whitespace} from 'hast-util-whitespace'
|
||
|
||
export const siblingAfter = siblings(1)
|
||
export const siblingBefore = siblings(-1)
|
||
|
||
/** @type {Array<RootContent>} */
|
||
const emptyChildren = []
|
||
|
||
/**
|
||
* Factory to check siblings in a direction.
|
||
*
|
||
* @param {number} increment
|
||
*/
|
||
function siblings(increment) {
|
||
return sibling
|
||
|
||
/**
|
||
* Find applicable siblings in a direction.
|
||
*
|
||
* @template {Parents} Parent
|
||
* Parent type.
|
||
* @param {Parent | undefined} parent
|
||
* Parent.
|
||
* @param {number | undefined} index
|
||
* Index of child in `parent`.
|
||
* @param {boolean | undefined} [includeWhitespace=false]
|
||
* Whether to include whitespace (default: `false`).
|
||
* @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}
|
||
* Child of parent.
|
||
*/
|
||
function sibling(parent, index, includeWhitespace) {
|
||
const siblings = parent ? parent.children : emptyChildren
|
||
let offset = (index || 0) + increment
|
||
let next = siblings[offset]
|
||
|
||
if (!includeWhitespace) {
|
||
while (next && whitespace(next)) {
|
||
offset += increment
|
||
next = siblings[offset]
|
||
}
|
||
}
|
||
|
||
// @ts-expect-error: it’s a correct child.
|
||
return next
|
||
}
|
||
}
|