Home / File/ create.ts — astro Source File

create.ts — astro Source File

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

File typescript CoreAstro RenderingEngine 25 imports 12 functions

Entity Profile

Dependency Diagram

graph LR
  a7eed989_9f2b_5163_ecdf_85920a8b973f["create.ts"]
  37e7610e_4cbf_5d5a_5b2c_236fdc8ce134["../../../assets/endpoint/config.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 37e7610e_4cbf_5d5a_5b2c_236fdc8ce134
  ec3f57f9_1334_b72b_abeb_11b186147ebe["../integrations/hooks.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> ec3f57f9_1334_b72b_abeb_11b186147ebe
  8651c206_171a_4a48_b04b_b47f5573b5da["../prerender/utils.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 8651c206_171a_4a48_b04b_b47f5573b5da
  e9b74c5a_8d34_34a7_e196_5e41b87214aa["../types/astro.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> e9b74c5a_8d34_34a7_e196_5e41b87214aa
  c32d12e2_d85e_28c0_eea7_9b29629857e0["../types/public/config.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> c32d12e2_d85e_28c0_eea7_9b29629857e0
  10d4e39f_edb6_3e34_aa93_ae1211e7da05["../types/public/internal.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 10d4e39f_edb6_3e34_aa93_ae1211e7da05
  97dbad4f_4a90_206c_6e29_6a54c12480f2["../core/app/index.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 97dbad4f_4a90_206c_6e29_6a54c12480f2
  7216d952_4e4a_2d18_a85b_74b4ace79e2b["../core/constants.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 7216d952_4e4a_2d18_a85b_74b4ace79e2b
  8df634da_0f30_1e1f_1314_2439b0c9baab["../core/errors/errors-data.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 8df634da_0f30_1e1f_1314_2439b0c9baab
  ef8a1e3f_e350_75a6_b92d_62a8566d8db9["../core/errors/index.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> ef8a1e3f_e350_75a6_b92d_62a8566d8db9
  d3861967_b647_84d2_ff48_15013353bd56["../core/logger/core.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> d3861967_b647_84d2_ff48_15013353bd56
  7e4494c0_5563_4329_1bff_a84be66e1bc2["../core/path.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 7e4494c0_5563_4329_1bff_a84be66e1bc2
  6753d7be_860e_1564_f3fe_9b97397c52b4["../server-islands/endpoint.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> 6753d7be_860e_1564_f3fe_9b97397c52b4
  f68003f1_292f_ca44_03ce_21af87a33c7b["../core/util.js"]
  a7eed989_9f2b_5163_ecdf_85920a8b973f --> f68003f1_292f_ca44_03ce_21af87a33c7b
  style a7eed989_9f2b_5163_ecdf_85920a8b973f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import nodeFs from 'node:fs';
import { createRequire } from 'node:module';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import pLimit from 'p-limit';
import colors from 'piccolore';
import { injectImageEndpoint } from '../../../assets/endpoint/config.js';
import { runHookRoutesResolved } from '../../../integrations/hooks.js';
import { getPrerenderDefault } from '../../../prerender/utils.js';
import type { AstroSettings, RoutesList } from '../../../types/astro.js';
import type { AstroConfig } from '../../../types/public/config.js';
import type { RouteData, RoutePart } from '../../../types/public/internal.js';
import { toRoutingStrategy } from '../../app/index.js';
import { SUPPORTED_MARKDOWN_FILE_EXTENSIONS } from '../../constants.js';
import {
	InvalidRedirectDestination,
	MissingIndexForInternationalization,
	UnsupportedExternalRedirect,
} from '../../errors/errors-data.js';
import { AstroError } from '../../errors/index.js';
import type { Logger } from '../../logger/core.js';
import { hasFileExtension, removeLeadingForwardSlash, slash } from '../../path.js';
import { injectServerIslandRoute } from '../../server-islands/endpoint.js';
import { resolvePages } from '../../util.js';
import { ensure404Route } from '../astro-designed-error-pages.js';
import { routeComparator } from '../priority.js';
import { getPattern } from './pattern.js';
import { getRoutePrerenderOption } from './prerender.js';
import { validateSegment } from './segment.js';

const require = createRequire(import.meta.url);

interface Item {
	basename: string;
	ext: string;
	parts: RoutePart[];
	file: string;
	isDir: boolean;
	isIndex: boolean;
	isPage: boolean;
	routeSuffix: string;
}

const ROUTE_DYNAMIC_SPLIT = /\[([^[\]()]+(?:\([^)]+\))?)\]/;
const ROUTE_SPREAD = /^\.{3}.+$/;

function getParts(part: string, file: string) {
	const result: RoutePart[] = [];
	part.split(ROUTE_DYNAMIC_SPLIT).map((str, i) => {
		if (!str) return;
		const dynamic = i % 2 === 1;

		const [, content] = dynamic ? /([^(]+)$/.exec(str) || [null, null] : [null, str];

		if (!content || (dynamic && !/^(?:\.\.\.)?[\w$]+$/.test(content))) {
			throw new Error(`Invalid route ${file} — parameter name must match /^[a-zA-Z0-9_$]+$/`);
		}

		result.push({
			content,
// ... (750 more lines)

Domain

Subdomains

Dependencies

  • ../../../assets/endpoint/config.js
  • ../core/app/index.js
  • ../core/constants.js
  • ../core/errors/errors-data.js
  • ../core/errors/index.js
  • ../core/logger/core.js
  • ../core/path.js
  • ../core/routing/astro-designed-error-pages.js
  • ../core/routing/manifest/prerender.js
  • ../core/routing/priority.js
  • ../core/util.js
  • ../integrations/hooks.js
  • ../prerender/utils.js
  • ../routing/manifest/pattern.js
  • ../server-islands/endpoint.js
  • ../types/astro.js
  • ../types/public/config.js
  • ../types/public/internal.js
  • ./segment.js
  • node:fs
  • node:module
  • node:path
  • node:url
  • p-limit
  • piccolore

Frequently Asked Questions

What does create.ts do?
create.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 create.ts?
create.ts defines 12 function(s): createFileBasedRoutes, createInjectedRoutes, createRedirectRoutes, createRoutesList, detectRouteCollision, getParts, isSemanticallyEqualSegment, isStaticSegment, joinSegments, replaceOrKeep, and 2 more.
What does create.ts depend on?
create.ts imports 25 module(s): ../../../assets/endpoint/config.js, ../core/app/index.js, ../core/constants.js, ../core/errors/errors-data.js, ../core/errors/index.js, ../core/logger/core.js, ../core/path.js, ../core/routing/astro-designed-error-pages.js, and 17 more.
Where is create.ts in the architecture?
create.ts is located at packages/astro/src/core/routing/manifest/create.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/routing/manifest).

Analyze Your Own Codebase

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

Try Supermodel Free