relative.ts — astro Source File
Architecture documentation for relative.ts, a typescript file in the astro codebase. 6 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 10a267b8_752d_1abc_9ed2_b64678e9eb4e["relative.ts"] 7e4494c0_5563_4329_1bff_a84be66e1bc2["../core/path.js"] 10a267b8_752d_1abc_9ed2_b64678e9eb4e --> 7e4494c0_5563_4329_1bff_a84be66e1bc2 4f34796a_0dca_b3bd_453e_7259c53cc60e["./base.js"] 10a267b8_752d_1abc_9ed2_b64678e9eb4e --> 4f34796a_0dca_b3bd_453e_7259c53cc60e c2f6615e_96e9_c4eb_5f71_cf120e271705["node:http"] 10a267b8_752d_1abc_9ed2_b64678e9eb4e --> c2f6615e_96e9_c4eb_5f71_cf120e271705 c52a5f83_66e3_37d7_9ebb_767f7129bc62["node:path"] 10a267b8_752d_1abc_9ed2_b64678e9eb4e --> c52a5f83_66e3_37d7_9ebb_767f7129bc62 d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"] 10a267b8_752d_1abc_9ed2_b64678e9eb4e --> d9a92db9_c95e_9165_13ac_24b3d859d946 f8c9251e_f535_6281_2118_9e79a4155212["v4"] 10a267b8_752d_1abc_9ed2_b64678e9eb4e --> f8c9251e_f535_6281_2118_9e79a4155212 style 10a267b8_752d_1abc_9ed2_b64678e9eb4e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import type { OutgoingHttpHeaders } from 'node:http';
import path from 'node:path';
import { fileURLToPath, pathToFileURL } from 'node:url';
import * as z from 'zod/v4';
import { appendForwardSlash, prependForwardSlash, removeTrailingForwardSlash } from '../../path.js';
import { ASTRO_CONFIG_DEFAULTS, AstroConfigSchema } from './base.js';
function resolveDirAsUrl(dir: string, root: string) {
let resolvedDir = path.resolve(root, dir);
if (!resolvedDir.endsWith(path.sep)) {
resolvedDir += path.sep;
}
return pathToFileURL(resolvedDir);
}
export function createRelativeSchema(cmd: string, fileProtocolRoot: string) {
let originalBuildClient: string;
let originalBuildServer: string;
// We need to extend the global schema to add transforms that are relative to root.
// This is type checked against the global schema to make sure we still match.
const AstroConfigRelativeSchema = AstroConfigSchema.extend({
root: z
.string()
.default(ASTRO_CONFIG_DEFAULTS.root)
.transform((val) => resolveDirAsUrl(val, fileProtocolRoot)),
srcDir: z
.string()
.default(ASTRO_CONFIG_DEFAULTS.srcDir)
.transform((val) => resolveDirAsUrl(val, fileProtocolRoot)),
compressHTML: z.boolean().optional().default(ASTRO_CONFIG_DEFAULTS.compressHTML),
publicDir: z
.string()
.default(ASTRO_CONFIG_DEFAULTS.publicDir)
.transform((val) => resolveDirAsUrl(val, fileProtocolRoot)),
outDir: z
.string()
.default(ASTRO_CONFIG_DEFAULTS.outDir)
.transform((val) => resolveDirAsUrl(val, fileProtocolRoot)),
cacheDir: z
.string()
.default(ASTRO_CONFIG_DEFAULTS.cacheDir)
.transform((val) => resolveDirAsUrl(val, fileProtocolRoot)),
build: z
.object({
format: z
.union([z.literal('file'), z.literal('directory'), z.literal('preserve')])
.optional()
.default(ASTRO_CONFIG_DEFAULTS.build.format),
// NOTE: `client` and `server` are transformed relative to the default outDir first,
// later we'll fix this to be relative to the actual `outDir`
client: z
.string()
.optional()
.default(ASTRO_CONFIG_DEFAULTS.build.client)
.transform((val) => {
originalBuildClient = val;
return resolveDirAsUrl(
val,
path.resolve(fileProtocolRoot, ASTRO_CONFIG_DEFAULTS.outDir),
// ... (92 more lines)
Domain
Subdomains
Functions
Dependencies
- ../core/path.js
- ./base.js
- node:http
- node:path
- node:url
- v4
Source
Frequently Asked Questions
What does relative.ts do?
relative.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in relative.ts?
relative.ts defines 2 function(s): createRelativeSchema, resolveDirAsUrl.
What does relative.ts depend on?
relative.ts imports 6 module(s): ../core/path.js, ./base.js, node:http, node:path, node:url, v4.
Where is relative.ts in the architecture?
relative.ts is located at packages/astro/src/core/config/schemas/relative.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/config/schemas).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free