Skip to content

Commit

Permalink
Add type imports, add two eslint rules
Browse files Browse the repository at this point in the history
* Add eslint rule forbidding "import * as foo"
* Add eslint rule enforcing newline after imports
  • Loading branch information
BuZZ-T committed Nov 7, 2021
1 parent 5497801 commit 37d2a92
Show file tree
Hide file tree
Showing 43 changed files with 145 additions and 82 deletions.
2 changes: 2 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,8 @@
}
}
],
"import/no-namespace": "error",
"import/newline-after-import": "error",
"@typescript-eslint/no-unused-vars": "error",
"@typescript-eslint/explicit-module-boundary-types": "error",
"no-console": "error",
Expand Down
4 changes: 2 additions & 2 deletions api.spec.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { fetchChromiumTags, fetchBranchPosition, fetchChromeUrl, fetchChromeZipFile, fetchLocalStore } from './api'
import { IOSSettings } from './interfaces/os.interfaces'
import type { IOSSettings } from './interfaces/os.interfaces'
import { logger, Spinner } from './log/spinner'

/* eslint-disable-next-line @typescript-eslint/no-var-requires */
Expand Down
6 changes: 3 additions & 3 deletions api.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { Response as NodeFetchResponse } from 'node-fetch'

import { RESOLVE_VERSION } from './commons/constants'
import { IMetadataResponse } from './interfaces/interfaces'
import { IOSSettings } from './interfaces/os.interfaces'
import { IListStore } from './interfaces/store.interfaces'
import type { IMetadataResponse } from './interfaces/interfaces'
import type { IOSSettings } from './interfaces/os.interfaces'
import type { IListStore } from './interfaces/store.interfaces'
import { logger } from './log/spinner'

/* eslint-disable-next-line @typescript-eslint/no-var-requires */
Expand Down
2 changes: 1 addition & 1 deletion commons/ComparableVersion.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IVersion } from '../interfaces/interfaces'
import type { IVersion } from '../interfaces/interfaces'
import { isIVersion } from '../utils'

