Home / File/ utils.ts — astro Source File

utils.ts — astro Source File

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

File typescript CoreAstro RenderingEngine 5 imports 3 functions

Entity Profile

Dependency Diagram

graph LR
  03adf6e8_1b4c_5a09_95c9_bf2254d6bf4b["utils.ts"]
  e6591dc4_f998_7dbc_3c66_06ac5ec7fba0["../../core/session/types.js"]
  03adf6e8_1b4c_5a09_95c9_bf2254d6bf4b --> e6591dc4_f998_7dbc_3c66_06ac5ec7fba0
  a4f2698c_5256_262a_ba7c_f72b51878d10["../core/app/types.js"]
  03adf6e8_1b4c_5a09_95c9_bf2254d6bf4b --> a4f2698c_5256_262a_ba7c_f72b51878d10
  baa53824_73a3_1e03_2043_4d0c058ecca5["../types/public/index.js"]
  03adf6e8_1b4c_5a09_95c9_bf2254d6bf4b --> baa53824_73a3_1e03_2043_4d0c058ecca5
  a56f5589_e3c3_ced2_bdd4_5ad39a3cb093["unstorage"]
  03adf6e8_1b4c_5a09_95c9_bf2254d6bf4b --> a56f5589_e3c3_ced2_bdd4_5ad39a3cb093
  d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"]
  03adf6e8_1b4c_5a09_95c9_bf2254d6bf4b --> d9a92db9_c95e_9165_13ac_24b3d859d946
  style 03adf6e8_1b4c_5a09_95c9_bf2254d6bf4b fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import { builtinDrivers } from 'unstorage';
import type { NormalizedSessionDriverConfig, SessionDriverConfig } from './types.js';
import type { SSRManifestSession } from '../app/types.js';
import type { AstroConfig } from '../../types/public/index.js';
import { fileURLToPath } from 'node:url';

function isUnstorageDriver(driver: string): driver is keyof typeof builtinDrivers {
	return driver in builtinDrivers;
}

export function normalizeSessionDriverConfig(
	driver: string | SessionDriverConfig,
	/** @deprecated */
	options?: Record<string, any>,
): NormalizedSessionDriverConfig {
	if (typeof driver !== 'string') {
		return {
			entrypoint:
				driver.entrypoint instanceof URL ? fileURLToPath(driver.entrypoint) : driver.entrypoint,
			config: driver.config,
		};
	}

	// The fs driver cannot be bundled so we special case it
	if (['fs', 'fs-lite', 'fsLite'].includes(driver)) {
		return {
			entrypoint: builtinDrivers.fsLite,
			config: {
				base: '.astro/session',
				...options,
			},
		};
	}

	if (isUnstorageDriver(driver)) {
		return {
			entrypoint: builtinDrivers[driver],
			config: options,
		};
	}

	return {
		entrypoint: driver,
		config: options,
	};
}

export function sessionConfigToManifest(
	config: AstroConfig['session'],
): SSRManifestSession | undefined {
	const sessionDriver = config?.driver;
	if (!config || !sessionDriver) {
		return undefined;
	}

	const driver = normalizeSessionDriverConfig(sessionDriver);

	return {
		driver: driver.entrypoint,
		options: driver.config,
		cookie: config.cookie,
		ttl: config.ttl,
	};
}

Domain

Subdomains

Dependencies

  • ../../core/session/types.js
  • ../core/app/types.js
  • ../types/public/index.js
  • node:url
  • unstorage

Frequently Asked Questions

What does utils.ts do?
utils.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 utils.ts?
utils.ts defines 3 function(s): isUnstorageDriver, normalizeSessionDriverConfig, sessionConfigToManifest.
What does utils.ts depend on?
utils.ts imports 5 module(s): ../../core/session/types.js, ../core/app/types.js, ../types/public/index.js, node:url, unstorage.
Where is utils.ts in the architecture?
utils.ts is located at packages/astro/src/core/session/utils.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/session).

Analyze Your Own Codebase

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

Try Supermodel Free