Skip to content

Commit

Permalink
feat: merge event logger opts to main logger opts
Browse files Browse the repository at this point in the history
  • Loading branch information
mav-rik committed Apr 12, 2023
1 parent ee0ad12 commit c672253
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 12 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"devDependencies": {
"@microsoft/api-extractor": "^7.33.6",
"@prostojs/dye": "^0.3.0",
"@prostojs/logger": "^0.3.3",
"@prostojs/logger": "^0.3.4",
"@prostojs/router": "^0.0.16",
"@rollup/plugin-commonjs": "^23.0.2",
"@rollup/plugin-node-resolve": "^15.0.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/event-cli/src/cli-adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export class WooksCli extends WooksAdapterBase {
protected logger: TConsoleBase

constructor(protected opts?: TWooksCliOptions, wooks?: Wooks | WooksAdapterBase) {
super(wooks)
super(wooks, opts?.logger)
this.logger = opts?.logger || this.getLogger('wooks-cli')
}

Expand All @@ -31,7 +31,7 @@ export class WooksCli extends WooksAdapterBase {
const firstFlagIndex = argv.findIndex(a => a.startsWith('-')) + 1
const pathParams = (firstFlagIndex ? argv.slice(0, firstFlagIndex - 1) : argv)
const path = '/' + pathParams.map(v => encodeURIComponent(v)).join('/')
const { restoreCtx, clearCtx } = createCliContext({ argv }, this.opts?.eventOptions || {})
const { restoreCtx, clearCtx } = createCliContext({ argv }, this.mergeEventOptions(this.opts?.eventOptions))
const handlers = this.wooks.lookup('CLI', path)
if (handlers) {
try {
Expand Down
4 changes: 2 additions & 2 deletions packages/event-http/src/http-adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export class WooksHttp extends WooksAdapterBase {
protected logger: TConsoleBase

constructor(protected opts?: TWooksHttpOptions, wooks?: Wooks | WooksAdapterBase) {
super(wooks)
super(wooks, opts?.logger)
this.logger = opts?.logger || this.getLogger('wooks-http')
}

Expand Down Expand Up @@ -90,7 +90,7 @@ export class WooksHttp extends WooksAdapterBase {

getServerCb() {
return async (req: IncomingMessage, res: ServerResponse) => {
const { restoreCtx, clearCtx } = createHttpContext({ req, res }, this.opts?.eventOptions || {})
const { restoreCtx, clearCtx } = createHttpContext({ req, res }, this.mergeEventOptions(this.opts?.eventOptions))
const handlers = this.wooks.lookup(req.method as string, req.url as string)
if (handlers) {
try {
Expand Down
37 changes: 30 additions & 7 deletions packages/wooks/src/wooks.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ProstoRouter, THttpMethod } from '@prostojs/router'
import { TWooksHandler } from './types'
import { useEventContext } from '@wooksjs/event-core'
import { ProstoLogger, TConsoleBase } from '@prostojs/logger'
import { TEventOptions, useEventContext } from '@wooksjs/event-core'
import { ProstoLogger, TConsoleBase, TProstoLoggerOptions } from '@prostojs/logger'
import { getDefaultLogger } from 'common/logger'

export interface TWooksOptions {
Expand Down Expand Up @@ -31,6 +31,13 @@ export class Wooks {
return this.logger
}

public getLoggerOptions(): TProstoLoggerOptions {
if (this.logger instanceof ProstoLogger) {
return this.logger.getOptions()
}
return {} as TProstoLoggerOptions
}

public lookup(method: string, path: string) {
const found = this.getRouter().lookup(method as THttpMethod, path || '')
useEventContext().store('routeParams').value = found?.ctx?.params || {}
Expand All @@ -44,23 +51,25 @@ export class Wooks {

let gWooks: Wooks

export function getGlobalWooks(): Wooks {
export function getGlobalWooks(logger?: TConsoleBase): Wooks {
if (!gWooks) {
gWooks = new Wooks()
gWooks = new Wooks({
logger,
})
}
return gWooks
}

export class WooksAdapterBase {
protected wooks: Wooks

constructor(wooks?: Wooks | WooksAdapterBase) {
constructor(wooks?: Wooks | WooksAdapterBase, logger?: TConsoleBase) {
if (wooks && wooks instanceof WooksAdapterBase) {
this.wooks = wooks.getWooks()
} else if (wooks && wooks instanceof Wooks) {
this.wooks = wooks
} else {
this.wooks = getGlobalWooks()
this.wooks = getGlobalWooks(logger)
}
}

Expand All @@ -69,7 +78,21 @@ export class WooksAdapterBase {
}

public getLogger(topic: string) {
return this.wooks.getLogger(topic)
return this.getWooks().getLogger(topic)
}

protected getLoggerOptions() {
return this.getWooks().getLoggerOptions()
}

protected mergeEventOptions(opts?: TEventOptions): TEventOptions {
return {
...(opts || {}),
eventLogger: {
...this.getLoggerOptions(),
...( opts?.eventLogger || {} ),
} as TEventOptions['eventLogger'],
}
}

public on<ResType = unknown, ParamsType = Record<string, string | string[]>>(method: string, path: string, handler: TWooksHandler<ResType>) {
Expand Down

0 comments on commit c672253

Please sign in to comment.