@navios/commander-tui 1.1.0 → 1.2.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/CHANGELOG.md +17 -0
- package/README.md +27 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/lib/index.cjs +321 -14
- package/lib/index.cjs.map +1 -1
- package/lib/index.d.cts +160 -126
- package/lib/index.d.cts.map +1 -1
- package/lib/index.d.mts +146 -112
- package/lib/index.d.mts.map +1 -1
- package/lib/index.mjs +316 -16
- package/lib/index.mjs.map +1 -1
- package/lib/{screen_manager_bridge-DT-l0rxa.mjs → screen_manager_bridge-Bk1i53h5.mjs} +1 -1
- package/lib/{screen_manager_bridge-D2BBwKcF.mjs → screen_manager_bridge-BwPVr0bX.mjs} +5 -3
- package/lib/screen_manager_bridge-BwPVr0bX.mjs.map +1 -0
- package/lib/{screen_manager_bridge-hMUrLiBP.cjs → screen_manager_bridge-CWxLO0CK.cjs} +5 -3
- package/lib/screen_manager_bridge-CWxLO0CK.cjs.map +1 -0
- package/lib/{screen_manager_bridge-Cp2p1Ix3.cjs → screen_manager_bridge-DXc57iXW.cjs} +1 -1
- package/package.json +1 -1
- package/src/__tests__/components/__snapshots__/filter_bar.spec.tsx.snap +2556 -0
- package/src/__tests__/components/__snapshots__/loading_message.spec.tsx.snap +1589 -0
- package/src/__tests__/components/__snapshots__/log_message.spec.tsx.snap +3681 -0
- package/src/__tests__/components/__snapshots__/progress_message.spec.tsx.snap +2002 -0
- package/src/__tests__/components/__snapshots__/prompt_renderer.spec.tsx.snap +3584 -0
- package/src/__tests__/components/__snapshots__/sidebar.spec.tsx.snap +3186 -0
- package/src/__tests__/services/logger.spec.ts +5 -3
- package/src/factories/index.ts +1 -0
- package/src/factories/isomorphic-logger.factory.ts +23 -0
- package/src/index.ts +5 -0
- package/src/interfaces/index.ts +1 -0
- package/src/interfaces/isomorphic-logger.ts +9 -0
- package/src/services/logger.ts +1 -1
- package/src/services/screen_manager.tsx +1 -1
- package/src/tokens/logger.ts +9 -0
- package/src/types/screen.types.ts +1 -1
- package/src/utils/format.ts +3 -2
- package/lib/screen_manager_bridge-D2BBwKcF.mjs.map +0 -1
- package/lib/screen_manager_bridge-hMUrLiBP.cjs.map +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
2
1
|
import { TestContainer } from '@navios/core/testing'
|
|
2
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import type { LogLevel } from '@navios/core'
|
|
3
5
|
|
|
4
6
|
import { ScreenLoggerInstance } from '../../services/logger.ts'
|
|
5
7
|
import { Screen } from '../../tokens/index.ts'
|
|
6
8
|
import { createMockScreenInstance } from '../utils/factories.ts'
|
|
7
9
|
|
|
10
|
+
import type { ScreenInstance } from '../../index.js'
|
|
8
11
|
import type { MockScreenInstance } from '../utils/factories.ts'
|
|
9
|
-
import type { LogLevel } from '@navios/core'
|
|
10
12
|
|
|
11
13
|
describe('ScreenLoggerInstance', () => {
|
|
12
14
|
let container: TestContainer
|
|
@@ -17,7 +19,7 @@ describe('ScreenLoggerInstance', () => {
|
|
|
17
19
|
beforeEach(() => {
|
|
18
20
|
container = new TestContainer()
|
|
19
21
|
mockScreen = createMockScreenInstance()
|
|
20
|
-
container.bind(Screen).toValue(mockScreen)
|
|
22
|
+
container.bind(Screen).toValue(mockScreen as unknown as ScreenInstance)
|
|
21
23
|
})
|
|
22
24
|
|
|
23
25
|
afterEach(async () => {
|
package/src/factories/index.ts
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Factory, inject, Logger, type FactoryContext } from '@navios/core'
|
|
2
|
+
|
|
3
|
+
import { ScreenManager } from '../services/screen_manager.js'
|
|
4
|
+
import { IsomorphicLogger, ScreenLogger } from '../tokens/logger.js'
|
|
5
|
+
|
|
6
|
+
import type { IsomorphicLoggerInterface } from '../interfaces/isomorphic-logger.js'
|
|
7
|
+
import type { LoggerOptions } from '../schemas/index.js'
|
|
8
|
+
|
|
9
|
+
@Factory({
|
|
10
|
+
token: IsomorphicLogger,
|
|
11
|
+
})
|
|
12
|
+
export class IsomorphicLoggerFactory {
|
|
13
|
+
private readonly screenManager = inject(ScreenManager)
|
|
14
|
+
|
|
15
|
+
async create(ctx: FactoryContext, options: LoggerOptions): Promise<IsomorphicLoggerInterface> {
|
|
16
|
+
if (this.screenManager.isTuiBound()) {
|
|
17
|
+
return ctx.inject(ScreenLogger, options)
|
|
18
|
+
}
|
|
19
|
+
return ctx.inject(Logger, {
|
|
20
|
+
context: options.context,
|
|
21
|
+
})
|
|
22
|
+
}
|
|
23
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
// ============================================
|
|
4
4
|
export * from './types/index.ts'
|
|
5
5
|
|
|
6
|
+
// ============================================
|
|
7
|
+
// Interfaces
|
|
8
|
+
// ============================================
|
|
9
|
+
export * from './interfaces/index.ts'
|
|
10
|
+
|
|
6
11
|
// ============================================
|
|
7
12
|
// Components
|
|
8
13
|
// ============================================
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './isomorphic-logger.ts'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LoggerInstance } from '@navios/core'
|
|
2
|
+
|
|
3
|
+
import type { ScreenLoggerInstance } from '../services/logger.ts'
|
|
4
|
+
|
|
5
|
+
type PublicLoggerMethods = Pick<LoggerInstance, keyof LoggerInstance>
|
|
6
|
+
type PublicScreenLoggerMethods = Pick<ScreenLoggerInstance, keyof ScreenLoggerInstance>
|
|
7
|
+
type ScreenOwnMethods = Partial<Omit<PublicScreenLoggerMethods, keyof PublicLoggerMethods>>
|
|
8
|
+
|
|
9
|
+
export interface IsomorphicLoggerInterface extends PublicLoggerMethods, ScreenOwnMethods {}
|
package/src/services/logger.ts
CHANGED
|
@@ -101,7 +101,7 @@ export class ScreenManager {
|
|
|
101
101
|
this.renderer = await createCliRenderer({
|
|
102
102
|
exitOnCtrlC: options?.exitOnCtrlC ?? true,
|
|
103
103
|
useAlternateScreen: true,
|
|
104
|
-
useMouse: options?.useMouse ??
|
|
104
|
+
useMouse: options?.useMouse ?? true,
|
|
105
105
|
})
|
|
106
106
|
|
|
107
107
|
this.root = createRoot(this.renderer)
|
package/src/tokens/logger.ts
CHANGED
|
@@ -2,9 +2,18 @@ import { InjectionToken } from '@navios/core'
|
|
|
2
2
|
|
|
3
3
|
import { LoggerOptionsSchema } from '../schemas/index.ts'
|
|
4
4
|
|
|
5
|
+
import type { IsomorphicLoggerInterface } from '../interfaces/isomorphic-logger.ts'
|
|
5
6
|
import type { ScreenLoggerInstance } from '../services/index.ts'
|
|
6
7
|
|
|
7
8
|
export const ScreenLogger = InjectionToken.create<ScreenLoggerInstance, typeof LoggerOptionsSchema>(
|
|
8
9
|
'ScreenLoggerInstance',
|
|
9
10
|
LoggerOptionsSchema,
|
|
10
11
|
)
|
|
12
|
+
/**
|
|
13
|
+
* Isomorphic logger token for shared logger between TUI and Server.
|
|
14
|
+
* This token is used to inject the logger instance into the application.
|
|
15
|
+
*/
|
|
16
|
+
export const IsomorphicLogger = InjectionToken.create<
|
|
17
|
+
IsomorphicLoggerInterface,
|
|
18
|
+
typeof LoggerOptionsSchema
|
|
19
|
+
>('IsomorphicLogger', LoggerOptionsSchema)
|
|
@@ -119,6 +119,6 @@ export interface BindOptions {
|
|
|
119
119
|
autoClose?: boolean | number
|
|
120
120
|
/** Theme to use for the TUI (theme object or preset name) */
|
|
121
121
|
theme?: Theme | ThemePreset
|
|
122
|
-
/** Enable mouse support (default:
|
|
122
|
+
/** Enable mouse support (default: true) */
|
|
123
123
|
useMouse?: boolean
|
|
124
124
|
}
|
package/src/utils/format.ts
CHANGED
|
@@ -43,10 +43,11 @@ export function formatObject(obj: unknown, depth: number = 2, currentDepth: numb
|
|
|
43
43
|
/**
|
|
44
44
|
* Capture a stack trace, filtering out internal frames
|
|
45
45
|
*/
|
|
46
|
-
export function captureTrace(): string {
|
|
46
|
+
export function captureTrace(offset: number = 0): string {
|
|
47
47
|
const err = new Error()
|
|
48
48
|
const stack = err.stack ?? ''
|
|
49
49
|
const lines = stack.split('\n')
|
|
50
|
+
const begin = lines.findIndex((line) => line.includes('captureTrace'))
|
|
50
51
|
// Skip the first 4 lines: Error, captureTrace, trace method, and the log method
|
|
51
|
-
return lines.slice(4).join('\n')
|
|
52
|
+
return lines.slice(begin !== -1 ? begin + 1 + offset : 4).join('\n')
|
|
52
53
|
}
|