@orion-js/logger 4.1.0 → 4.1.2

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/dist/index.cjs CHANGED
@@ -31,6 +31,7 @@ var index_exports = {};
31
31
  __export(index_exports, {
32
32
  addTransport: () => addTransport,
33
33
  configureLogger: () => configureLogger,
34
+ getAsyncContextLabel: () => getAsyncContextLabel,
34
35
  getLogger: () => getLogger,
35
36
  getOrionAsyncContext: () => getOrionAsyncContext,
36
37
  jsonConsoleFormat: () => jsonConsoleFormat,
@@ -292,18 +293,17 @@ var textConsoleFormat = combine(
292
293
  const fileNameLabel = info.fileName ? `[${info.fileName}]` : "";
293
294
  const stack = info.stack ? formatStack(info.stack) : "";
294
295
  const value = getMetadataText(info.metadata);
295
- const traceId = info.trace_id ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}` : "";
296
- const context = [info.context, traceId].filter(Boolean).join(" ").trim();
297
- const contextLabel = context ? `[${context}]` : "";
298
- return [
296
+ const contextLabel = info.context ? `[${info.context}]` : "";
297
+ const mainLine = [
299
298
  `[${info.level}]`,
300
299
  `[${timeLabel}]`,
301
300
  contextLabel,
302
301
  fileNameLabel,
303
- info.message,
304
- value,
305
- stack
302
+ info.message
306
303
  ].filter(Boolean).join(" ");
304
+ const valueLine = value ? `
305
+ ${value}` : "";
306
+ return `${mainLine}${valueLine}${stack}`;
307
307
  })
308
308
  );
309
309
  var textConsoleTransport = new import_winston3.transports.Console({
@@ -424,6 +424,7 @@ var logger = createLogger(winstonLogger);
424
424
  0 && (module.exports = {
425
425
  addTransport,
426
426
  configureLogger,
427
+ getAsyncContextLabel,
427
428
  getLogger,
428
429
  getOrionAsyncContext,
429
430
  jsonConsoleFormat,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/formats/consoleFormats.ts","../src/formats/winstonFormats.ts","../src/asyncContext.ts","../src/formats/getAsyncContextLabel.ts","../src/formats/getMetadataText.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/formats/formatStack.ts","../src/formats/enrichWithAsyncContext.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\nexport * from './asyncContext'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport {opentelemetryContext, metaError, asyncContextFormat} from './winstonFormats'\nimport {getMetadataText} from './getMetadataText'\nimport {formatStack} from './formatStack'\nimport {enrichWithAsyncContext} from './enrichWithAsyncContext'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nexport const textConsoleFormat: any = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n asyncContextFormat(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? formatStack(info.stack) : ''\n const value = getMetadataText(info.metadata)\n const traceId = info.trace_id\n ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}`\n : ''\n const context = [info.context, traceId].filter(Boolean).join(' ').trim()\n const contextLabel = context ? `[${context}]` : ''\n return [\n `[${info.level}]`,\n `[${timeLabel}]`,\n contextLabel,\n fileNameLabel,\n info.message,\n value,\n stack,\n ]\n .filter(Boolean)\n .join(' ')\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import {format, Logform} from 'winston'\nimport opentelemetry, {Span} from '@opentelemetry/api'\nimport {getAsyncContextLabel} from './getAsyncContextLabel'\n\nexport const opentelemetryContext: Logform.FormatWrap = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nexport const metaError: Logform.FormatWrap = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const asyncContextFormat: Logform.FormatWrap = format(info => {\n if (!info.context) {\n info.context = getAsyncContextLabel()\n }\n return info\n})\n\nexport const sentryFormat: Logform.FormatWrap = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n","import {AsyncLocalStorage} from 'node:async_hooks'\nimport {randomUUID} from 'node:crypto'\n\ninterface BaseOrionAsyncContext {\n contextId: string\n viewer?: unknown\n params?: unknown\n}\n\nexport interface JobAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'job'\n jobName: string\n}\n\nexport interface RouteAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'route'\n routeName: string\n pathname: string\n}\n\nexport interface ResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'resolver'\n resolverName?: string\n}\n\nexport interface ModelResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'modelResolver'\n modelName?: string\n modelResolverName?: string\n parentData?: unknown\n}\n\nexport interface SubscriptionAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'subscription'\n subscriptionName: string\n}\n\nexport interface EchoAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'echo'\n echoName: string\n}\n\nexport type OrionAsyncContext =\n | JobAsyncContext\n | RouteAsyncContext\n | ResolverAsyncContext\n | ModelResolverAsyncContext\n | SubscriptionAsyncContext\n | EchoAsyncContext\n\nconst storage: AsyncLocalStorage<OrionAsyncContext> = new AsyncLocalStorage()\n\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<JobAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<RouteAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ModelResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<SubscriptionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<EchoAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<OrionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn> {\n const contextWithId = {\n contextId: randomUUID(),\n ...context,\n } as OrionAsyncContext\n return await storage.run(contextWithId, async () => {\n return await callback()\n })\n}\n\nexport const getOrionAsyncContext = (): OrionAsyncContext | undefined => {\n return storage.getStore()\n}\n\nexport const updateOrionAsyncContext = (\n context: Partial<OrionAsyncContext>,\n): OrionAsyncContext | undefined => {\n const currentContext: OrionAsyncContext | undefined = storage.getStore()\n if (!currentContext) {\n return undefined\n }\n\n Object.assign(currentContext, context)\n return currentContext\n}\n","import {getOrionAsyncContext} from '../asyncContext'\n\nexport function getAsyncContextLabel(): string {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return ''\n\n const {controllerType} = asyncContext\n\n switch (controllerType) {\n case 'job':\n return `${controllerType}:${asyncContext.jobName}`\n case 'route':\n return `${controllerType}:${asyncContext.pathname}`\n case 'resolver':\n return asyncContext.resolverName\n ? `${controllerType}:${asyncContext.resolverName}`\n : controllerType\n case 'modelResolver':\n return asyncContext.modelResolverName\n ? `${controllerType}:${asyncContext.modelName}:${asyncContext.modelResolverName}`\n : controllerType\n case 'subscription':\n return `${controllerType}:${asyncContext.subscriptionName}`\n case 'echo':\n return `${controllerType}:${asyncContext.echoName}`\n default:\n return controllerType\n }\n}\n","import util from 'node:util'\nimport {isEmpty} from 'rambdax'\n\nexport function getMetadataText(metadata: any): string {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value, {colors: true})\n }\n return `${util.inspect(value, {colors: true})} ${util.inspect(rest, {colors: true})}`\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function formatStack(stack: string): string {\n if (!stack) return ''\n\n const lines = stack.split('\\n')\n const errorLine = lines[0]\n const stackLines = lines.slice(1)\n\n // ANSI codes\n const dim = '\\x1b[2m'\n const reset = '\\x1b[0m'\n const cyan = '\\x1b[36m'\n const yellow = '\\x1b[33m'\n const gray = '\\x1b[90m'\n\n const formattedStackLines = stackLines.map(line => {\n if (!line.trim()) return ''\n\n // Match different stack trace formats\n // Format: at functionName (path/file.ts:line:col)\n const match1 = line.match(/^(\\s+at\\s+)(.+?)(\\s+\\()([^)]+)(\\))/)\n if (match1) {\n const [, atSpace, funcName, openParen, filePath, closeParen] = match1\n const fileMatch = filePath.match(/^(.*):(\\d+):(\\d+)$/)\n if (fileMatch) {\n const [, file, lineNum, colNum] = fileMatch\n return `${gray} ${atSpace}${reset}${dim}${funcName}${reset} ${gray}${openParen}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${gray}${closeParen}${reset}`\n }\n }\n\n // Format: at path/file.ts:line:col\n const match2 = line.match(/^(\\s+at\\s+)([^(]+):(\\d+):(\\d+)/)\n if (match2) {\n const [, atSpace, file, lineNum, colNum] = match2\n return `${gray} ${atSpace}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${reset}`\n }\n\n // Default: just dim the whole line\n return `${gray} ${line.trim()}${reset}`\n })\n\n return `\\n${errorLine}\\n${formattedStackLines.filter(Boolean).join('\\n')}`\n}\n","import {format, Logform} from 'winston'\nimport {getOrionAsyncContext} from '../asyncContext'\n\nexport const enrichWithAsyncContext: Logform.FormatWrap = format(info => {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return info\n\n const contextData: any = {\n controllerType: asyncContext.controllerType,\n contextId: asyncContext.contextId,\n }\n\n // Add controller-specific fields\n switch (asyncContext.controllerType) {\n case 'job':\n contextData.jobName = asyncContext.jobName\n break\n case 'route':\n contextData.routeName = asyncContext.routeName\n contextData.pathname = asyncContext.pathname\n break\n case 'resolver':\n if (asyncContext.resolverName) {\n contextData.resolverName = asyncContext.resolverName\n }\n break\n case 'modelResolver':\n if (asyncContext.modelName) {\n contextData.modelName = asyncContext.modelName\n }\n if (asyncContext.modelResolverName) {\n contextData.modelResolverName = asyncContext.modelResolverName\n }\n break\n case 'subscription':\n contextData.subscriptionName = asyncContext.subscriptionName\n break\n case 'echo':\n contextData.echoName = asyncContext.echoName\n break\n }\n\n // Extract userId from viewer if available\n if (asyncContext.viewer && typeof asyncContext.viewer === 'object') {\n const viewer = asyncContext.viewer as any\n if (viewer.userId) {\n contextData.userId = viewer.userId\n } else if (viewer._id) {\n contextData.userId = viewer._id\n } else if (viewer.id) {\n contextData.userId = viewer.id\n }\n }\n\n info.asyncContext = contextData\n\n return info\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID\n ? textConsoleTransport\n : jsonConsoleTransport,\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports,\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n winstonLogger.level = level\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n },\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n path = path.replace(`${process.cwd()}/`, '')\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('node_modules/@orion-js/')) {\n const after = path.split('node_modules/@orion-js/')[1]\n const onlyPackageName = after.split('/')[0]\n return `@orion-js/${onlyPackageName}`\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n if (path.includes('.pnpm/@orion-js+')) {\n return `@orion-js/${path.split('.pnpm/@orion-js+')[1].split('@')[0]}`\n }\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n return path\n}\n"],"mappings":"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","names":["winston","import_winston","import_winston","opentelemetry","metadata","util","import_winston","import_winston","transports","winstonCreateLogger","logger","module","metadata"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/formats/consoleFormats.ts","../src/formats/winstonFormats.ts","../src/asyncContext.ts","../src/formats/getAsyncContextLabel.ts","../src/formats/getMetadataText.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/formats/formatStack.ts","../src/formats/enrichWithAsyncContext.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\nexport * from './asyncContext'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport {opentelemetryContext, metaError, asyncContextFormat} from './winstonFormats'\nimport {getMetadataText} from './getMetadataText'\nimport {formatStack} from './formatStack'\nimport {enrichWithAsyncContext} from './enrichWithAsyncContext'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nexport const textConsoleFormat: any = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n asyncContextFormat(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? formatStack(info.stack) : ''\n const value = getMetadataText(info.metadata)\n const contextLabel = info.context ? `[${info.context}]` : ''\n\n const mainLine = [\n `[${info.level}]`,\n `[${timeLabel}]`,\n contextLabel,\n fileNameLabel,\n info.message,\n ]\n .filter(Boolean)\n .join(' ')\n\n const valueLine = value ? `\\n${value}` : ''\n\n return `${mainLine}${valueLine}${stack}`\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import {format, Logform} from 'winston'\nimport opentelemetry, {Span} from '@opentelemetry/api'\nimport {getAsyncContextLabel} from './getAsyncContextLabel'\n\nexport const opentelemetryContext: Logform.FormatWrap = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nexport const metaError: Logform.FormatWrap = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const asyncContextFormat: Logform.FormatWrap = format(info => {\n if (!info.context) {\n info.context = getAsyncContextLabel()\n }\n return info\n})\n\nexport const sentryFormat: Logform.FormatWrap = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n","import {AsyncLocalStorage} from 'node:async_hooks'\nimport {randomUUID} from 'node:crypto'\n\ninterface BaseOrionAsyncContext {\n contextId: string\n viewer?: unknown\n params?: unknown\n}\n\nexport interface JobAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'job'\n jobName: string\n}\n\nexport interface RouteAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'route'\n routeName: string\n pathname: string\n}\n\nexport interface ResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'resolver'\n resolverName?: string\n}\n\nexport interface ModelResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'modelResolver'\n modelName?: string\n modelResolverName?: string\n parentData?: unknown\n}\n\nexport interface SubscriptionAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'subscription'\n subscriptionName: string\n}\n\nexport interface EchoAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'echo'\n echoName: string\n}\n\nexport type OrionAsyncContext =\n | JobAsyncContext\n | RouteAsyncContext\n | ResolverAsyncContext\n | ModelResolverAsyncContext\n | SubscriptionAsyncContext\n | EchoAsyncContext\n\nconst storage: AsyncLocalStorage<OrionAsyncContext> = new AsyncLocalStorage()\n\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<JobAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<RouteAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ModelResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<SubscriptionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<EchoAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<OrionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn> {\n const contextWithId = {\n contextId: randomUUID(),\n ...context,\n } as OrionAsyncContext\n return await storage.run(contextWithId, async () => {\n return await callback()\n })\n}\n\nexport const getOrionAsyncContext = (): OrionAsyncContext | undefined => {\n return storage.getStore()\n}\n\nexport const updateOrionAsyncContext = (\n context: Partial<OrionAsyncContext>,\n): OrionAsyncContext | undefined => {\n const currentContext: OrionAsyncContext | undefined = storage.getStore()\n if (!currentContext) {\n return undefined\n }\n\n Object.assign(currentContext, context)\n return currentContext\n}\n","import {getOrionAsyncContext} from '../asyncContext'\n\nexport function getAsyncContextLabel(): string {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return ''\n\n const {controllerType} = asyncContext\n\n switch (controllerType) {\n case 'job':\n return `${controllerType}:${asyncContext.jobName}`\n case 'route':\n return `${controllerType}:${asyncContext.pathname}`\n case 'resolver':\n return asyncContext.resolverName\n ? `${controllerType}:${asyncContext.resolverName}`\n : controllerType\n case 'modelResolver':\n return asyncContext.modelResolverName\n ? `${controllerType}:${asyncContext.modelName}:${asyncContext.modelResolverName}`\n : controllerType\n case 'subscription':\n return `${controllerType}:${asyncContext.subscriptionName}`\n case 'echo':\n return `${controllerType}:${asyncContext.echoName}`\n default:\n return controllerType\n }\n}\n","import util from 'node:util'\nimport {isEmpty} from 'rambdax'\n\nexport function getMetadataText(metadata: any): string {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value, {colors: true})\n }\n return `${util.inspect(value, {colors: true})} ${util.inspect(rest, {colors: true})}`\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function formatStack(stack: string): string {\n if (!stack) return ''\n\n const lines = stack.split('\\n')\n const errorLine = lines[0]\n const stackLines = lines.slice(1)\n\n // ANSI codes\n const dim = '\\x1b[2m'\n const reset = '\\x1b[0m'\n const cyan = '\\x1b[36m'\n const yellow = '\\x1b[33m'\n const gray = '\\x1b[90m'\n\n const formattedStackLines = stackLines.map(line => {\n if (!line.trim()) return ''\n\n // Match different stack trace formats\n // Format: at functionName (path/file.ts:line:col)\n const match1 = line.match(/^(\\s+at\\s+)(.+?)(\\s+\\()([^)]+)(\\))/)\n if (match1) {\n const [, atSpace, funcName, openParen, filePath, closeParen] = match1\n const fileMatch = filePath.match(/^(.*):(\\d+):(\\d+)$/)\n if (fileMatch) {\n const [, file, lineNum, colNum] = fileMatch\n return `${gray} ${atSpace}${reset}${dim}${funcName}${reset} ${gray}${openParen}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${gray}${closeParen}${reset}`\n }\n }\n\n // Format: at path/file.ts:line:col\n const match2 = line.match(/^(\\s+at\\s+)([^(]+):(\\d+):(\\d+)/)\n if (match2) {\n const [, atSpace, file, lineNum, colNum] = match2\n return `${gray} ${atSpace}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${reset}`\n }\n\n // Default: just dim the whole line\n return `${gray} ${line.trim()}${reset}`\n })\n\n return `\\n${errorLine}\\n${formattedStackLines.filter(Boolean).join('\\n')}`\n}\n","import {format, Logform} from 'winston'\nimport {getOrionAsyncContext} from '../asyncContext'\n\nexport const enrichWithAsyncContext: Logform.FormatWrap = format(info => {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return info\n\n const contextData: any = {\n controllerType: asyncContext.controllerType,\n contextId: asyncContext.contextId,\n }\n\n // Add controller-specific fields\n switch (asyncContext.controllerType) {\n case 'job':\n contextData.jobName = asyncContext.jobName\n break\n case 'route':\n contextData.routeName = asyncContext.routeName\n contextData.pathname = asyncContext.pathname\n break\n case 'resolver':\n if (asyncContext.resolverName) {\n contextData.resolverName = asyncContext.resolverName\n }\n break\n case 'modelResolver':\n if (asyncContext.modelName) {\n contextData.modelName = asyncContext.modelName\n }\n if (asyncContext.modelResolverName) {\n contextData.modelResolverName = asyncContext.modelResolverName\n }\n break\n case 'subscription':\n contextData.subscriptionName = asyncContext.subscriptionName\n break\n case 'echo':\n contextData.echoName = asyncContext.echoName\n break\n }\n\n // Extract userId from viewer if available\n if (asyncContext.viewer && typeof asyncContext.viewer === 'object') {\n const viewer = asyncContext.viewer as any\n if (viewer.userId) {\n contextData.userId = viewer.userId\n } else if (viewer._id) {\n contextData.userId = viewer._id\n } else if (viewer.id) {\n contextData.userId = viewer.id\n }\n }\n\n info.asyncContext = contextData\n\n return info\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID\n ? textConsoleTransport\n : jsonConsoleTransport,\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports,\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n winstonLogger.level = level\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n },\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n path = path.replace(`${process.cwd()}/`, '')\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('node_modules/@orion-js/')) {\n const after = path.split('node_modules/@orion-js/')[1]\n const onlyPackageName = after.split('/')[0]\n return `@orion-js/${onlyPackageName}`\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n if (path.includes('.pnpm/@orion-js+')) {\n return `@orion-js/${path.split('.pnpm/@orion-js+')[1].split('@')[0]}`\n }\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n return path\n}\n"],"mappings":"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","names":["winston","import_winston","import_winston","opentelemetry","metadata","util","import_winston","import_winston","transports","winstonCreateLogger","logger","module","metadata"]}
package/dist/index.d.cts CHANGED
@@ -8,6 +8,8 @@ declare const jsonConsoleTransport: transports.ConsoleTransportInstance;
8
8
 
9
9
  declare const sentryFormat: Logform.FormatWrap;
10
10
 
11
+ declare function getAsyncContextLabel(): string;
12
+
11
13
  type LogFunction = (message: string, metadata?: any) => void;
12
14
  interface OrionLogger {
13
15
  debug: LogFunction;
@@ -67,4 +69,4 @@ declare function runWithOrionAsyncContext<TReturn>(context: Omit<EchoAsyncContex
67
69
  declare const getOrionAsyncContext: () => OrionAsyncContext | undefined;
68
70
  declare const updateOrionAsyncContext: (context: Partial<OrionAsyncContext>) => OrionAsyncContext | undefined;
69
71
 
70
- export { type EchoAsyncContext, type JobAsyncContext, type LogFunction, type ModelResolverAsyncContext, type OrionAsyncContext, type OrionLogger, type ResolverAsyncContext, type RouteAsyncContext, type SubscriptionAsyncContext, addTransport, configureLogger, getLogger, getOrionAsyncContext, jsonConsoleFormat, jsonConsoleTransport, logger, runWithOrionAsyncContext, sentryFormat, setLogLevel, textConsoleFormat, textConsoleTransport, updateOrionAsyncContext, winstonLogger };
72
+ export { type EchoAsyncContext, type JobAsyncContext, type LogFunction, type ModelResolverAsyncContext, type OrionAsyncContext, type OrionLogger, type ResolverAsyncContext, type RouteAsyncContext, type SubscriptionAsyncContext, addTransport, configureLogger, getAsyncContextLabel, getLogger, getOrionAsyncContext, jsonConsoleFormat, jsonConsoleTransport, logger, runWithOrionAsyncContext, sentryFormat, setLogLevel, textConsoleFormat, textConsoleTransport, updateOrionAsyncContext, winstonLogger };
package/dist/index.d.ts CHANGED
@@ -8,6 +8,8 @@ declare const jsonConsoleTransport: transports.ConsoleTransportInstance;
8
8
 
9
9
  declare const sentryFormat: Logform.FormatWrap;
10
10
 
11
+ declare function getAsyncContextLabel(): string;
12
+
11
13
  type LogFunction = (message: string, metadata?: any) => void;
12
14
  interface OrionLogger {
13
15
  debug: LogFunction;
@@ -67,4 +69,4 @@ declare function runWithOrionAsyncContext<TReturn>(context: Omit<EchoAsyncContex
67
69
  declare const getOrionAsyncContext: () => OrionAsyncContext | undefined;
68
70
  declare const updateOrionAsyncContext: (context: Partial<OrionAsyncContext>) => OrionAsyncContext | undefined;
69
71
 
70
- export { type EchoAsyncContext, type JobAsyncContext, type LogFunction, type ModelResolverAsyncContext, type OrionAsyncContext, type OrionLogger, type ResolverAsyncContext, type RouteAsyncContext, type SubscriptionAsyncContext, addTransport, configureLogger, getLogger, getOrionAsyncContext, jsonConsoleFormat, jsonConsoleTransport, logger, runWithOrionAsyncContext, sentryFormat, setLogLevel, textConsoleFormat, textConsoleTransport, updateOrionAsyncContext, winstonLogger };
72
+ export { type EchoAsyncContext, type JobAsyncContext, type LogFunction, type ModelResolverAsyncContext, type OrionAsyncContext, type OrionLogger, type ResolverAsyncContext, type RouteAsyncContext, type SubscriptionAsyncContext, addTransport, configureLogger, getAsyncContextLabel, getLogger, getOrionAsyncContext, jsonConsoleFormat, jsonConsoleTransport, logger, runWithOrionAsyncContext, sentryFormat, setLogLevel, textConsoleFormat, textConsoleTransport, updateOrionAsyncContext, winstonLogger };
package/dist/index.js CHANGED
@@ -245,18 +245,17 @@ var textConsoleFormat = combine(
245
245
  const fileNameLabel = info.fileName ? `[${info.fileName}]` : "";
246
246
  const stack = info.stack ? formatStack(info.stack) : "";
247
247
  const value = getMetadataText(info.metadata);
248
- const traceId = info.trace_id ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}` : "";
249
- const context = [info.context, traceId].filter(Boolean).join(" ").trim();
250
- const contextLabel = context ? `[${context}]` : "";
251
- return [
248
+ const contextLabel = info.context ? `[${info.context}]` : "";
249
+ const mainLine = [
252
250
  `[${info.level}]`,
253
251
  `[${timeLabel}]`,
254
252
  contextLabel,
255
253
  fileNameLabel,
256
- info.message,
257
- value,
258
- stack
254
+ info.message
259
255
  ].filter(Boolean).join(" ");
256
+ const valueLine = value ? `
257
+ ${value}` : "";
258
+ return `${mainLine}${valueLine}${stack}`;
260
259
  })
261
260
  );
262
261
  var textConsoleTransport = new transports.Console({
@@ -376,6 +375,7 @@ var logger = createLogger(winstonLogger);
376
375
  export {
377
376
  addTransport,
378
377
  configureLogger,
378
+ getAsyncContextLabel,
379
379
  getLogger,
380
380
  getOrionAsyncContext,
381
381
  jsonConsoleFormat,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/formats/consoleFormats.ts","../src/formats/winstonFormats.ts","../src/asyncContext.ts","../src/formats/getAsyncContextLabel.ts","../src/formats/getMetadataText.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/formats/formatStack.ts","../src/formats/enrichWithAsyncContext.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\nexport * from './asyncContext'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport {opentelemetryContext, metaError, asyncContextFormat} from './winstonFormats'\nimport {getMetadataText} from './getMetadataText'\nimport {formatStack} from './formatStack'\nimport {enrichWithAsyncContext} from './enrichWithAsyncContext'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nexport const textConsoleFormat: any = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n asyncContextFormat(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? formatStack(info.stack) : ''\n const value = getMetadataText(info.metadata)\n const traceId = info.trace_id\n ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}`\n : ''\n const context = [info.context, traceId].filter(Boolean).join(' ').trim()\n const contextLabel = context ? `[${context}]` : ''\n return [\n `[${info.level}]`,\n `[${timeLabel}]`,\n contextLabel,\n fileNameLabel,\n info.message,\n value,\n stack,\n ]\n .filter(Boolean)\n .join(' ')\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import {format, Logform} from 'winston'\nimport opentelemetry, {Span} from '@opentelemetry/api'\nimport {getAsyncContextLabel} from './getAsyncContextLabel'\n\nexport const opentelemetryContext: Logform.FormatWrap = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nexport const metaError: Logform.FormatWrap = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const asyncContextFormat: Logform.FormatWrap = format(info => {\n if (!info.context) {\n info.context = getAsyncContextLabel()\n }\n return info\n})\n\nexport const sentryFormat: Logform.FormatWrap = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n","import {AsyncLocalStorage} from 'node:async_hooks'\nimport {randomUUID} from 'node:crypto'\n\ninterface BaseOrionAsyncContext {\n contextId: string\n viewer?: unknown\n params?: unknown\n}\n\nexport interface JobAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'job'\n jobName: string\n}\n\nexport interface RouteAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'route'\n routeName: string\n pathname: string\n}\n\nexport interface ResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'resolver'\n resolverName?: string\n}\n\nexport interface ModelResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'modelResolver'\n modelName?: string\n modelResolverName?: string\n parentData?: unknown\n}\n\nexport interface SubscriptionAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'subscription'\n subscriptionName: string\n}\n\nexport interface EchoAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'echo'\n echoName: string\n}\n\nexport type OrionAsyncContext =\n | JobAsyncContext\n | RouteAsyncContext\n | ResolverAsyncContext\n | ModelResolverAsyncContext\n | SubscriptionAsyncContext\n | EchoAsyncContext\n\nconst storage: AsyncLocalStorage<OrionAsyncContext> = new AsyncLocalStorage()\n\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<JobAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<RouteAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ModelResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<SubscriptionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<EchoAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<OrionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn> {\n const contextWithId = {\n contextId: randomUUID(),\n ...context,\n } as OrionAsyncContext\n return await storage.run(contextWithId, async () => {\n return await callback()\n })\n}\n\nexport const getOrionAsyncContext = (): OrionAsyncContext | undefined => {\n return storage.getStore()\n}\n\nexport const updateOrionAsyncContext = (\n context: Partial<OrionAsyncContext>,\n): OrionAsyncContext | undefined => {\n const currentContext: OrionAsyncContext | undefined = storage.getStore()\n if (!currentContext) {\n return undefined\n }\n\n Object.assign(currentContext, context)\n return currentContext\n}\n","import {getOrionAsyncContext} from '../asyncContext'\n\nexport function getAsyncContextLabel(): string {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return ''\n\n const {controllerType} = asyncContext\n\n switch (controllerType) {\n case 'job':\n return `${controllerType}:${asyncContext.jobName}`\n case 'route':\n return `${controllerType}:${asyncContext.pathname}`\n case 'resolver':\n return asyncContext.resolverName\n ? `${controllerType}:${asyncContext.resolverName}`\n : controllerType\n case 'modelResolver':\n return asyncContext.modelResolverName\n ? `${controllerType}:${asyncContext.modelName}:${asyncContext.modelResolverName}`\n : controllerType\n case 'subscription':\n return `${controllerType}:${asyncContext.subscriptionName}`\n case 'echo':\n return `${controllerType}:${asyncContext.echoName}`\n default:\n return controllerType\n }\n}\n","import util from 'node:util'\nimport {isEmpty} from 'rambdax'\n\nexport function getMetadataText(metadata: any): string {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value, {colors: true})\n }\n return `${util.inspect(value, {colors: true})} ${util.inspect(rest, {colors: true})}`\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function formatStack(stack: string): string {\n if (!stack) return ''\n\n const lines = stack.split('\\n')\n const errorLine = lines[0]\n const stackLines = lines.slice(1)\n\n // ANSI codes\n const dim = '\\x1b[2m'\n const reset = '\\x1b[0m'\n const cyan = '\\x1b[36m'\n const yellow = '\\x1b[33m'\n const gray = '\\x1b[90m'\n\n const formattedStackLines = stackLines.map(line => {\n if (!line.trim()) return ''\n\n // Match different stack trace formats\n // Format: at functionName (path/file.ts:line:col)\n const match1 = line.match(/^(\\s+at\\s+)(.+?)(\\s+\\()([^)]+)(\\))/)\n if (match1) {\n const [, atSpace, funcName, openParen, filePath, closeParen] = match1\n const fileMatch = filePath.match(/^(.*):(\\d+):(\\d+)$/)\n if (fileMatch) {\n const [, file, lineNum, colNum] = fileMatch\n return `${gray} ${atSpace}${reset}${dim}${funcName}${reset} ${gray}${openParen}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${gray}${closeParen}${reset}`\n }\n }\n\n // Format: at path/file.ts:line:col\n const match2 = line.match(/^(\\s+at\\s+)([^(]+):(\\d+):(\\d+)/)\n if (match2) {\n const [, atSpace, file, lineNum, colNum] = match2\n return `${gray} ${atSpace}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${reset}`\n }\n\n // Default: just dim the whole line\n return `${gray} ${line.trim()}${reset}`\n })\n\n return `\\n${errorLine}\\n${formattedStackLines.filter(Boolean).join('\\n')}`\n}\n","import {format, Logform} from 'winston'\nimport {getOrionAsyncContext} from '../asyncContext'\n\nexport const enrichWithAsyncContext: Logform.FormatWrap = format(info => {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return info\n\n const contextData: any = {\n controllerType: asyncContext.controllerType,\n contextId: asyncContext.contextId,\n }\n\n // Add controller-specific fields\n switch (asyncContext.controllerType) {\n case 'job':\n contextData.jobName = asyncContext.jobName\n break\n case 'route':\n contextData.routeName = asyncContext.routeName\n contextData.pathname = asyncContext.pathname\n break\n case 'resolver':\n if (asyncContext.resolverName) {\n contextData.resolverName = asyncContext.resolverName\n }\n break\n case 'modelResolver':\n if (asyncContext.modelName) {\n contextData.modelName = asyncContext.modelName\n }\n if (asyncContext.modelResolverName) {\n contextData.modelResolverName = asyncContext.modelResolverName\n }\n break\n case 'subscription':\n contextData.subscriptionName = asyncContext.subscriptionName\n break\n case 'echo':\n contextData.echoName = asyncContext.echoName\n break\n }\n\n // Extract userId from viewer if available\n if (asyncContext.viewer && typeof asyncContext.viewer === 'object') {\n const viewer = asyncContext.viewer as any\n if (viewer.userId) {\n contextData.userId = viewer.userId\n } else if (viewer._id) {\n contextData.userId = viewer._id\n } else if (viewer.id) {\n contextData.userId = viewer.id\n }\n }\n\n info.asyncContext = contextData\n\n return info\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID\n ? textConsoleTransport\n : jsonConsoleTransport,\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports,\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n winstonLogger.level = level\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n },\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n path = path.replace(`${process.cwd()}/`, '')\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('node_modules/@orion-js/')) {\n const after = path.split('node_modules/@orion-js/')[1]\n const onlyPackageName = after.split('/')[0]\n return `@orion-js/${onlyPackageName}`\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n if (path.includes('.pnpm/@orion-js+')) {\n return `@orion-js/${path.split('.pnpm/@orion-js+')[1].split('@')[0]}`\n }\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n return path\n}\n"],"mappings":"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","names":["winston","format","metadata","format","format","format","format","transports","format","logger","metadata"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/formats/consoleFormats.ts","../src/formats/winstonFormats.ts","../src/asyncContext.ts","../src/formats/getAsyncContextLabel.ts","../src/formats/getMetadataText.ts","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js","../src/formats/formatStack.ts","../src/formats/enrichWithAsyncContext.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\nexport * from './asyncContext'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport {opentelemetryContext, metaError, asyncContextFormat} from './winstonFormats'\nimport {getMetadataText} from './getMetadataText'\nimport {formatStack} from './formatStack'\nimport {enrichWithAsyncContext} from './enrichWithAsyncContext'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nexport const textConsoleFormat: any = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n asyncContextFormat(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}:${date.getSeconds().toString().padStart(2, '0')}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? formatStack(info.stack) : ''\n const value = getMetadataText(info.metadata)\n const contextLabel = info.context ? `[${info.context}]` : ''\n\n const mainLine = [\n `[${info.level}]`,\n `[${timeLabel}]`,\n contextLabel,\n fileNameLabel,\n info.message,\n ]\n .filter(Boolean)\n .join(' ')\n\n const valueLine = value ? `\\n${value}` : ''\n\n return `${mainLine}${valueLine}${stack}`\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import {format, Logform} from 'winston'\nimport opentelemetry, {Span} from '@opentelemetry/api'\nimport {getAsyncContextLabel} from './getAsyncContextLabel'\n\nexport const opentelemetryContext: Logform.FormatWrap = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nexport const metaError: Logform.FormatWrap = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const asyncContextFormat: Logform.FormatWrap = format(info => {\n if (!info.context) {\n info.context = getAsyncContextLabel()\n }\n return info\n})\n\nexport const sentryFormat: Logform.FormatWrap = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n","import {AsyncLocalStorage} from 'node:async_hooks'\nimport {randomUUID} from 'node:crypto'\n\ninterface BaseOrionAsyncContext {\n contextId: string\n viewer?: unknown\n params?: unknown\n}\n\nexport interface JobAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'job'\n jobName: string\n}\n\nexport interface RouteAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'route'\n routeName: string\n pathname: string\n}\n\nexport interface ResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'resolver'\n resolverName?: string\n}\n\nexport interface ModelResolverAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'modelResolver'\n modelName?: string\n modelResolverName?: string\n parentData?: unknown\n}\n\nexport interface SubscriptionAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'subscription'\n subscriptionName: string\n}\n\nexport interface EchoAsyncContext extends BaseOrionAsyncContext {\n controllerType: 'echo'\n echoName: string\n}\n\nexport type OrionAsyncContext =\n | JobAsyncContext\n | RouteAsyncContext\n | ResolverAsyncContext\n | ModelResolverAsyncContext\n | SubscriptionAsyncContext\n | EchoAsyncContext\n\nconst storage: AsyncLocalStorage<OrionAsyncContext> = new AsyncLocalStorage()\n\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<JobAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<RouteAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<ModelResolverAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<SubscriptionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<EchoAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn>\nexport async function runWithOrionAsyncContext<TReturn>(\n context: Omit<OrionAsyncContext, 'contextId'>,\n callback: () => Promise<TReturn> | TReturn,\n): Promise<TReturn> {\n const contextWithId = {\n contextId: randomUUID(),\n ...context,\n } as OrionAsyncContext\n return await storage.run(contextWithId, async () => {\n return await callback()\n })\n}\n\nexport const getOrionAsyncContext = (): OrionAsyncContext | undefined => {\n return storage.getStore()\n}\n\nexport const updateOrionAsyncContext = (\n context: Partial<OrionAsyncContext>,\n): OrionAsyncContext | undefined => {\n const currentContext: OrionAsyncContext | undefined = storage.getStore()\n if (!currentContext) {\n return undefined\n }\n\n Object.assign(currentContext, context)\n return currentContext\n}\n","import {getOrionAsyncContext} from '../asyncContext'\n\nexport function getAsyncContextLabel(): string {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return ''\n\n const {controllerType} = asyncContext\n\n switch (controllerType) {\n case 'job':\n return `${controllerType}:${asyncContext.jobName}`\n case 'route':\n return `${controllerType}:${asyncContext.pathname}`\n case 'resolver':\n return asyncContext.resolverName\n ? `${controllerType}:${asyncContext.resolverName}`\n : controllerType\n case 'modelResolver':\n return asyncContext.modelResolverName\n ? `${controllerType}:${asyncContext.modelName}:${asyncContext.modelResolverName}`\n : controllerType\n case 'subscription':\n return `${controllerType}:${asyncContext.subscriptionName}`\n case 'echo':\n return `${controllerType}:${asyncContext.echoName}`\n default:\n return controllerType\n }\n}\n","import util from 'node:util'\nimport {isEmpty} from 'rambdax'\n\nexport function getMetadataText(metadata: any): string {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value, {colors: true})\n }\n return `${util.inspect(value, {colors: true})} ${util.inspect(rest, {colors: true})}`\n}\n","export function type(input){\n if (input === null){\n return 'Null'\n } else if (input === undefined){\n return 'Undefined'\n } else if (Number.isNaN(input)){\n return 'NaN'\n }\n const typeResult = Object.prototype.toString.call(input).slice(8, -1)\n\n return typeResult === 'AsyncFunction' ? 'Promise' : typeResult\n}\n","import { type } from './type.js'\n\nexport function isEmpty(input){\n const inputType = type(input)\n if ([ 'Undefined', 'NaN', 'Number', 'Null' ].includes(inputType))\n return false\n if (!input) return true\n\n if (inputType === 'Object'){\n return Object.keys(input).length === 0\n }\n\n if (inputType === 'Array'){\n return input.length === 0\n }\n\n return false\n}\n","export function formatStack(stack: string): string {\n if (!stack) return ''\n\n const lines = stack.split('\\n')\n const errorLine = lines[0]\n const stackLines = lines.slice(1)\n\n // ANSI codes\n const dim = '\\x1b[2m'\n const reset = '\\x1b[0m'\n const cyan = '\\x1b[36m'\n const yellow = '\\x1b[33m'\n const gray = '\\x1b[90m'\n\n const formattedStackLines = stackLines.map(line => {\n if (!line.trim()) return ''\n\n // Match different stack trace formats\n // Format: at functionName (path/file.ts:line:col)\n const match1 = line.match(/^(\\s+at\\s+)(.+?)(\\s+\\()([^)]+)(\\))/)\n if (match1) {\n const [, atSpace, funcName, openParen, filePath, closeParen] = match1\n const fileMatch = filePath.match(/^(.*):(\\d+):(\\d+)$/)\n if (fileMatch) {\n const [, file, lineNum, colNum] = fileMatch\n return `${gray} ${atSpace}${reset}${dim}${funcName}${reset} ${gray}${openParen}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${gray}${closeParen}${reset}`\n }\n }\n\n // Format: at path/file.ts:line:col\n const match2 = line.match(/^(\\s+at\\s+)([^(]+):(\\d+):(\\d+)/)\n if (match2) {\n const [, atSpace, file, lineNum, colNum] = match2\n return `${gray} ${atSpace}${cyan}${file}${gray}:${yellow}${lineNum}:${colNum}${reset}`\n }\n\n // Default: just dim the whole line\n return `${gray} ${line.trim()}${reset}`\n })\n\n return `\\n${errorLine}\\n${formattedStackLines.filter(Boolean).join('\\n')}`\n}\n","import {format, Logform} from 'winston'\nimport {getOrionAsyncContext} from '../asyncContext'\n\nexport const enrichWithAsyncContext: Logform.FormatWrap = format(info => {\n const asyncContext = getOrionAsyncContext()\n if (!asyncContext) return info\n\n const contextData: any = {\n controllerType: asyncContext.controllerType,\n contextId: asyncContext.contextId,\n }\n\n // Add controller-specific fields\n switch (asyncContext.controllerType) {\n case 'job':\n contextData.jobName = asyncContext.jobName\n break\n case 'route':\n contextData.routeName = asyncContext.routeName\n contextData.pathname = asyncContext.pathname\n break\n case 'resolver':\n if (asyncContext.resolverName) {\n contextData.resolverName = asyncContext.resolverName\n }\n break\n case 'modelResolver':\n if (asyncContext.modelName) {\n contextData.modelName = asyncContext.modelName\n }\n if (asyncContext.modelResolverName) {\n contextData.modelResolverName = asyncContext.modelResolverName\n }\n break\n case 'subscription':\n contextData.subscriptionName = asyncContext.subscriptionName\n break\n case 'echo':\n contextData.echoName = asyncContext.echoName\n break\n }\n\n // Extract userId from viewer if available\n if (asyncContext.viewer && typeof asyncContext.viewer === 'object') {\n const viewer = asyncContext.viewer as any\n if (viewer.userId) {\n contextData.userId = viewer.userId\n } else if (viewer._id) {\n contextData.userId = viewer._id\n } else if (viewer.id) {\n contextData.userId = viewer.id\n }\n }\n\n info.asyncContext = contextData\n\n return info\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID\n ? textConsoleTransport\n : jsonConsoleTransport,\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports,\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n winstonLogger.level = level\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n },\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n path = path.replace(`${process.cwd()}/`, '')\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('node_modules/@orion-js/')) {\n const after = path.split('node_modules/@orion-js/')[1]\n const onlyPackageName = after.split('/')[0]\n return `@orion-js/${onlyPackageName}`\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n if (path.includes('.pnpm/@orion-js+')) {\n return `@orion-js/${path.split('.pnpm/@orion-js+')[1].split('@')[0]}`\n }\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n return path\n}\n"],"mappings":"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","names":["winston","format","metadata","format","format","format","format","transports","format","logger","metadata"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@orion-js/logger",
3
- "version": "4.1.0",
3
+ "version": "4.1.2",
4
4
  "main": "./dist/index.cjs",
5
5
  "author": "nicolaslopezj",
6
6
  "license": "MIT",