@orion-js/logger 4.2.0 → 4.3.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/dist/index.cjs CHANGED
@@ -155,7 +155,7 @@ var sentryFormat = (0, import_winston.format)((info) => {
155
155
  // src/formats/getMetadataText.ts
156
156
  var import_node_util = __toESM(require("util"), 1);
157
157
 
158
- // ../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js
158
+ // ../../node_modules/.bun/rambdax@11.3.1/node_modules/rambdax/src/type.js
159
159
  function type(input) {
160
160
  if (input === null) {
161
161
  return "Null";
@@ -168,7 +168,7 @@ function type(input) {
168
168
  return typeResult === "AsyncFunction" ? "Promise" : typeResult;
169
169
  }
170
170
 
171
- // ../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js
171
+ // ../../node_modules/.bun/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js
172
172
  function isEmpty(input) {
173
173
  const inputType = type(input);
174
174
  if (["Undefined", "NaN", "Number", "Null"].includes(inputType))
@@ -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 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\nconst messageFirstFormat = format((info: any) => {\n const {level, message, ...rest} = info\n return {level, message, ...rest}\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n messageFirstFormat(),\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.routeName}`\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/.bun/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.bun/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\nconst messageFirstFormat = format((info: any) => {\n const {level, message, ...rest} = info\n return {level, message, ...rest}\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n messageFirstFormat(),\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.routeName}`\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.js CHANGED
@@ -107,7 +107,7 @@ var sentryFormat = format((info) => {
107
107
  // src/formats/getMetadataText.ts
108
108
  import util from "util";
109
109
 
110
- // ../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/type.js
110
+ // ../../node_modules/.bun/rambdax@11.3.1/node_modules/rambdax/src/type.js
111
111
  function type(input) {
112
112
  if (input === null) {
113
113
  return "Null";
@@ -120,7 +120,7 @@ function type(input) {
120
120
  return typeResult === "AsyncFunction" ? "Promise" : typeResult;
121
121
  }
122
122
 
123
- // ../../node_modules/.pnpm/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js
123
+ // ../../node_modules/.bun/rambdax@11.3.1/node_modules/rambdax/src/isEmpty.js
124
124
  function isEmpty(input) {
125
125
  const inputType = type(input);
126
126
  if (["Undefined", "NaN", "Number", "Null"].includes(inputType))
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 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\nconst messageFirstFormat = format((info: any) => {\n const {level, message, ...rest} = info\n return {level, message, ...rest}\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n messageFirstFormat(),\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.routeName}`\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/.bun/rambdax@11.3.1/node_modules/rambdax/src/type.js","../../../node_modules/.bun/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\nconst messageFirstFormat = format((info: any) => {\n const {level, message, ...rest} = info\n return {level, message, ...rest}\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n enrichWithAsyncContext(),\n metaError(),\n timestamp(),\n messageFirstFormat(),\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.routeName}`\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,9 +1,16 @@
1
1
  {
2
2
  "name": "@orion-js/logger",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "main": "./dist/index.cjs",
5
5
  "author": "nicolaslopezj",
6
6
  "license": "MIT",
7
+ "scripts": {
8
+ "test": "bun test",
9
+ "prepare": "bun run build",
10
+ "clean": "rm -rf ./dist",
11
+ "build": "tsup",
12
+ "dev": "tsup --watch"
13
+ },
7
14
  "dependencies": {
8
15
  "@opentelemetry/api": "^1.9.0",
9
16
  "color": "^4.2.3",
@@ -13,8 +20,7 @@
13
20
  "devDependencies": {
14
21
  "@types/node": "^18.0.0",
15
22
  "tsup": "^8.0.1",
16
- "typescript": "^5.4.5",
17
- "vitest": "^3.0.8"
23
+ "typescript": "^5.4.5"
18
24
  },
19
25
  "publishConfig": {
20
26
  "access": "public"
@@ -30,12 +36,5 @@
30
36
  },
31
37
  "files": [
32
38
  "dist"
33
- ],
34
- "scripts": {
35
- "test": "vitest run",
36
- "clean": "rm -rf ./dist",
37
- "build": "tsup",
38
- "upgrade-interactive": "pnpm upgrade --interactive",
39
- "dev": "tsup --watch"
40
- }
41
- }
39
+ ]
40
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2022 Orionjs Team
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.