rewrite.ts — astro Source File
Architecture documentation for rewrite.ts, a typescript file in the astro codebase. 10 imports, 0 dependents.
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
Source
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