Skip to content

Commit ea2f79d

Browse files
committed
BREAKING CHANGE: rework import info interface
`path` -> `from` `name` -> `as` `importName` -> `name`
1 parent 857a5ae commit ea2f79d

29 files changed

+151
-123
lines changed

src/core/context.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import Debug from 'debug'
44
import type { UpdatePayload, ViteDevServer } from 'vite'
55
import { slash, throttle, toArray } from '@antfu/utils'
66
import type { ComponentInfo, Options, ResolvedOptions, Transformer } from '../types'
7-
import { getNameFromFilePath, matchGlobs, parseId, pascalCase, resolveAlias } from './utils'
7+
import { getNameFromFilePath, matchGlobs, normalizeComponetInfo, parseId, pascalCase, resolveAlias } from './utils'
88
import { resolveOptions } from './options'
99
import { searchComponents } from './fs/glob'
1010
import { generateDeclaration } from './declaration'
@@ -116,8 +116,8 @@ export class Context {
116116
}
117117

118118
addCustomComponents(info: ComponentInfo) {
119-
if (info.name)
120-
this._componentCustomMap[info.name] = info
119+
if (info.as)
120+
this._componentCustomMap[info.as] = info
121121
}
122122

123123
removeComponents(paths: string | string[]) {
@@ -176,16 +176,16 @@ export class Context {
176176
}
177177

178178
this._componentNameMap[name] = {
179-
name,
180-
path,
179+
as: name,
180+
from: path,
181181
}
182182
})
183183
}
184184

