codigo0/node_modules/micromark-extension-frontmatter/lib/html.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

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)
}
}