@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 +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/package.json +11 -12
- package/LICENSE +0 -21
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/.
|
|
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/.
|
|
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))
|
package/dist/index.cjs.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","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/.
|
|
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/.
|
|
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.
|
|
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
|
-
|
|
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.
|