codigo0/node_modules/vfile/lib/minurl.browser.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

77 lines
1.8 KiB
JavaScript

import {isUrl} from './minurl.shared.js'
export {isUrl} from './minurl.shared.js'
// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>
/**
* @param {URL | string} path
* File URL.
* @returns {string}
* File URL.
*/
export function urlToPath(path) {
if (typeof path === 'string') {
path = new URL(path)
} else if (!isUrl(path)) {
/** @type {NodeJS.ErrnoException} */
const error = new TypeError(
'The "path" argument must be of type string or an instance of URL. Received `' +
path +
'`'
)
error.code = 'ERR_INVALID_ARG_TYPE'
throw error
}
if (path.protocol !== 'file:') {
/** @type {NodeJS.ErrnoException} */
const error = new TypeError('The URL must be of scheme file')
error.code = 'ERR_INVALID_URL_SCHEME'
throw error
}
return getPathFromURLPosix(path)
}
/**
* Get a path from a POSIX URL.
*
* @param {URL} url
* URL.
* @returns {string}
* File path.
*/
function getPathFromURLPosix(url) {
if (url.hostname !== '') {
/** @type {NodeJS.ErrnoException} */
const error = new TypeError(
'File URL host must be "localhost" or empty on darwin'
)
error.code = 'ERR_INVALID_FILE_URL_HOST'
throw error
}
const pathname = url.pathname
let index = -1
while (++index < pathname.length) {
if (
pathname.codePointAt(index) === 37 /* `%` */ &&
pathname.codePointAt(index + 1) === 50 /* `2` */
) {
const third = pathname.codePointAt(index + 2)
if (third === 70 /* `F` */ || third === 102 /* `f` */) {
/** @type {NodeJS.ErrnoException} */
const error = new TypeError(
'File URL path must not include encoded / characters'
)
error.code = 'ERR_INVALID_FILE_URL_PATH'
throw error
}
}
}
return decodeURIComponent(pathname)
}