Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .eslintignore

This file was deleted.

16 changes: 0 additions & 16 deletions .eslintrc.js

This file was deleted.

115 changes: 115 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
const { FlatCompat } = require('@eslint/eslintrc')
const js = require('@eslint/js')
const path = require('path')
const globals = require('globals')

const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
})

module.exports = [
{
ignores: [
'node_modules/',
'packages/frontend/src/graphql/index.tsx',
'packages/api/src/graphql.ts',
'packages/db-migration/**',
'**/lib/**',
'**/dist/**',
],
},

{
settings: {
react: { version: 'detect' },
},
},

// Extend old configs
...compat.extends(
'eslint:recommended',
'plugin:react/recommended',
'plugin:react-hooks/recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
'prettier'
),

// Set parser and parserOptions for TS files
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parser: require('@typescript-eslint/parser'),
parserOptions: {
project: [path.resolve(__dirname, 'tsconfig.eslint.json')],
tsconfigRootDir: __dirname,
sourceType: 'module',
},
globals: {
...globals.node,
},
},
plugins: {
'@typescript-eslint': require('@typescript-eslint/eslint-plugin'),
},
rules: {
'@typescript-eslint/ban-types': 'off',
'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_',
caughtErrorsIgnorePattern: '^_',
},
],
'@typescript-eslint/no-use-before-define': 'off',
'react/display-name': 'off',
'react/prop-types': 'off',
},
},

//Set globals for js files
{
files: ['**/*.js', 'scripts/**/*.js', '*.config.js', '.eslintrc.js'],
languageOptions: {
ecmaVersion: 2020,
sourceType: 'commonjs',
globals: {
...globals.node,
},
},
rules: {
'@typescript-eslint/no-require-imports': 'off',
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-unused-vars': [
'error',
{
varsIgnorePattern: '^_',
argsIgnorePattern: '^_',
caughtErrorsIgnorePattern: '^_',
},
],
},
},

// React plugin specific settings for JSX/TSX files
{
files: ['**/*.tsx', '**/*.jsx'],
plugins: {
react: require('eslint-plugin-react'),
'react-hooks': require('eslint-plugin-react-hooks'),
},
},

//backend and components package rule override
{
files: ['packages/backend/**/*.{ts,tsx,js,jsx}', 'packages/components/**/*.{ts,tsx,js,jsx}'],
rules: {
'@typescript-eslint/explicit-function-return-type': 'off',
'react/prop-types': 'off',
},
},
]
19 changes: 10 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@
"generate:verify": "yarn generate && git diff --exit-code",
"invoke:cleanup": "sls invoke local -f cleanup",
"lerna:start": "lerna run start --stream",
"lint": "eslint packages --ext .ts,.tsx --fix",
"lint:verify": "eslint packages --ext .ts,.tsx",
"lint": "eslint packages --fix",
"lint:verify": "eslint packages",
"sls": "sls offline start",
"sort-package-jsons": "sort-package-json package.json packages/*/package.json",
"sort-package-jsons:verify": "yarn sort-package-jsons && git diff --exit-code package.json packages/*/package.json",
Expand All @@ -43,20 +43,21 @@
},
"devDependencies": {
"@commitlint/cli": "^11.0.0",
"@eslint/eslintrc": "^3.3.1",
"@types/node": "^22.9.0",
"@types/webpack-env": "^1.15.3",
"@typescript-eslint/eslint-plugin": "^5.40.0",
"@typescript-eslint/parser": "^5.40.0",
"@typescript-eslint/eslint-plugin": "^8.39.0",
"@typescript-eslint/parser": "^8.39.0",
"concurrently": "^6.2.0",
"dotenv": "^10.0.0",
"dynamodb-admin": "^4.1.0",
"eslint": "^7.27.0",
"eslint-config-prettier": "^6.10.0",
"eslint-plugin-react": "^7.23.2",
"eslint-plugin-react-hooks": "^4.2.0",
"eslint": "^9.32.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-react": "^7.33.2",
"eslint-plugin-react-hooks": "^5.2.0",
"husky": "^4.3.0",
"lerna": "^7.4.2",
"prettier": "^2.1.2",
"prettier": "^3.6.2",
"serverless": "^3.23.0",
"serverless-dynamodb": "^0.2.47",
"serverless-iam-roles-per-function": "^3.2.0",
Expand Down
17 changes: 10 additions & 7 deletions packages/alexa/src/helpers/slot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,18 @@ export const getSlotValues = <T extends string>(
requestEnvelope: RequestEnvelope,
...slotNames: T[]
): Record<T, string | undefined> => {
return slotNames.reduce((acc, name) => {
const value = getSlotValue(requestEnvelope, name)
return slotNames.reduce(
(acc, name) => {
const value = getSlotValue(requestEnvelope, name)

if (value === '?') {
return acc
}
if (value === '?') {
return acc
}

return { ...acc, [name]: value }
}, {} as Record<T, string | undefined>)
return { ...acc, [name]: value }
},
{} as Record<T, string | undefined>
)
}

export const getSlotId = (slot?: Slot): string | undefined =>
Expand Down
2 changes: 1 addition & 1 deletion packages/api/src/email.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ export type ExportMailPayload = BaseEmailPayload & {
attachments: [
{
filename: string
}
},
]
}

Expand Down
13 changes: 0 additions & 13 deletions packages/backend/.eslintrc.js

This file was deleted.

