Skip to content

chore: add no implicit coercion eslint rule #3909

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Sep 6, 2022
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
1 change: 1 addition & 0 deletions site/.eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ rules:
- info
- debug
no-dupe-class-members: "off"
no-implicit-coercion: "error"
no-restricted-imports:
- error
- paths:
Expand Down
2 changes: 1 addition & 1 deletion site/src/AppRouter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ export const AppRouter: FC = () => {
<AuthAndFrame>
<RequirePermission
isFeatureVisible={
featureVisibility[FeatureNames.AuditLog] && !!permissions?.viewAuditLog
featureVisibility[FeatureNames.AuditLog] && Boolean(permissions?.viewAuditLog)
}
>
<AuditPage />
Expand Down
2 changes: 1 addition & 1 deletion site/src/components/ErrorSummary/ErrorSummary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ export const ErrorSummary: FC<React.PropsWithChildren<ErrorSummaryProps>> = ({
<Stack direction="row" alignItems="center" className={styles.messageBox}>
<Stack direction="row" spacing={0}>
<span className={styles.errorMessage}>{message}</span>
{!!detail && <Expander expanded={showDetails} setExpanded={setShowDetails} />}
{Boolean(detail) && <Expander expanded={showDetails} setExpanded={setShowDetails} />}
</Stack>
{dismissible && (
<IconButton onClick={closeError} className={styles.iconButton}>
Expand Down
4 changes: 2 additions & 2 deletions site/src/components/LoadingButton/LoadingButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export const LoadingButton: FC<React.PropsWithChildren<LoadingButtonProps>> = ({
children,
...rest
}) => {
const styles = useStyles({ hasLoadingLabel: !!loadingLabel })
const styles = useStyles({ hasLoadingLabel: Boolean(loadingLabel) })
const hidden = loading ? { opacity: 0 } : undefined

return (
Expand All @@ -34,7 +34,7 @@ export const LoadingButton: FC<React.PropsWithChildren<LoadingButtonProps>> = ({
<CircularProgress size={18} className={styles.spinner} />
</div>
)}
{!!loadingLabel && loadingLabel}
{Boolean(loadingLabel) && loadingLabel}
</Button>
)
}
Expand Down
3 changes: 2 additions & 1 deletion site/src/components/Navbar/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ export const Navbar: React.FC = () => {
selectFeatureVisibility,
shallowEqual,
)
const canViewAuditLog = featureVisibility[FeatureNames.AuditLog] && !!permissions?.viewAuditLog
const canViewAuditLog =
featureVisibility[FeatureNames.AuditLog] && Boolean(permissions?.viewAuditLog)
const onSignOut = () => authSend("SIGN_OUT")

return <NavbarView user={me} onSignOut={onSignOut} canViewAuditLog={canViewAuditLog} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export const SearchBarWithFilter: React.FC<React.PropsWithChildren<SearchBarWith
presetFilters,
error,
}) => {
const styles = useStyles({ error: !!error })
const styles = useStyles({ error: Boolean(error) })

const form = useFormik<FilterFormValues>({
enableReinitialize: true,
Expand Down Expand Up @@ -108,7 +108,7 @@ export const SearchBarWithFilter: React.FC<React.PropsWithChildren<SearchBarWith
id="query"
name="query"
value={form.values.query}
error={!!error}
error={Boolean(error)}
className={styles.inputStyles}
onChange={form.handleChange}
startAdornment={
Expand Down
2 changes: 1 addition & 1 deletion site/src/components/Tooltips/HelpTooltip/HelpTooltip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export const HelpTooltip: React.FC<React.PropsWithChildren<HelpTooltipProps>> =
}) => {
const styles = useStyles({ size })
const anchorRef = useRef<HTMLButtonElement>(null)
const [isOpen, setIsOpen] = useState(!!open)
const [isOpen, setIsOpen] = useState(Boolean(open))
const id = isOpen ? "help-popover" : undefined

const onClose = () => {
Expand Down
2 changes: 1 addition & 1 deletion site/src/components/UserDropdown/UsersDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export const UserDropdown: React.FC<React.PropsWithChildren<UserDropdownProps>>
<BorderedMenu
anchorEl={anchorEl}
getContentAnchorEl={null}
open={!!anchorEl}
open={Boolean(anchorEl)}
anchorOrigin={{
vertical: "bottom",
horizontal: "right",
Expand Down
2 changes: 1 addition & 1 deletion site/src/components/Workspace/Workspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ export const Workspace: FC<React.PropsWithChildren<WorkspaceProps>> = ({

<WorkspaceStats workspace={workspace} handleUpdate={handleUpdate} />

{!!resources && !!resources.length && (
{typeof resources !== "undefined" && resources.length > 0 && (
<Resources
resources={resources}
getResourcesError={workspaceErrors[WorkspaceErrors.GET_RESOURCES_ERROR]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export const WorkspaceActionButton: FC<React.PropsWithChildren<WorkspaceActionBu
}) => {
return (
<Button className={className} startIcon={icon} onClick={onClick} aria-label={ariaLabel}>
{!!label && label}
{Boolean(label) && label}
</Button>
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ export const validationSchema = Yup.object({
.test("positive-if-auto-stop", Language.errorNoStop, function (value) {
const parent = this.parent as WorkspaceScheduleFormValues
if (parent.autoStopEnabled) {
return !!value
return Boolean(value)
} else {
return true
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ export const TemplateSettingsPageView: FC<TemplateSettingsPageViewProps> = ({

return (
<FullPageForm title={Language.title} onCancel={onCancel}>
{!!errors.getTemplateError && <ErrorSummary error={errors.getTemplateError} />}
{Boolean(errors.getTemplateError) && <ErrorSummary error={errors.getTemplateError} />}
{isLoading && <Loader />}
{template && (
<TemplateSettingsForm
Expand Down
8 changes: 4 additions & 4 deletions site/src/pages/WorkspacePage/WorkspacePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ export const WorkspacePage: FC = () => {
cancellationError,
} = workspaceState.context

const canUpdateWorkspace = !!permissions?.updateWorkspace
const canUpdateWorkspace = Boolean(permissions?.updateWorkspace)

const [bannerState, bannerSend] = useMachine(workspaceScheduleBannerMachine)
const [buildInfoState] = useActor(xServices.buildInfoXService)
Expand All @@ -66,9 +66,9 @@ export const WorkspacePage: FC = () => {
if (workspaceState.matches("error")) {
return (
<div className={styles.error}>
{!!getWorkspaceError && <ErrorSummary error={getWorkspaceError} />}
{!!refreshTemplateError && <ErrorSummary error={refreshTemplateError} />}
{!!checkPermissionsError && <ErrorSummary error={checkPermissionsError} />}
{Boolean(getWorkspaceError) && <ErrorSummary error={getWorkspaceError} />}
{Boolean(refreshTemplateError) && <ErrorSummary error={refreshTemplateError} />}
{Boolean(checkPermissionsError) && <ErrorSummary error={checkPermissionsError} />}
</div>
)
} else if (!workspace || !permissions) {
Expand Down
2 changes: 1 addition & 1 deletion site/src/util/events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,5 @@ export type AnnotatedEventListener<E extends Event> = (event: E) => void
export const isCustomEvent = <D = unknown>(
event: CustomEvent<D> | Event,
): event is CustomEvent<D> => {
return !!(event as CustomEvent).detail
return Boolean((event as CustomEvent).detail)
}