Urara-Blog/node_modules/.pnpm-store/v3/files/eb/60817c691619c3b1b65163cc330997231415313d7cf86a6a1a4c4d40b7629bf8ec737aebb58a4eef663b51429b653aeca7142a41c445169004dea3f5521ab8
2022-08-14 01:14:53 +08:00

39 lines
940 B
Text

/**
* @typedef {import('./types.js').Options} Options
* @typedef {import('./types.js').Context} Context
*/
/**
* @param {Context} base
* @param {Options} extension
* @returns {Context}
*/
export function configure(base, extension) {
let index = -1
/** @type {string} */
let key
// First do subextensions.
if (extension.extensions) {
while (++index < extension.extensions.length) {
configure(base, extension.extensions[index])
}
}
for (key in extension) {
if (key === 'extensions') {
// Empty.
} else if (key === 'unsafe' || key === 'join') {
/* c8 ignore next 2 */
// @ts-expect-error: hush.
base[key] = [...(base[key] || []), ...(extension[key] || [])]
} else if (key === 'handlers') {
base[key] = Object.assign(base[key], extension[key] || {})
} else {
// @ts-expect-error: hush.
base.options[key] = extension[key]
}
}
return base
}