evlog 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/_http-DVDwNag0.mjs +76 -0
- package/dist/_http-DVDwNag0.mjs.map +1 -0
- package/dist/_severity-CXfyvxQi.mjs +17 -0
- package/dist/_severity-CXfyvxQi.mjs.map +1 -0
- package/dist/adapters/axiom.d.mts +1 -0
- package/dist/adapters/axiom.d.mts.map +1 -1
- package/dist/adapters/axiom.mjs +40 -44
- package/dist/adapters/axiom.mjs.map +1 -1
- package/dist/adapters/better-stack.d.mts +1 -0
- package/dist/adapters/better-stack.d.mts.map +1 -1
- package/dist/adapters/better-stack.mjs +34 -45
- package/dist/adapters/better-stack.mjs.map +1 -1
- package/dist/adapters/otlp.d.mts +1 -0
- package/dist/adapters/otlp.d.mts.map +1 -1
- package/dist/adapters/otlp.mjs +61 -81
- package/dist/adapters/otlp.mjs.map +1 -1
- package/dist/adapters/posthog.d.mts +35 -1
- package/dist/adapters/posthog.d.mts.map +1 -1
- package/dist/adapters/posthog.mjs +91 -45
- package/dist/adapters/posthog.mjs.map +1 -1
- package/dist/adapters/sentry.d.mts +1 -0
- package/dist/adapters/sentry.d.mts.map +1 -1
- package/dist/adapters/sentry.mjs +41 -53
- package/dist/adapters/sentry.mjs.map +1 -1
- package/dist/browser.d.mts +63 -0
- package/dist/browser.d.mts.map +1 -0
- package/dist/browser.mjs +95 -0
- package/dist/browser.mjs.map +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/logger.d.mts +6 -2
- package/dist/logger.d.mts.map +1 -1
- package/dist/logger.mjs +56 -3
- package/dist/logger.mjs.map +1 -1
- package/dist/nitro/errorHandler.mjs +6 -17
- package/dist/nitro/errorHandler.mjs.map +1 -1
- package/dist/nitro/module.d.mts +11 -0
- package/dist/nitro/module.d.mts.map +1 -0
- package/dist/nitro/module.mjs +23 -0
- package/dist/nitro/module.mjs.map +1 -0
- package/dist/nitro/plugin.mjs +28 -52
- package/dist/nitro/plugin.mjs.map +1 -1
- package/dist/nitro/v3/errorHandler.d.mts +24 -0
- package/dist/nitro/v3/errorHandler.d.mts.map +1 -0
- package/dist/nitro/v3/errorHandler.mjs +36 -0
- package/dist/nitro/v3/errorHandler.mjs.map +1 -0
- package/dist/nitro/v3/index.d.mts +4 -0
- package/dist/nitro/v3/index.mjs +4 -0
- package/dist/nitro/v3/module.d.mts +10 -0
- package/dist/nitro/v3/module.d.mts.map +1 -0
- package/dist/nitro/v3/module.mjs +22 -0
- package/dist/nitro/v3/module.mjs.map +1 -0
- package/dist/nitro/v3/plugin.d.mts +14 -0
- package/dist/nitro/v3/plugin.d.mts.map +1 -0
- package/dist/nitro/v3/plugin.mjs +157 -0
- package/dist/nitro/v3/plugin.mjs.map +1 -0
- package/dist/nitro/v3/useLogger.d.mts +24 -0
- package/dist/nitro/v3/useLogger.d.mts.map +1 -0
- package/dist/nitro/v3/useLogger.mjs +27 -0
- package/dist/nitro/v3/useLogger.mjs.map +1 -0
- package/dist/nitro-D57TWGyN.mjs +73 -0
- package/dist/nitro-D57TWGyN.mjs.map +1 -0
- package/dist/nitro-D81NBVPi.d.mts +42 -0
- package/dist/nitro-D81NBVPi.d.mts.map +1 -0
- package/dist/nuxt/module.d.mts +6 -0
- package/dist/nuxt/module.d.mts.map +1 -1
- package/dist/nuxt/module.mjs +9 -0
- package/dist/nuxt/module.mjs.map +1 -1
- package/dist/runtime/client/log.d.mts +5 -2
- package/dist/runtime/client/log.d.mts.map +1 -1
- package/dist/runtime/client/log.mjs +16 -3
- package/dist/runtime/client/log.mjs.map +1 -1
- package/dist/runtime/client/plugin.mjs +1 -0
- package/dist/runtime/client/plugin.mjs.map +1 -1
- package/dist/runtime/server/routes/_evlog/ingest.post.mjs +1 -1
- package/dist/types.d.mts +32 -2
- package/dist/types.d.mts.map +1 -1
- package/package.json +30 -6
- package/dist/_utils-DZA9nou3.mjs +0 -23
- package/dist/_utils-DZA9nou3.mjs.map +0 -1
package/dist/nuxt/module.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.mjs","names":[],"sources":["../../src/nuxt/module.ts"],"sourcesContent":["import {\n addImports,\n addPlugin,\n addServerHandler,\n addServerImports,\n addServerPlugin,\n createResolver,\n defineNuxtModule,\n} from '@nuxt/kit'\nimport type { NitroConfig } from 'nitropack'\nimport type { EnvironmentContext, RouteConfig, SamplingConfig, TransportConfig } from '../types'\n\nexport interface ModuleOptions {\n /**\n * Environment context overrides.\n */\n env?: Partial<EnvironmentContext>\n\n /**\n * Enable pretty printing.\n * @default true in development, false in production\n */\n pretty?: boolean\n\n /**\n * Route patterns to include in logging.\n * Supports glob patterns like '/api/**'.\n * If not set, all routes are logged.\n * @example ['/api/**', '/auth/**']\n */\n include?: string[]\n\n /**\n * Route patterns to exclude from logging.\n * Supports glob patterns like '/api/_nuxt_icon/**'.\n * Exclusions take precedence over inclusions.\n * @example ['/api/_nuxt_icon/**', '/health']\n */\n exclude?: string[]\n\n /**\n * Route-specific service configuration.\n * Allows setting different service names for different routes.\n * Patterns are matched using glob syntax.\n *\n * @example\n * ```ts\n * routes: {\n * '/api/foo/**': { service: 'service1' },\n * '/api/bar/**': { service: 'service2' }\n * }\n * ```\n */\n routes?: Record<string, RouteConfig>\n\n /**\n * Sampling configuration for filtering logs.\n * Allows configuring what percentage of logs to keep per level.\n *\n * @example\n * ```ts\n * sampling: {\n * rates: {\n * info: 10, // Keep 10% of info logs\n * warn: 50, // Keep 50% of warning logs\n * debug: 5, // Keep 5% of debug logs\n * error: 100, // Always keep errors (default)\n * }\n * }\n * ```\n */\n sampling?: SamplingConfig\n\n /**\n * Transport configuration for sending client logs to the server.\n *\n * @example\n * ```ts\n * transport: {\n * enabled: true, // Send logs to server API\n * endpoint: '/api/_evlog/ingest' // Custom endpoint\n * }\n * ```\n */\n transport?: TransportConfig\n\n /**\n * Axiom adapter configuration.\n * When configured, use `createAxiomDrain()` from `evlog/axiom` to send logs.\n *\n * @example\n * ```ts\n * axiom: {\n * dataset: 'my-app-logs',\n * token: process.env.AXIOM_TOKEN,\n * }\n * ```\n */\n axiom?: {\n /** Axiom dataset name */\n dataset: string\n /** Axiom API token */\n token: string\n /** Organization ID (required for Personal Access Tokens) */\n orgId?: string\n /** Base URL for Axiom API. Default: https://api.axiom.co */\n baseUrl?: string\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n\n /**\n * OTLP adapter configuration.\n * When configured, use `createOTLPDrain()` from `evlog/otlp` to send logs.\n *\n * @example\n * ```ts\n * otlp: {\n * endpoint: 'http://localhost:4318',\n * headers: {\n * 'Authorization': `Basic ${process.env.GRAFANA_TOKEN}`,\n * },\n * }\n * ```\n */\n otlp?: {\n /** OTLP HTTP endpoint (e.g., http://localhost:4318) */\n endpoint: string\n /** Override service name (defaults to event.service) */\n serviceName?: string\n /** Additional resource attributes */\n resourceAttributes?: Record<string, string | number | boolean>\n /** Custom headers (e.g., for authentication) */\n headers?: Record<string, string>\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n\n /**\n * PostHog adapter configuration.\n * When configured, use `createPostHogDrain()` from `evlog/posthog` to send logs.\n *\n * @example\n * ```ts\n * posthog: {\n * apiKey: process.env.POSTHOG_API_KEY,\n * }\n * ```\n */\n posthog?: {\n /** PostHog project API key */\n apiKey: string\n /** PostHog host URL. Default: https://us.i.posthog.com */\n host?: string\n /** PostHog event name. Default: evlog_wide_event */\n eventName?: string\n /** Override distinct_id (defaults to event.service) */\n distinctId?: string\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n\n /**\n * Sentry adapter configuration.\n * When configured, use `createSentryDrain()` from `evlog/sentry` to send logs.\n *\n * @example\n * ```ts\n * sentry: {\n * dsn: process.env.SENTRY_DSN,\n * }\n * ```\n */\n sentry?: {\n /** Sentry DSN */\n dsn: string\n /** Environment override (defaults to event.environment) */\n environment?: string\n /** Release version override (defaults to event.version) */\n release?: string\n /** Additional tags to attach as attributes */\n tags?: Record<string, string>\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n}\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: 'evlog',\n configKey: 'evlog',\n docs: 'https://evlog.dev',\n },\n defaults: {},\n setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n const transportEnabled = options.transport?.enabled ?? false\n const transportEndpoint = options.transport?.endpoint ?? '/api/_evlog/ingest'\n\n // Register custom error handler for proper EvlogError serialization\n // Only set if not already configured to avoid overwriting user's custom handler\n // @ts-expect-error nitro:config hook exists but is not in NuxtHooks type\n nuxt.hook('nitro:config', (nitroConfig: NitroConfig) => {\n nitroConfig.errorHandler = nitroConfig.errorHandler || resolver.resolve('../nitro/errorHandler')\n })\n\n nuxt.options.runtimeConfig.evlog = options\n nuxt.options.runtimeConfig.public.evlog = {\n pretty: options.pretty,\n transport: {\n enabled: transportEnabled,\n endpoint: transportEndpoint,\n },\n }\n\n if (transportEnabled) {\n addServerHandler({\n route: transportEndpoint,\n method: 'post',\n handler: resolver.resolve('../runtime/server/routes/_evlog/ingest.post'),\n })\n }\n\n addServerPlugin(resolver.resolve('../nitro/plugin'))\n\n addPlugin({\n src: resolver.resolve('../runtime/client/plugin'),\n mode: 'client',\n })\n\n addImports([\n {\n name: 'log',\n from: resolver.resolve('../runtime/client/log'),\n },\n {\n name: 'createEvlogError',\n from: resolver.resolve('../error'),\n },\n {\n name: 'parseError',\n from: resolver.resolve('../runtime/utils/parseError'),\n },\n ])\n\n addServerImports([\n {\n name: 'useLogger',\n from: resolver.resolve('../runtime/server/useLogger'),\n },\n {\n name: 'log',\n from: resolver.resolve('../logger'),\n },\n {\n name: 'createEvlogError',\n from: resolver.resolve('../error'),\n },\n ])\n },\n})\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"module.mjs","names":[],"sources":["../../src/nuxt/module.ts"],"sourcesContent":["import {\n addImports,\n addPlugin,\n addServerHandler,\n addServerImports,\n addServerPlugin,\n createResolver,\n defineNuxtModule,\n} from '@nuxt/kit'\nimport type { NitroConfig } from 'nitropack'\nimport type { EnvironmentContext, RouteConfig, SamplingConfig, TransportConfig } from '../types'\n\nexport interface ModuleOptions {\n /**\n * Enable or disable all logging globally.\n * When false, all emits, tagged logs, and request logger operations become no-ops.\n * @default true\n */\n enabled?: boolean\n\n /**\n * Environment context overrides.\n */\n env?: Partial<EnvironmentContext>\n\n /**\n * Enable pretty printing.\n * @default true in development, false in production\n */\n pretty?: boolean\n\n /**\n * Route patterns to include in logging.\n * Supports glob patterns like '/api/**'.\n * If not set, all routes are logged.\n * @example ['/api/**', '/auth/**']\n */\n include?: string[]\n\n /**\n * Route patterns to exclude from logging.\n * Supports glob patterns like '/api/_nuxt_icon/**'.\n * Exclusions take precedence over inclusions.\n * @example ['/api/_nuxt_icon/**', '/health']\n */\n exclude?: string[]\n\n /**\n * Route-specific service configuration.\n * Allows setting different service names for different routes.\n * Patterns are matched using glob syntax.\n *\n * @example\n * ```ts\n * routes: {\n * '/api/foo/**': { service: 'service1' },\n * '/api/bar/**': { service: 'service2' }\n * }\n * ```\n */\n routes?: Record<string, RouteConfig>\n\n /**\n * Sampling configuration for filtering logs.\n * Allows configuring what percentage of logs to keep per level.\n *\n * @example\n * ```ts\n * sampling: {\n * rates: {\n * info: 10, // Keep 10% of info logs\n * warn: 50, // Keep 50% of warning logs\n * debug: 5, // Keep 5% of debug logs\n * error: 100, // Always keep errors (default)\n * }\n * }\n * ```\n */\n sampling?: SamplingConfig\n\n /**\n * Transport configuration for sending client logs to the server.\n *\n * @example\n * ```ts\n * transport: {\n * enabled: true, // Send logs to server API\n * endpoint: '/api/_evlog/ingest' // Custom endpoint\n * }\n * ```\n */\n transport?: TransportConfig\n\n /**\n * Axiom adapter configuration.\n * When configured, use `createAxiomDrain()` from `evlog/axiom` to send logs.\n *\n * @example\n * ```ts\n * axiom: {\n * dataset: 'my-app-logs',\n * token: process.env.AXIOM_TOKEN,\n * }\n * ```\n */\n axiom?: {\n /** Axiom dataset name */\n dataset: string\n /** Axiom API token */\n token: string\n /** Organization ID (required for Personal Access Tokens) */\n orgId?: string\n /** Base URL for Axiom API. Default: https://api.axiom.co */\n baseUrl?: string\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n\n /**\n * OTLP adapter configuration.\n * When configured, use `createOTLPDrain()` from `evlog/otlp` to send logs.\n *\n * @example\n * ```ts\n * otlp: {\n * endpoint: 'http://localhost:4318',\n * headers: {\n * 'Authorization': `Basic ${process.env.GRAFANA_TOKEN}`,\n * },\n * }\n * ```\n */\n otlp?: {\n /** OTLP HTTP endpoint (e.g., http://localhost:4318) */\n endpoint: string\n /** Override service name (defaults to event.service) */\n serviceName?: string\n /** Additional resource attributes */\n resourceAttributes?: Record<string, string | number | boolean>\n /** Custom headers (e.g., for authentication) */\n headers?: Record<string, string>\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n\n /**\n * PostHog adapter configuration.\n * When configured, use `createPostHogDrain()` from `evlog/posthog` to send logs.\n *\n * @example\n * ```ts\n * posthog: {\n * apiKey: process.env.POSTHOG_API_KEY,\n * }\n * ```\n */\n posthog?: {\n /** PostHog project API key */\n apiKey: string\n /** PostHog host URL. Default: https://us.i.posthog.com */\n host?: string\n /** PostHog event name. Default: evlog_wide_event */\n eventName?: string\n /** Override distinct_id (defaults to event.service) */\n distinctId?: string\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n\n /**\n * Sentry adapter configuration.\n * When configured, use `createSentryDrain()` from `evlog/sentry` to send logs.\n *\n * @example\n * ```ts\n * sentry: {\n * dsn: process.env.SENTRY_DSN,\n * }\n * ```\n */\n sentry?: {\n /** Sentry DSN */\n dsn: string\n /** Environment override (defaults to event.environment) */\n environment?: string\n /** Release version override (defaults to event.version) */\n release?: string\n /** Additional tags to attach as attributes */\n tags?: Record<string, string>\n /** Request timeout in milliseconds. Default: 5000 */\n timeout?: number\n }\n}\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: 'evlog',\n configKey: 'evlog',\n docs: 'https://evlog.dev',\n },\n defaults: {},\n setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n const transportEnabled = options.transport?.enabled ?? false\n const transportEndpoint = options.transport?.endpoint ?? '/api/_evlog/ingest'\n\n // Register custom error handler for proper EvlogError serialization\n // Only set if not already configured to avoid overwriting user's custom handler\n // @ts-expect-error nitro:config hook exists but is not in NuxtHooks type\n nuxt.hook('nitro:config', (nitroConfig: NitroConfig) => {\n nitroConfig.errorHandler = nitroConfig.errorHandler || resolver.resolve('../nitro/errorHandler')\n })\n\n nuxt.options.runtimeConfig.evlog = options\n nuxt.options.runtimeConfig.public.evlog = {\n enabled: options.enabled ?? true,\n pretty: options.pretty,\n transport: {\n enabled: transportEnabled,\n endpoint: transportEndpoint,\n },\n }\n\n if (transportEnabled) {\n addServerHandler({\n route: transportEndpoint,\n method: 'post',\n handler: resolver.resolve('../runtime/server/routes/_evlog/ingest.post'),\n })\n }\n\n addServerPlugin(resolver.resolve('../nitro/plugin'))\n\n addPlugin({\n src: resolver.resolve('../runtime/client/plugin'),\n mode: 'client',\n })\n\n addImports([\n {\n name: 'log',\n from: resolver.resolve('../runtime/client/log'),\n },\n {\n name: 'setIdentity',\n from: resolver.resolve('../runtime/client/log'),\n },\n {\n name: 'clearIdentity',\n from: resolver.resolve('../runtime/client/log'),\n },\n {\n name: 'createEvlogError',\n from: resolver.resolve('../error'),\n },\n {\n name: 'parseError',\n from: resolver.resolve('../runtime/utils/parseError'),\n },\n ])\n\n addServerImports([\n {\n name: 'useLogger',\n from: resolver.resolve('../runtime/server/useLogger'),\n },\n {\n name: 'log',\n from: resolver.resolve('../logger'),\n },\n {\n name: 'createEvlogError',\n from: resolver.resolve('../error'),\n },\n ])\n },\n})\n"],"mappings":";;;AAkMA,qBAAe,iBAAgC;CAC7C,MAAM;EACJ,MAAM;EACN,WAAW;EACX,MAAM;EACP;CACD,UAAU,EAAE;CACZ,MAAM,SAAS,MAAM;EACnB,MAAM,WAAW,eAAe,OAAO,KAAK,IAAI;EAEhD,MAAM,mBAAmB,QAAQ,WAAW,WAAW;EACvD,MAAM,oBAAoB,QAAQ,WAAW,YAAY;AAKzD,OAAK,KAAK,iBAAiB,gBAA6B;AACtD,eAAY,eAAe,YAAY,gBAAgB,SAAS,QAAQ,wBAAwB;IAChG;AAEF,OAAK,QAAQ,cAAc,QAAQ;AACnC,OAAK,QAAQ,cAAc,OAAO,QAAQ;GACxC,SAAS,QAAQ,WAAW;GAC5B,QAAQ,QAAQ;GAChB,WAAW;IACT,SAAS;IACT,UAAU;IACX;GACF;AAED,MAAI,iBACF,kBAAiB;GACf,OAAO;GACP,QAAQ;GACR,SAAS,SAAS,QAAQ,8CAA8C;GACzE,CAAC;AAGJ,kBAAgB,SAAS,QAAQ,kBAAkB,CAAC;AAEpD,YAAU;GACR,KAAK,SAAS,QAAQ,2BAA2B;GACjD,MAAM;GACP,CAAC;AAEF,aAAW;GACT;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,wBAAwB;IAChD;GACD;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,wBAAwB;IAChD;GACD;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,wBAAwB;IAChD;GACD;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,WAAW;IACnC;GACD;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,8BAA8B;IACtD;GACF,CAAC;AAEF,mBAAiB;GACf;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,8BAA8B;IACtD;GACD;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,YAAY;IACpC;GACD;IACE,MAAM;IACN,MAAM,SAAS,QAAQ,WAAW;IACnC;GACF,CAAC;;CAEL,CAAC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import { Log, TransportConfig } from "../../types.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/runtime/client/log.d.ts
|
|
4
|
+
declare function setIdentity(identity: Record<string, unknown>): void;
|
|
5
|
+
declare function clearIdentity(): void;
|
|
4
6
|
declare function initLog(options?: {
|
|
7
|
+
enabled?: boolean;
|
|
5
8
|
pretty?: boolean;
|
|
6
9
|
service?: string;
|
|
7
10
|
transport?: TransportConfig;
|
|
8
11
|
}): void;
|
|
9
|
-
declare const
|
|
12
|
+
declare const _clientLog: Log;
|
|
10
13
|
//#endregion
|
|
11
|
-
export { initLog, log };
|
|
14
|
+
export { clearIdentity, initLog, _clientLog as log, setIdentity };
|
|
12
15
|
//# sourceMappingURL=log.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.mts","names":[],"sources":["../../../src/runtime/client/log.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"log.d.mts","names":[],"sources":["../../../src/runtime/client/log.ts"],"mappings":";;;iBAYgB,WAAA,CAAY,QAAA,EAAU,MAAA;AAAA,iBAItB,aAAA,CAAA;AAAA,iBAWA,OAAA,CAAQ,OAAA;EAAW,OAAA;EAAmB,MAAA;EAAkB,OAAA;EAAkB,SAAA,GAAY,eAAA;AAAA;AAAA,cAgFhG,UAAA,EAAY,GAAA"}
|
|
@@ -2,10 +2,18 @@ import { getConsoleMethod } from "../../utils.mjs";
|
|
|
2
2
|
|
|
3
3
|
//#region src/runtime/client/log.ts
|
|
4
4
|
const isClient = typeof window !== "undefined";
|
|
5
|
+
let clientEnabled = true;
|
|
5
6
|
let clientPretty = true;
|
|
6
7
|
let clientService = "client";
|
|
7
8
|
let transportEnabled = false;
|
|
8
9
|
let transportEndpoint = "/api/_evlog/ingest";
|
|
10
|
+
let identityContext = {};
|
|
11
|
+
function setIdentity(identity) {
|
|
12
|
+
identityContext = { ...identity };
|
|
13
|
+
}
|
|
14
|
+
function clearIdentity() {
|
|
15
|
+
identityContext = {};
|
|
16
|
+
}
|
|
9
17
|
const LEVEL_COLORS = {
|
|
10
18
|
error: "color: #ef4444; font-weight: bold",
|
|
11
19
|
warn: "color: #f59e0b; font-weight: bold",
|
|
@@ -13,7 +21,8 @@ const LEVEL_COLORS = {
|
|
|
13
21
|
debug: "color: #6b7280; font-weight: bold"
|
|
14
22
|
};
|
|
15
23
|
function initLog(options = {}) {
|
|
16
|
-
|
|
24
|
+
clientEnabled = typeof options.enabled === "boolean" ? options.enabled : true;
|
|
25
|
+
clientPretty = typeof options.pretty === "boolean" ? options.pretty : true;
|
|
17
26
|
clientService = options.service ?? "client";
|
|
18
27
|
transportEnabled = options.transport?.enabled ?? false;
|
|
19
28
|
transportEndpoint = options.transport?.endpoint ?? "/api/_evlog/ingest";
|
|
@@ -31,10 +40,12 @@ async function sendToServer(event) {
|
|
|
31
40
|
} catch {}
|
|
32
41
|
}
|
|
33
42
|
function emitLog(level, event) {
|
|
43
|
+
if (!clientEnabled) return;
|
|
34
44
|
const formatted = {
|
|
35
45
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
36
46
|
level,
|
|
37
47
|
service: clientService,
|
|
48
|
+
...identityContext,
|
|
38
49
|
...event
|
|
39
50
|
};
|
|
40
51
|
const method = getConsoleMethod(level);
|
|
@@ -45,12 +56,14 @@ function emitLog(level, event) {
|
|
|
45
56
|
sendToServer(formatted);
|
|
46
57
|
}
|
|
47
58
|
function emitTaggedLog(level, tag, message) {
|
|
59
|
+
if (!clientEnabled) return;
|
|
48
60
|
if (clientPretty) {
|
|
49
61
|
console[getConsoleMethod(level)](`%c[${tag}]%c ${message}`, LEVEL_COLORS[level] || "", "color: inherit");
|
|
50
62
|
sendToServer({
|
|
51
63
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
52
64
|
level,
|
|
53
65
|
service: clientService,
|
|
66
|
+
...identityContext,
|
|
54
67
|
tag,
|
|
55
68
|
message
|
|
56
69
|
});
|
|
@@ -67,7 +80,7 @@ function createLogMethod(level) {
|
|
|
67
80
|
else emitTaggedLog(level, "log", String(tagOrEvent));
|
|
68
81
|
};
|
|
69
82
|
}
|
|
70
|
-
const
|
|
83
|
+
const _clientLog = {
|
|
71
84
|
info: createLogMethod("info"),
|
|
72
85
|
error: createLogMethod("error"),
|
|
73
86
|
warn: createLogMethod("warn"),
|
|
@@ -75,5 +88,5 @@ const log = {
|
|
|
75
88
|
};
|
|
76
89
|
|
|
77
90
|
//#endregion
|
|
78
|
-
export { initLog, log };
|
|
91
|
+
export { clearIdentity, initLog, _clientLog as log, setIdentity };
|
|
79
92
|
//# sourceMappingURL=log.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.mjs","names":[],"sources":["../../../src/runtime/client/log.ts"],"sourcesContent":["import type { Log, LogLevel, TransportConfig } from '../../types'\nimport { getConsoleMethod } from '../../utils'\n\nconst isClient = typeof window !== 'undefined'\n\nlet clientPretty = true\nlet clientService = 'client'\nlet transportEnabled = false\nlet transportEndpoint = '/api/_evlog/ingest'\n\nconst LEVEL_COLORS: Record<string, string> = {\n error: 'color: #ef4444; font-weight: bold',\n warn: 'color: #f59e0b; font-weight: bold',\n info: 'color: #06b6d4; font-weight: bold',\n debug: 'color: #6b7280; font-weight: bold',\n}\n\nexport function initLog(options: { pretty?: boolean, service?: string, transport?: TransportConfig } = {}): void {\n clientPretty = options.pretty
|
|
1
|
+
{"version":3,"file":"log.mjs","names":[],"sources":["../../../src/runtime/client/log.ts"],"sourcesContent":["import type { Log, LogLevel, TransportConfig } from '../../types'\nimport { getConsoleMethod } from '../../utils'\n\nconst isClient = typeof window !== 'undefined'\n\nlet clientEnabled = true\nlet clientPretty = true\nlet clientService = 'client'\nlet transportEnabled = false\nlet transportEndpoint = '/api/_evlog/ingest'\nlet identityContext: Record<string, unknown> = {}\n\nexport function setIdentity(identity: Record<string, unknown>): void {\n identityContext = { ...identity }\n}\n\nexport function clearIdentity(): void {\n identityContext = {}\n}\n\nconst LEVEL_COLORS: Record<string, string> = {\n error: 'color: #ef4444; font-weight: bold',\n warn: 'color: #f59e0b; font-weight: bold',\n info: 'color: #06b6d4; font-weight: bold',\n debug: 'color: #6b7280; font-weight: bold',\n}\n\nexport function initLog(options: { enabled?: boolean, pretty?: boolean, service?: string, transport?: TransportConfig } = {}): void {\n clientEnabled = typeof options.enabled === 'boolean' ? options.enabled : true\n clientPretty = typeof options.pretty === 'boolean' ? options.pretty : true\n clientService = options.service ?? 'client'\n transportEnabled = options.transport?.enabled ?? false\n transportEndpoint = options.transport?.endpoint ?? '/api/_evlog/ingest'\n}\n\nasync function sendToServer(event: Record<string, unknown>): Promise<void> {\n if (!transportEnabled) return\n\n try {\n await fetch(transportEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(event),\n keepalive: true,\n credentials: 'same-origin',\n })\n } catch {\n // Silently fail - don't break the app\n }\n}\n\nfunction emitLog(level: LogLevel, event: Record<string, unknown>): void {\n if (!clientEnabled) return\n\n const formatted = {\n timestamp: new Date().toISOString(),\n level,\n service: clientService,\n ...identityContext,\n ...event,\n }\n\n const method = getConsoleMethod(level)\n\n if (clientPretty) {\n const { level: lvl, service, ...rest } = formatted\n console[method](`%c[${service}]%c ${lvl}`, LEVEL_COLORS[lvl] || '', 'color: inherit', rest)\n } else {\n console[method](JSON.stringify(formatted))\n }\n\n sendToServer(formatted)\n}\n\nfunction emitTaggedLog(level: LogLevel, tag: string, message: string): void {\n if (!clientEnabled) return\n if (clientPretty) {\n console[getConsoleMethod(level)](`%c[${tag}]%c ${message}`, LEVEL_COLORS[level] || '', 'color: inherit')\n sendToServer({\n timestamp: new Date().toISOString(),\n level,\n service: clientService,\n ...identityContext,\n tag,\n message,\n })\n } else {\n emitLog(level, { tag, message })\n }\n}\n\nfunction createLogMethod(level: LogLevel) {\n return function logMethod(tagOrEvent: string | Record<string, unknown>, message?: string): void {\n if (!(import.meta.client ?? isClient)) {\n return\n }\n\n if (typeof tagOrEvent === 'string' && message !== undefined) {\n emitTaggedLog(level, tagOrEvent, message)\n } else if (typeof tagOrEvent === 'object') {\n emitLog(level, tagOrEvent)\n } else {\n emitTaggedLog(level, 'log', String(tagOrEvent))\n }\n }\n}\n\nconst _clientLog: Log = {\n info: createLogMethod('info'),\n error: createLogMethod('error'),\n warn: createLogMethod('warn'),\n debug: createLogMethod('debug'),\n}\n\nexport { _clientLog as log }\n"],"mappings":";;;AAGA,MAAM,WAAW,OAAO,WAAW;AAEnC,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,oBAAoB;AACxB,IAAI,kBAA2C,EAAE;AAEjD,SAAgB,YAAY,UAAyC;AACnE,mBAAkB,EAAE,GAAG,UAAU;;AAGnC,SAAgB,gBAAsB;AACpC,mBAAkB,EAAE;;AAGtB,MAAM,eAAuC;CAC3C,OAAO;CACP,MAAM;CACN,MAAM;CACN,OAAO;CACR;AAED,SAAgB,QAAQ,UAAkG,EAAE,EAAQ;AAClI,iBAAgB,OAAO,QAAQ,YAAY,YAAY,QAAQ,UAAU;AACzE,gBAAe,OAAO,QAAQ,WAAW,YAAY,QAAQ,SAAS;AACtE,iBAAgB,QAAQ,WAAW;AACnC,oBAAmB,QAAQ,WAAW,WAAW;AACjD,qBAAoB,QAAQ,WAAW,YAAY;;AAGrD,eAAe,aAAa,OAA+C;AACzE,KAAI,CAAC,iBAAkB;AAEvB,KAAI;AACF,QAAM,MAAM,mBAAmB;GAC7B,QAAQ;GACR,SAAS,EAAE,gBAAgB,oBAAoB;GAC/C,MAAM,KAAK,UAAU,MAAM;GAC3B,WAAW;GACX,aAAa;GACd,CAAC;SACI;;AAKV,SAAS,QAAQ,OAAiB,OAAsC;AACtE,KAAI,CAAC,cAAe;CAEpB,MAAM,YAAY;EAChB,4BAAW,IAAI,MAAM,EAAC,aAAa;EACnC;EACA,SAAS;EACT,GAAG;EACH,GAAG;EACJ;CAED,MAAM,SAAS,iBAAiB,MAAM;AAEtC,KAAI,cAAc;EAChB,MAAM,EAAE,OAAO,KAAK,SAAS,GAAG,SAAS;AACzC,UAAQ,QAAQ,MAAM,QAAQ,MAAM,OAAO,aAAa,QAAQ,IAAI,kBAAkB,KAAK;OAE3F,SAAQ,QAAQ,KAAK,UAAU,UAAU,CAAC;AAG5C,cAAa,UAAU;;AAGzB,SAAS,cAAc,OAAiB,KAAa,SAAuB;AAC1E,KAAI,CAAC,cAAe;AACpB,KAAI,cAAc;AAChB,UAAQ,iBAAiB,MAAM,EAAE,MAAM,IAAI,MAAM,WAAW,aAAa,UAAU,IAAI,iBAAiB;AACxG,eAAa;GACX,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC;GACA,SAAS;GACT,GAAG;GACH;GACA;GACD,CAAC;OAEF,SAAQ,OAAO;EAAE;EAAK;EAAS,CAAC;;AAIpC,SAAS,gBAAgB,OAAiB;AACxC,QAAO,SAAS,UAAU,YAA8C,SAAwB;AAC9F,MAAI,EAAE,OAAO,KAAK,UAAU,UAC1B;AAGF,MAAI,OAAO,eAAe,YAAY,YAAY,OAChD,eAAc,OAAO,YAAY,QAAQ;WAChC,OAAO,eAAe,SAC/B,SAAQ,OAAO,WAAW;MAE1B,eAAc,OAAO,OAAO,OAAO,WAAW,CAAC;;;AAKrD,MAAM,aAAkB;CACtB,MAAM,gBAAgB,OAAO;CAC7B,OAAO,gBAAgB,QAAQ;CAC/B,MAAM,gBAAgB,OAAO;CAC7B,OAAO,gBAAgB,QAAQ;CAChC"}
|
|
@@ -5,6 +5,7 @@ import { defineNuxtPlugin, useRuntimeConfig } from "#app";
|
|
|
5
5
|
var plugin_default = defineNuxtPlugin(() => {
|
|
6
6
|
const evlogConfig = useRuntimeConfig().public?.evlog;
|
|
7
7
|
initLog({
|
|
8
|
+
enabled: evlogConfig?.enabled,
|
|
8
9
|
pretty: evlogConfig?.pretty ?? import.meta.dev,
|
|
9
10
|
service: "client",
|
|
10
11
|
transport: evlogConfig?.transport
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.mjs","names":[],"sources":["../../../src/runtime/client/plugin.ts"],"sourcesContent":["import type { TransportConfig } from '../../types'\nimport { initLog } from './log'\nimport { defineNuxtPlugin, useRuntimeConfig } from '#app'\n\ninterface EvlogPublicConfig {\n pretty?: boolean\n transport?: TransportConfig\n}\n\nexport default defineNuxtPlugin(() => {\n const config = useRuntimeConfig()\n const evlogConfig = config.public?.evlog as EvlogPublicConfig | undefined\n\n initLog({\n pretty: evlogConfig?.pretty ?? import.meta.dev,\n service: 'client',\n transport: evlogConfig?.transport,\n })\n})\n"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"plugin.mjs","names":[],"sources":["../../../src/runtime/client/plugin.ts"],"sourcesContent":["import type { TransportConfig } from '../../types'\nimport { initLog } from './log'\nimport { defineNuxtPlugin, useRuntimeConfig } from '#app'\n\ninterface EvlogPublicConfig {\n enabled?: boolean\n pretty?: boolean\n transport?: TransportConfig\n}\n\nexport default defineNuxtPlugin(() => {\n const config = useRuntimeConfig()\n const evlogConfig = config.public?.evlog as EvlogPublicConfig | undefined\n\n initLog({\n enabled: evlogConfig?.enabled,\n pretty: evlogConfig?.pretty ?? import.meta.dev,\n service: 'client',\n transport: evlogConfig?.transport,\n })\n})\n"],"mappings":";;;;AAUA,qBAAe,uBAAuB;CAEpC,MAAM,cADS,kBAAkB,CACN,QAAQ;AAEnC,SAAQ;EACN,SAAS,aAAa;EACtB,QAAQ,aAAa,UAAU,OAAO,KAAK;EAC3C,SAAS;EACT,WAAW,aAAa;EACzB,CAAC;EACF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { filterSafeHeaders } from "../../../../utils.mjs";
|
|
2
2
|
import { getEnvironment } from "../../../../logger.mjs";
|
|
3
|
-
import { useNitroApp } from "nitropack/runtime";
|
|
4
3
|
import { createError, defineEventHandler, getHeader, getHeaders, getRequestHost, readBody, setResponseStatus } from "h3";
|
|
4
|
+
import { useNitroApp } from "nitropack/runtime";
|
|
5
5
|
|
|
6
6
|
//#region src/runtime/server/routes/_evlog/ingest.post.ts
|
|
7
7
|
const VALID_LEVELS = [
|
package/dist/types.d.mts
CHANGED
|
@@ -46,6 +46,13 @@ declare module 'nitropack/types' {
|
|
|
46
46
|
'evlog:drain': (ctx: DrainContext) => void | Promise<void>;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
declare module 'nitro/types' {
|
|
50
|
+
interface NitroRuntimeHooks {
|
|
51
|
+
'evlog:emit:keep': (ctx: TailSamplingContext) => void | Promise<void>;
|
|
52
|
+
'evlog:enrich': (ctx: EnrichContext) => void | Promise<void>;
|
|
53
|
+
'evlog:drain': (ctx: DrainContext) => void | Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
49
56
|
/**
|
|
50
57
|
* Transport configuration for sending client logs to the server
|
|
51
58
|
*/
|
|
@@ -125,7 +132,7 @@ interface EnrichContext {
|
|
|
125
132
|
/** Request metadata (if available) */
|
|
126
133
|
request?: {
|
|
127
134
|
method?: string;
|
|
128
|
-
path
|
|
135
|
+
path: string;
|
|
129
136
|
requestId?: string;
|
|
130
137
|
};
|
|
131
138
|
/** Safe HTTP request headers (sensitive headers filtered out) */
|
|
@@ -220,6 +227,12 @@ interface EnvironmentContext {
|
|
|
220
227
|
* Logger configuration options
|
|
221
228
|
*/
|
|
222
229
|
interface LoggerConfig {
|
|
230
|
+
/**
|
|
231
|
+
* Enable or disable all logging globally.
|
|
232
|
+
* When false, all emits, tagged logs, and request logger operations become no-ops.
|
|
233
|
+
* @default true
|
|
234
|
+
*/
|
|
235
|
+
enabled?: boolean;
|
|
223
236
|
/** Environment context overrides */
|
|
224
237
|
env?: Partial<EnvironmentContext>;
|
|
225
238
|
/** Enable pretty printing (auto-detected: true in dev, false in prod) */
|
|
@@ -293,6 +306,15 @@ type DeepPartial<T> = T extends Array<unknown> ? T : T extends object ? { [K in
|
|
|
293
306
|
interface InternalFields {
|
|
294
307
|
status?: number;
|
|
295
308
|
service?: string;
|
|
309
|
+
requestLogs?: RequestLogEntry[];
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Request-scoped log entry captured during a request lifecycle.
|
|
313
|
+
*/
|
|
314
|
+
interface RequestLogEntry {
|
|
315
|
+
level: 'info' | 'warn';
|
|
316
|
+
message: string;
|
|
317
|
+
timestamp: string;
|
|
296
318
|
}
|
|
297
319
|
/**
|
|
298
320
|
* Resolved context type for logger methods.
|
|
@@ -336,6 +358,14 @@ interface RequestLogger<T extends object = Record<string, unknown>> {
|
|
|
336
358
|
* Log an error and capture its details
|
|
337
359
|
*/
|
|
338
360
|
error: (error: Error | string, context?: FieldContext<T>) => void;
|
|
361
|
+
/**
|
|
362
|
+
* Capture an informational message inside the request wide event.
|
|
363
|
+
*/
|
|
364
|
+
info: (message: string, context?: FieldContext<T>) => void;
|
|
365
|
+
/**
|
|
366
|
+
* Capture a warning message inside the request wide event.
|
|
367
|
+
*/
|
|
368
|
+
warn: (message: string, context?: FieldContext<T>) => void;
|
|
339
369
|
/**
|
|
340
370
|
* Emit the final wide event with all accumulated context.
|
|
341
371
|
* Returns the emitted WideEvent, or null if the log was sampled out.
|
|
@@ -462,5 +492,5 @@ interface ParsedError {
|
|
|
462
492
|
raw: unknown;
|
|
463
493
|
}
|
|
464
494
|
//#endregion
|
|
465
|
-
export { BaseWideEvent, DeepPartial, DrainContext, EnrichContext, EnvironmentContext, ErrorOptions, FieldContext, H3EventContext, IngestPayload, InternalFields, Log, LogLevel, LoggerConfig, ParsedError, RequestLogger, RequestLoggerOptions, RouteConfig, SamplingConfig, SamplingRates, ServerEvent, TailSamplingCondition, TailSamplingContext, TransportConfig, WideEvent };
|
|
495
|
+
export { BaseWideEvent, DeepPartial, DrainContext, EnrichContext, EnvironmentContext, ErrorOptions, FieldContext, H3EventContext, IngestPayload, InternalFields, Log, LogLevel, LoggerConfig, ParsedError, RequestLogEntry, RequestLogger, RequestLoggerOptions, RouteConfig, SamplingConfig, SamplingRates, ServerEvent, TailSamplingCondition, TailSamplingContext, TransportConfig, WideEvent };
|
|
466
496
|
//# sourceMappingURL=types.d.mts.map
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;YAGY,iBAAA;;;;;;;;;;;;;;IAcR,iBAAA,GAAoB,GAAA,EAAK,mBAAA,YAA+B,OAAA;IAAA;;;;;;;;;;;IAaxD,cAAA,GAAiB,GAAA,EAAK,aAAA,YAAyB,OAAA;
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "evlog",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Wide event logging library with structured error handling. Inspired by LoggingSucks.",
|
|
5
5
|
"author": "HugoRCD <contact@hrcd.fr>",
|
|
6
6
|
"homepage": "https://evlog.dev",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
],
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"type": "module",
|
|
25
|
+
"sideEffects": false,
|
|
25
26
|
"exports": {
|
|
26
27
|
".": {
|
|
27
28
|
"types": "./dist/index.d.mts",
|
|
@@ -32,8 +33,12 @@
|
|
|
32
33
|
"import": "./dist/nuxt/module.mjs"
|
|
33
34
|
},
|
|
34
35
|
"./nitro": {
|
|
35
|
-
"types": "./dist/nitro/
|
|
36
|
-
"import": "./dist/nitro/
|
|
36
|
+
"types": "./dist/nitro/module.d.mts",
|
|
37
|
+
"import": "./dist/nitro/module.mjs"
|
|
38
|
+
},
|
|
39
|
+
"./nitro/v3": {
|
|
40
|
+
"types": "./dist/nitro/v3/index.d.mts",
|
|
41
|
+
"import": "./dist/nitro/v3/index.mjs"
|
|
37
42
|
},
|
|
38
43
|
"./workers": {
|
|
39
44
|
"types": "./dist/workers.d.mts",
|
|
@@ -66,6 +71,10 @@
|
|
|
66
71
|
"./pipeline": {
|
|
67
72
|
"types": "./dist/pipeline.d.mts",
|
|
68
73
|
"import": "./dist/pipeline.mjs"
|
|
74
|
+
},
|
|
75
|
+
"./browser": {
|
|
76
|
+
"types": "./dist/browser.d.mts",
|
|
77
|
+
"import": "./dist/browser.mjs"
|
|
69
78
|
}
|
|
70
79
|
},
|
|
71
80
|
"main": "./dist/index.mjs",
|
|
@@ -79,7 +88,10 @@
|
|
|
79
88
|
"./dist/nuxt/module.d.mts"
|
|
80
89
|
],
|
|
81
90
|
"nitro": [
|
|
82
|
-
"./dist/nitro/
|
|
91
|
+
"./dist/nitro/module.d.mts"
|
|
92
|
+
],
|
|
93
|
+
"nitro/v3": [
|
|
94
|
+
"./dist/nitro/v3/index.d.mts"
|
|
83
95
|
],
|
|
84
96
|
"workers": [
|
|
85
97
|
"./dist/workers.d.mts"
|
|
@@ -104,6 +116,9 @@
|
|
|
104
116
|
],
|
|
105
117
|
"pipeline": [
|
|
106
118
|
"./dist/pipeline.d.mts"
|
|
119
|
+
],
|
|
120
|
+
"browser": [
|
|
121
|
+
"./dist/browser.d.mts"
|
|
107
122
|
]
|
|
108
123
|
}
|
|
109
124
|
},
|
|
@@ -113,6 +128,7 @@
|
|
|
113
128
|
],
|
|
114
129
|
"scripts": {
|
|
115
130
|
"build": "tsdown",
|
|
131
|
+
"dev": "tsdown --watch",
|
|
116
132
|
"dev:prepare": "tsdown",
|
|
117
133
|
"release": "bun run lint && bun run test && bun run build && changelogen --release && npm publish && git push --follow-tags",
|
|
118
134
|
"lint": "eslint .",
|
|
@@ -123,11 +139,15 @@
|
|
|
123
139
|
"typecheck": "echo 'Typecheck handled by build'"
|
|
124
140
|
},
|
|
125
141
|
"devDependencies": {
|
|
142
|
+
"ufo": "^1.6.3",
|
|
126
143
|
"@nuxt/devtools": "^3.1.1",
|
|
127
144
|
"@nuxt/schema": "^4.3.1",
|
|
128
|
-
"@nuxt/test-utils": "^
|
|
145
|
+
"@nuxt/test-utils": "^4.0.0",
|
|
129
146
|
"changelogen": "^0.6.2",
|
|
147
|
+
"consola": "^3.4.2",
|
|
130
148
|
"h3": "^1.15.5",
|
|
149
|
+
"happy-dom": "^20.6.1",
|
|
150
|
+
"nitro": "^3.0.1-alpha.2",
|
|
131
151
|
"nitropack": "^2.13.1",
|
|
132
152
|
"nuxt": "^4.3.1",
|
|
133
153
|
"tsdown": "^0.20.3",
|
|
@@ -137,7 +157,8 @@
|
|
|
137
157
|
"@nuxt/kit": "^4.3.1",
|
|
138
158
|
"h3": "^1.15.5",
|
|
139
159
|
"nitropack": "^2.13.1",
|
|
140
|
-
"ofetch": "^1.5.1"
|
|
160
|
+
"ofetch": "^1.5.1",
|
|
161
|
+
"nitro": "^3.0.1-alpha.2"
|
|
141
162
|
},
|
|
142
163
|
"peerDependenciesMeta": {
|
|
143
164
|
"@nuxt/kit": {
|
|
@@ -151,6 +172,9 @@
|
|
|
151
172
|
},
|
|
152
173
|
"ofetch": {
|
|
153
174
|
"optional": true
|
|
175
|
+
},
|
|
176
|
+
"nitro": {
|
|
177
|
+
"optional": true
|
|
154
178
|
}
|
|
155
179
|
}
|
|
156
180
|
}
|
package/dist/_utils-DZA9nou3.mjs
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { createRequire } from "node:module";
|
|
2
|
-
|
|
3
|
-
//#region \0rolldown/runtime.js
|
|
4
|
-
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
5
|
-
|
|
6
|
-
//#endregion
|
|
7
|
-
//#region src/adapters/_utils.ts
|
|
8
|
-
/**
|
|
9
|
-
* Try to get runtime config from Nitro/Nuxt environment.
|
|
10
|
-
* Returns undefined if not in a Nitro context.
|
|
11
|
-
*/
|
|
12
|
-
function getRuntimeConfig() {
|
|
13
|
-
try {
|
|
14
|
-
const { useRuntimeConfig } = __require("nitropack/runtime");
|
|
15
|
-
return useRuntimeConfig();
|
|
16
|
-
} catch {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
//#endregion
|
|
22
|
-
export { getRuntimeConfig as t };
|
|
23
|
-
//# sourceMappingURL=_utils-DZA9nou3.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_utils-DZA9nou3.mjs","names":[],"sources":["../src/adapters/_utils.ts"],"sourcesContent":["/**\n * Try to get runtime config from Nitro/Nuxt environment.\n * Returns undefined if not in a Nitro context.\n */\nexport function getRuntimeConfig(): Record<string, any> | undefined {\n try {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const { useRuntimeConfig } = require('nitropack/runtime')\n return useRuntimeConfig()\n } catch {\n return undefined\n }\n}\n"],"mappings":";;;;;;;;;;;AAIA,SAAgB,mBAAoD;AAClE,KAAI;EAEF,MAAM,EAAE,+BAA6B,oBAAoB;AACzD,SAAO,kBAAkB;SACnB;AACN"}
|