UNPKG

@inlang/paraglide-js

Version:

[![NPM Downloads](https://img.shields.io/npm/dw/%40inlang%2Fparaglide-js?logo=npm&logoColor=red&label=npm%20downloads)](https://www.npmjs.com/package/@inlang/paraglide-js) [![GitHub Issues](https://img.shields.io/github/issues-closed/opral/paraglide-js?lo

149 lines 4.74 kB
/** * The project's base locale. * * @example * if (locale === baseLocale) { * // do something * } */ export const baseLocale = "en"; /** * The project's locales that have been specified in the settings. * * @example * if (locales.includes(userSelectedLocale) === false) { * throw new Error('Locale is not available'); * } */ export const locales = /** @type {readonly string[]} */ (["en", "de"]); /** @type {string} */ export const cookieName = "<cookie-name>"; /** @type {number} */ export const cookieMaxAge = 60 * 60 * 24 * 400; /** @type {string} */ export const cookieDomain = "<cookie-domain>"; /** @type {string} */ export const localStorageKey = "PARAGLIDE_LOCALE"; /** * @type {Array<"cookie" | "baseLocale" | "globalVariable" | "url" | "preferredLanguage" | "localStorage" | `custom-${string}`>} */ export const strategy = ["globalVariable"]; /** * Route-level strategy overrides. * * `match` uses URLPattern syntax. * * @type {Array<{ * match: string; * strategy?: Array<"cookie" | "baseLocale" | "globalVariable" | "url" | "preferredLanguage" | "localStorage" | `custom-${string}`>; * exclude?: boolean; * }>} */ export const routeStrategies = []; /** * The used URL patterns. * * @type {Array<{ pattern: string, localized: Array<[Locale, string]> }>} */ export const urlPatterns = []; /** @type {string | undefined} */ let cachedRouteStrategyUrl; /** @type {{ match: string; strategy?: typeof strategy; exclude?: boolean } | undefined} */ let cachedRouteStrategy; /** * @param {string | URL} url * @returns {{ match: string; strategy?: typeof strategy; exclude?: boolean } | undefined} */ function findMatchingRouteStrategy(url) { if (routeStrategies.length === 0) { return undefined; } const urlString = typeof url === "string" ? url : url.href; if (cachedRouteStrategyUrl === urlString) { return cachedRouteStrategy; } const urlObject = new URL(urlString, "http://dummy.com"); let match; for (const routeStrategy of routeStrategies) { const pattern = new URLPattern(routeStrategy.match, urlObject.href); if (pattern.exec(urlObject.href)) { match = routeStrategy; break; } } cachedRouteStrategyUrl = urlString; cachedRouteStrategy = match; return match; } /** * Returns the strategy to use for a specific URL. * * If no route strategy matches (or the matching rule is `exclude: true`), * the global strategy is returned. * * @param {string | URL} url * @returns {typeof strategy} */ export function getStrategyForUrl(url) { const routeStrategy = findMatchingRouteStrategy(url); if (routeStrategy && routeStrategy.exclude !== true && Array.isArray(routeStrategy.strategy)) { return routeStrategy.strategy; } return strategy; } /** * Returns whether the given URL is excluded from middleware i18n processing. * * @param {string | URL} url * @returns {boolean} */ export function isExcludedByRouteStrategy(url) { return findMatchingRouteStrategy(url)?.exclude === true; } /** * @typedef {{ * getStore(): { * locale?: Locale, * origin?: string, * messageCalls?: Set<string> * } | undefined, * run: (store: { locale?: Locale, origin?: string, messageCalls?: Set<string>}, * cb: any) => any * }} ParaglideAsyncLocalStorage */ /** * Server side async local storage that is set by `serverMiddleware()`. * * The variable is used to retrieve the locale and origin in a server-side * rendering context without effecting other requests. * * @type {ParaglideAsyncLocalStorage | undefined} */ export let serverAsyncLocalStorage = undefined; export const disableAsyncLocalStorage = false; export const experimentalMiddlewareLocaleSplitting = false; export const isServer = typeof window === "undefined"; /** @type {Locale | undefined} */ export const experimentalStaticLocale = undefined; /** * Sets the server side async local storage. * * The function is needed because the `runtime.js` file * must define the `serverAsyncLocalStorage` variable to * avoid a circular import between `runtime.js` and * `server.js` files. * * @param {ParaglideAsyncLocalStorage | undefined} value */ export function overwriteServerAsyncLocalStorage(value) { serverAsyncLocalStorage = value; } export const TREE_SHAKE_COOKIE_STRATEGY_USED = false; export const TREE_SHAKE_URL_STRATEGY_USED = false; export const TREE_SHAKE_GLOBAL_VARIABLE_STRATEGY_USED = false; export const TREE_SHAKE_PREFERRED_LANGUAGE_STRATEGY_USED = false; export const TREE_SHAKE_DEFAULT_URL_PATTERN_USED = false; export const TREE_SHAKE_LOCAL_STORAGE_STRATEGY_USED = false; //# sourceMappingURL=variables.js.map