185185
async findComponent(name: string, type: 'component' | 'directive', excludePaths: string[] = []): Promise<ComponentInfo | undefined> {
186186
// resolve from fs
187187
let info = this._componentNameMap[name]
188-
if (info && !excludePaths.includes(info.path) && !excludePaths.includes(info.path.slice(1)))
188+
if (info && !excludePaths.includes(info.from) && !excludePaths.includes(info.from.slice(1)))
189189
return info
190190

191191
// custom resolvers
@@ -197,16 +197,16 @@ export class Context {
197197
if (result) {
198198
if (typeof result === 'string') {
199199
info = {
200-
name,
201-
path: result,
200+
as: name,
201+
from: result,
202202
}
203203
this.addCustomComponents(info)
204204
return info
205205
}
206206
else {
207207
info = {
208-
name,
209-
...result,
208+
as: name,
209+
...normalizeComponetInfo(result),
210210
}
211211
this.addCustomComponents(info)
212212
return info

src/core/declaration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export async function generateDeclaration(ctx: Context, root: string, filepath:
2020
}),
2121
...resolveTypeImports(ctx.options.types),
2222
]
23-
.map(({ path, name, importName }) => {
23+
.map(({ from: path, as: name, name: importName }) => {
2424
if (!name)
2525
return undefined
2626
path = getTransformedPath(path, ctx)

src/core/resolvers/antdv.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,8 @@ export function AntDesignVueResolver(options: AntDesignVueResolverOptions = {
262262
resolve: (name: string) => {
263263
if (options.resolveIcons && name.match(/(Outlined|Filled|TwoTone)$/)) {
264264
return {
265-
importName: name,
266-
path: '@ant-design/icons-vue',
265+
name,
266+
from: '@ant-design/icons-vue',
267267
}
268268
}
269269

@@ -272,8 +272,8 @@ export function AntDesignVueResolver(options: AntDesignVueResolverOptions = {
272272
const { cjs = false } = options
273273
const path = `ant-design-vue/${cjs ? 'lib' : 'es'}`
274274
return {
275-
importName,
276-
path,
275+
name: importName,
276+
from: path,
277277
sideEffects: getSideEffects(importName, options),
278278
}
279279
}

src/core/resolvers/arco.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { ComponentResolver } from '../../types'
1+
import type { ComponentInfo, ComponentResolver } from '../../types'
22
import { kebabCase } from '../utils'
33

44
const matchComponents = [
@@ -175,21 +175,20 @@ export function ArcoResolver(
175175
resolve: (name: string) => {
176176
if (options.resolveIcons && name.match(/^Icon/)) {
177177
return {
178-
importName: name,
179-
path: '@arco-design/web-vue/es/icon',
178+
name,
179+
from: '@arco-design/web-vue/es/icon',
180180
}
181181
}
182182
if (name.match(/^A[A-Z]/)) {
183183
const importStyle = options.importStyle ?? 'css'
184184

185185
const importName = name.slice(1)
186-
const config = {
187-
importName,
188-
path: '@arco-design/web-vue',
186+
const config: ComponentInfo = {
187+
as: importName,
188+
from: '@arco-design/web-vue',
189189
}
190190
if (options.sideEffect !== false)
191-
(config as any).sideEffects = getComponentStyleDir(importName, importStyle)
192-
191+
config.sideEffects = getComponentStyleDir(importName, importStyle)
193192
return config
194193
}
195194
},

src/core/resolvers/devui.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { kebabCase } from '../utils'
2-
import type { ComponentResolver } from '../../types'
2+
import type { ComponentInfo, ComponentResolver, ImportInfo } from '../../types'
33

44
export interface DevResolverOptions {
55
/**
@@ -48,27 +48,27 @@ function getSideEffects(name: string): string | undefined {
4848
return (match && effectComponentMaps[match]) && findStyle(match)
4949
}
5050

51-
function componentsResolver(name: string) {
51+
function componentsResolver(name: string): ComponentInfo | undefined {
5252
if (!name.match(/^D[A-Z]/))
5353
return
5454

5555
// Alert => alert; DatePicker => date-picker
5656
const resolveId = kebabCase(name = name.slice(1))
5757

5858
return {
59-
path: LIB_NAME,
60-
importName: name,
59+
from: LIB_NAME,
60+
as: name,
6161
sideEffects: getSideEffects(resolveId),
6262
}
6363
}
6464

65-
function directivesResolver(name: string) {
65+
function directivesResolver(name: string): ComponentInfo | undefined {
6666
if (!(name in effectDirectiveMaps))
6767
return
6868

6969
return {
70-
path: LIB_NAME,
71-
importName: `${name}Directive`,
70+
from: LIB_NAME,
71+
as: `${name}Directive`,
7272
sideEffects: findStyle(effectDirectiveMaps[name]),
7373
}
7474
}

src/core/resolvers/element-plus.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,22 +91,22 @@ function resolveComponent(name: string, options: ElementPlusResolverOptionsResol
9191
// >=1.1.0-beta.1
9292
if (cv.compare(version, '1.1.0-beta.1', '>=')) {
9393
return {
94-
importName: name,
95-
path: `element-plus/${ssr ? 'lib' : 'es'}`,
94+
name,
95+
from: `element-plus/${ssr ? 'lib' : 'es'}`,
9696
sideEffects: getSideEffects(partialName, options),
9797
}
9898
}
9999
// >=1.0.2-beta.28
100100
else if (cv.compare(version, '1.0.2-beta.28', '>=')) {
101101
return {
102-
path: `element-plus/es/el-${partialName}`,
102+
from: `element-plus/es/el-${partialName}`,
103103
sideEffects: getSideEffectsLegacy(partialName, options),
104104
}
105105
}
106106
// for <=1.0.1
107107
else {
108108
return {
109-
path: `element-plus/lib/el-${partialName}`,
109+
from: `element-plus/lib/el-${partialName}`,
110110
sideEffects: getSideEffectsLegacy(partialName, options),
111111
}
112112
}
@@ -131,8 +131,8 @@ function resolveDirective(name: string, options: ElementPlusResolverOptionsResol
131131
// >=1.1.0-beta.1
132132
if (cv.compare(version, '1.1.0-beta.1', '>=')) {
133133
return {
134-
importName: directive.importName,
135-
path: `element-plus/${ssr ? 'lib' : 'es'}`,
134+
name: directive.importName,
135+
from: `element-plus/${ssr ? 'lib' : 'es'}`,
136136
sideEffects: getSideEffects(directive.styleName, options),
137137
}
138138
}

src/core/resolvers/element-ui.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ export function ElementUiResolver(options: ElementUiResolverOptions = {}): Compo
5151
const partialName = kebabCase(compName)
5252
if (partialName === 'collapse-transition') {
5353
return {
54-
path: `element-ui/lib/transitions/${partialName}`,
54+
from: `element-ui/lib/transitions/${partialName}`,
5555
}
5656
}
5757
return {
58-
path: `element-ui/lib/${partialName}`,
58+
from: `element-ui/lib/${partialName}`,
5959
sideEffects: getSideEffects(partialName, options),
6060
}
6161
}

src/core/resolvers/headless-ui.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ export function HeadlessUiResolver(options: HeadlessUiResolverOptions = {}): Com
7171
const componentName = name.substring(prefix.length)
7272
if (components.includes(componentName)) {
7373
return {
74-
importName: componentName,
75-
path: '@headlessui/vue',
74+
name: componentName,
75+
from: '@headlessui/vue',
7676
}
7777
}
7878
}

src/core/resolvers/idux.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export function IduxResolver(options: IduxResolverOptions = {}): ComponentResolv
5656
if (packageName !== 'cdk' && importStyle)
5757
sideEffects = `${path}/style/themes/${importStyle === 'css' ? 'default_css' : 'default'}`
5858

59-
return { importName: name, path, sideEffects }
59+
return { name, from: path, sideEffects }
6060
},
6161
}
6262
}

src/core/resolvers/inkline.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ export function InklineResolver(): ComponentResolver {
1212
resolve: (name: string) => {
1313
if (name.match(/^I[A-Z]/)) {
1414
return {
15-
importName: name,
16-
path: '@inkline/inkline',
15+
name,
16+
from: '@inkline/inkline',
1717
}
1818
}
1919
},

0 commit comments

Comments
 (0)