0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2024-12-16 21:46:22 -05:00

chore: bump @typescript-eslint/no-unused-vars to error internally (#11173)

Co-authored-by: Florian Lefebvre <contact@florian-lefebvre.dev>
Co-authored-by: Martin Trapp <94928215+martrapp@users.noreply.github.com>
This commit is contained in:
Josh Goldberg ✨ 2024-07-24 11:43:07 -04:00 committed by GitHub
parent 536209aa74
commit 87c179a5f3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
18 changed files with 25 additions and 64 deletions

View file

@ -62,7 +62,7 @@ export default [
// These off/configured-differently-by-default rules fit well for us // These off/configured-differently-by-default rules fit well for us
'@typescript-eslint/switch-exhaustiveness-check': 'error', '@typescript-eslint/switch-exhaustiveness-check': 'error',
'@typescript-eslint/no-unused-vars': [ '@typescript-eslint/no-unused-vars': [
'warn', 'error',
{ {
argsIgnorePattern: '^_', argsIgnorePattern: '^_',
varsIgnorePattern: '^_', varsIgnorePattern: '^_',

View file

@ -169,7 +169,6 @@ test.describe('View Transitions', () => {
test('Moving from a page without ViewTransitions w/ back button', async ({ page, astro }) => { test('Moving from a page without ViewTransitions w/ back button', async ({ page, astro }) => {
const loads = collectLoads(page); const loads = collectLoads(page);
// Go to page 1 // Go to page 1
await page.goto(astro.resolveUrl('/one')); await page.goto(astro.resolveUrl('/one'));
let p = page.locator('#one'); let p = page.locator('#one');
@ -184,6 +183,10 @@ test.describe('View Transitions', () => {
await page.goBack(); await page.goBack();
p = page.locator('#one'); p = page.locator('#one');
await expect(p, 'should have content').toHaveText('Page 1'); await expect(p, 'should have content').toHaveText('Page 1');
expect(
loads.length,
'There should be 3 page loads (for page one & three), and an additional loads for the back navigation'
).toEqual(3);
}); });
test('Stylesheets in the head are waited on', async ({ page, astro }) => { test('Stylesheets in the head are waited on', async ({ page, astro }) => {

View file

@ -50,7 +50,7 @@ import type {
TransitionBeforePreparationEvent, TransitionBeforePreparationEvent,
TransitionBeforeSwapEvent, TransitionBeforeSwapEvent,
} from '../transitions/events.js'; } from '../transitions/events.js';
import type { DeepPartial, OmitIndexSignature, Simplify, WithRequired } from '../type-utils.js'; import type { DeepPartial, OmitIndexSignature, Simplify } from '../type-utils.js';
import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js'; import type { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from './../core/constants.js';
export type { AstroIntegrationLogger, ToolbarServerHelpers }; export type { AstroIntegrationLogger, ToolbarServerHelpers };

View file

@ -43,6 +43,9 @@ const statusToCodeMap: Record<number, ActionErrorCode> = Object.entries(codeToSt
{} {}
); );
// T is used for error inference with SafeInput -> isInputError.
// See: https://github.com/withastro/astro/pull/11173/files#r1622767246
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export class ActionError<T extends ErrorInferenceObject = ErrorInferenceObject> extends Error { export class ActionError<T extends ErrorInferenceObject = ErrorInferenceObject> extends Error {
type = 'AstroActionError'; type = 'AstroActionError';
code: ActionErrorCode = 'INTERNAL_SERVER_ERROR'; code: ActionErrorCode = 'INTERNAL_SERVER_ERROR';

View file

@ -1,6 +1,6 @@
import { extname } from 'node:path'; import { extname } from 'node:path';
import { pathToFileURL } from 'node:url'; import { pathToFileURL } from 'node:url';
import type { Plugin, Rollup } from 'vite'; import type { Plugin } from 'vite';
import type { AstroSettings, SSRElement } from '../@types/astro.js'; import type { AstroSettings, SSRElement } from '../@types/astro.js';
import { getAssetsPrefix } from '../assets/utils/getAssetsPrefix.js'; import { getAssetsPrefix } from '../assets/utils/getAssetsPrefix.js';
import type { BuildInternals } from '../core/build/internal.js'; import type { BuildInternals } from '../core/build/internal.js';
@ -129,22 +129,9 @@ export function astroConfigBuildPlugin(
options: StaticBuildOptions, options: StaticBuildOptions,
internals: BuildInternals internals: BuildInternals
): AstroBuildPlugin { ): AstroBuildPlugin {
let ssrPluginContext: Rollup.PluginContext | undefined = undefined;
return { return {
targets: ['server'], targets: ['server'],
hooks: { hooks: {
'build:before': ({ target }) => {
return {
vitePlugin: {
name: 'astro:content-build-plugin',
generateBundle() {
if (target === 'server') {
ssrPluginContext = this;
}
},
},
};
},
'build:post': ({ ssrOutputs, clientOutputs, mutate }) => { 'build:post': ({ ssrOutputs, clientOutputs, mutate }) => {
const outputs = ssrOutputs.flatMap((o) => o.output); const outputs = ssrOutputs.flatMap((o) => o.output);
const prependBase = (src: string) => { const prependBase = (src: string) => {
@ -232,8 +219,6 @@ export function astroConfigBuildPlugin(
mutate(chunk, ['server'], newCode); mutate(chunk, ['server'], newCode);
} }
} }
ssrPluginContext = undefined;
}, },
}, },
}; };

View file

@ -199,7 +199,7 @@ async function generatePage(
pipeline: BuildPipeline pipeline: BuildPipeline
) { ) {
// prepare information we need // prepare information we need
const { config, internals, logger } = pipeline; const { config, logger } = pipeline;
const pageModulePromise = ssrEntry.page; const pageModulePromise = ssrEntry.page;
// Calculate information of the page, like scripts, links and styles // Calculate information of the page, like scripts, links and styles

View file

@ -8,7 +8,6 @@ import type {
import { getOutputDirectory } from '../../prerender/utils.js'; import { getOutputDirectory } from '../../prerender/utils.js';
import { BEFORE_HYDRATION_SCRIPT_ID, PAGE_SCRIPT_ID } from '../../vite-plugin-scripts/index.js'; import { BEFORE_HYDRATION_SCRIPT_ID, PAGE_SCRIPT_ID } from '../../vite-plugin-scripts/index.js';
import type { SSRManifest } from '../app/types.js'; import type { SSRManifest } from '../app/types.js';
import { DEFAULT_404_COMPONENT } from '../constants.js';
import { routeIsFallback, routeIsRedirect } from '../redirects/helpers.js'; import { routeIsFallback, routeIsRedirect } from '../redirects/helpers.js';
import { RedirectSinglePageBuiltModule } from '../redirects/index.js'; import { RedirectSinglePageBuiltModule } from '../redirects/index.js';
import { Pipeline } from '../render/index.js'; import { Pipeline } from '../render/index.js';

View file

@ -4,6 +4,7 @@ import type { ValidationResultInvalid } from './validators.js';
export { validateEnvVariable, getEnvFieldType } from './validators.js'; export { validateEnvVariable, getEnvFieldType } from './validators.js';
export type GetEnv = (key: string) => string | undefined; export type GetEnv = (key: string) => string | undefined;
type OnSetGetEnv = (reset: boolean) => void
let _getEnv: GetEnv = (key) => process.env[key]; let _getEnv: GetEnv = (key) => process.env[key];
@ -13,9 +14,9 @@ export function setGetEnv(fn: GetEnv, reset = false) {
_onSetGetEnv(reset); _onSetGetEnv(reset);
} }
let _onSetGetEnv = (reset: boolean) => {}; let _onSetGetEnv: OnSetGetEnv = () => {};
export function setOnSetGetEnv(fn: typeof _onSetGetEnv) { export function setOnSetGetEnv(fn: OnSetGetEnv) {
_onSetGetEnv = fn; _onSetGetEnv = fn;
} }

View file

@ -126,12 +126,6 @@ const a11y_required_content = [
const a11y_distracting_elements = ['blink', 'marquee']; const a11y_distracting_elements = ['blink', 'marquee'];
// Unused for now
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const a11y_nested_implicit_semantics = new Map([
['header', 'banner'],
['footer', 'contentinfo'],
]);
const a11y_implicit_semantics = new Map([ const a11y_implicit_semantics = new Map([
['a', 'link'], ['a', 'link'],
['area', 'link'], ['area', 'link'],
@ -624,19 +618,6 @@ export const a11y: AuditRuleWithSelector[] = [
}, },
]; ];
// Unused for now
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const a11y_labelable = [
'button',
'input',
'keygen',
'meter',
'output',
'progress',
'select',
'textarea',
];
/** /**
* Exceptions to the rule which follows common A11y conventions * Exceptions to the rule which follows common A11y conventions
* TODO make this configurable by the user * TODO make this configurable by the user

View file

@ -1,6 +1,6 @@
import type { SSRResult } from '../../../../@types/astro.js'; import type { SSRResult } from '../../../../@types/astro.js';
import type { ComponentSlots } from '../slot.js'; import type { ComponentSlots } from '../slot.js';
import type { AstroComponentFactory, AstroFactoryReturnValue } from './factory.js'; import type { AstroComponentFactory } from './factory.js';
import { isPromise } from '../../util.js'; import { isPromise } from '../../util.js';
import { renderChild } from '../any.js'; import { renderChild } from '../any.js';

View file

@ -1,4 +1,4 @@
import type { AstroConfig, RouteData, SSRResult } from '../../../@types/astro.js'; import type { RouteData, SSRResult } from '../../../@types/astro.js';
import { type NonAstroPageComponent, renderComponentToString } from './component.js'; import { type NonAstroPageComponent, renderComponentToString } from './component.js';
import type { AstroComponentFactory } from './index.js'; import type { AstroComponentFactory } from './index.js';

View file

@ -1,13 +1,5 @@
import type { TransitionBeforePreparationEvent, TransitionBeforeSwapEvent } from './events.js'; import type { TransitionBeforePreparationEvent } from './events.js';
import { TRANSITION_AFTER_SWAP, doPreparation, doSwap } from './events.js'; import { TRANSITION_AFTER_SWAP, doPreparation, doSwap } from './events.js';
import {
deselectScripts,
restoreFocus,
saveFocus,
swapBodyElement,
swapHeadElements,
swapRootAttributes,
} from './swap-functions.js';
import type { Direction, Fallback, Options } from './types.js'; import type { Direction, Fallback, Options } from './types.js';
type State = { type State = {

View file

@ -3,9 +3,8 @@ import type { ModuleLoader } from '../core/module-loader/index.js';
import type { DevPipeline } from './pipeline.js'; import type { DevPipeline } from './pipeline.js';
import { collectErrorMetadata } from '../core/errors/dev/index.js'; import { collectErrorMetadata } from '../core/errors/dev/index.js';
import { AstroErrorData, createSafeError } from '../core/errors/index.js'; import { createSafeError } from '../core/errors/index.js';
import { formatErrorMessage } from '../core/messages.js'; import { formatErrorMessage } from '../core/messages.js';
import { eventError, telemetry } from '../events/index.js';
export function recordServerError( export function recordServerError(
loader: ModuleLoader, loader: ModuleLoader,

View file

@ -1,7 +1,6 @@
import type http from 'node:http'; import type http from 'node:http';
import type { ComponentInstance, ManifestData, RouteData } from '../@types/astro.js'; import type { ComponentInstance, ManifestData, RouteData } from '../@types/astro.js';
import { import {
DEFAULT_404_COMPONENT,
REROUTE_DIRECTIVE_HEADER, REROUTE_DIRECTIVE_HEADER,
REWRITE_DIRECTIVE_HEADER_KEY, REWRITE_DIRECTIVE_HEADER_KEY,
clientLocalsSymbol, clientLocalsSymbol,

View file

@ -25,6 +25,8 @@ const _internalGetSecret = (key) => {
throw createInvalidVariablesError(key, type, result); throw createInvalidVariablesError(key, type, result);
}; };
// used while generating the virtual module
// eslint-disable-next-line @typescript-eslint/no-unused-vars
setOnSetGetEnv((reset) => { setOnSetGetEnv((reset) => {
// @@ON_SET_GET_ENV@@ // @@ON_SET_GET_ENV@@
}); });

View file

@ -106,8 +106,6 @@ describe('Reuse injected entrypoint', () => {
}); });
routes.forEach(({ description, url, fourOhFour, h1, p, htmlMatch }) => { routes.forEach(({ description, url, fourOhFour, h1, p, htmlMatch }) => {
const isEndpoint = htmlMatch && !h1 && !p;
// checks URLs as written above // checks URLs as written above
it(description, async () => { it(description, async () => {
const html = await fixture.fetch(url).then((res) => res.text()); const html = await fixture.fetch(url).then((res) => res.text());

View file

@ -4,8 +4,7 @@ export const isValidUrl = (s: any) => {
return false; return false;
} }
try { try {
// eslint-disable-next-line @typescript-eslint/no-unused-vars new URL(s);
const dummy = new URL(s);
return true; return true;
} catch { } catch {
return false; return false;