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 dcc849a8_8698_9d99_84f0_b76bdf69610c["assetUrl.ts"] 2347b93b_5b26_2b27_6743_fe5fed353eb5["utils.ts"] dcc849a8_8698_9d99_84f0_b76bdf69610c --> 2347b93b_5b26_2b27_6743_fe5fed353eb5 084fbb63_6e20_b1c4_c59e_540beed57a4e["urlToRequire"] dcc849a8_8698_9d99_84f0_b76bdf69610c --> 084fbb63_6e20_b1c4_c59e_540beed57a4e 47ae9f26_59d1_fab2_349f_966f5d15495a["compiler"] dcc849a8_8698_9d99_84f0_b76bdf69610c --> 47ae9f26_59d1_fab2_349f_966f5d15495a ff52d56b_a346_9a70_961a_c5aca0690626["compileTemplate.ts"] ff52d56b_a346_9a70_961a_c5aca0690626 --> dcc849a8_8698_9d99_84f0_b76bdf69610c b079557f_1b35_1202_e466_a7574ca75db9["srcset.ts"] b079557f_1b35_1202_e466_a7574ca75db9 --> dcc849a8_8698_9d99_84f0_b76bdf69610c 2347b93b_5b26_2b27_6743_fe5fed353eb5["utils.ts"] 2347b93b_5b26_2b27_6743_fe5fed353eb5 --> dcc849a8_8698_9d99_84f0_b76bdf69610c style dcc849a8_8698_9d99_84f0_b76bdf69610c 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 CompilerSFC domain, ScriptAnalyzer 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: CompilerSFC, subdomain: ScriptAnalyzer, 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