Ctrl K
ComunidadGuías…

api/src/constants.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { useEnv } from '@directus/env';
import type { Settings, TransformationParams } from '@directus/types';
import type { CookieOptions } from 'express';

const env = useEnv();

export const SYSTEM_ASSET_ALLOW_LIST: TransformationParams[] = [
	{
		key: 'system-small-cover',
		format: 'auto',
		transforms: [['resize', { width: 64, height: 64, fit: 'cover' }]],
	},
	{
		key: 'system-small-contain',
		format: 'auto',
		transforms: [['resize', { width: 64, fit: 'contain' }]],
	},
	{
		key: 'system-medium-cover',
		format: 'auto',
		transforms: [['resize', { width: 300, height: 300, fit: 'cover' }]],
	},
	{
		key: 'system-medium-contain',
		format: 'auto',
		transforms: [['resize', { width: 300, fit: 'contain' }]],
	},
	{
		key: 'system-large-cover',
		format: 'auto',
		transforms: [['resize', { width: 800, height: 800, fit: 'cover' }]],
	},
	{
		key: 'system-large-contain',
		format: 'auto',
		transforms: [['resize', { width: 800, fit: 'contain' }]],
	},
];

export const ASSET_TRANSFORM_QUERY_KEYS = [
	'key',
	'transforms',
	'width',
	'height',
	'format',
	'fit',
	'quality',
	'withoutEnlargement',
	'focal_point_x',
	'focal_point_y',
] as const satisfies Readonly<(keyof TransformationParams)[]>;

export const FILTER_VARIABLES = ['$NOW', '$CURRENT_USER', '$CURRENT_ROLE'];

export const ALIAS_TYPES = ['alias', 'o2m', 'm2m', 'm2a', 'o2a', 'files', 'translations'];

export const SNAPSHOT_VERSION = {
	FULL: 1,
	PARTIAL: 2,
} as const;

export const DEFAULT_AUTH_PROVIDER = 'default';

export const COLUMN_TRANSFORMS = ['year', 'month', 'day', 'weekday', 'hour', 'minute', 'second'];

export const UUID_REGEX = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}';

export const REFRESH_COOKIE_OPTIONS: CookieOptions = {
	httpOnly: true,
	domain: env.REFRESH_TOKEN_COOKIE_DOMAIN,
	maxAge: env.REFRESH_TOKEN_TTL,
	secure: env.REFRESH_TOKEN_COOKIE_SECURE,
	sameSite: env.REFRESH_TOKEN_COOKIE_SAME_SITE as 'lax' | 'strict' | 'none',
};

export const SESSION_COOKIE_OPTIONS: CookieOptions = {
	httpOnly: true,
	domain: env.SESSION_COOKIE_DOMAIN,
	maxAge: env.SESSION_COOKIE_TTL,
	secure: env.SESSION_COOKIE_SECURE,
	sameSite: env.SESSION_COOKIE_SAME_SITE as 'lax' | 'strict' | 'none',
};

export const OAS_REQUIRED_SCHEMAS = ['Error', 'Query', 'Metadata'];

/** Formats from which transformation is supported */
export const SUPPORTED_IMAGE_TRANSFORM_FORMATS = ['image/jpeg', 'image/png', 'image/webp', 'image/tiff', 'image/avif'];

/** Formats where metadata extraction is supported */
export const SUPPORTED_IMAGE_METADATA_FORMATS = [
	'image/jpeg',
	'image/png',
	'image/webp',
	'image/gif',
	'image/tiff',
	'image/avif',
];

/** File uploads */
export const FILE_UPLOADS = {
	MAX_SIZE: env.FILES_MAX_UPLOAD_SIZE,
	MAX_CONCURRENCY: env.FILES_MAX_UPLOAD_CONCURRENCY,
};

/** Extensions */
export const EXTENSIONS = {
	/** p-queue requires a number >=1 or throws type error */
	STORAGE_MAX_CONCURRENCY: env.EXTENSIONS_STORAGE_MAX_CONCURRENCY >= 1 ? env.EXTENSIONS_STORAGE_MAX_CONCURRENCY : 20,
};

/** Resumable uploads (TUS) */
export const RESUMABLE_UPLOADS = {
	ENABLED: env.TUS_ENABLED,
	CHUNK_SIZE: env.TUS_CHUNK_SIZE,
	EXPIRATION_TIME: env.TUS_UPLOAD_EXPIRATION,
	SCHEDULE: env.TUS_CLEANUP_SCHEDULE,
};

export const ALLOWED_DB_DEFAULT_FUNCTIONS = ['gen_random_uuid()'];

export const CUSTOM_LLM_FIELDS = [
	'ai_openai_compatible_api_key',
	'ai_openai_compatible_base_url',
	'ai_openai_compatible_name',
	'ai_openai_compatible_models',
	'ai_openai_compatible_headers',
] as const satisfies readonly (keyof Settings)[];