Home / File/ rewrite.ts — astro Source File

rewrite.ts — astro Source File

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

File typescript CoreAstro RoutingSystem 10 imports 4 functions

Entity Profile

Dependency Diagram

graph LR
  67024343_d7f2_f928_d5b2_367cfa846343["rewrite.ts"]
  135a8084_d596_67c2_9209_cca6693604e6["../types/public/common.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> 135a8084_d596_67c2_9209_cca6693604e6
  c32d12e2_d85e_28c0_eea7_9b29629857e0["../types/public/config.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> c32d12e2_d85e_28c0_eea7_9b29629857e0
  10d4e39f_edb6_3e34_aa93_ae1211e7da05["../types/public/internal.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> 10d4e39f_edb6_3e34_aa93_ae1211e7da05
  c396bb1c_7eee_221a_d665_5744d13dc23f["../core/build/util.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> c396bb1c_7eee_221a_d665_5744d13dc23f
  7216d952_4e4a_2d18_a85b_74b4ace79e2b["../core/constants.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> 7216d952_4e4a_2d18_a85b_74b4ace79e2b
  ef8a1e3f_e350_75a6_b92d_62a8566d8db9["../core/errors/index.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> ef8a1e3f_e350_75a6_b92d_62a8566d8db9
  d3861967_b647_84d2_ff48_15013353bd56["../core/logger/core.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> d3861967_b647_84d2_ff48_15013353bd56
  7e4494c0_5563_4329_1bff_a84be66e1bc2["../core/path.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> 7e4494c0_5563_4329_1bff_a84be66e1bc2
  6f8d6404_9359_4a80_21ec_f5d07c6e4626["../core/request.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> 6f8d6404_9359_4a80_21ec_f5d07c6e4626
  9448bae7_8c9f_817b_4d45_a0ad40f771b0["../core/routing/astro-designed-error-pages.js"]
  67024343_d7f2_f928_d5b2_367cfa846343 --> 9448bae7_8c9f_817b_4d45_a0ad40f771b0
  style 67024343_d7f2_f928_d5b2_367cfa846343 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { RewritePayload } from '../../types/public/common.js';
import type { AstroConfig } from '../../types/public/config.js';
import type { RouteData } from '../../types/public/internal.js';
import { shouldAppendForwardSlash } from '../build/util.js';
import { originPathnameSymbol } from '../constants.js';
import { AstroError, AstroErrorData } from '../errors/index.js';
import type { Logger } from '../logger/core.js';
import {
	appendForwardSlash,
	joinPaths,
	prependForwardSlash,
	removeTrailingForwardSlash,
	trimSlashes,
} from '../path.js';
import { createRequest } from '../request.js';
import { DEFAULT_404_ROUTE } from './astro-designed-error-pages.js';

type FindRouteToRewrite = {
	payload: RewritePayload;
	routes: RouteData[];
	request: Request;
	trailingSlash: AstroConfig['trailingSlash'];
	buildFormat: AstroConfig['build']['format'];
	base: AstroConfig['base'];
	outDir: URL | string;
};

interface FindRouteToRewriteResult {
	routeData: RouteData;
	newUrl: URL;
	pathname: string;
}

/**
 * Shared logic to retrieve the rewritten route. It returns a tuple that represents:
 * 1. The new `Request` object. It contains `base`
 * 2.
 */
export function findRouteToRewrite({
	payload,
	routes,
	request,
	trailingSlash,
	buildFormat,
	base,
	outDir,
}: FindRouteToRewrite): FindRouteToRewriteResult {
	let newUrl: URL | undefined = undefined;
	if (payload instanceof URL) {
		newUrl = payload;
	} else if (payload instanceof Request) {
		newUrl = new URL(payload.url);
	} else {
		newUrl = new URL(payload, new URL(request.url).origin);
	}

	let pathname = newUrl.pathname;
	const shouldAppendSlash = shouldAppendForwardSlash(trailingSlash, buildFormat);

	// Special handling for base path
// ... (166 more lines)

Domain

Subdomains

Dependencies

  • ../core/build/util.js
  • ../core/constants.js
  • ../core/errors/index.js
  • ../core/logger/core.js
  • ../core/path.js
  • ../core/request.js
  • ../core/routing/astro-designed-error-pages.js
  • ../types/public/common.js
  • ../types/public/config.js
  • ../types/public/internal.js

Frequently Asked Questions

What does rewrite.ts do?
rewrite.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RoutingSystem subdomain.
What functions are defined in rewrite.ts?
rewrite.ts defines 4 function(s): copyRequest, findRouteToRewrite, getOriginPathname, setOriginPathname.
What does rewrite.ts depend on?
rewrite.ts imports 10 module(s): ../core/build/util.js, ../core/constants.js, ../core/errors/index.js, ../core/logger/core.js, ../core/path.js, ../core/request.js, ../core/routing/astro-designed-error-pages.js, ../types/public/common.js, and 2 more.
Where is rewrite.ts in the architecture?
rewrite.ts is located at packages/astro/src/core/routing/rewrite.ts (domain: CoreAstro, subdomain: RoutingSystem, directory: packages/astro/src/core/routing).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free