ssrTransformScript() — vite Function Reference
Architecture documentation for the ssrTransformScript() function in ssrTransform.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 027164d9_0d90_6487_4866_e21cb9d3e6c1["ssrTransformScript()"] 20c20aaf_ad5b_4014_72b5_c8262a2b5be1["ssrTransform.ts"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|defined in| 20c20aaf_ad5b_4014_72b5_c8262a2b5be1 1ee4af98_1554_7714_4370_05ac2b2589cd["ssrTransform()"] 1ee4af98_1554_7714_4370_05ac2b2589cd -->|calls| 027164d9_0d90_6487_4866_e21cb9d3e6c1 7e08b9a5_2650_5312_63d2_5971015349af["numberToPos()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| 7e08b9a5_2650_5312_63d2_5971015349af 310ed049_c1b4_c917_b399_81bab290e5a2["generateCodeFrame()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| 310ed049_c1b4_c917_b399_81bab290e5a2 873ce744_c3af_fdc6_c381_1e89e98d31cf["getIdentifierNameOrLiteralValue()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| 873ce744_c3af_fdc6_c381_1e89e98d31cf 1f4d9016_899e_0522_098a_8c1386655467["walk()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| 1f4d9016_899e_0522_098a_8c1386655467 90a82f7f_608b_60ef_b83d_da1ff0dfb384["isStaticProperty()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| 90a82f7f_608b_60ef_b83d_da1ff0dfb384 c9e13c92_3046_b340_998d_d0be8193e4bf["isNodeInPattern()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| c9e13c92_3046_b340_998d_d0be8193e4bf 5f4200f5_1cdf_b284_eca0_1eecbd7bc4d3["isInDestructuringAssignment()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| 5f4200f5_1cdf_b284_eca0_1eecbd7bc4d3 cb1210e8_03e9_2eec_ef04_aa15d44d4c08["combineSourcemaps()"] 027164d9_0d90_6487_4866_e21cb9d3e6c1 -->|calls| cb1210e8_03e9_2eec_ef04_aa15d44d4c08 style 027164d9_0d90_6487_4866_e21cb9d3e6c1 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/ssr/ssrTransform.ts lines 82–453
async function ssrTransformScript(
code: string,
inMap: SourceMap | { mappings: '' } | null,
url: string,
originalCode: string,
): Promise<TransformResult | null> {
const s = new MagicString(code)
let ast: any
try {
ast = await rolldownParseAstAsync(code)
} catch (err) {
// enhance known rollup errors
// https://github.com/rollup/rollup/blob/42e587e0e37bc0661aa39fe7ad6f1d7fd33f825c/src/utils/bufferToAst.ts#L17-L22
if (err.code === 'PARSE_ERROR') {
err.message = `Parse failure: ${err.message}\n`
err.id = url
if (typeof err.pos === 'number') {
err.loc = numberToPos(code, err.pos)
err.loc.file = url
err.frame = generateCodeFrame(code, err.pos)
err.message += `At file: ${url}:${err.loc.line}:${err.loc.column}`
} else {
err.message += `At file: ${url}`
}
}
throw err
}
let uid = 0
const deps = new Set<string>()
const dynamicDeps = new Set<string>()
const idToImportMap = new Map<string, string>()
const declaredConst = new Set<string>()
// hoist at the start of the file, after the hashbang
const fileStartIndex = hashbangRE.exec(code)?.[0].length ?? 0
let hoistIndex = fileStartIndex
function defineImport(
index: number,
importNode: (
| ImportDeclaration
| (ExportNamedDeclaration & { source: Literal })
| ExportAllDeclaration
) & {
start: number
end: number
},
metadata?: DefineImportMetadata,
) {
const source = importNode.source.value as string
deps.add(source)
// Reduce metadata to undefined if it's all default values
const metadataArg =
(metadata?.importedNames?.length ?? 0) > 0
? `, ${JSON.stringify(metadata)}`
: ''
const importId = `__vite_ssr_import_${uid++}__`
const transformedImport = `const ${importId} = await ${ssrImportKey}(${JSON.stringify(
source,
)}${metadataArg});\n`
s.update(importNode.start, importNode.end, transformedImport)
if (importNode.start === index) {
// no need to hoist, but update hoistIndex to keep the order
hoistIndex = importNode.end
} else {
// There will be an error if the module is called before it is imported,
// so the module import statement is hoisted to the top
s.move(importNode.start, importNode.end, index)
}
return importId
}
function defineExport(name: string, local = name) {
// wrap with try/catch to fallback to `undefined` for backward compat.
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does ssrTransformScript() do?
ssrTransformScript() is a function in the vite codebase, defined in packages/vite/src/node/ssr/ssrTransform.ts.
Where is ssrTransformScript() defined?
ssrTransformScript() is defined in packages/vite/src/node/ssr/ssrTransform.ts at line 82.
What does ssrTransformScript() call?
ssrTransformScript() calls 8 function(s): combineSourcemaps, generateCodeFrame, getIdentifierNameOrLiteralValue, isInDestructuringAssignment, isNodeInPattern, isStaticProperty, numberToPos, walk.
What calls ssrTransformScript()?
ssrTransformScript() is called by 1 function(s): ssrTransform.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free