- ✅ 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
58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
/**
|
|
* @typedef {import('micromark-util-types').CompileContext} CompileContext
|
|
* @typedef {import('micromark-util-types').Handle} Handle
|
|
* @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension
|
|
* @typedef {import('micromark-util-types').TokenType} TokenType
|
|
* @typedef {import('./to-matters.js').Options} Options
|
|
*/
|
|
|
|
import {toMatters} from './to-matters.js'
|
|
|
|
/**
|
|
* Create an extension for `micromark` to support frontmatter when serializing
|
|
* to HTML.
|
|
*
|
|
* > 👉 **Note**: this makes sure nothing is generated in the output HTML for
|
|
* > frontmatter.
|
|
*
|
|
* @param {Options | null | undefined} [options='yaml']
|
|
* Configuration (default: `'yaml'`).
|
|
* @returns {HtmlExtension}
|
|
* Extension for `micromark` that can be passed in `htmlExtensions`, to
|
|
* support frontmatter when serializing to HTML.
|
|
*/
|
|
export function frontmatterHtml(options) {
|
|
const matters = toMatters(options)
|
|
/** @type {HtmlExtension['enter']} */
|
|
const enter = {}
|
|
/** @type {HtmlExtension['exit']} */
|
|
const exit = {}
|
|
let index = -1
|
|
while (++index < matters.length) {
|
|
const type = /** @type {TokenType} */ matters[index].type
|
|
enter[type] = start
|
|
exit[type] = end
|
|
}
|
|
return {
|
|
enter,
|
|
exit
|
|
}
|
|
|
|
/**
|
|
* @this {CompileContext}
|
|
* @type {Handle}
|
|
*/
|
|
function start() {
|
|
this.buffer()
|
|
}
|
|
|
|
/**
|
|
* @this {CompileContext}
|
|
* @type {Handle}
|
|
*/
|
|
function end() {
|
|
this.resume()
|
|
this.setData('slurpOneLineEnding', true)
|
|
}
|
|
}
|