build(eslint): disabling wildcard imports with eslint (#31761)

This commit is contained in:
Evan Rusackas 2025-01-13 17:25:47 -07:00 committed by GitHub
parent 44ff462718
commit 855011360a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 26 additions and 15 deletions

View File

@ -193,6 +193,12 @@ module.exports = {
message: message:
'Default React import is not required due to automatic JSX runtime in React 16.4', 'Default React import is not required due to automatic JSX runtime in React 16.4',
}, },
{
// this disallows wildcard imports from modules (but allows them for local files with `./` or `src/`)
selector:
'ImportNamespaceSpecifier[parent.source.value!=/^(\\.|src)/]',
message: 'Wildcard imports are not allowed',
},
], ],
}, },
settings: { settings: {

View File

@ -18,7 +18,7 @@
*/ */
import { SAMPLE_DASHBOARD_1, TABBED_DASHBOARD } from 'cypress/utils/urls'; import { SAMPLE_DASHBOARD_1, TABBED_DASHBOARD } from 'cypress/utils/urls';
import { drag, resize, waitForChartLoad } from 'cypress/utils'; import { drag, resize, waitForChartLoad } from 'cypress/utils';
import * as ace from 'brace'; import { edit } from 'brace';
import { import {
interceptExploreUpdate, interceptExploreUpdate,
interceptGet, interceptGet,
@ -60,7 +60,7 @@ function assertMetadata(text: string) {
// cypress can read this locally, but not in ci // cypress can read this locally, but not in ci
// so we have to use the ace module directly to fetch the value // so we have to use the ace module directly to fetch the value
expect(ace.edit(metadata).getValue()).to.match(regex); expect(edit(metadata).getValue()).to.match(regex);
}); });
} }

View File

@ -17,7 +17,10 @@
* under the License. * under the License.
*/ */
import { ReactNode } from 'react'; import { ReactNode } from 'react';
import * as d3array from 'd3-array'; import d3array, {
ascending as d3ascending,
quantile as d3quantile,
} from 'd3-array';
import { JsonObject, JsonValue, QueryFormData } from '@superset-ui/core'; import { JsonObject, JsonValue, QueryFormData } from '@superset-ui/core';
import sandboxedEval from '../utils/sandbox'; import sandboxedEval from '../utils/sandbox';
import { TooltipProps } from '../components/Tooltip'; import { TooltipProps } from '../components/Tooltip';
@ -93,13 +96,13 @@ export function getAggFunc(
let sortedArr; let sortedArr;
if (accessor) { if (accessor) {
sortedArr = arr.sort((o1: JsonObject, o2: JsonObject) => sortedArr = arr.sort((o1: JsonObject, o2: JsonObject) =>
d3array.ascending(accessor(o1), accessor(o2)), d3ascending(accessor(o1), accessor(o2)),
); );
} else { } else {
sortedArr = arr.sort(d3array.ascending); sortedArr = arr.sort(d3ascending);
} }
return d3array.quantile(sortedArr, percentiles[type], acc); return d3quantile(sortedArr, percentiles[type], acc);
}; };
} else { } else {
d3func = d3array[type]; d3func = d3array[type];

View File

@ -19,7 +19,9 @@
// A safe alternative to JS's eval // A safe alternative to JS's eval
import vm, { Context, RunningScriptOptions } from 'vm'; import vm, { Context, RunningScriptOptions } from 'vm';
import _ from 'underscore'; import _ from 'underscore';
/* eslint-disable-next-line no-restricted-syntax */
import * as d3array from 'd3-array'; import * as d3array from 'd3-array';
/* eslint-disable-next-line no-restricted-syntax */
import * as colors from './colors'; import * as colors from './colors';
// Objects exposed here should be treated like a public API // Objects exposed here should be treated like a public API

View File

@ -24,7 +24,7 @@ import validator from '@rjsf/validator-ajv8';
import { Row, Col } from 'src/components'; import { Row, Col } from 'src/components';
import { Input, TextArea } from 'src/components/Input'; import { Input, TextArea } from 'src/components/Input';
import { t, styled } from '@superset-ui/core'; import { t, styled } from '@superset-ui/core';
import * as chrono from 'chrono-node'; import { parseDate } from 'chrono-node';
import ModalTrigger, { ModalTriggerRef } from 'src/components/ModalTrigger'; import ModalTrigger, { ModalTriggerRef } from 'src/components/ModalTrigger';
import { Form, FormItem } from 'src/components/Form'; import { Form, FormItem } from 'src/components/Form';
import Button from 'src/components/Button'; import Button from 'src/components/Button';
@ -47,11 +47,10 @@ const getJSONSchema = () => {
Object.entries(jsonSchema.properties).forEach( Object.entries(jsonSchema.properties).forEach(
([key, value]: [string, any]) => { ([key, value]: [string, any]) => {
if (value.default && value.format === 'date-time') { if (value.default && value.format === 'date-time') {
const parsedDate = parseDate(value.default);
jsonSchema.properties[key] = { jsonSchema.properties[key] = {
...value, ...value,
default: value.default default: parsedDate ? parsedDate.toISOString() : null,
? chrono.parseDate(value.default)?.toISOString()
: null,
}; };
} }
}, },

View File

@ -17,7 +17,7 @@
* under the License. * under the License.
*/ */
import { t } from '@superset-ui/core'; import { t } from '@superset-ui/core';
import * as echarts from 'echarts'; import { init as echartsInit } from 'echarts';
import { createRef, FC, useEffect } from 'react'; import { createRef, FC, useEffect } from 'react';
import { ZoomConfigsChartProps } from './types'; import { ZoomConfigsChartProps } from './types';
import { import {
@ -48,7 +48,7 @@ export const ZoomConfigsChart: FC<ZoomConfigsChartProps> = ({
const barWidth = 15; const barWidth = 15;
const data = zoomConfigsToData(value.values); const data = zoomConfigsToData(value.values);
const chart = echarts.init(ref.current); const chart = echartsInit(ref.current);
const option = { const option = {
xAxis: { xAxis: {

View File

@ -17,7 +17,7 @@
* under the License. * under the License.
*/ */
import * as echarts from 'echarts'; import { util } from 'echarts';
import { isZoomConfigsFixed, isZoomConfigsLinear } from './typeguards'; import { isZoomConfigsFixed, isZoomConfigsLinear } from './typeguards';
import { import {
CreateDragGraphicOption, CreateDragGraphicOption,
@ -105,10 +105,10 @@ export const createDragGraphicOption = ({
// Give a big z value, which makes the circle cover the symbol // Give a big z value, which makes the circle cover the symbol
// in bar series. // in bar series.
z: 100, z: 100,
// Util method `echarts.util.curry` is used here to generate a // Util method `util.curry` (from echarts) is used here to generate a
// new function the same as `onDrag`, except that the // new function the same as `onDrag`, except that the
// first parameter is fixed to be the `dataIndex` here. // first parameter is fixed to be the `dataIndex` here.
ondrag: echarts.util.curry(onDrag, dataIndex), ondrag: util.curry(onDrag, dataIndex),
}; };
}; };

View File

@ -17,6 +17,7 @@
# pylint: disable=import-outside-toplevel # pylint: disable=import-outside-toplevel
from datetime import datetime from datetime import datetime
import pytest import pytest