export class ComparableVersion implements IVersion {
Expand Down
3 changes: 2 additions & 1 deletion commons/MappedVersion.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { IVersionWithDisabled } from '../interfaces/interfaces'
import type { IVersionWithDisabled } from '../interfaces/interfaces'
import { MappedVersion } from './MappedVersion'

describe('MappedVersion', () => {
describe('string input', () => {
it('should create a MappedVersion with first input', () => {
Expand Down
2 changes: 1 addition & 1 deletion commons/MappedVersion.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IVersionWithDisabled } from '../interfaces/interfaces'
import type { IVersionWithDisabled } from '../interfaces/interfaces'
import { isIVersionWithDisabled } from '../utils'
import { ComparableVersion } from './ComparableVersion'

Expand Down
3 changes: 2 additions & 1 deletion commons/constants.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { TextFunction } from '../interfaces/interfaces'
import type { TextFunction } from '../interfaces/interfaces'
import { READ_CONFIG } from './constants'

describe('constants', () => {

it('should add the reason in the description', () => {
Expand Down
2 changes: 1 addition & 1 deletion commons/constants.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { LoggerConfig } from '../interfaces/interfaces'
import type { LoggerConfig } from '../interfaces/interfaces'

export const LOAD_CONFIG: LoggerConfig = {
start: 'Downloading local storage file',
Expand Down
6 changes: 3 additions & 3 deletions config/config.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { ComparableVersion } from '../commons/ComparableVersion'
import { IChromeConfigWrapper, IStoreConfigWrapper, IExportConfigWrapper } from '../interfaces/interfaces'
import { OS } from '../interfaces/os.interfaces'
import type { IChromeConfigWrapper, IStoreConfigWrapper, IExportConfigWrapper } from '../interfaces/interfaces'
import type { OS } from '../interfaces/os.interfaces'
import { Spinner, logger } from '../log/spinner'
import { createChromeConfig, createChromeOptions, createImportConfig, createExportConfig } from '../test.utils'
import { DEFAULT_OPTIONS, readConfig } from './config'
Expand Down
4 changes: 3 additions & 1 deletion config/config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@

/* eslint-disable-next-line import/no-namespace */
import * as program from 'commander'

import { ComparableVersion } from '../commons/ComparableVersion'
import { IConfigOptions } from '../interfaces/config.interfaces'
import type { IConfigOptions } from '../interfaces/config.interfaces'
import { ConfigWrapper } from '../interfaces/interfaces'
import { logger } from '../log/spinner'
/* eslint-disable-next-line import/no-namespace */
import * as packageJson from '../package.json'
import { mapOS } from '../utils'

Expand Down
3 changes: 2 additions & 1 deletion download.spec.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { existsSync, mkdir, createWriteStream, stat, rmdir, unlink, Stats } from 'fs'
import { Response as NodeFetchResponse } from 'node-fetch'
import { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'
/* eslint-disable-next-line import/no-namespace */
import * as unzipper from 'unzipper'

import { fetchChromeZipFile } from './api'
Expand Down
7 changes: 4 additions & 3 deletions download.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import { existsSync, mkdir as fsMkdir, createWriteStream, stat as fsStat, rmdir as fsRmdir, unlink as fsUnlink } from 'fs'
import * as path from 'path'
import { join as pathJoin } from 'path'
/* eslint-disable-next-line import/no-namespace */
import * as unzipper from 'unzipper'
import { promisify } from 'util'

import { fetchChromeZipFile } from './api'
import { NoChromiumDownloadError } from './errors'
import { IChromeConfig } from './interfaces/interfaces'
import type { IChromeConfig } from './interfaces/interfaces'
import { progress } from './log/progress'
import { logger } from './log/spinner'
import { loadStore } from './store/loadStore'
Expand Down Expand Up @@ -48,7 +49,7 @@ export async function downloadChromium(config: IChromeConfig): Promise<void> {
if (chromeUrl && config.download) {
const filename = `chrome-${filenameOS}-${config.arch}-${selectedVersion}`
const downloadPath = config.downloadFolder
? path.join(config.downloadFolder, filename)
? pathJoin(config.downloadFolder, filename)
: filename

if (!!config.downloadFolder && !existsSync(config.downloadFolder)) {
Expand Down
49 changes: 49 additions & 0 deletions files
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
./errors.ts
./download.spec.ts
./rusted.ts
./start-local.ts
./interfaces/os.interfaces.ts
./interfaces/config.interfaces.ts
./interfaces/store.interfaces.ts
./interfaces/interfaces.ts
./versions.ts
./utils.ts
./rusted.spec.ts
./api.ts
./api.spec.ts
./utils.spec.ts
./select.ts
./select.spec.ts
./commons/ComparableVersion.ts
./commons/ComparableVersion.spec.ts
./commons/constants.ts
./commons/MappedVersion.ts
./commons/constants.spec.ts
./commons/MappedVersion.spec.ts
./test.utils.ts
./store/exportStore.ts
./store/storeNegativeHit.spec.ts
./store/storeNegativeHit.ts
./store/loadStore.ts
./store/downloadStore.ts
./store/readStore.ts
./store/loadStore.spec.ts
./store/Store.spec.ts
./store/downloadStore.spec.ts
./store/readStore.spec.ts
./store/importStore.spec.ts
./store/exportStore.spec.ts
./store/Store.ts
./store/importStore.ts
./config/config.spec.ts
./config/config.ts
./errors.spec.ts
./download.ts
./versions.spec.ts
./public_api.ts
./log/spinner.spec.ts
./log/printer.ts
./log/printer.spec.ts
./log/spinner.ts
./log/progress.spec.ts
./log/progress.ts
2 changes: 1 addition & 1 deletion interfaces/config.interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ExtendedOS } from './os.interfaces'
import type { ExtendedOS } from './os.interfaces'

export interface IConfigOptions {
min: string
Expand Down
4 changes: 2 additions & 2 deletions interfaces/interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ComparableVersion } from '../commons/ComparableVersion'
import { OS } from './os.interfaces'
import { Arch } from './store.interfaces'
import type { OS } from './os.interfaces'
import type { Arch } from './store.interfaces'

export interface IStoreConfigWrapper {
action: 'importStore'
Expand Down
2 changes: 1 addition & 1 deletion interfaces/store.interfaces.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { OS } from './os.interfaces'
import type { OS } from './os.interfaces'

export type Arch = keyof LinuxStore | keyof WinStore | keyof MacStore

Expand Down
2 changes: 1 addition & 1 deletion log/printer.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'

import { PrinterWriteStream } from '../interfaces/printer.interfaces'
import { Printer } from './printer'
Expand Down
1 change: 1 addition & 0 deletions log/printer.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/* eslint-disable-next-line import/no-namespace */
import * as chalk from 'chalk'

import { PrinterWriteStream } from '../interfaces/printer.interfaces'
Expand Down
4 changes: 2 additions & 2 deletions log/progress.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'

import { PrinterWriteStream } from '../interfaces/printer.interfaces'
import type { PrinterWriteStream } from '../interfaces/printer.interfaces'
import { ProgressBar } from './progress'

jest.mock('chalk', () => ({
Expand Down
3 changes: 2 additions & 1 deletion log/progress.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* eslint-disable-next-line import/no-namespace */
import * as chalk from 'chalk'

import { ProgressConfig } from '../interfaces/interfaces'
import type { ProgressConfig } from '../interfaces/interfaces'
import { Printer } from './printer'

export class ProgressBar extends Printer<ProgressBar> {
Expand Down
5 changes: 3 additions & 2 deletions log/spinner.spec.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
/* eslint-disable-next-line import/no-namespace */
import * as chalk from 'chalk'
import { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { PrinterWriteStream } from '../interfaces/printer.interfaces'
import type { PrinterWriteStream } from '../interfaces/printer.interfaces'
import { Spinner } from './spinner'

jest.mock('chalk', () => ({
Expand Down
4 changes: 2 additions & 2 deletions rusted.spec.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { readConfig } from './config/config'
import { downloadChromium } from './download'
import { ConfigWrapper } from './interfaces/interfaces'
import type { ConfigWrapper } from './interfaces/interfaces'
import { logger } from './log/spinner'
import { rusted } from './rusted'
import { exportStore } from './store/exportStore'
Expand Down
2 changes: 1 addition & 1 deletion rusted.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { readConfig } from './config/config'
import { downloadChromium } from './download'
import { IChromeConfig, IStoreConfig, IExportConfig } from './interfaces/interfaces'
import type { IChromeConfig, IStoreConfig, IExportConfig } from './interfaces/interfaces'
import { logger } from './log/spinner'
import { exportStore } from './store/exportStore'
import { importAndMergeLocalstore } from './store/importStore'
Expand Down
2 changes: 1 addition & 1 deletion select.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MaybeMocked } from 'ts-jest/dist/utils/testing'
import type { MaybeMocked } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { MappedVersion } from './commons/MappedVersion'
Expand Down
3 changes: 2 additions & 1 deletion select.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
/* eslint-disable-next-line import/no-namespace */
import * as prompts from 'prompts'

import { MappedVersion } from './commons/MappedVersion'
import { IChromeConfig } from './interfaces/interfaces'
import type { IChromeConfig } from './interfaces/interfaces'

/**
* Lets the user select a version via CLI prompt and returns it.
Expand Down
2 changes: 1 addition & 1 deletion store/Store.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ComparableVersion } from '../commons/ComparableVersion'
import { Arch } from '../interfaces/store.interfaces'
import type { Arch } from '../interfaces/store.interfaces'
import { createStore } from '../test.utils'
import { Store } from './Store'

Expand Down
6 changes: 3 additions & 3 deletions store/Store.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ComparableVersion } from '../commons/ComparableVersion'
import { OS } from '../interfaces/os.interfaces'
import { Arch, IListStore as IListStore, StoreSize, ISetStore } from '../interfaces/store.interfaces'
import type { ComparableVersion } from '../commons/ComparableVersion'
import type { OS } from '../interfaces/os.interfaces'
import type { Arch, IListStore as IListStore, StoreSize, ISetStore } from '../interfaces/store.interfaces'
import { setStoreToListStore, sortStoreEntries } from '../utils'

export class Store {
Expand Down
2 changes: 1 addition & 1 deletion store/downloadStore.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { MaybeMockedDeep, MaybeMocked } from 'ts-jest/dist/utils/testing'
import type { MaybeMockedDeep, MaybeMocked } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { fetchLocalStore } from '../api'
Expand Down
2 changes: 1 addition & 1 deletion store/downloadStore.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { fetchLocalStore } from '../api'
import { LOAD_CONFIG } from '../commons/constants'
import { IStoreConfig } from '../interfaces/interfaces'
import type { IStoreConfig } from '../interfaces/interfaces'
import { logger } from '../log/spinner'
import { Store } from './Store'

Expand Down
2 changes: 1 addition & 1 deletion store/exportStore.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { existsSync, createReadStream, ReadStream } from 'fs'
import { join } from 'path'
import { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import type { MaybeMocked, MaybeMockedDeep } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { LOCAL_STORE_FILE } from '../commons/constants'
Expand Down
12 changes: 6 additions & 6 deletions store/importStore.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { existsSync, readFile, writeFile } from 'fs'
import * as path from 'path'
import { MaybeMocked } from 'ts-jest/dist/utils/testing'
import { join as pathJoin } from 'path'
import type { MaybeMocked } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { LOCAL_STORE_FILE } from '../commons/constants'
Expand Down Expand Up @@ -63,7 +63,7 @@ describe('importStore', () => {
expect(readFileMock).toHaveBeenCalledTimes(0)

expect(writeFileMock).toHaveBeenCalledTimes(1)
expect(writeFileMock).toHaveBeenCalledWith(path.join(__dirname, '..', LOCAL_STORE_FILE), anyStore.toFormattedString(), expect.any(Function))
expect(writeFileMock).toHaveBeenCalledWith(pathJoin(__dirname, '..', LOCAL_STORE_FILE), anyStore.toFormattedString(), expect.any(Function))

})

Expand All @@ -87,7 +87,7 @@ describe('importStore', () => {
expect(readFileMock).toHaveBeenCalledTimes(0)

expect(writeFileMock).toHaveBeenCalledTimes(1)
expect(writeFileMock).toHaveBeenCalledWith(path.join(__dirname, '..', LOCAL_STORE_FILE), anyStore.toFormattedString(), expect.any(Function))
expect(writeFileMock).toHaveBeenCalledWith(pathJoin(__dirname, '..', LOCAL_STORE_FILE), anyStore.toFormattedString(), expect.any(Function))
})

it('should do nothing, if no store file is loaded from file system', async () => {
Expand Down Expand Up @@ -164,7 +164,7 @@ describe('importStore', () => {
expect(readFileMock).toHaveBeenCalledTimes(1)

expect(writeFileMock).toHaveBeenCalledTimes(1)
expect(writeFileMock).toHaveBeenCalledWith(path.join(__dirname, '..', LOCAL_STORE_FILE), JSON.stringify(mergedStore, null, 4), expect.any(Function))
expect(writeFileMock).toHaveBeenCalledWith(pathJoin(__dirname, '..', LOCAL_STORE_FILE), JSON.stringify(mergedStore, null, 4), expect.any(Function))
})

it('should merge the existing file with the file downloaded by local file', async () => {
Expand Down Expand Up @@ -201,7 +201,7 @@ describe('importStore', () => {
expect(readFileMock).toHaveBeenCalledTimes(1)

expect(writeFileMock).toHaveBeenCalledTimes(1)
expect(writeFileMock).toHaveBeenCalledWith(path.join(__dirname, '..', LOCAL_STORE_FILE), JSON.stringify(mergedStore, null, 4), expect.any(Function))
expect(writeFileMock).toHaveBeenCalledWith(pathJoin(__dirname, '..', LOCAL_STORE_FILE), JSON.stringify(mergedStore, null, 4), expect.any(Function))
})
})
})
6 changes: 3 additions & 3 deletions store/importStore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ import { join } from 'path'
import { promisify } from 'util'

import { LOCAL_STORE_FILE } from '../commons/constants'
import { IStoreConfig } from '../interfaces/interfaces'
import { StoreSize } from '../interfaces/store.interfaces'
import type { IStoreConfig } from '../interfaces/interfaces'
import type { StoreSize } from '../interfaces/store.interfaces'
import { downloadStore } from './downloadStore'
import { readStoreFile } from './readStore'
import { Store } from './Store'
import type { Store } from './Store'

const writeFilePromise = promisify(writeFile)
const readFilePromise = promisify(readFile)
Expand Down
6 changes: 3 additions & 3 deletions store/loadStore.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { existsSync, readFile } from 'fs'
import * as path from 'path'
import { MaybeMocked } from 'ts-jest/dist/utils/testing'
import { join as pathJoin } from 'path'
import type { MaybeMocked } from 'ts-jest/dist/utils/testing'
import { mocked } from 'ts-jest/utils'

import { createStore, ReadFileWithOptions } from '../test.utils'
Expand All @@ -9,7 +9,7 @@ import { Store } from './Store'

jest.mock('fs')

const localPath = path.join(__dirname, '..', 'localstore.json')
const localPath = pathJoin(__dirname, '..', 'localstore.json')

describe('loadStore', () => {

Expand Down
Loading

0 comments on commit 37d2a92

Please sign in to comment.