Skip to content

Commit

Permalink
refactor: use existing types
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Jun 10, 2022
1 parent 06594f6 commit ed4bbed
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 19 deletions.
14 changes: 9 additions & 5 deletions packages/compiler-sfc/src/templateCompilerModules/assetUrl.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// vue compiler module for transforming `<tag>:<attribute>` to `require`

import { urlToRequire, ASTNode, Attr } from './utils'
import { urlToRequire } from './utils'
import { ASTNode, ASTAttr } from 'types/compiler'

export interface AssetURLOptions {
[name: string]: string | string[]
Expand Down Expand Up @@ -43,24 +44,27 @@ function transform(
options: AssetURLOptions,
transformAssetUrlsOption?: TransformAssetUrlsOptions
) {
if (node.type !== 1 || !node.attrs) return
for (const tag in options) {
if ((tag === '*' || node.tag === tag) && node.attrs) {
if (tag === '*' || node.tag === tag) {
const attributes = options[tag]
if (typeof attributes === 'string') {
node.attrs.some(attr =>
node.attrs!.some(attr =>
rewrite(attr, attributes, transformAssetUrlsOption)
)
} else if (Array.isArray(attributes)) {
attributes.forEach(item =>
node.attrs.some(attr => rewrite(attr, item, transformAssetUrlsOption))
node.attrs!.some(attr =>
rewrite(attr, item, transformAssetUrlsOption)
)
)
}
}
}
}

function rewrite(
attr: Attr,
attr: ASTAttr,
name: string,
transformAssetUrlsOption?: TransformAssetUrlsOptions
) {
Expand Down
9 changes: 6 additions & 3 deletions packages/compiler-sfc/src/templateCompilerModules/srcset.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// vue compiler module for transforming `img:srcset` to a number of `require`s

import { urlToRequire, ASTNode } from './utils'
import { urlToRequire } from './utils'
import { TransformAssetUrlsOptions } from './assetUrl'
import { ASTNode } from 'types/compiler'

interface ImageCandidate {
require: string
Expand All @@ -21,9 +22,11 @@ function transform(
node: ASTNode,
transformAssetUrlsOptions?: TransformAssetUrlsOptions
) {
const tags = ['img', 'source']
if (node.type !== 1 || !node.attrs) {
return
}

if (tags.indexOf(node.tag) !== -1 && node.attrs) {
if (node.tag === 'img' || node.tag === 'source') {
node.attrs.forEach(attr => {
if (attr.name === 'srcset') {
// same logic as in transform-require.js
Expand Down
10 changes: 0 additions & 10 deletions packages/compiler-sfc/src/templateCompilerModules/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,6 @@ import { TransformAssetUrlsOptions } from './assetUrl'
import { UrlWithStringQuery, parse as uriParse } from 'url'
import path from 'path'

export interface Attr {
name: string
value: string
}

export interface ASTNode {
tag: string
attrs: Attr[]
}

export function urlToRequire(
url: string,
transformAssetUrlsOption: TransformAssetUrlsOptions = {}
Expand Down
1 change: 0 additions & 1 deletion packages/compiler-sfc/test/compileTemplate.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { compileTemplate } from '../src/compileTemplate'
import Vue from 'vue'

function mockRender(code: string, mocks: Record<string, any> = {}) {
console.log(code)
const fn = new Function(
`require`,
`${code}; return { render, staticRenderFns }`
Expand Down

0 comments on commit ed4bbed

Please sign in to comment.