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:
parent
536209aa74
commit
87c179a5f3
18 changed files with 25 additions and 64 deletions
|
@ -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: '^_',
|
||||||
|
|
|
@ -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 }) => {
|
||||||
|
|
|
@ -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 };
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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;
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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';
|
||||||
|
|
5
packages/astro/src/env/runtime.ts
vendored
5
packages/astro/src/env/runtime.ts
vendored
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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';
|
||||||
|
|
|
@ -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';
|
||||||
|
|
||||||
|
|
|
@ -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 = {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
||||||
|
|
2
packages/astro/templates/env/module.mjs
vendored
2
packages/astro/templates/env/module.mjs
vendored
|
@ -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@@
|
||||||
});
|
});
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue