request-log-starter
Version:
Request logging middleware for Nuxt 3 applications
106 lines (101 loc) • 3.29 kB
JavaScript
import { defineNuxtModule, createResolver, addServerHandler } from '@nuxt/kit';
// src/module.ts
// ../../node_modules/defu/dist/defu.mjs
function isPlainObject(value) {
if (value === null || typeof value !== "object") {
return false;
}
const prototype = Object.getPrototypeOf(value);
if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {
return false;
}
if (Symbol.iterator in value) {
return false;
}
if (Symbol.toStringTag in value) {
return Object.prototype.toString.call(value) === "[object Module]";
}
return true;
}
function _defu(baseObject, defaults, namespace = ".", merger) {
if (!isPlainObject(defaults)) {
return _defu(baseObject, {}, namespace, merger);
}
const object = Object.assign({}, defaults);
for (const key in baseObject) {
if (key === "__proto__" || key === "constructor") {
continue;
}
const value = baseObject[key];
if (value === null || value === void 0) {
continue;
}
if (merger && merger(object, key, value, namespace)) {
continue;
}
if (Array.isArray(value) && Array.isArray(object[key])) {
object[key] = [...value, ...object[key]];
} else if (isPlainObject(value) && isPlainObject(object[key])) {
object[key] = _defu(
value,
object[key],
(namespace ? `${namespace}.` : "") + key.toString(),
merger
);
} else {
object[key] = value;
}
}
return object;
}
function createDefu(merger) {
return (...arguments_) => (
// eslint-disable-next-line unicorn/no-array-reduce
arguments_.reduce((p, c) => _defu(p, c, "", merger), {})
);
}
var defu = createDefu();
// src/module.ts
var module_default = defineNuxtModule({
meta: {
name: "request-log-starter",
configKey: "requestLog",
compatibility: {
nuxt: "^3.0.0"
}
},
defaults: {
enabled: true,
logBody: false,
logHeaders: false,
format: "json",
maskHeaders: ["authorization", "cookie"]
},
setup(options, nuxt) {
const resolver = createResolver(import.meta.url);
nuxt.options.runtimeConfig.public.requestLog = defu(nuxt.options.runtimeConfig.public.requestLog || {}, options);
addServerHandler({
handler: resolver.resolve("./runtime/middleware"),
middleware: true
});
nuxt.hook("nitro:config", (nitroConfig) => {
nitroConfig.externals = nitroConfig.externals || {};
nitroConfig.externals.inline = nitroConfig.externals.inline || [];
nitroConfig.externals.inline.push(resolver.resolve("./runtime"));
nitroConfig.runtimeConfig = nitroConfig.runtimeConfig || { app: {} };
nitroConfig.runtimeConfig.app = nitroConfig.runtimeConfig.app || {};
nitroConfig.runtimeConfig.app.requestLog = options;
});
nuxt.hooks.hook("nitro:init", (nitro) => {
nitro.options.handlers = nitro.options.handlers || [];
nitro.options.devHandlers = nitro.options.devHandlers || [];
nitro.options.appConfig = nitro.options.appConfig || {};
nitro.options.appConfig.requestLog = options;
});
}
});
// src/index.ts
var index_default = module_default;
export { index_default as default };
//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map