mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-11 02:46:16 -08:00
chore: tighten validation and runtime logging
* chore: tighten validation and runtime logging * fix(i18n): localize new settings labels
This commit is contained in:
1 parent
d24c77a143
commit
2d5c4fa4f9
52 files changed
+767
-214
No files matched your search
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user