Skip to content

Commit

Permalink
Merge pull request #88 from oclif/mdonnalley/eslint-9
Browse files Browse the repository at this point in the history
chore(W-17692101): eslint 9
  • Loading branch information
mdonnalley authored Jan 28, 2025
2 parents d415f66 + 59701e3 commit 50cd398
Show file tree
Hide file tree
Showing 14 changed files with 640 additions and 313 deletions.
2 changes: 0 additions & 2 deletions .eslintignore

This file was deleted.

18 changes: 0 additions & 18 deletions .eslintrc.json

This file was deleted.

41 changes: 41 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import {includeIgnoreFile} from '@eslint/compat'
import oclif from 'eslint-config-oclif'
import prettier from 'eslint-config-prettier'
import xoReactSpace from 'eslint-config-xo-react/space'
import path from 'node:path'
import {fileURLToPath} from 'node:url'

const gitignorePath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '.gitignore')

export default [
includeIgnoreFile(gitignorePath),
...oclif,
prettier,
...xoReactSpace,
{
rules: {
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-namespace': 'off',
'import/default': 'off',
'import/no-named-as-default-member': 'off',
'jsdoc/require-returns-check': 'off',
'jsdoc/valid-types': 'off',
'no-useless-constructor': 'off',
'perfectionist/sort-intersection-types': 'off',
'perfectionist/sort-jsx-props': 'off',
'perfectionist/sort-object-types': 'off',
'perfectionist/sort-union-types': 'off',
'react/jsx-tag-spacing': 'off',
'unicorn/no-array-reduce': 'off',
'unicorn/prefer-array-find': 'off',
'unicorn/prefer-module': 'off',
},
},
{
files: ['test/**/*'],
rules: {
'@typescript-eslint/no-unused-expressions': 'off',
'mocha/max-top-level-suites': 'off',
},
},
]
2 changes: 1 addition & 1 deletion examples/basic.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import ansis from 'ansis'
import terminalLink from 'terminal-link'

import {TableOptions, printTable} from '../src/index.js'
import {printTable, TableOptions} from '../src/index.js'

