assetUrl.ts — vue Source File
Architecture documentation for assetUrl.ts, a typescript file in the vue codebase. 3 imports, 3 dependents.
Entity Profile
Dependency Diagram
graph LR cae36964_2fe7_a649_0189_6f756f42c7f5["assetUrl.ts"] c7f42e34_1c62_9250_3035_ae380c3322e2["utils.ts"] cae36964_2fe7_a649_0189_6f756f42c7f5 --> c7f42e34_1c62_9250_3035_ae380c3322e2 8fd1d7ae_4758_a029_20c6_a5380f519c70["urlToRequire"] cae36964_2fe7_a649_0189_6f756f42c7f5 --> 8fd1d7ae_4758_a029_20c6_a5380f519c70 a80b8e3b_d720_9146_3bf6_594d4ee5dd77["compiler"] cae36964_2fe7_a649_0189_6f756f42c7f5 --> a80b8e3b_d720_9146_3bf6_594d4ee5dd77 b824bd73_da14_5076_9939_3d47171265ea["compileTemplate.ts"] b824bd73_da14_5076_9939_3d47171265ea --> cae36964_2fe7_a649_0189_6f756f42c7f5 d1a7581d_37f4_760f_46fe_99640069e5dd["srcset.ts"] d1a7581d_37f4_760f_46fe_99640069e5dd --> cae36964_2fe7_a649_0189_6f756f42c7f5 c7f42e34_1c62_9250_3035_ae380c3322e2["utils.ts"] c7f42e34_1c62_9250_3035_ae380c3322e2 --> cae36964_2fe7_a649_0189_6f756f42c7f5 style cae36964_2fe7_a649_0189_6f756f42c7f5 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
// vue compiler module for transforming `<tag>:<attribute>` to `require`
import { urlToRequire } from './utils'
import { ASTNode, ASTAttr } from 'types/compiler'
export interface AssetURLOptions {
[name: string]: string | string[]
}
export interface TransformAssetUrlsOptions {
/**
* If base is provided, instead of transforming relative asset urls into
* imports, they will be directly rewritten to absolute urls.
*/
base?: string
/**
* If true, also processes absolute urls.
*/
includeAbsolute?: boolean
}
const defaultOptions: AssetURLOptions = {
audio: 'src',
video: ['src', 'poster'],
source: 'src',
img: 'src',
image: ['xlink:href', 'href'],
use: ['xlink:href', 'href']
}
export default (
userOptions?: AssetURLOptions,
transformAssetUrlsOption?: TransformAssetUrlsOptions
) => {
const options = userOptions
? Object.assign({}, defaultOptions, userOptions)
: defaultOptions
return {
postTransformNode: (node: ASTNode) => {
transform(node, options, transformAssetUrlsOption)
}
}
}
function transform(
node: ASTNode,
options: AssetURLOptions,
transformAssetUrlsOption?: TransformAssetUrlsOptions
) {
if (node.type !== 1 || !node.attrs) return
for (const tag in options) {
if (tag === '*' || node.tag === tag) {
const attributes = options[tag]
if (typeof attributes === 'string') {
node.attrs!.some(attr =>
rewrite(attr, attributes, transformAssetUrlsOption)
)
} else if (Array.isArray(attributes)) {
attributes.forEach(item =>
node.attrs!.some(attr =>
rewrite(attr, item, transformAssetUrlsOption)
)
)
}
}
}
}
function rewrite(
attr: ASTAttr,
name: string,
transformAssetUrlsOption?: TransformAssetUrlsOptions
) {
if (attr.name === name) {
const value = attr.value
// only transform static URLs
if (value.charAt(0) === '"' && value.charAt(value.length - 1) === '"') {
attr.value = urlToRequire(value.slice(1, -1), transformAssetUrlsOption)
return true
}
}
return false
}
Domain
Subdomains
Functions
Dependencies
- compiler
- urlToRequire
- utils.ts
Imported By
Source
Frequently Asked Questions
What does assetUrl.ts do?
assetUrl.ts is a source file in the vue codebase, written in typescript. It belongs to the SfcCompiler domain, ScriptCompiler subdomain.
What functions are defined in assetUrl.ts?
assetUrl.ts defines 2 function(s): rewrite, transform.
What does assetUrl.ts depend on?
assetUrl.ts imports 3 module(s): compiler, urlToRequire, utils.ts.
What files import assetUrl.ts?
assetUrl.ts is imported by 3 file(s): compileTemplate.ts, srcset.ts, utils.ts.
Where is assetUrl.ts in the architecture?
assetUrl.ts is located at packages/compiler-sfc/src/templateCompilerModules/assetUrl.ts (domain: SfcCompiler, subdomain: ScriptCompiler, directory: packages/compiler-sfc/src/templateCompilerModules).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free