Skip to content
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
5 changes: 5 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ file that was distributed with this source code.`,
// In TypeScript files, types live in the signature, not in JSDoc.
'jsdoc/require-param': 'off',
'jsdoc/require-returns': 'off',
// tsc owns module resolution for `.ts` files (strict, build fails on
// a missing import). eslint-plugin-n is not TS-aware: from a `.ts`
// file it rewrites `.js` -> `.ts` and cannot resolve imports of
// not-yet-migrated `.js` modules. `.js` files keep the rule.
'n/no-missing-import': 'off',
},
},
{
Expand Down
2 changes: 1 addition & 1 deletion lib/EncoreProxy.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import levenshtein from 'fastest-levenshtein';
import pc from 'picocolors';

import prettyError from './utils/pretty-error.js';
import prettyError from './utils/pretty-error.ts';

// Public methods that were removed. We show an explicit migration message instead of relying on
// the generic "did you mean" suggestion below, whose closest Levenshtein match would be misleading.
Expand Down
6 changes: 3 additions & 3 deletions lib/config-generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ import notifierPluginUtil from './plugins/notifier.js';
import PluginPriorities from './plugins/plugin-priorities.js';
import variableProviderPluginUtil from './plugins/variable-provider.js';
import vuePluginUtil from './plugins/vue.js';
import applyOptionsCallback from './utils/apply-options-callback.js';
import copyEntryTmpName from './utils/copyEntryTmpName.js';
import getVueVersion from './utils/get-vue-version.js';
import applyOptionsCallback from './utils/apply-options-callback.ts';
import copyEntryTmpName from './utils/copyEntryTmpName.ts';
import getVueVersion from './utils/get-vue-version.ts';
import stringEscaper from './utils/string-escaper.ts';

class ConfigGenerator {
Expand Down
2 changes: 1 addition & 1 deletion lib/config/parse-runtime.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

import path from 'path';

import packageUp from '../utils/package-up.js';
import packageUp from '../utils/package-up.ts';
import RuntimeConfig from './RuntimeConfig.js';

/**
Expand Down
2 changes: 1 addition & 1 deletion lib/friendly-errors/transformers/missing-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* file that was distributed with this source code.
*/

import getVueVersion from '../../utils/get-vue-version.js';
import getVueVersion from '../../utils/get-vue-version.ts';

const TYPE = 'loader-not-enabled';

Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/babel.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';

export default {
/**
Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/css-extract.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import { fileURLToPath } from 'url';

import MiniCssExtractPlugin from 'mini-css-extract-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';

export default {
/**
Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/css.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';

export default {
/**
Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/handlebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';

export default {
/**
Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/less.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import cssLoader from './css.js';

export default {
Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/sass.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import cssLoader from './css.js';

export default {
Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/stylus.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import cssLoader from './css.js';

export default {
Expand Down
2 changes: 1 addition & 1 deletion lib/loaders/typescript.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import babelLoader from './babel.js';

export default {
Expand Down
4 changes: 2 additions & 2 deletions lib/loaders/vue.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
import { fileURLToPath } from 'url';

import loaderFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import getVueVersion from '../utils/get-vue-version.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import getVueVersion from '../utils/get-vue-version.ts';

export default {
/**
Expand Down
4 changes: 2 additions & 2 deletions lib/plugins/css-minimizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@

import MinimizerPlugin from 'minimizer-webpack-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.js';
import { checkCssMinifierPackages } from '../utils/minifier-check.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import { checkCssMinifierPackages } from '../utils/minifier-check.ts';

/**
* @param {WebpackConfig} webpackConfig
Expand Down
2 changes: 1 addition & 1 deletion lib/plugins/define.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import webpack from 'webpack';

import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';

/**
Expand Down
2 changes: 1 addition & 1 deletion lib/plugins/delete-unused-entries.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @import WebpackConfig from '../WebpackConfig.js'
*/

import copyEntryTmpName from '../utils/copyEntryTmpName.js';
import copyEntryTmpName from '../utils/copyEntryTmpName.ts';
import DeleteUnusedEntriesJSPlugin from '../webpack/delete-unused-entries-js-plugin.js';
import PluginPriorities from './plugin-priorities.js';

Expand Down
2 changes: 1 addition & 1 deletion lib/plugins/forked-ts-types.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';

/**
Expand Down
2 changes: 1 addition & 1 deletion lib/plugins/friendly-errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import missingPostCssConfigFormatter from '../friendly-errors/formatters/missing
import missingCssFileTransformer from '../friendly-errors/transformers/missing-css-file.js';
import missingLoaderTransformerFactory from '../friendly-errors/transformers/missing-loader.js';
import missingPostCssConfigTransformer from '../friendly-errors/transformers/missing-postcss-config.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';

/**
* @param {WebpackConfig} webpackConfig
Expand Down
4 changes: 2 additions & 2 deletions lib/plugins/js-minimizer.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@

import MinimizerPlugin from 'minimizer-webpack-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.js';
import { checkJsMinifierPackages } from '../utils/minifier-check.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import { checkJsMinifierPackages } from '../utils/minifier-check.ts';

/**
* @param {WebpackConfig} webpackConfig
Expand Down
6 changes: 3 additions & 3 deletions lib/plugins/manifest.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@

import { WebpackManifestPlugin } from 'webpack-manifest-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.js';
import copyEntryTmpName from '../utils/copyEntryTmpName.js';
import manifestKeyPrefixHelper from '../utils/manifest-key-prefix-helper.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import copyEntryTmpName from '../utils/copyEntryTmpName.ts';
import manifestKeyPrefixHelper from '../utils/manifest-key-prefix-helper.ts';
import PluginPriorities from './plugin-priorities.js';

/**
Expand Down
2 changes: 1 addition & 1 deletion lib/plugins/mini-css-extract.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

import MiniCssExtractPlugin from 'mini-css-extract-plugin';

import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';

/**
Expand Down
2 changes: 1 addition & 1 deletion lib/plugins/notifier.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*/

import pluginFeatures from '../features.js';
import applyOptionsCallback from '../utils/apply-options-callback.js';
import applyOptionsCallback from '../utils/apply-options-callback.ts';
import PluginPriorities from './plugin-priorities.js';

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,17 @@
* file that was distributed with this source code.
*/

/**
* @typedef {function(this: T, T, ...*): T|void} OptionsCallback
* @template {object} T
*/
export type OptionsCallback<T extends object> = (
this: T,
options: T,
...extraArgs: any[]
) => T | void;

/**
* @template {object} T
* @param {OptionsCallback<T>} optionsCallback
* @param {T} options
* @param {...*} extraArgs Forwarded to the callback after `options`
* @returns {T}
*/
export default function (optionsCallback, options, ...extraArgs) {
export default function <T extends object>(
optionsCallback: OptionsCallback<T>,
options: T,
...extraArgs: any[]
): T {
const result = optionsCallback.call(options, options, ...extraArgs);

if (typeof result === 'object') {
Expand Down
File renamed without changes.
11 changes: 2 additions & 9 deletions lib/utils/get-vue-version.js → lib/utils/get-vue-version.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,13 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/

import semver from 'semver';

import logger from '../logger.js';
import packageHelper from '../package-helper.js';
import type WebpackConfig from '../WebpackConfig.js';

/**
* @param {WebpackConfig} webpackConfig
* @returns {number|string|null}
*/
export default function (webpackConfig) {
export default function (webpackConfig: WebpackConfig): number | string | null {
if (webpackConfig.vueOptions.version !== null) {
return webpackConfig.vueOptions.version;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,12 @@
* file that was distributed with this source code.
*/

/**
* @import WebpackConfig from '../WebpackConfig.js'
*/
import type WebpackConfig from '../WebpackConfig.js';

/**
* Helper for determining the manifest.json key prefix.
*
* @param {WebpackConfig} webpackConfig
* @returns {string}
*/
export default function (webpackConfig) {
export default function (webpackConfig: WebpackConfig): string {
let manifestPrefix = webpackConfig.manifestKeyPrefix;
if (null === manifestPrefix) {
if (null === webpackConfig.publicPath) {
Expand Down
14 changes: 4 additions & 10 deletions lib/utils/minifier-check.js → lib/utils/minifier-check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ import MinimizerPlugin from 'minimizer-webpack-plugin';

import Features from '../features.js';

const JS_MINIFIER_FEATURES = new Map([
const JS_MINIFIER_FEATURES = new Map<Function, string>([
[MinimizerPlugin.esbuildMinify, 'minify-js-esbuild'],
[MinimizerPlugin.swcMinify, 'minify-js-swc'],
[MinimizerPlugin.uglifyJsMinify, 'minify-js-uglify'],
]);

const CSS_MINIFIER_FEATURES = new Map([
const CSS_MINIFIER_FEATURES = new Map<Function, string>([
[MinimizerPlugin.lightningCssMinify, 'minify-css-lightningcss'],
[MinimizerPlugin.cssnanoMinify, 'minify-css-cssnano'],
[MinimizerPlugin.cssoMinify, 'minify-css-csso'],
Expand All @@ -26,10 +26,7 @@ const CSS_MINIFIER_FEATURES = new Map([
[MinimizerPlugin.swcMinifyCss, 'minify-css-swc'],
]);

/**
* @param {Function} minifyFn
*/
export function checkJsMinifierPackages(minifyFn) {
export function checkJsMinifierPackages(minifyFn: Function): void {
const feature = JS_MINIFIER_FEATURES.get(minifyFn);
if (!feature) {
// terserMinify (bundled) or a custom function: nothing to install
Expand All @@ -39,10 +36,7 @@ export function checkJsMinifierPackages(minifyFn) {
Features.ensurePackagesExistAndAreCorrectVersion(feature);
}

/**
* @param {Function|undefined} minifyFn
*/
export function checkCssMinifierPackages(minifyFn) {
export function checkCssMinifierPackages(minifyFn: Function | undefined): void {
if (!minifyFn) {
throw new Error(
'CSS minification is enabled but no CSS minifier is configured. ' +
Expand Down
22 changes: 8 additions & 14 deletions lib/utils/package-up.js → lib/utils/package-up.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,25 @@ import { fileURLToPath } from 'url';
/**
* Inlined version of the package "package-up" (ESM only).
*
* @param {object} options
* @param {string} options.cwd The directory to start searching from.
* @returns {string|undefined} The path to the nearest package.json file or undefined if not found.
* Returns the path to the nearest package.json file, or undefined if not found.
*/
export default function ({ cwd }) {
export default function ({ cwd }: { cwd: string }): string | undefined {
return findUpSync('package.json', { cwd });
}

/**
* @param {string|URL} urlOrPath
* @returns {string}
*/
function toPath(urlOrPath) {
function toPath(urlOrPath: string | URL): string {
return urlOrPath instanceof URL ? fileURLToPath(urlOrPath) : urlOrPath;
}

/**
* Inlined and simplified version of the package "find-up-simple" (ESM only).
*
* @param {string} name The name of the file to find
* @param {object} options
* @param {string=} options.cwd The directory to start searching from.
* @returns {string|undefined} The path to the file found or undefined if not found.
* Returns the path to the file found, or undefined if not found.
*/
function findUpSync(name, { cwd = process.cwd() } = {}) {
function findUpSync(
name: string,
{ cwd = process.cwd() }: { cwd?: string } = {}
): string | undefined {
let directory = path.resolve(toPath(cwd) || '');
const { root } = path.parse(directory);

Expand Down
Loading