Skip to content

Commit

Permalink
feat(karma): update constants export details (#42992)
Browse files Browse the repository at this point in the history
* feat(karma): update constants export details

- move Constatns to separate file
- export as named re-export from main module
- add missing type for 'PORT' - should be `number` OR `string` depending
on the source of this contant. If read from ENV it will be a string
always.
- add missing documentation
- move LOG types to use string literal types to use in the values in
typechecks and intelllisense
- tests updated

https://github.com/karma-runner/karma/blob/master/lib/constants.js

Thanks!

* Resolve pull request comments:

- constants import changed
- re-export redefined
- contants module reshape to comply with native module details.

Using namespace import and named import for constant required TSLint
config update to allow named imports:
see: palantir/tslint#4524

/cc @43081j

Thanks!

* Refine import details as per PR comment

/cc @43081j
  • Loading branch information
peterblazejewicz committed Mar 30, 2020
1 parent 33e0ecb commit d853828
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 29 deletions.
31 changes: 3 additions & 28 deletions types/karma/index.d.ts
Expand Up @@ -14,7 +14,10 @@ import Promise = require('bluebird');
import https = require('https');
import { Appender } from 'log4js';
import { EventEmitter } from 'events';
import * as constants from './lib/constants';
import { VERSION } from './lib/constants';

export { constants, VERSION };
/**
* `start` method is deprecated since 0.13. It will be removed in 0.14.
* Please use
Expand All @@ -27,37 +30,9 @@ import { EventEmitter } from 'events';
* @deprecated
*/
export const server: DeprecatedServer;

export const runner: Runner;
export const stopper: Stopper;

export const VERSION: string;
export const constants: Constants;

export interface Constants {
VERSION: string;
DEFAULT_PORT: number;
DEFAULT_HOSTNAME: string;
DEFAULT_LISTEN_ADDR: string;
LOG_DISABLE: string;
LOG_ERROR: string;
LOG_WARN: string;
LOG_INFO: string;
LOG_DEBUG: string;
LOG_LOG: string;
LOG_PRIORITIES: string[];
COLOR_PATTERN: string;
NO_COLOR_PATTERN: string;
CONSOLE_APPENDER: {
type: string;
layout: {
type: string;
pattern: string;
};
};
EXIT_CODE: string;
}

export namespace launcher {
class Launcher {
static generateId(): string;
Expand Down
19 changes: 19 additions & 0 deletions types/karma/karma-tests.ts
Expand Up @@ -196,3 +196,22 @@ karma.config.parseConfig('karma.conf.js', {
singleRun: true,
restartOnFileChange: true,
});

// constants
karma.VERSION; // $ExpectType string
karma.constants.VERSION; // $ExpectType string
karma.constants.DEFAULT_PORT; // $ExpectType string | number
karma.constants.DEFAULT_HOSTNAME; // $ExpectType string
karma.constants.DEFAULT_LISTEN_ADDR; // $ExpectType string
karma.constants.LOG_DISABLE; // $ExpectType "OFF"
karma.constants.LOG_ERROR; // $ExpectType "ERROR"
karma.constants.LOG_WARN; // $ExpectType "WARN"
karma.constants.LOG_INFO; // $ExpectType "INFO"
karma.constants.LOG_DEBUG; // $ExpectType "DEBUG"
karma.constants.LOG_LOG; // $ExpectType "LOG"
karma.constants.LOG_PRIORITIES; // $ExpectType ["OFF", "ERROR", "WARN", "LOG", "INFO", "DEBUG"]
karma.constants.COLOR_PATTERN; // $ExpectType string
karma.constants.NO_COLOR_PATTERN; // $ExpectType string
karma.constants.CONSOLE_APPENDER; // $ExpectType { type: string; layout: { type: string; pattern: string; }; }
karma.constants.EXIT_CODE; // $ExpectType string
karma.constants.LOG_PRIORITIES[5] === 'DEBUG';
36 changes: 36 additions & 0 deletions types/karma/lib/constants.d.ts
@@ -0,0 +1,36 @@
/** The current version of karma */
export const VERSION: string;
/** The default port used for the karma server */
export const DEFAULT_PORT: string | number;
/** The default hostname used for the karma server */
export const DEFAULT_HOSTNAME: string;
/** The default listen address used for the karma server */
export const DEFAULT_LISTEN_ADDR: string;
/** The value for disabling logs */
export const LOG_DISABLE: 'OFF';
/** The value for the log `error` level */
export const LOG_ERROR: 'ERROR';
/** The value for the log `warn` level */
export const LOG_WARN: 'WARN';
/** The value for the log `info` level */
export const LOG_INFO: 'INFO';
/** The value for the log `debug` level */
export const LOG_DEBUG: 'DEBUG';
export const LOG_LOG: 'LOG';
/** An array of log levels in descending order, i.e. LOG_DISABLE, LOG_ERROR, LOG_WARN, LOG_LOG, LOG_INFO, and LOG_DEBUG */
export const LOG_PRIORITIES: ['OFF', 'ERROR', 'WARN', 'LOG', 'INFO', 'DEBUG'];

/** The default color pattern for log output */
export const COLOR_PATTERN: string;
/** The default pattern for log output without color */
export const NO_COLOR_PATTERN: string;
/** The default console appender */
export const CONSOLE_APPENDER: {
type: string;
layout: {
type: string;
pattern: string;
};
};
/** The exit code */
export const EXIT_CODE: string;
12 changes: 11 additions & 1 deletion types/karma/tslint.json
@@ -1 +1,11 @@
{ "extends": "dtslint/dt.json" }
{
"extends": "dtslint/dt.json",
"rules": {
"no-duplicate-imports": [
true,
{
"allow-namespace-imports": true
}
]
}
}

0 comments on commit d853828

Please sign in to comment.