Skip to content

Commit c61b3e4

Browse files
authored
chore: @typescript-eslint/explicit-module-boundary-types (#2735)
1 parent 6dfba78 commit c61b3e4

23 files changed

+119
-67
lines changed

packages/plugin-vue/src/handleHotUpdate.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ export async function handleHotUpdate({
144144
return [...affectedModules].filter(Boolean) as ModuleNode[]
145145
}
146146

147-
export function isEqualBlock(a: SFCBlock | null, b: SFCBlock | null) {
147+
export function isEqualBlock(a: SFCBlock | null, b: SFCBlock | null): boolean {
148148
if (!a && !b) return true
149149
if (!a || !b) return false
150150
// src imports will trigger their own updates
@@ -161,7 +161,7 @@ export function isEqualBlock(a: SFCBlock | null, b: SFCBlock | null) {
161161
export function isOnlyTemplateChanged(
162162
prev: SFCDescriptor,
163163
next: SFCDescriptor
164-
) {
164+
): boolean {
165165
return (
166166
isEqualBlock(prev.script, next.script) &&
167167
isEqualBlock(prev.scriptSetup, next.scriptSetup) &&

packages/plugin-vue/src/script.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ export function setResolvedScript(
1717
descriptor: SFCDescriptor,
1818
script: SFCScriptBlock,
1919
ssr: boolean
20-
) {
20+
): void {
2121
;(ssr ? ssrCache : clientCache).set(descriptor, script)
2222
}
2323

2424
export function resolveScript(
2525
descriptor: SFCDescriptor,
2626
options: ResolvedOptions,
2727
ssr: boolean
28-
) {
28+
): SFCScriptBlock | null {
2929
if (!descriptor.script && !descriptor.scriptSetup) {
3030
return null
3131
}

packages/plugin-vue/src/utils/descriptorCache.ts

+18-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import path from 'path'
22
import slash from 'slash'
33
import hash from 'hash-sum'
4-
import { parse, SFCDescriptor } from '@vue/compiler-sfc'
4+
import { CompilerError, parse, SFCDescriptor } from '@vue/compiler-sfc'
5+
6+
// node_modules/@vue/compiler-sfc/dist/compiler-sfc.d.ts SFCParseResult should be exported so it can be re-used
7+
export interface SFCParseResult {
8+
descriptor: SFCDescriptor
9+
errors: Array<CompilerError | SyntaxError>
10+
}
511

612
const cache = new Map<string, SFCDescriptor>()
713
const prevCache = new Map<string, SFCDescriptor | undefined>()
@@ -11,7 +17,7 @@ export function createDescriptor(
1117
source: string,
1218
root: string,
1319
isProduction: boolean | undefined
14-
) {
20+
): SFCParseResult {
1521
const { descriptor, errors } = parse(source, {
1622
filename,
1723
sourceMap: true
@@ -26,15 +32,21 @@ export function createDescriptor(
2632
return { descriptor, errors }
2733
}
2834

29-
export function getPrevDescriptor(filename: string) {
35+
export function getPrevDescriptor(filename: string): SFCDescriptor | undefined {
3036
return prevCache.get(filename)
3137
}
3238

33-
export function setPrevDescriptor(filename: string, entry: SFCDescriptor) {
39+
export function setPrevDescriptor(
40+
filename: string,
41+
entry: SFCDescriptor
42+
): void {
3443
prevCache.set(filename, entry)
3544
}
3645

37-
export function getDescriptor(filename: string, errorOnMissing = true) {
46+
export function getDescriptor(
47+
filename: string,
48+
errorOnMissing = true
49+
): SFCDescriptor | undefined {
3850
if (cache.has(filename)) {
3951
return cache.get(filename)!
4052
}
@@ -46,6 +58,6 @@ export function getDescriptor(filename: string, errorOnMissing = true) {
4658
}
4759
}
4860

49-
export function setDescriptor(filename: string, entry: SFCDescriptor) {
61+
export function setDescriptor(filename: string, entry: SFCDescriptor): void {
5062
cache.set(filename, entry)
5163
}

packages/plugin-vue/src/utils/query.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ export interface VueQuery {
99
raw?: boolean
1010
}
1111

12-
export function parseVueRequest(id: string) {
12+
export function parseVueRequest(
13+
id: string
14+
): { filename: string; query: VueQuery } {
1315
const [filename, rawQuery] = id.split(`?`, 2)
1416
const query = qs.parse(rawQuery) as VueQuery
1517
if (query.vue != null) {

packages/vite/src/client/client.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ const supportsConstructedSheet = (() => {
201201

202202
const sheetsMap = new Map()
203203

204-
export function updateStyle(id: string, content: string) {
204+
export function updateStyle(id: string, content: string): void {
205205
let style = sheetsMap.get(id)
206206
if (supportsConstructedSheet && !content.includes('@import')) {
207207
if (style && !(style instanceof CSSStyleSheet)) {
@@ -235,7 +235,7 @@ export function updateStyle(id: string, content: string) {
235235
sheetsMap.set(id, style)
236236
}
237237

238-
export function removeStyle(id: string) {
238+
export function removeStyle(id: string): void {
239239
const style = sheetsMap.get(id)
240240
if (style) {
241241
if (style instanceof CSSStyleSheet) {
@@ -334,6 +334,8 @@ const ctxToListenersMap = new Map<
334334
Map<string, ((customData: any) => void)[]>
335335
>()
336336

337+
// Just infer the return type for now
338+
// _This would have to be activated when used `plugin:@typescript-eslint/recommended`_ eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
337339
export const createHotContext = (ownerPath: string) => {
338340
if (!dataMap.has(ownerPath)) {
339341
dataMap.set(ownerPath, {})
@@ -436,7 +438,7 @@ export const createHotContext = (ownerPath: string) => {
436438
/**
437439
* urls here are dynamic import() urls that couldn't be statically analyzed
438440
*/
439-
export function injectQuery(url: string, queryToInject: string) {
441+
export function injectQuery(url: string, queryToInject: string): string {
440442
// skip urls that won't be handled by vite
441443
if (!url.startsWith('.') && !url.startsWith('/')) {
442444
return url

packages/vite/src/client/overlay.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export class ErrorOverlay extends HTMLElement {
151151
})
152152
}
153153

154-
text(selector: string, text: string, linkFiles = false) {
154+
text(selector: string, text: string, linkFiles = false): void {
155155
const el = this.root.querySelector(selector)!
156156
if (!linkFiles) {
157157
el.textContent = text
@@ -176,7 +176,7 @@ export class ErrorOverlay extends HTMLElement {
176176
}
177177
}
178178

179-
close() {
179+
close(): void {
180180
this.parentNode?.removeChild(this)
181181
}
182182
}

packages/vite/src/node/build.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ export function onRollupWarning(
637637
warning: RollupWarning,
638638
warn: WarningHandler,
639639
config: ResolvedConfig
640-
) {
640+
): void {
641641
if (warning.code === 'UNRESOLVED_IMPORT') {
642642
const id = warning.source
643643
const importer = warning.importer

packages/vite/src/node/config.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,11 @@ async function loadConfigFromBundledFile(
798798
return config
799799
}
800800

801-
export function loadEnv(mode: string, root: string, prefix = 'VITE_') {
801+
export function loadEnv(
802+
mode: string,
803+
root: string,
804+
prefix = 'VITE_'
805+
): Record<string, string> {
802806
if (mode === 'local') {
803807
throw new Error(
804808
`"local" cannot be used as a mode name because it conflicts with ` +

packages/vite/src/node/optimizer/registerMissing.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import { resolveSSRExternal } from '../ssr/ssrExternal'
99
*/
1010
const debounceMs = 100
1111

12-
export function createMissingImporterRegisterFn(server: ViteDevServer) {
12+
export function createMissingImporterRegisterFn(
13+
server: ViteDevServer
14+
): (id: string, resolved: string) => void {
1315
const { logger } = server.config
1416
let knownOptimized = server._optimizeDepsMetadata!.optimized
1517
let currentMissing: Record<string, string> = {}

packages/vite/src/node/optimizer/scan.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,10 @@ async function transformGlob(
417417
return s.toString()
418418
}
419419

420-
export function shouldExternalizeDep(resolvedId: string, rawId: string) {
420+
export function shouldExternalizeDep(
421+
resolvedId: string,
422+
rawId: string
423+
): boolean {
421424
// not a valid file path
422425
if (!path.isAbsolute(resolvedId)) {
423426
return true
@@ -430,4 +433,5 @@ export function shouldExternalizeDep(resolvedId: string, rawId: string) {
430433
if (!JS_TYPES_RE.test(resolvedId) && !htmlTypesRE.test(resolvedId)) {
431434
return true
432435
}
436+
return false
433437
}

packages/vite/src/node/plugins/asset.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export function assetPlugin(config: ResolvedConfig): Plugin {
102102
}
103103
}
104104

105-
export function registerAssetToChunk(chunk: RenderedChunk, file: string) {
105+
export function registerAssetToChunk(chunk: RenderedChunk, file: string): void {
106106
let emitted = chunkToEmittedAssetsMap.get(chunk)
107107
if (!emitted) {
108108
emitted = new Set()
@@ -132,7 +132,7 @@ export function fileToUrl(
132132
id: string,
133133
config: ResolvedConfig,
134134
ctx: PluginContext
135-
) {
135+
): string | Promise<string> {
136136
if (config.command === 'serve') {
137137
return fileToDevUrl(id, config)
138138
} else {
@@ -163,7 +163,10 @@ const assetHashToFilenameMap = new WeakMap<
163163
Map<string, string>
164164
>()
165165

166-
export function getAssetFilename(hash: string, config: ResolvedConfig) {
166+
export function getAssetFilename(
167+
hash: string,
168+
config: ResolvedConfig
169+
): string | undefined {
167170
return assetHashToFilenameMap.get(config)?.get(hash)
168171
}
169172

packages/vite/src/node/plugins/css.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,10 @@ const enum PureCssLang {
9797
}
9898
type CssLang = keyof typeof PureCssLang | keyof typeof PreprocessLang
9999

100-
export const isCSSRequest = (request: string) =>
100+
export const isCSSRequest = (request: string): boolean =>
101101
cssLangRE.test(request) && !directRequestRE.test(request)
102102

103-
export const isDirectCSSRequest = (request: string) =>
103+
export const isDirectCSSRequest = (request: string): boolean =>
104104
cssLangRE.test(request) && directRequestRE.test(request)
105105

106106
const cssModulesCache = new WeakMap<

packages/vite/src/node/plugins/html.ts

+11-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import {
2929
} from '@vue/compiler-dom'
3030

3131
const htmlProxyRE = /\?html-proxy&index=(\d+)\.js$/
32-
export const isHTMLProxy = (id: string) => htmlProxyRE.test(id)
32+
export const isHTMLProxy = (id: string): boolean => htmlProxyRE.test(id)
3333

3434
const htmlCommentRE = /<!--[\s\S]*?-->/g
3535
const scriptModuleRE = /(<script\b[^>]*type\s*=\s*(?:"module"|'module')[^>]*>)(.*?)<\/script>/gims
@@ -79,7 +79,7 @@ export async function traverseHtml(
7979
html: string,
8080
filePath: string,
8181
visitor: NodeTransform
82-
) {
82+
): Promise<void> {
8383
// lazy load compiler
8484
const { parse, transform } = await import('@vue/compiler-dom')
8585
// @vue/compiler-core doesn't like lowercase doctypes
@@ -101,7 +101,12 @@ export async function traverseHtml(
101101
}
102102
}
103103

104-
export function getScriptInfo(node: ElementNode) {
104+
export function getScriptInfo(
105+
node: ElementNode
106+
): {
107+
src: AttributeNode | undefined
108+
isModule: boolean
109+
} {
105110
let src: AttributeNode | undefined
106111
let isModule = false
107112
for (let i = 0; i < node.props.length; i++) {
@@ -440,7 +445,9 @@ export type IndexHtmlTransform =
440445
transform: IndexHtmlTransformHook
441446
}
442447

443-
export function resolveHtmlTransforms(plugins: readonly Plugin[]) {
448+
export function resolveHtmlTransforms(
449+
plugins: readonly Plugin[]
450+
): [IndexHtmlTransformHook[], IndexHtmlTransformHook[]] {
444451
const preHooks: IndexHtmlTransformHook[] = []
445452
const postHooks: IndexHtmlTransformHook[] = []
446453

packages/vite/src/node/preview.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@ import { openBrowser } from './server/openBrowser'
1111
import corsMiddleware from 'cors'
1212
import { proxyMiddleware } from './server/middlewares/proxy'
1313

14-
export async function preview(config: ResolvedConfig, port = 5000) {
14+
export async function preview(
15+
config: ResolvedConfig,
16+
port = 5000
17+
): Promise<void> {
1518
const app = connect() as Connect.Server
1619
const httpServer = await resolveHttpServer(config.server, app)
1720

packages/vite/src/node/server/hmr.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ export async function handleFileAddUnlink(
164164
file: string,
165165
server: ViteDevServer,
166166
isUnlink = false
167-
) {
167+
): Promise<void> {
168168
const modules = [...(server.moduleGraph.getModulesByFile(file) ?? [])]
169169
if (isUnlink && file in server._globImporters) {
170170
delete server._globImporters[file]
@@ -247,7 +247,7 @@ function invalidate(mod: ModuleNode, timestamp: number, seen: Set<ModuleNode>) {
247247
export function handlePrunedModules(
248248
mods: Set<ModuleNode>,
249249
{ ws }: ViteDevServer
250-
) {
250+
): void {
251251
// update the disposed modules' hmr timestamp
252252
// since if it's re-imported, it should re-apply side effects
253253
// and without the timestamp the browser will not re-import it!

packages/vite/src/node/server/http.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ export async function resolveHttpServer(
3030
}
3131
}
3232

33-
export async function resolveHttpsConfig(httpsOption: HttpsServerOptions) {
33+
export async function resolveHttpsConfig(
34+
httpsOption: HttpsServerOptions
35+
): Promise<HttpsServerOptions> {
3436
const { ca, cert, key, pfx } = httpsOption
3537
Object.assign(httpsOption, {
3638
ca: readFileIfExists(ca),

packages/vite/src/node/server/middlewares/error.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function buildErrorMessage(
2424
err: RollupError,
2525
args: string[] = [],
2626
includeStack = true
27-
) {
27+
): string {
2828
if (err.plugin) args.push(` Plugin: ${chalk.magenta(err.plugin)}`)
2929
if (err.id) args.push(` File: ${chalk.cyan(err.id)}`)
3030
if (err.frame) args.push(chalk.yellow(pad(err.frame)))

packages/vite/src/node/server/middlewares/indexHtml.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ import { CLIENT_PUBLIC_PATH, FS_PREFIX } from '../../constants'
1616
import { cleanUrl, fsPathFromId } from '../../utils'
1717
import { assetAttrsConfig } from '../../plugins/html'
1818

19-
export function createDevHtmlTransformFn(server: ViteDevServer) {
19+
export function createDevHtmlTransformFn(
20+
server: ViteDevServer
21+
): (url: string, html: string) => Promise<string> {
2022
const [preHooks, postHooks] = resolveHtmlTransforms(server.config.plugins)
2123

2224
return (url: string, html: string): Promise<string> => {

0 commit comments

Comments
 (0)