Home / File/ relative.ts — astro Source File

relative.ts — astro Source File

Architecture documentation for relative.ts, a typescript file in the astro codebase. 6 imports, 0 dependents.

File typescript CoreAstro RenderingEngine 6 imports 2 functions

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

Dependencies

  • ../core/path.js
  • ./base.js
  • node:http
  • node:path
  • node:url
  • v4

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