const data = [
{
Expand Down
2 changes: 1 addition & 1 deletion examples/fixed-width-table.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import ansis from 'ansis'
import terminalLink from 'terminal-link'

import {TableOptions, printTable} from '../src/index.js'
import {printTable, TableOptions} from '../src/index.js'

const data = [
{
Expand Down
2 changes: 1 addition & 1 deletion examples/make-table.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import ansis from 'ansis'
import terminalLink from 'terminal-link'

import {TableOptions, makeTable} from '../src/index.js'
import {makeTable, TableOptions} from '../src/index.js'

const data = [
{
Expand Down
2 changes: 1 addition & 1 deletion examples/multiple.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {TableOptions, printTables} from '../src/index.js'
import {printTables, TableOptions} from '../src/index.js'

const description =
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
Expand Down
2 changes: 1 addition & 1 deletion examples/sf-specific/deploy.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {TableOptions, printTable} from '../../src'
import {printTable, TableOptions} from '../../src'

const deployResult = [
{
Expand Down
14 changes: 7 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
},
"devDependencies": {
"@commitlint/config-conventional": "^19",
"@eslint/compat": "^1.2.5",
"@oclif/prettier-config": "^0.2.1",
"@oclif/test": "^4.1.8",
"@types/chai": "^4.3.16",
Expand All @@ -28,12 +29,11 @@
"ansis": "^3.5.2",
"chai": "^4.5.0",
"commitlint": "^19",
"eslint": "^8.57.0",
"eslint-config-oclif": "^5.2.2",
"eslint-config-oclif-typescript": "^3.1.13",
"eslint-config-prettier": "^9.1.0",
"eslint-config-xo": "^0.45.0",
"eslint-config-xo-react": "^0.27.0",
"eslint": "^9.19.0",
"eslint-config-oclif": "^6.0.0",
"eslint-config-prettier": "^10.0.1",
"eslint-config-xo": "^0.46.0",
"eslint-config-xo-react": "^0.28.0",
"eslint-plugin-react": "^7.37.4",
"eslint-plugin-react-hooks": "^4.6.2",
"husky": "^9.1.7",
Expand Down Expand Up @@ -71,7 +71,7 @@
"build": "shx rm -rf lib && tsc",
"compile": "tsc",
"format": "prettier --write \"+(src|test)/**/*.+(ts|js|json)\"",
"lint": "eslint . --ext .ts",
"lint": "eslint",
"posttest": "yarn lint",
"prepack": "yarn run build",
"prepare": "husky",
Expand Down
23 changes: 11 additions & 12 deletions src/table.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/* eslint-disable react/prop-types */

import cliTruncate from 'cli-truncate'
import {Box, Text, render} from 'ink'
import {Box, render, Text} from 'ink'
import {EventEmitter} from 'node:events'
import {env} from 'node:process'
import {sha1} from 'object-hash'
Expand All @@ -18,7 +18,6 @@ import {
HeaderOptions,
HorizontalAlignment,
Overflow,
Percentage,
RowConfig,
RowProps,
TableOptions,
Expand All @@ -42,11 +41,15 @@ import {
*/
function determineWidthToUse<T>(columns: Column<T>[], maxWidth: number, width: number | undefined): number {
const tableWidth = columns.map((c) => c.width).reduce((a, b) => a + b, 0) + columns.length + 1
return width ?? (tableWidth < maxWidth ? maxWidth : tableWidth)
return width ?? Math.max(tableWidth, maxWidth)
}

function determineTruncatePosition(overflow: Overflow): 'start' | 'middle' | 'end' {
switch (overflow) {
case 'truncate-end': {
return 'end'
}

case 'truncate-middle': {
return 'middle'
}
Expand All @@ -55,10 +58,6 @@ function determineTruncatePosition(overflow: Overflow): 'start' | 'middle' | 'en
return 'start'
}

case 'truncate-end': {
return 'end'
}

default: {
return 'end'
}
Expand Down Expand Up @@ -169,7 +168,7 @@ export function formatTextWithMargins({
}
}

function setup<T extends Record<string, unknown>>(props: TableOptions<T>) {
function setupTable<T extends Record<string, unknown>>(props: TableOptions<T>) {
const {
data,
filter,
Expand Down Expand Up @@ -199,10 +198,10 @@ function setup<T extends Record<string, unknown>>(props: TableOptions<T>) {
headerOptions,
horizontalAlignment,
maxWidth: tableWidth ?? determineConfiguredWidth(maxWidth),
width: tableWidth,
overflow,
padding,
verticalAlignment,
width: tableWidth,
}

const headings = getHeadings(config)
Expand Down Expand Up @@ -288,11 +287,11 @@ export function Table<T extends Record<string, unknown>>(props: TableOptions<T>)
separatorComponent,
title,
titleOptions,
} = setup(props)
} = setupTable(props)

return (
<Box flexDirection="column" width={determineWidthToUse(columns, config.maxWidth, config.width)}>
{title && <Text {...titleOptions}>{title}</Text>}
{title ? <Text {...titleOptions}>{title}</Text> : null}
{headerComponent({columns, data: {}, key: 'header'})}
{headingComponent({columns, data: headings, key: 'heading'})}
{headerFooterComponent({columns, data: {}, key: 'footer'})}
Expand Down Expand Up @@ -464,7 +463,7 @@ class Output {
}

function renderPlainTable<T extends Record<string, unknown>>(props: TableOptions<T>): void {
const {columns, headings, processedData, title} = setup(props)
const {columns, headings, processedData, title} = setupTable(props)

if (title) console.log(title)
const headerString = columns.reduce((acc, column) => {
Expand Down
2 changes: 2 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import React from 'react'

import {BorderStyle} from './skeletons.js'

export type CellProps = React.PropsWithChildren<{readonly column: number}>
Expand Down
22 changes: 11 additions & 11 deletions src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ export function getColumns<T extends Record<string, unknown>>(config: Config<T>,

const minWidth = calcMinWidth(largestColumn)
const difference = tableWidth - maxWidth
const newWidth = largestColumn.width - difference < minWidth ? minWidth : largestColumn.width - difference
const newWidth = Math.max(largestColumn.width - difference, minWidth)
largestColumn.width = newWidth
tableWidth = calculateTableWidth(widths)
seen.add(largestColumn.key)
Expand Down Expand Up @@ -178,34 +178,34 @@ export function getHeadings<T extends Record<string, unknown>>(config: Config<T>
if (typeof formatter === 'function') return formatter(header)

switch (formatter) {
case 'pascalCase': {
return pascalCase(header)
case 'camelCase': {
return camelCase(header)
}

case 'capitalCase': {
return capitalCase(header)
}

case 'camelCase': {
return camelCase(header)
}

case 'snakeCase': {
return snakeCase(header)
case 'constantCase': {
return constantCase(header)
}

case 'kebabCase': {
return kebabCase(header)
}

case 'constantCase': {
return constantCase(header)
case 'pascalCase': {
return pascalCase(header)
}

case 'sentenceCase': {
return sentenceCase(header)
}

case 'snakeCase': {
return snakeCase(header)
}

default: {
return header
}
Expand Down
2 changes: 1 addition & 1 deletion test/table.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {Box} from 'ink'
import {render} from 'ink-testing-library'
import React from 'react'

import {Cell, Header, Skeleton, Table, formatTextWithMargins, printTable} from '../src/table.js'
import {Cell, formatTextWithMargins, Header, printTable, Skeleton, Table} from '../src/table.js'

config.truncateThreshold = 0

Expand Down
Loading

0 comments on commit 50cd398

Please sign in to comment.