diff --git a/@types/chalk.d.ts b/@types/chalk.d.ts new file mode 100644 index 0000000..b12930f --- /dev/null +++ b/@types/chalk.d.ts @@ -0,0 +1,419 @@ +/** + * This is a copy-paste from chalk lib, to fix typescript erros + * when isolatedModules is enabled + */ + +declare module 'chalk' { + const enum LevelEnum { + /** + All colors disabled. + */ + None = 0, + + /** + Basic 16 colors support. + */ + Basic = 1, + + /** + ANSI 256 colors support. + */ + Ansi256 = 2, + + /** + Truecolor 16 million colors support. + */ + TrueColor = 3, + } + + /** + Basic foreground colors. + + [More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) + */ + type ForegroundColor = + | 'black' + | 'red' + | 'green' + | 'yellow' + | 'blue' + | 'magenta' + | 'cyan' + | 'white' + | 'gray' + | 'grey' + | 'blackBright' + | 'redBright' + | 'greenBright' + | 'yellowBright' + | 'blueBright' + | 'magentaBright' + | 'cyanBright' + | 'whiteBright'; + + /** + Basic background colors. + + [More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) + */ + type BackgroundColor = + | 'bgBlack' + | 'bgRed' + | 'bgGreen' + | 'bgYellow' + | 'bgBlue' + | 'bgMagenta' + | 'bgCyan' + | 'bgWhite' + | 'bgGray' + | 'bgGrey' + | 'bgBlackBright' + | 'bgRedBright' + | 'bgGreenBright' + | 'bgYellowBright' + | 'bgBlueBright' + | 'bgMagentaBright' + | 'bgCyanBright' + | 'bgWhiteBright'; + + /** + Basic colors. + + [More colors here.](https://github.com/chalk/chalk/blob/master/readme.md#256-and-truecolor-color-support) + */ + type Color = ForegroundColor | BackgroundColor; + + type Modifiers = + | 'reset' + | 'bold' + | 'dim' + | 'italic' + | 'underline' + | 'inverse' + | 'hidden' + | 'strikethrough' + | 'visible'; + + namespace chalk { + type Level = LevelEnum; + + interface Options { + /** + Specify the color support for Chalk. + By default, color support is automatically detected based on the environment. + */ + level?: Level; + } + + interface Instance { + /** + Return a new Chalk instance. + */ + new (options?: Options): Chalk; + } + + /** + Detect whether the terminal supports color. + */ + interface ColorSupport { + /** + The color level used by Chalk. + */ + level: Level; + + /** + Return whether Chalk supports basic 16 colors. + */ + hasBasic: boolean; + + /** + Return whether Chalk supports ANSI 256 colors. + */ + has256: boolean; + + /** + Return whether Chalk supports Truecolor 16 million colors. + */ + has16m: boolean; + } + + interface ChalkFunction { + /** + Use a template string. + + @remarks Template literals are unsupported for nested calls (see [issue #341](https://github.com/chalk/chalk/issues/341)) + + @example + ``` + import chalk = require('chalk'); + + log(chalk` + CPU: {red ${cpu.totalPercent}%} + RAM: {green ${ram.used / ram.total * 100}%} + DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%} + `); + ``` + */ + (text: TemplateStringsArray, ...placeholders: unknown[]): string; + + (...text: unknown[]): string; + } + + interface Chalk extends ChalkFunction { + /** + Return a new Chalk instance. + */ + Instance: Instance; + + /** + The color support for Chalk. + By default, color support is automatically detected based on the environment. + */ + level: Level; + + /** + Use HEX value to set text color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.hex('#DEADED'); + ``` + */ + hex(color: string): Chalk; + + /** + Use keyword color value to set text color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.keyword('orange'); + ``` + */ + keyword(color: string): Chalk; + + /** + Use RGB values to set text color. + */ + rgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set text color. + */ + hsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set text color. + */ + hsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set text color. + */ + hwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set text color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + */ + ansi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set text color. + */ + ansi256(index: number): Chalk; + + /** + Use HEX value to set background color. + + @param color - Hexadecimal value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgHex('#DEADED'); + ``` + */ + bgHex(color: string): Chalk; + + /** + Use keyword color value to set background color. + + @param color - Keyword value representing the desired color. + + @example + ``` + import chalk = require('chalk'); + + chalk.bgKeyword('orange'); + ``` + */ + bgKeyword(color: string): Chalk; + + /** + Use RGB values to set background color. + */ + bgRgb(red: number, green: number, blue: number): Chalk; + + /** + Use HSL values to set background color. + */ + bgHsl(hue: number, saturation: number, lightness: number): Chalk; + + /** + Use HSV values to set background color. + */ + bgHsv(hue: number, saturation: number, value: number): Chalk; + + /** + Use HWB values to set background color. + */ + bgHwb(hue: number, whiteness: number, blackness: number): Chalk; + + /** + Use a [Select/Set Graphic Rendition](https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_parameters) (SGR) [color code number](https://en.wikipedia.org/wiki/ANSI_escape_code#3/4_bit) to set background color. + + 30 <= code && code < 38 || 90 <= code && code < 98 + For example, 31 for red, 91 for redBright. + Use the foreground code, not the background code (for example, not 41, nor 101). + */ + bgAnsi(code: number): Chalk; + + /** + Use a [8-bit unsigned number](https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit) to set background color. + */ + bgAnsi256(index: number): Chalk; + + /** + Modifier: Resets the current color chain. + */ + readonly reset: Chalk; + + /** + Modifier: Make text bold. + */ + readonly bold: Chalk; + + /** + Modifier: Emitting only a small amount of light. + */ + readonly dim: Chalk; + + /** + Modifier: Make text italic. (Not widely supported) + */ + readonly italic: Chalk; + + /** + Modifier: Make text underline. (Not widely supported) + */ + readonly underline: Chalk; + + /** + Modifier: Inverse background and foreground colors. + */ + readonly inverse: Chalk; + + /** + Modifier: Prints the text, but makes it invisible. + */ + readonly hidden: Chalk; + + /** + Modifier: Puts a horizontal line through the center of the text. (Not widely supported) + */ + readonly strikethrough: Chalk; + + /** + Modifier: Prints the text only when Chalk has a color support level > 0. + Can be useful for things that are purely cosmetic. + */ + readonly visible: Chalk; + + readonly black: Chalk; + readonly red: Chalk; + readonly green: Chalk; + readonly yellow: Chalk; + readonly blue: Chalk; + readonly magenta: Chalk; + readonly cyan: Chalk; + readonly white: Chalk; + + /* + Alias for `blackBright`. + */ + readonly gray: Chalk; + + /* + Alias for `blackBright`. + */ + readonly grey: Chalk; + + readonly blackBright: Chalk; + readonly redBright: Chalk; + readonly greenBright: Chalk; + readonly yellowBright: Chalk; + readonly blueBright: Chalk; + readonly magentaBright: Chalk; + readonly cyanBright: Chalk; + readonly whiteBright: Chalk; + + readonly bgBlack: Chalk; + readonly bgRed: Chalk; + readonly bgGreen: Chalk; + readonly bgYellow: Chalk; + readonly bgBlue: Chalk; + readonly bgMagenta: Chalk; + readonly bgCyan: Chalk; + readonly bgWhite: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGray: Chalk; + + /* + Alias for `bgBlackBright`. + */ + readonly bgGrey: Chalk; + + readonly bgBlackBright: Chalk; + readonly bgRedBright: Chalk; + readonly bgGreenBright: Chalk; + readonly bgYellowBright: Chalk; + readonly bgBlueBright: Chalk; + readonly bgMagentaBright: Chalk; + readonly bgCyanBright: Chalk; + readonly bgWhiteBright: Chalk; + } + } + + /** + Main Chalk object that allows to chain styles together. + Call the last one as a method with a string argument. + Order doesn't matter, and later styles take precedent in case of a conflict. + This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`. + */ + const chalk: chalk.Chalk & + chalk.ChalkFunction & { + supportsColor: chalk.ColorSupport | false; + Level: LevelEnum; + Color: Color; + ForegroundColor: ForegroundColor; + BackgroundColor: BackgroundColor; + Modifiers: Modifiers; + stderr: chalk.Chalk & { supportsColor: chalk.ColorSupport | false }; + }; + + export = chalk; +} diff --git a/packages/app/components/accounts/index.ts b/packages/app/components/accounts/index.ts index 6ed2b18..def3dc6 100644 --- a/packages/app/components/accounts/index.ts +++ b/packages/app/components/accounts/index.ts @@ -1,2 +1,5 @@ -export { State as AccountsState, Account } from './reducer'; +import { State, Account as AccountType } from './reducer'; + export { default as AccountSwitcher } from './AccountSwitcher'; +export type AccountsState = State; +export type Account = AccountType; diff --git a/packages/app/components/auth/index.ts b/packages/app/components/auth/index.ts index e673142..06ddb23 100644 --- a/packages/app/components/auth/index.ts +++ b/packages/app/components/auth/index.ts @@ -1 +1,3 @@ -export { State as AuthState } from './reducer'; +import { State } from './reducer'; + +export type AuthState = State; diff --git a/packages/app/components/profile/multiFactorAuth/index.ts b/packages/app/components/profile/multiFactorAuth/index.ts index dfe1a17..b6d93c3 100644 --- a/packages/app/components/profile/multiFactorAuth/index.ts +++ b/packages/app/components/profile/multiFactorAuth/index.ts @@ -1,2 +1,4 @@ +import { MfaStep as TMfaStep } from './MfaEnable'; + export { default } from './MultiFactorAuth'; -export { MfaStep } from './MfaEnable'; +export type MfaStep = TMfaStep; diff --git a/packages/app/components/user/index.ts b/packages/app/components/user/index.ts index 2bf99ec..5ea6641 100644 --- a/packages/app/components/user/index.ts +++ b/packages/app/components/user/index.ts @@ -1 +1,3 @@ -export { User } from './reducer'; +import { User as TUser } from './reducer'; + +export type User = TUser; diff --git a/packages/app/services/authFlow/index.ts b/packages/app/services/authFlow/index.ts index 8997f4c..56ccf0e 100644 --- a/packages/app/services/authFlow/index.ts +++ b/packages/app/services/authFlow/index.ts @@ -1,4 +1,4 @@ -import AuthFlow, { ActionsDict } from './AuthFlow'; +import AuthFlow, { ActionsDict, AuthContext as TAuthContext } from './AuthFlow'; import * as actions from 'app/components/auth/actions'; @@ -34,5 +34,5 @@ const availableActions = { setLoadingState: actions.setLoadingState, }; -export { AuthContext } from './AuthFlow'; +export type AuthContext = TAuthContext; export default new AuthFlow(availableActions as ActionsDict); diff --git a/packages/app/services/request/index.ts b/packages/app/services/request/index.ts index db75abd..c389657 100644 --- a/packages/app/services/request/index.ts +++ b/packages/app/services/request/index.ts @@ -1,10 +1,15 @@ -export { default, Resp } from './request'; -export { Middleware } from './PromiseMiddlewareLayer'; +import { Resp as TResp } from './request'; +import { Middleware as TMiddleware } from './PromiseMiddlewareLayer'; + +export { default } from './request'; export { default as InternalServerError } from './InternalServerError'; export { default as RequestAbortedError } from './RequestAbortedError'; +export type Resp = TResp; +export type Middleware = TMiddleware; + /** - * Usage: Query<'requeired'|'keys'|'names'> + * Usage: Query<'required'|'keys'|'names'> * TODO: find a way to make it more friendly with URLSearchParams type */ export type Query = { diff --git a/tsconfig.json b/tsconfig.json index 917ab35..2e62c2b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,9 @@ { "compilerOptions": { "baseUrl": "packages", + "paths": { + "chalk": ["../@types/chalk.d.ts"] + }, "module": "esnext", "target": "esnext", "esModuleInterop": true, // allow importing commonjs exports as default in es imports @@ -9,6 +12,7 @@ "checkJs": true, "allowJs": true, "strictNullChecks": true, + "isolatedModules": true, // we can not enable json modules, because this will disable // *.intl.json overrides (@see `webpack-loaders.d.ts`) "resolveJsonModule": false,