2 changes: 1 addition & 1 deletion packages/backend/src/services/oauth.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ export const validateJWT = (jwt: string): JWTPayload | undefined => {
try {
const decoded = verify(jwt, LaraSecret)
return typeof decoded !== 'object' ? JSON.parse(decoded) : (decoded as JWTPayload)
} catch (e) {
} catch (_) {
return undefined
}
}
1 change: 0 additions & 1 deletion packages/backend/src/test/getEnv.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// eslint-disable-next-line no-undef
process.env = {
USER_TABLE: 'foo',
COMPANY_TABLE: 'foo',
Expand Down
7 changes: 0 additions & 7 deletions packages/components/.eslintrc.js

This file was deleted.

4 changes: 2 additions & 2 deletions packages/components/src/navigation-button-link.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ export interface StyledLinkProps extends LinkProps {
}

// isLeft props needs to be removed from LinkProps
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const StyledLink = styled(({ isLeft, ...rest }) => <Link {...rest} />)<StyledLinkProps>`

const StyledLink = styled(({ isLeft: _isLeft, ...rest }) => <Link {...rest} />)<StyledLinkProps>`
display: flex;
align-items: center;
justify-content: center;
Expand Down
3 changes: 1 addition & 2 deletions packages/components/src/navigation.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ export interface NavItemProps extends NavLinkProps {
isMobile: boolean
}

// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const StyledNavItem = styled(({ isMobile, ...rest }: NavItemProps) => <NavLink {...rest} />)`
export const StyledNavItem = styled(({ isMobile: _isMobile, ...rest }: NavItemProps) => <NavLink {...rest} />)`
height: 60px;
display: flex;
align-items: center;
Expand Down
3 changes: 1 addition & 2 deletions packages/components/src/text-time-input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@ interface WrapperProps extends FlexProps {
readonly focused: boolean
}

// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const StyledTextTimeInputWrapper = styled(({ focused, ...rest }: WrapperProps) => (
export const StyledTextTimeInputWrapper = styled(({ focused: _focused, ...rest }: WrapperProps) => (
<StyledEntryValueWrapper {...rest} />
))<WrapperProps>`
border-bottom: 1px solid ${({ focused, theme }) => (focused ? theme.blueFont : theme.inputBorderEmpty)};
Expand Down
3 changes: 1 addition & 2 deletions packages/components/src/unstyled-link.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ interface UnstyledLinkProps extends LinkProps {
fullWidth?: boolean
}

// eslint-disable-next-line @typescript-eslint/no-unused-vars
export const UnstyledLink = styled(({ fullWidth, ...rest }: UnstyledLinkProps) => <Link {...rest} />)`
export const UnstyledLink = styled(({ fullWidth: _fullWidth, ...rest }: UnstyledLinkProps) => <Link {...rest} />)`
text-decoration: none;
width: ${(props) => !props.fullWidth && 'fit-content'};
`
11 changes: 0 additions & 11 deletions packages/e2e/.eslintrc.js

This file was deleted.

6 changes: 3 additions & 3 deletions packages/e2e/tests/entry.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ test.describe('entry', () => {
test.beforeAll(async ({ browser }) => {
const context = await browser.newContext()
page = await context.newPage()
await page.goto(URL)
await page.goto(URL ?? '')
await page.locator(`text=${envName}`).hover()
await page.type('input', USER_ID)
await page.type('input', USER_ID ?? '')
await page.locator('text=Dev Login').click()
})

Expand Down Expand Up @@ -53,6 +53,6 @@ test.describe('entry', () => {
await page.locator('button > i').click()
await page.locator('text=Entry has been deleted').waitFor()
const work = page.locator(updatedEntryText)
expect(work).toBeUndefined
expect(work).toBeUndefined()
})
})
11 changes: 0 additions & 11 deletions packages/email/.eslintrc.js

This file was deleted.

11 changes: 0 additions & 11 deletions packages/frontend/.eslintrc.js

This file was deleted.

2 changes: 1 addition & 1 deletion packages/frontend/scripts/get-revision.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module.exports = function () {
try {
return require('child_process').execSync('git rev-parse HEAD').toString().trim()
} catch (error) {
} catch (_) {
return 'Revision not available'
}
}
3 changes: 0 additions & 3 deletions packages/frontend/src/apollo-provider.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import React from 'react'

/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-call */
import {
ApolloClient,
ApolloLink,
Expand Down Expand Up @@ -35,7 +33,6 @@ const ApolloProvider: React.FunctionComponent = ({ children }) => {
fields: {
entries: {
merge(_, incoming) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return incoming
},
},
Expand Down
2 changes: 1 addition & 1 deletion packages/frontend/src/components/day-input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ const DayInput: React.FunctionComponent<DayInputProps> = ({ day, heading, disabl

const handleStatusChange = (newStatus: EntryStatusType) => {
clearTimeout(statusTimeout)
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment

setStatus({ ...newStatus, icon: StatusIcons[newStatus.type] })
setStatusVisible(true)

Expand Down
10 changes: 7 additions & 3 deletions packages/frontend/src/components/entry-input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -223,9 +223,13 @@ const EntryInput: React.FC<EntryDisplayFieldProps> = ({
}

const toggleContextMenu = () => {
setShowContextMenu && showContextMenu != entry.id
? setShowContextMenu(entry.id)
: setShowContextMenu && setShowContextMenu('')
if (setShowContextMenu) {
if (showContextMenu !== entry.id) {
setShowContextMenu(entry.id)
} else {
setShowContextMenu('')
}
}
}

const onDragEnter = React.useCallback(() => {
Expand Down
Loading