You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by ep...@apache.org on 2023/07/06 22:27:47 UTC
[airflow] 34/42: Fix ts/eslint warnings (#32321)
This is an automated email from the ASF dual-hosted git repository.
ephraimanierobi pushed a commit to branch v2-6-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 04a3a0ab27091909cfaf52b6a59b3b47bb4af268
Author: Pierre Jeambrun <pi...@gmail.com>
AuthorDate: Mon Jul 3 09:42:26 2023 +0200
Fix ts/eslint warnings (#32321)
(cherry picked from commit b6eeccdfb67409f5035adc3ab8af97c4c03a40dc)
---
airflow/www/alias-rest-types.js | 1 +
airflow/www/babel.config.js | 2 +-
airflow/www/jest-setup.js | 2 ++
airflow/www/package.json | 2 +-
airflow/www/static/js/api/useDatasets.ts | 2 +-
airflow/www/static/js/api/useExtraLinks.ts | 7 +++++--
airflow/www/static/js/callModal.js | 3 +++
airflow/www/static/js/components/Table/Cells.tsx | 2 ++
airflow/www/static/js/components/Table/Table.test.tsx | 2 +-
airflow/www/static/js/components/Table/index.tsx | 6 ++++--
airflow/www/static/js/components/Tooltip.tsx | 3 ++-
airflow/www/static/js/connection_form.js | 4 ++++
airflow/www/static/js/dag/details/graph/utils.ts | 2 +-
airflow/www/static/js/dag/grid/dagRuns/index.test.tsx | 1 +
airflow/www/static/js/dag/grid/index.test.tsx | 1 +
airflow/www/static/js/dag_dependencies.js | 2 ++
airflow/www/static/js/dags.js | 1 +
airflow/www/static/js/datasets/List.test.tsx | 12 +++++++++---
airflow/www/static/js/datasets/List.tsx | 2 ++
airflow/www/static/js/datetime_utils.js | 1 +
airflow/www/static/js/gantt.js | 13 ++++++++++++-
airflow/www/static/js/graph.js | 1 +
airflow/www/static/js/main.js | 19 ++++++++++---------
airflow/www/static/js/task.js | 2 ++
airflow/www/static/js/task_instances.js | 2 ++
airflow/www/static/js/ti_log.js | 9 ++++++---
airflow/www/static/js/types/react-table-config.d.ts | 4 ++--
airflow/www/static/js/utils/URLSearchParamWrapper.ts | 3 ++-
airflow/www/static/js/utils/graph.ts | 14 +++++++++++---
29 files changed, 93 insertions(+), 32 deletions(-)
diff --git a/airflow/www/alias-rest-types.js b/airflow/www/alias-rest-types.js
index 83ddd89aae..c2767acca6 100644
--- a/airflow/www/alias-rest-types.js
+++ b/airflow/www/alias-rest-types.js
@@ -225,6 +225,7 @@ function generate(file) {
fs.writeFileSync(file, finalText, (err) => {
if (err) {
+ // eslint-disable-next-line no-console
console.error(err);
}
});
diff --git a/airflow/www/babel.config.js b/airflow/www/babel.config.js
index f38c60b91f..7f40a9fdf6 100644
--- a/airflow/www/babel.config.js
+++ b/airflow/www/babel.config.js
@@ -17,7 +17,7 @@
* under the License.
*/
-module.exports = function (api) {
+module.exports = (api) => {
api.cache(true);
const presets = [
diff --git a/airflow/www/jest-setup.js b/airflow/www/jest-setup.js
index 0a13d7c644..1323c26098 100644
--- a/airflow/www/jest-setup.js
+++ b/airflow/www/jest-setup.js
@@ -31,8 +31,10 @@ axios.defaults.adapter = require("axios/lib/adapters/http");
axios.interceptors.response.use((res) => res.data || res);
setLogger({
+ /* eslint-disable no-console */
log: console.log,
warn: console.warn,
+ /* eslint-enable no-console */
// ✅ no more errors on the console
error: () => {},
});
diff --git a/airflow/www/package.json b/airflow/www/package.json
index b15568593c..72fe94b4fc 100644
--- a/airflow/www/package.json
+++ b/airflow/www/package.json
@@ -7,7 +7,7 @@
"dev": "NODE_ENV=development webpack --watch --progress --devtool eval-cheap-source-map --mode development",
"prod": "NODE_ENV=production node --max_old_space_size=4096 ./node_modules/webpack/bin/webpack.js --mode production --progress",
"build": "NODE_ENV=production webpack --progress --mode production",
- "lint": "eslint --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && tsc",
+ "lint": "eslint --ignore-path=.eslintignore --max-warnings=0 --ext .js,.jsx,.ts,.tsx . && tsc",
"lint:fix": "eslint --fix --ignore-path=.eslintignore --ext .js,.jsx,.ts,.tsx . && tsc",
"format": "yarn prettier --write .",
"generate-api-types": "npx openapi-typescript \"../api_connexion/openapi/v1.yaml\" --output static/js/types/api-generated.ts && node alias-rest-types.js static/js/types/api-generated.ts"
diff --git a/airflow/www/static/js/api/useDatasets.ts b/airflow/www/static/js/api/useDatasets.ts
index 379d3c3e61..62d2583d90 100644
--- a/airflow/www/static/js/api/useDatasets.ts
+++ b/airflow/www/static/js/api/useDatasets.ts
@@ -24,7 +24,7 @@ import { getMetaValue } from "src/utils";
import type { DatasetListItem } from "src/types";
import type { unitOfTime } from "moment";
-interface DatasetsData {
+export interface DatasetsData {
datasets: DatasetListItem[];
totalEntries: number;
}
diff --git a/airflow/www/static/js/api/useExtraLinks.ts b/airflow/www/static/js/api/useExtraLinks.ts
index 302d58aa53..3d654e8cbc 100644
--- a/airflow/www/static/js/api/useExtraLinks.ts
+++ b/airflow/www/static/js/api/useExtraLinks.ts
@@ -46,14 +46,16 @@ export default function useExtraLinks({
async () => {
const data = await Promise.all(
extraLinks.map(async (link) => {
- mapIndex ??= -1;
+ const definedMapIndex = mapIndex ?? -1;
const url = `${extraLinksUrl}?task_id=${encodeURIComponent(
taskId
)}&dag_id=${encodeURIComponent(
dagId
)}&execution_date=${encodeURIComponent(
executionDate
- )}&link_name=${encodeURIComponent(link)}&map_index=${mapIndex}`;
+ )}&link_name=${encodeURIComponent(
+ link
+ )}&map_index=${definedMapIndex}`;
try {
const datum = await axios.get<AxiosResponse, LinkData>(url);
return {
@@ -61,6 +63,7 @@ export default function useExtraLinks({
url: datum.url,
};
} catch (e) {
+ // eslint-disable-next-line no-console
console.error(e);
return {
name: link,
diff --git a/airflow/www/static/js/callModal.js b/airflow/www/static/js/callModal.js
index a2cac9f26b..050c7eebff 100644
--- a/airflow/www/static/js/callModal.js
+++ b/airflow/www/static/js/callModal.js
@@ -56,6 +56,7 @@ const showExternalLogRedirect =
const buttons = Array.from(
document.querySelectorAll('a[id^="btn_"][data-base-url]')
).reduce((obj, elm) => {
+ // eslint-disable-next-line no-param-reassign
obj[elm.id.replace("btn_", "")] = elm;
return obj;
}, {});
@@ -64,12 +65,14 @@ function updateButtonUrl(elm, params) {
let url = elm.dataset.baseUrl;
if (params.dag_id && elm.dataset.baseUrl.indexOf(dagId) !== -1) {
url = url.replace(dagId, params.dag_id);
+ // eslint-disable-next-line no-param-reassign
delete params.dag_id;
}
if (
Object.prototype.hasOwnProperty.call(params, "map_index") &&
params.map_index === undefined
) {
+ // eslint-disable-next-line no-param-reassign
delete params.map_index;
}
elm.setAttribute("href", `${url}?${$.param(params)}`);
diff --git a/airflow/www/static/js/components/Table/Cells.tsx b/airflow/www/static/js/components/Table/Cells.tsx
index 8084eb917c..9e86a74935 100644
--- a/airflow/www/static/js/components/Table/Cells.tsx
+++ b/airflow/www/static/js/components/Table/Cells.tsx
@@ -41,8 +41,10 @@ import { SimpleStatus } from "src/dag/StatusBox";
interface CellProps {
cell: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
value: any;
row: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
original: Record<string, any>;
};
};
diff --git a/airflow/www/static/js/components/Table/Table.test.tsx b/airflow/www/static/js/components/Table/Table.test.tsx
index a3664d49a2..36d9b22456 100644
--- a/airflow/www/static/js/components/Table/Table.test.tsx
+++ b/airflow/www/static/js/components/Table/Table.test.tsx
@@ -28,7 +28,7 @@ import type { SortingRule } from "react-table";
import { ChakraWrapper } from "src/utils/testUtils";
import { Table } from ".";
-const data: Record<string, any>[] = [
+const data: Record<string, string>[] = [
{ firstName: "Lamont", lastName: "Grimes", country: "United States" },
{ firstName: "Alysa", lastName: "Armstrong", country: "Spain" },
{ firstName: "Petra", lastName: "Blick", country: "France" },
diff --git a/airflow/www/static/js/components/Table/index.tsx b/airflow/www/static/js/components/Table/index.tsx
index a2450707b3..753035da07 100644
--- a/airflow/www/static/js/components/Table/index.tsx
+++ b/airflow/www/static/js/components/Table/index.tsx
@@ -89,7 +89,7 @@ interface TableProps {
pageSize?: number;
isLoading?: boolean;
selectRows?: (selectedRows: number[]) => void;
- onRowClicked?: (row: Row<object>, e: any) => void;
+ onRowClicked?: (row: Row<object>, e: unknown) => void;
}
export const Table = ({
@@ -244,7 +244,9 @@ export const Table = ({
}
}
onClick={
- onRowClicked ? (e: any) => onRowClicked(row, e) : undefined
+ onRowClicked
+ ? (e: unknown) => onRowClicked(row, e)
+ : undefined
}
>
{row.cells.map((cell) => (
diff --git a/airflow/www/static/js/components/Tooltip.tsx b/airflow/www/static/js/components/Tooltip.tsx
index fc09cefc1f..72a55b0862 100644
--- a/airflow/www/static/js/components/Tooltip.tsx
+++ b/airflow/www/static/js/components/Tooltip.tsx
@@ -136,7 +136,7 @@ const Tooltip = forwardRef<TooltipProps, "div">((props, ref) => {
* Ensure tooltip has only one child node
*/
const child = React.Children.only(children) as React.ReactElement & {
- ref?: React.Ref<any>;
+ ref?: React.Ref<HTMLElement>;
};
const trigger: React.ReactElement = React.cloneElement(
child,
@@ -168,6 +168,7 @@ const Tooltip = forwardRef<TooltipProps, "div">((props, ref) => {
>
<StyledTooltip
variants={scale}
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
{...(tooltipProps as any)}
initial="exit"
animate="enter"
diff --git a/airflow/www/static/js/connection_form.js b/airflow/www/static/js/connection_form.js
index 456e7d036e..41df55dc07 100644
--- a/airflow/www/static/js/connection_form.js
+++ b/airflow/www/static/js/connection_form.js
@@ -70,12 +70,15 @@ function getControlsContainer() {
function restoreFieldBehaviours() {
Array.from(document.querySelectorAll("label[data-orig-text]")).forEach(
(elem) => {
+ // eslint-disable-next-line no-param-reassign
elem.innerText = elem.dataset.origText;
+ // eslint-disable-next-line no-param-reassign
delete elem.dataset.origText;
}
);
Array.from(document.querySelectorAll(".form-control")).forEach((elem) => {
+ // eslint-disable-next-line no-param-reassign
elem.placeholder = "";
elem.parentElement.parentElement.classList.remove("hide");
});
@@ -259,6 +262,7 @@ $(document).ready(() => {
- All other custom form fields (i.e. fields that are named ``extra__...``) in
alphabetical order
*/
+ // eslint-disable-next-line func-names
$.each(inArray, function () {
if (this.name === "conn_id") {
outObj.connection_id = this.value;
diff --git a/airflow/www/static/js/dag/details/graph/utils.ts b/airflow/www/static/js/dag/details/graph/utils.ts
index 703fb38b9c..8e9c4d1934 100644
--- a/airflow/www/static/js/dag/details/graph/utils.ts
+++ b/airflow/www/static/js/dag/details/graph/utils.ts
@@ -132,7 +132,7 @@ export const nodeColor = ({
export const nodeStrokeColor = (
{ data: { isSelected } }: ReactFlowNode<CustomNodeProps>,
- colors: any
+ colors: Record<string, string>
) => (isSelected ? colors.blue[500] : "");
interface BuildEdgesProps {
diff --git a/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx b/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
index d77f30af32..2ac20ea3cc 100644
--- a/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
+++ b/airflow/www/static/js/dag/grid/dagRuns/index.test.tsx
@@ -48,6 +48,7 @@ const generateRuns = (length: number): DagRun[] =>
note: "someRandomValue",
}));
+/* eslint-disable @typescript-eslint/no-explicit-any */
describe("Test DagRuns", () => {
test("Durations and manual run arrow render correctly, but without any date ticks", () => {
const dagRuns: DagRun[] = [
diff --git a/airflow/www/static/js/dag/grid/index.test.tsx b/airflow/www/static/js/dag/grid/index.test.tsx
index 1b3888ffae..66e1cafaeb 100644
--- a/airflow/www/static/js/dag/grid/index.test.tsx
+++ b/airflow/www/static/js/dag/grid/index.test.tsx
@@ -135,6 +135,7 @@ describe("Test ToggleGroups", () => {
const returnValue = {
data: mockGridData,
isSuccess: true,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
} as any;
jest
diff --git a/airflow/www/static/js/dag_dependencies.js b/airflow/www/static/js/dag_dependencies.js
index ddd40c248a..a3c4a713ea 100644
--- a/airflow/www/static/js/dag_dependencies.js
+++ b/airflow/www/static/js/dag_dependencies.js
@@ -97,6 +97,7 @@ function setUpZoomSupport() {
}
function setUpNodeHighlighting(focusItem = null) {
+ // eslint-disable-next-line func-names
d3.selectAll("g.node").on("mouseover", function (d) {
d3.select(this).selectAll("rect").style("stroke", highlightColor);
highlightNodes(g.predecessors(d), upstreamColor, highlightStrokeWidth);
@@ -114,6 +115,7 @@ function setUpNodeHighlighting(focusItem = null) {
});
});
+ // eslint-disable-next-line func-names
d3.selectAll("g.node").on("mouseout", function (d) {
d3.select(this).selectAll("rect,circle").style("stroke", null);
highlightNodes(g.predecessors(d), null, initialStrokeWidth);
diff --git a/airflow/www/static/js/dags.js b/airflow/www/static/js/dags.js
index 1854ae53a2..ea53be18ac 100644
--- a/airflow/www/static/js/dags.js
+++ b/airflow/www/static/js/dags.js
@@ -320,6 +320,7 @@ function getDagIds({ activeDagsOnly = false } = {}) {
dagIds = dagIds.filter(":checked");
}
dagIds = dagIds
+ // eslint-disable-next-line func-names
.map(function () {
return $(this).data("dag-id");
})
diff --git a/airflow/www/static/js/datasets/List.test.tsx b/airflow/www/static/js/datasets/List.test.tsx
index 34e70f70b0..c1cd0da344 100644
--- a/airflow/www/static/js/datasets/List.test.tsx
+++ b/airflow/www/static/js/datasets/List.test.tsx
@@ -25,6 +25,8 @@ import { render } from "@testing-library/react";
import * as useDatasetsModule from "src/api/useDatasets";
import { Wrapper } from "src/utils/testUtils";
+import type { UseQueryResult } from "react-query";
+import type { DatasetListItem } from "src/types";
import DatasetsList from "./List";
const datasets = [
@@ -57,22 +59,26 @@ const datasets = [
},
];
+type UseDatasetsReturn = UseQueryResult<useDatasetsModule.DatasetsData> & {
+ data: useDatasetsModule.DatasetsData;
+};
+
const returnValue = {
data: {
datasets,
totalEntries: datasets.length,
},
isSuccess: true,
-} as any;
+} as UseDatasetsReturn;
const emptyReturnValue = {
data: {
- datasets: [],
+ datasets: [] as DatasetListItem[],
totalEntries: 0,
},
isSuccess: true,
isLoading: false,
-} as any;
+} as UseDatasetsReturn;
describe("Test Datasets List", () => {
test("Displays a list of datasets", () => {
diff --git a/airflow/www/static/js/datasets/List.tsx b/airflow/www/static/js/datasets/List.tsx
index e201e1d2d4..6bbfd26497 100644
--- a/airflow/www/static/js/datasets/List.tsx
+++ b/airflow/www/static/js/datasets/List.tsx
@@ -49,8 +49,10 @@ interface Props {
interface CellProps {
cell: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
value: any;
row: {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
original: Record<string, any>;
};
};
diff --git a/airflow/www/static/js/datetime_utils.js b/airflow/www/static/js/datetime_utils.js
index b9e4b76eeb..c23f8d665e 100644
--- a/airflow/www/static/js/datetime_utils.js
+++ b/airflow/www/static/js/datetime_utils.js
@@ -104,6 +104,7 @@ export function updateAllDateTimes() {
// Since we have set the default timezone for moment, it will automatically
// convert it to the new target for us
$(".datetime input").each((_, el) => {
+ // eslint-disable-next-line no-param-reassign
el.value = moment(el.value).format();
});
}
diff --git a/airflow/www/static/js/gantt.js b/airflow/www/static/js/gantt.js
index 048ba741e6..2b7cf10c81 100644
--- a/airflow/www/static/js/gantt.js
+++ b/airflow/www/static/js/gantt.js
@@ -74,7 +74,7 @@ const replacements = {
"%": "%",
};
-moment.fn.strftime = function (format) {
+moment.fn.strftime = function formatTime(format) {
// Break up format string based on strftime tokens
const tokens = format.split(/(%-?.)/);
const momentFormat = tokens
@@ -173,12 +173,15 @@ d3.gantt = () => {
tasks.forEach((a) => {
if (!(a.start_date instanceof moment)) {
+ // eslint-disable-next-line no-param-reassign
a.start_date = moment(a.start_date);
}
if (!(a.end_date instanceof moment)) {
+ // eslint-disable-next-line no-param-reassign
a.end_date = moment(a.end_date);
}
if (a.queued_dttm && !(a.queued_dttm instanceof moment)) {
+ // eslint-disable-next-line no-param-reassign
a.queued_dttm = moment(a.queued_dttm);
}
});
@@ -349,12 +352,14 @@ d3.gantt = () => {
return gantt;
};
+ // eslint-disable-next-line func-names
gantt.margin = function (value) {
if (!arguments.length) return margin;
margin = value;
return gantt;
};
+ // eslint-disable-next-line func-names
gantt.timeDomain = function (value) {
if (!arguments.length) return [timeDomainStart, timeDomainEnd];
timeDomainStart = +value[0];
@@ -367,36 +372,42 @@ d3.gantt = () => {
* vale The value can be "fit" - the domain fits the data or
* "fixed" - fixed domain.
*/
+ // eslint-disable-next-line func-names
gantt.timeDomainMode = function (value) {
if (!arguments.length) return timeDomainMode;
timeDomainMode = value;
return gantt;
};
+ // eslint-disable-next-line func-names
gantt.taskTypes = function (value) {
if (!arguments.length) return taskTypes;
taskTypes = value;
return gantt;
};
+ // eslint-disable-next-line func-names
gantt.width = function (value) {
if (!arguments.length) return width;
width = +value;
return gantt;
};
+ // eslint-disable-next-line func-names
gantt.height = function (value) {
if (!arguments.length) return height;
height = +value;
return gantt;
};
+ // eslint-disable-next-line func-names
gantt.tickFormat = function (value) {
if (!arguments.length) return tickFormat;
tickFormat = value;
return gantt;
};
+ // eslint-disable-next-line func-names
gantt.selector = function (value) {
if (!arguments.length) return selector;
selector = value;
diff --git a/airflow/www/static/js/graph.js b/airflow/www/static/js/graph.js
index 38b1ae6211..b61639d3a8 100644
--- a/airflow/www/static/js/graph.js
+++ b/airflow/www/static/js/graph.js
@@ -153,6 +153,7 @@ function collapseGroup(nodeId, node) {
getChildrenIds(node).forEach((childId) => mapTaskToNode.set(childId, nodeId));
+ // eslint-disable-next-line no-param-reassign
node = g.node(nodeId);
// Set children edges onto the group edge
diff --git a/airflow/www/static/js/main.js b/airflow/www/static/js/main.js
index 7350a5cfff..95861ea6c1 100644
--- a/airflow/www/static/js/main.js
+++ b/airflow/www/static/js/main.js
@@ -69,19 +69,20 @@ export function escapeHtml(text) {
window.escapeHtml = escapeHtml;
export function convertSecsToHumanReadable(seconds) {
+ let processedSeconds = seconds;
const oriSeconds = seconds;
const floatingPart = oriSeconds - Math.floor(oriSeconds);
- seconds = Math.floor(seconds);
+ processedSeconds = Math.floor(processedSeconds);
const secondsPerHour = 60 * 60;
const secondsPerMinute = 60;
- const hours = Math.floor(seconds / secondsPerHour);
- seconds -= hours * secondsPerHour;
+ const hours = Math.floor(processedSeconds / secondsPerHour);
+ processedSeconds -= hours * secondsPerHour;
- const minutes = Math.floor(seconds / secondsPerMinute);
- seconds -= minutes * secondsPerMinute;
+ const minutes = Math.floor(processedSeconds / secondsPerMinute);
+ processedSeconds -= minutes * secondsPerMinute;
let readableFormat = "";
if (hours > 0) {
@@ -90,12 +91,12 @@ export function convertSecsToHumanReadable(seconds) {
if (minutes > 0) {
readableFormat += `${minutes}Min `;
}
- if (seconds + floatingPart > 0) {
+ if (processedSeconds + floatingPart > 0) {
if (Math.floor(oriSeconds) === oriSeconds) {
- readableFormat += `${seconds}Sec`;
+ readableFormat += `${processedSeconds}Sec`;
} else {
- seconds += floatingPart;
- readableFormat += `${seconds.toFixed(3)}Sec`;
+ processedSeconds += floatingPart;
+ readableFormat += `${processedSeconds.toFixed(3)}Sec`;
}
}
return readableFormat;
diff --git a/airflow/www/static/js/task.js b/airflow/www/static/js/task.js
index df54602729..d4c03d1848 100644
--- a/airflow/www/static/js/task.js
+++ b/airflow/www/static/js/task.js
@@ -27,6 +27,7 @@ document.addEventListener("DOMContentLoaded", () => {
const value = attr.innerHTML;
if (value.length === 32 && moment(value, "YYYY-MM-DD").isValid()) {
// 32 is the length of our timestamps
+ // eslint-disable-next-line no-param-reassign
attr.innerHTML = "";
const timeElement = document.createElement("time");
timeElement.setAttribute("datetime", value);
@@ -35,6 +36,7 @@ document.addEventListener("DOMContentLoaded", () => {
attr.appendChild(timeElement);
} else if (validator.isURL(value)) {
// very basic url detection
+ // eslint-disable-next-line no-param-reassign
attr.innerHTML = "";
const linkElement = document.createElement("a");
linkElement.setAttribute("href", value);
diff --git a/airflow/www/static/js/task_instances.js b/airflow/www/static/js/task_instances.js
index 8df8b46841..e3ad1a4633 100644
--- a/airflow/www/static/js/task_instances.js
+++ b/airflow/www/static/js/task_instances.js
@@ -119,12 +119,14 @@ export default function tiTooltip(ti, task, { includeTryNumber = false } = {}) {
if (ti.state === "running") {
const startDate =
ti.start_date instanceof moment ? ti.start_date : moment(ti.start_date);
+ // eslint-disable-next-line no-param-reassign
ti.duration = moment().diff(startDate, "second");
} else if (!ti.duration && ti.end_date) {
const startDate =
ti.start_date instanceof moment ? ti.start_date : moment(ti.start_date);
const endDate =
ti.end_date instanceof moment ? ti.end_date : moment(ti.end_date);
+ // eslint-disable-next-line no-param-reassign
ti.duration = moment(endDate).diff(startDate, "second");
}
diff --git a/airflow/www/static/js/ti_log.js b/airflow/www/static/js/ti_log.js
index d2e223b103..23fd0af769 100644
--- a/airflow/www/static/js/ti_log.js
+++ b/airflow/www/static/js/ti_log.js
@@ -37,6 +37,7 @@ function recurse(delay = DELAY) {
setTimeout(resolve, delay);
});
}
+/* eslint-disable no-console */
// Enable auto tailing only when users scroll down to the bottom
// of the page. This prevent auto tailing the page if users want
@@ -166,15 +167,16 @@ function autoTailingLog(tryNumber, metadata = null, autoTailing = false) {
}
function setDownloadUrl(tryNumber) {
- if (!tryNumber) {
+ let tryNumberData = tryNumber;
+ if (!tryNumberData) {
// default to the currently selected tab
- tryNumber = $("#ti_log_try_number_list .active a").data("try-number");
+ tryNumberData = $("#ti_log_try_number_list .active a").data("try-number");
}
const query = new URLSearchParams({
dag_id: dagId,
task_id: taskId,
execution_date: executionDate,
- try_number: tryNumber,
+ try_number: tryNumberData,
metadata: "null",
format: "file",
});
@@ -187,6 +189,7 @@ $(document).ready(() => {
autoTailingLog(TOTAL_ATTEMPTS, null, true);
setDownloadUrl();
+ // eslint-disable-next-line func-names
$("#ti_log_try_number_list a").click(function () {
const tryNumber = $(this).data("try-number");
diff --git a/airflow/www/static/js/types/react-table-config.d.ts b/airflow/www/static/js/types/react-table-config.d.ts
index 0b62ceb16f..2bc503ed18 100644
--- a/airflow/www/static/js/types/react-table-config.d.ts
+++ b/airflow/www/static/js/types/react-table-config.d.ts
@@ -87,7 +87,7 @@ declare module "react-table" {
// this matches the spirit of the underlying js library,
// but might be cleaner if it's replaced by a more specific type that matches your
// feature set, this is a safe default.
- Record<string, any> {}
+ Record<string, unknown> {}
export interface Hooks<
D extends Record<string, unknown> = Record<string, unknown>
@@ -139,7 +139,7 @@ declare module "react-table" {
export interface Cell<
D extends Record<string, unknown> = Record<string, unknown>,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
- V = any
+ V = unknown
> extends UseGroupByCellProps<D>,
UseRowStateCellProps<D> {}
diff --git a/airflow/www/static/js/utils/URLSearchParamWrapper.ts b/airflow/www/static/js/utils/URLSearchParamWrapper.ts
index befeadcaf5..476db61b90 100644
--- a/airflow/www/static/js/utils/URLSearchParamWrapper.ts
+++ b/airflow/www/static/js/utils/URLSearchParamWrapper.ts
@@ -18,7 +18,8 @@
*/
class URLSearchParamsWrapper extends URLSearchParams {
- constructor(init?: { [keys: string]: any }) {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ constructor(init?: Record<string, any>) {
if (init) {
const stringValues: { [keys: string]: string } = {};
Object.keys(init).forEach((key) => {
diff --git a/airflow/www/static/js/utils/graph.ts b/airflow/www/static/js/utils/graph.ts
index d2d2923c5a..50b8896cec 100644
--- a/airflow/www/static/js/utils/graph.ts
+++ b/airflow/www/static/js/utils/graph.ts
@@ -84,13 +84,21 @@ const generateGraph = ({
}: GenerateProps) => {
const closedGroupIds: string[] = [];
- const formatChildNode = (node: any) => {
+ const formatChildNode = (
+ node: DepNode
+ ): DepNode & {
+ label: string;
+ layoutOptions?: Record<string, string>;
+ width?: number;
+ height?: number;
+ } => {
const { id, value, children } = node;
const isOpen = openGroupIds?.includes(value.label);
const childCount =
- children?.filter((c: any) => !c.id.includes("join_id")).length || 0;
- if (isOpen && children.length) {
+ children?.filter((c: DepNode) => !c.id.includes("join_id")).length || 0;
+ if (isOpen && children?.length) {
return {
+ ...node,
id,
value: {
...value,