diff --git a/.eslintrc.cjs b/.eslintrc.cjs index b8257da5ae7..18f28ee534b 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -59,6 +59,7 @@ module.exports = { "react/no-unescaped-entities": ["warn", { forbid: [">", "}"] }], "react/prop-types": "warn", "@typescript-eslint/no-floating-promises": "error", + "no-constant-binary-expression": "error" }, settings: { "import/resolver": { diff --git a/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx b/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx index 87b53fb87ee..02733afb1c4 100644 --- a/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx +++ b/adminSiteClient/GrapherConfigGridEditorTypesAndUtils.tsx @@ -138,7 +138,7 @@ export function fetchVariablesParametersFromQueryString( offset: Number.parseInt(params.offset ?? "0"), filterQuery: filterQuery ?? filterExpressionNoFilter, sortByColumn: params.sortByColumn ?? "id", - sortByAscending: params.sortByAscending === "true" ?? false, + sortByAscending: params.sortByAscending === "true", } } diff --git a/adminSiteClient/SuggestedChartRevisionApproverPage.tsx b/adminSiteClient/SuggestedChartRevisionApproverPage.tsx index 1e739150163..617dfc95d70 100644 --- a/adminSiteClient/SuggestedChartRevisionApproverPage.tsx +++ b/adminSiteClient/SuggestedChartRevisionApproverPage.tsx @@ -301,7 +301,7 @@ export class SuggestedChartRevisionApproverPage extends React.Component<{ this.currentSuggestedChartRevision.suggestedConfig.subtitle = subtitle this.gptNumDisp = this.gptNum + 1 - this.gptNum = this.gptNumDisp % suggestions?.length ?? 1 + this.gptNum = this.gptNumDisp % suggestions?.length || 1 this.usingGPT = true } } diff --git a/packages/@ourworldindata/grapher/src/controls/ShareMenu.tsx b/packages/@ourworldindata/grapher/src/controls/ShareMenu.tsx index a58a1a1faca..fc4dc221c07 100644 --- a/packages/@ourworldindata/grapher/src/controls/ShareMenu.tsx +++ b/packages/@ourworldindata/grapher/src/controls/ShareMenu.tsx @@ -203,7 +203,7 @@ export class ShareMenu extends React.Component { title="Tweet a link" data-track-note="chart_share_twitter" href={twitterHref} - rel="noopener" + rel="noreferrer noopener" > @@ -215,7 +215,7 @@ export class ShareMenu extends React.Component { title="Share on Facebook" data-track-note="chart_share_facebook" href={facebookHref} - rel="noopener" + rel="noreferrer noopener" > @@ -262,7 +262,7 @@ export class ShareMenu extends React.Component { target="_blank" title="Edit chart" href={editUrl} - rel="noopener" + rel="noreferrer noopener" > diff --git a/packages/@ourworldindata/grapher/src/core/Grapher.tsx b/packages/@ourworldindata/grapher/src/core/Grapher.tsx index 84d85429356..025629be0fb 100644 --- a/packages/@ourworldindata/grapher/src/core/Grapher.tsx +++ b/packages/@ourworldindata/grapher/src/core/Grapher.tsx @@ -816,12 +816,12 @@ export class Grapher } private get isStaging(): boolean { - if (typeof location === undefined) return false + if (typeof location === "undefined") return false return location.host.includes("staging") } private get isLocalhost(): boolean { - if (typeof location === undefined) return false + if (typeof location === "undefined") return false return location.host.includes("localhost") } diff --git a/settings/clientSettings.ts b/settings/clientSettings.ts index 9d5b1c05252..cdf3fc59f21 100644 --- a/settings/clientSettings.ts +++ b/settings/clientSettings.ts @@ -61,7 +61,7 @@ export const GOOGLE_TAG_MANAGER_ID: string = process.env.GOOGLE_TAG_MANAGER_ID ?? "" export const TOPICS_CONTENT_GRAPH: boolean = - process.env.TOPICS_CONTENT_GRAPH === "true" ?? false + process.env.TOPICS_CONTENT_GRAPH === "true" export const GDOCS_CLIENT_EMAIL: string = process.env.GDOCS_CLIENT_EMAIL ?? "" export const GDOCS_BASIC_ARTICLE_TEMPLATE_URL: string = diff --git a/settings/serverSettings.ts b/settings/serverSettings.ts index 1b0d95ff4ee..7f41d1780fd 100644 --- a/settings/serverSettings.ts +++ b/settings/serverSettings.ts @@ -27,8 +27,7 @@ export const DATA_API_FOR_ADMIN_UI: string | undefined = serverSettings.DATA_API_FOR_ADMIN_UI export const BAKED_BASE_URL: string = clientSettings.BAKED_BASE_URL -export const VITE_PREVIEW: boolean = - serverSettings.VITE_PREVIEW === "true" ?? false +export const VITE_PREVIEW: boolean = serverSettings.VITE_PREVIEW === "true" export const ADMIN_BASE_URL: string = clientSettings.ADMIN_BASE_URL @@ -36,7 +35,7 @@ export const BAKED_GRAPHER_URL: string = serverSettings.BAKED_GRAPHER_URL ?? `${BAKED_BASE_URL}/grapher` export const OPTIMIZE_SVG_EXPORTS: boolean = - serverSettings.OPTIMIZE_SVG_EXPORTS === "true" ?? false + serverSettings.OPTIMIZE_SVG_EXPORTS === "true" export const GITHUB_USERNAME: string = serverSettings.GITHUB_USERNAME ?? "owid-test" @@ -85,7 +84,7 @@ export const SESSION_COOKIE_AGE: number = export const ALGOLIA_SECRET_KEY: string = serverSettings.ALGOLIA_SECRET_KEY ?? "" export const ALGOLIA_INDEXING: boolean = - serverSettings.ALGOLIA_INDEXING === "true" ?? false + serverSettings.ALGOLIA_INDEXING === "true" // Wordpress target setting export const HTTPS_ONLY: boolean = serverSettings.HTTPS_ONLY !== "false" ?? true @@ -97,8 +96,7 @@ export const UNCATEGORIZED_TAG_ID: number = parseIntOrUndefined(serverSettings.UNCATEGORIZED_TAG_ID) ?? 375 // Should the static site output be baked when relevant database items change -export const BAKE_ON_CHANGE: boolean = - serverSettings.BAKE_ON_CHANGE === "true" ?? false +export const BAKE_ON_CHANGE: boolean = serverSettings.BAKE_ON_CHANGE === "true" export const DEPLOY_QUEUE_FILE_PATH: string = serverSettings.DEPLOY_QUEUE_FILE_PATH ?? `${BASE_DIR}/.queue` export const DEPLOY_PENDING_FILE_PATH: string =