common.ts — astro Source File
Architecture documentation for common.ts, a typescript file in the astro codebase. 2 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 068dc89e_9fd0_297e_43a8_0a310f749aeb["common.ts"] baa53824_73a3_1e03_2043_4d0c058ecca5["../types/public/index.js"] 068dc89e_9fd0_297e_43a8_0a310f749aeb --> baa53824_73a3_1e03_2043_4d0c058ecca5 a4f2698c_5256_262a_ba7c_f72b51878d10["../core/app/types.js"] 068dc89e_9fd0_297e_43a8_0a310f749aeb --> a4f2698c_5256_262a_ba7c_f72b51878d10 style 068dc89e_9fd0_297e_43a8_0a310f749aeb fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import type { AstroConfig } from '../../types/public/index.js';
import type { SSRManifest } from './types.js';
export type RoutingStrategies =
| 'manual'
| 'pathname-prefix-always'
| 'pathname-prefix-other-locales'
| 'pathname-prefix-always-no-redirect'
| 'domains-prefix-always'
| 'domains-prefix-other-locales'
| 'domains-prefix-always-no-redirect';
export function toRoutingStrategy(
routing: NonNullable<AstroConfig['i18n']>['routing'],
domains: NonNullable<AstroConfig['i18n']>['domains'],
): RoutingStrategies {
let strategy: RoutingStrategies;
const hasDomains = domains ? Object.keys(domains).length > 0 : false;
if (routing === 'manual') {
strategy = 'manual';
} else {
if (!hasDomains) {
if (routing?.prefixDefaultLocale === true) {
if (routing.redirectToDefaultLocale) {
strategy = 'pathname-prefix-always';
} else {
strategy = 'pathname-prefix-always-no-redirect';
}
} else {
strategy = 'pathname-prefix-other-locales';
}
} else {
if (routing?.prefixDefaultLocale === true) {
if (routing.redirectToDefaultLocale) {
strategy = 'domains-prefix-always';
} else {
strategy = 'domains-prefix-always-no-redirect';
}
} else {
strategy = 'domains-prefix-other-locales';
}
}
}
return strategy;
}
export function toFallbackType(
routing: NonNullable<AstroConfig['i18n']>['routing'],
): 'redirect' | 'rewrite' {
if (routing === 'manual') {
return 'rewrite';
}
return routing.fallbackType;
}
const PREFIX_DEFAULT_LOCALE = new Set([
'pathname-prefix-always',
'domains-prefix-always',
'pathname-prefix-always-no-redirect',
'domains-prefix-always-no-redirect',
]);
const REDIRECT_TO_DEFAULT_LOCALE = new Set([
'pathname-prefix-always-no-redirect',
'domains-prefix-always-no-redirect',
]);
export function fromRoutingStrategy(
strategy: RoutingStrategies,
fallbackType: NonNullable<SSRManifest['i18n']>['fallbackType'],
): NonNullable<AstroConfig['i18n']>['routing'] {
let routing: NonNullable<AstroConfig['i18n']>['routing'];
if (strategy === 'manual') {
routing = 'manual';
} else {
routing = {
prefixDefaultLocale: PREFIX_DEFAULT_LOCALE.has(strategy),
redirectToDefaultLocale: !REDIRECT_TO_DEFAULT_LOCALE.has(strategy),
fallbackType,
};
}
return routing;
}
Domain
Subdomains
Types
Dependencies
- ../core/app/types.js
- ../types/public/index.js
Source
Frequently Asked Questions
What does common.ts do?
common.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 common.ts?
common.ts defines 3 function(s): fromRoutingStrategy, toFallbackType, toRoutingStrategy.
What does common.ts depend on?
common.ts imports 2 module(s): ../core/app/types.js, ../types/public/index.js.
Where is common.ts in the architecture?
common.ts is located at packages/astro/src/core/app/common.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/app).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free