chore: tighten validation and runtime logging

* chore: tighten validation and runtime logging

* fix(i18n): localize new settings labels
This commit is contained in:
4gray authored and GitHub committed 2026-05-15 17:43:42 +02:00
1 parent d24c77a143
commit 2d5c4fa4f9
52 files changed
+767 -214

No files matched your search

+1
View File
@@ -1,5 +1,6 @@
export * from './lib/channel.interface';
export * from './lib/channel.model';
export * from './lib/dev-logger.util';
export * from './lib/embedded-mpv-session.interface';
export * from './lib/epg-channel-metadata.model';
export * from './lib/epg-channel-with-programs.interface';
@@ -0,0 +1,55 @@
import { createDevLogger } from './dev-logger.util';
describe('createDevLogger', () => {
const globalWithNgDevMode = globalThis as typeof globalThis & {
ngDevMode?: boolean;
};
const originalNgDevMode = globalWithNgDevMode.ngDevMode;
const originalNodeEnv = process.env['NODE_ENV'];
let debugSpy: jest.SpyInstance;
beforeEach(() => {
globalWithNgDevMode.ngDevMode = true;
process.env['NODE_ENV'] = 'development';
debugSpy = jest.spyOn(console, 'debug').mockImplementation();
});
afterEach(() => {
globalWithNgDevMode.ngDevMode = originalNgDevMode;
if (originalNodeEnv === undefined) {
delete process.env['NODE_ENV'];
} else {
process.env['NODE_ENV'] = originalNodeEnv;
}
debugSpy.mockRestore();
});
it('logs scoped debug output outside production and test mode', () => {
const debug = createDevLogger('Scope');
debug('message', { id: 1 });
expect(debugSpy).toHaveBeenCalledWith('[Scope]', 'message', {
id: 1,
});
});
it('suppresses debug output in Angular production mode', () => {
globalWithNgDevMode.ngDevMode = false;
const debug = createDevLogger('Scope');
debug('message');
expect(debugSpy).not.toHaveBeenCalled();
});
it('suppresses debug output during tests', () => {
process.env['NODE_ENV'] = 'test';
const debug = createDevLogger('Scope');
debug('message');
expect(debugSpy).not.toHaveBeenCalled();
});
});
@@ -0,0 +1,22 @@
export type DevLogFn = (...args: unknown[]) => void;
function isDevLoggingEnabled(): boolean {
const global = globalThis as typeof globalThis & {
ngDevMode?: boolean;
process?: { env?: { NODE_ENV?: string } };
};
return (
global.ngDevMode !== false && global.process?.env?.NODE_ENV !== 'test'
);
}
export function createDevLogger(scope: string): DevLogFn {
const prefix = `[${scope}]`;
return (...args: unknown[]) => {
if (isDevLoggingEnabled()) {
console.debug(prefix, ...args);
}
};
}