diff --git a/packages/arui-scripts/src/configs/util/apply-overrides.ts b/packages/arui-scripts/src/configs/util/apply-overrides.ts index 7b71c8b2..661022d6 100644 --- a/packages/arui-scripts/src/configs/util/apply-overrides.ts +++ b/packages/arui-scripts/src/configs/util/apply-overrides.ts @@ -1,4 +1,3 @@ -// TODO: remove eslint-disable-next-line import type { Configuration as WebpackConfiguration, WebpackOptionsNormalized } from 'webpack'; import type { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server'; @@ -44,7 +43,7 @@ type BoundCreateSingleClientWebpackConfig = OmitFirstArg> + findPlugin: ReturnType>; }; type ServerWebpackAdditionalArgs = { @@ -67,12 +66,7 @@ type OverridesAdditionalArgs = { webpackServerProd: ServerWebpackAdditionalArgs; }; -type OverrideFunction< - K extends keyof Overrides, - AdditionalArgs = K extends keyof OverridesAdditionalArgs - ? OverridesAdditionalArgs[K] - : undefined, -> = ( +type OverrideFunction = ( config: Overrides[K], appConfig: AppContextWithConfigs, additionalArgs: AdditionalArgs, @@ -89,8 +83,7 @@ overrides = appConfigs.overridesPath.map((path) => { // eslint-disable-next-line import/no-dynamic-require, global-require, @typescript-eslint/no-var-requires const requireResult = require(path); - // eslint-disable-next-line no-underscore-dangle - if (requireResult.__esModule) { + if ('__esModule' in requireResult) { // ts-node импортирует esModules, из них надо вытягивать default именно так return requireResult.default; } @@ -111,27 +104,24 @@ overrides = appConfigs.overridesPath.map((path) => { * @param args Дополнительные аргументы, которые будут переданы в функцию оверрайда * @returns {*} */ -function applyOverrides< - T extends Overrides[Key], - Key extends keyof Overrides, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - Args = Key extends keyof OverridesAdditionalArgs ? OverridesAdditionalArgs[Key] : undefined, ->(overridesKey: Key | Key[], config: T, args?: any): T { - if (typeof overridesKey === 'string') { - // eslint-disable-next-line no-param-reassign - overridesKey = [overridesKey]; - } - overridesKey.forEach((key) => { +function applyOverrides( + overridesKey: Key | Key[], + config: T, + args?: unknown, +): T { + let tempConfig = config; + let overrideKeys = typeof overridesKey === 'string' ? [overridesKey] : overridesKey; + + overrideKeys.forEach((key) => { overrides.forEach((override) => { - // eslint-disable-next-line no-prototype-builtins - if (override.hasOwnProperty(key)) { + if (key in override) { const overrideFn = override[key]; if (typeof overrideFn !== 'function') { throw new TypeError(`Override ${key} must be a function`); } - // eslint-disable-next-line no-param-reassign - config = overrideFn(config, appConfigs, args); + + config = overrideFn(tempConfig, appConfigs, args); } }); }); diff --git a/packages/arui-scripts/src/configs/util/find-loader.ts b/packages/arui-scripts/src/configs/util/find-loader.ts index c78d10d9..337bface 100644 --- a/packages/arui-scripts/src/configs/util/find-loader.ts +++ b/packages/arui-scripts/src/configs/util/find-loader.ts @@ -1,12 +1,18 @@ +// TODO: remove eslint-disable and eslint-disable-next-line +/* eslint-disable no-restricted-syntax */ import webpack from 'webpack'; export function findLoader( config: webpack.Configuration, testRule: string, ): webpack.RuleSetRule | undefined { - const rules = config.module!.rules as webpack.RuleSetRule[]; + for (const rule of config.module!.rules!) { + if (rule === '...' || !rule) { + // Webpack имеет странный тип для rules, который позволяет в него положить строку '...'. Успокаиваем TS + // eslint-disable-next-line no-continue + continue; + } - for (const rule of rules) { if (rule.test && rule.test.toString() === testRule) { return rule; } @@ -21,4 +27,4 @@ export function findLoader( } return undefined; -} +} \ No newline at end of file