fix: Upgrade unbuild to resolve console warning issues and also deal with post-upgrade compatibility issues (#4009)

This commit is contained in:
Vben
2024-08-02 22:18:46 +08:00
committed by GitHub
parent e544119aa3
commit 530159140c
48 changed files with 382 additions and 743 deletions

View File

@@ -1,9 +1,11 @@
import type { Linter } from 'eslint';
export async function comments(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function comments(): Promise<Linter.Config[]> {
const [pluginComments] = await Promise.all([
// @ts-expect-error - no types
import('eslint-plugin-eslint-comments'),
interopDefault(import('eslint-plugin-eslint-comments')),
] as const);
return [

View File

@@ -1,6 +1,6 @@
import type { Linter } from 'eslint';
export async function disableds(): Promise<Linter.FlatConfig[]> {
export async function disableds(): Promise<Linter.Config[]> {
return [
{
files: ['**/__tests__/**/*.?([cm])[jt]s?(x)'],

View File

@@ -1,6 +1,6 @@
import type { Linter } from 'eslint';
export async function ignores(): Promise<Linter.FlatConfig[]> {
export async function ignores(): Promise<Linter.Config[]> {
return [
{
ignores: [

View File

@@ -6,7 +6,7 @@ import js from '@eslint/js';
import pluginUnusedImports from 'eslint-plugin-unused-imports';
import globals from 'globals';
export async function javascript(): Promise<Linter.FlatConfig[]> {
export async function javascript(): Promise<Linter.Config[]> {
return [
{
languageOptions: {

View File

@@ -1,14 +1,15 @@
import type { Linter } from 'eslint';
export async function jsdoc(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function jsdoc(): Promise<Linter.Config[]> {
const [pluginJsdoc] = await Promise.all([
import('eslint-plugin-jsdoc'),
interopDefault(import('eslint-plugin-jsdoc')),
] as const);
return [
{
plugins: {
// @ts-expect-error - no types
jsdoc: pluginJsdoc,
},
rules: {

View File

@@ -1,9 +1,11 @@
import type { Linter } from 'eslint';
export async function jsonc(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function jsonc(): Promise<Linter.Config[]> {
const [pluginJsonc, parserJsonc] = await Promise.all([
import('eslint-plugin-jsonc'),
import('jsonc-eslint-parser'),
interopDefault(import('eslint-plugin-jsonc')),
interopDefault(import('jsonc-eslint-parser')),
] as const);
return [

View File

@@ -1,7 +1,9 @@
import type { Linter } from 'eslint';
export async function node(): Promise<Linter.FlatConfig[]> {
const [pluginNode] = await Promise.all([import('eslint-plugin-n')] as const);
import { interopDefault } from '../util';
export async function node(): Promise<Linter.Config[]> {
const pluginNode = await interopDefault(import('eslint-plugin-n'));
return [
{

View File

@@ -2,7 +2,7 @@ import type { Linter } from 'eslint';
import perfectionistPlugin from 'eslint-plugin-perfectionist';
export async function perfectionist(): Promise<Linter.FlatConfig[]> {
export async function perfectionist(): Promise<Linter.Config[]> {
return [
perfectionistPlugin.configs['recommended-natural'],
{

View File

@@ -1,8 +1,10 @@
import type { Linter } from 'eslint';
export async function prettier(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function prettier(): Promise<Linter.Config[]> {
const [pluginPrettier] = await Promise.all([
import('eslint-plugin-prettier'),
interopDefault(import('eslint-plugin-prettier')),
] as const);
return [
{

View File

@@ -1,8 +1,10 @@
import type { Linter } from 'eslint';
export async function regexp(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function regexp(): Promise<Linter.Config[]> {
const [pluginRegexp] = await Promise.all([
import('eslint-plugin-regexp'),
interopDefault(import('eslint-plugin-regexp')),
] as const);
return [

View File

@@ -1,10 +1,12 @@
import type { Linter } from 'eslint';
export async function test(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function test(): Promise<Linter.Config[]> {
const [pluginTest, pluginNoOnlyTests] = await Promise.all([
import('eslint-plugin-vitest'),
interopDefault(import('eslint-plugin-vitest')),
// @ts-expect-error - no types
import('eslint-plugin-no-only-tests'),
interopDefault(import('eslint-plugin-no-only-tests')),
] as const);
return [

View File

@@ -1,9 +1,11 @@
import type { Linter } from 'eslint';
export async function turbo(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function turbo(): Promise<Linter.Config[]> {
const [pluginTurbo] = await Promise.all([
// @ts-expect-error - no types
import('eslint-config-turbo'),
interopDefault(import('eslint-config-turbo')),
] as const);
return [

View File

@@ -1,10 +1,12 @@
import type { Linter } from 'eslint';
export async function typescript(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function typescript(): Promise<Linter.Config[]> {
const [pluginTs, parserTs] = await Promise.all([
import('@typescript-eslint/eslint-plugin'),
interopDefault(import('@typescript-eslint/eslint-plugin')),
// @ts-expect-error missing types
import('@typescript-eslint/parser'),
interopDefault(import('@typescript-eslint/parser')),
] as const);
return [

View File

@@ -1,9 +1,10 @@
import type { Linter } from 'eslint';
export async function unicorn(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function unicorn(): Promise<Linter.Config[]> {
const [pluginUnicorn] = await Promise.all([
// @ts-expect-error - missing types
import('eslint-plugin-unicorn'),
interopDefault(import('eslint-plugin-unicorn')),
] as const);
return [

View File

@@ -1,12 +1,14 @@
import type { Linter } from 'eslint';
export async function vue(): Promise<Linter.FlatConfig[]> {
import { interopDefault } from '../util';
export async function vue(): Promise<Linter.Config[]> {
const [pluginVue, parserVue, parserTs] = await Promise.all([
// @ts-expect-error missing types
import('eslint-plugin-vue'),
import('vue-eslint-parser'),
interopDefault(import('eslint-plugin-vue')),
interopDefault(import('vue-eslint-parser')),
// @ts-expect-error missing types
import('@typescript-eslint/parser'),
interopDefault(import('@typescript-eslint/parser')),
] as const);
return [

View File

@@ -0,0 +1,8 @@
export type Awaitable<T> = Promise<T> | T;
export async function interopDefault<T>(
m: Awaitable<T>,
): Promise<T extends { default: infer U } ? U : T> {
const resolved = await m;
return (resolved as any).default || resolved;
}