@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
163 lines (161 loc) • 3.92 kB
JavaScript
import { getMilliseconds } from "./utils/get-milliseconds.js";
import { useEnv } from "@directus/env";
import { toBoolean } from "@directus/utils";
import bytes from "bytes";
//#region src/constants.ts
const env = useEnv();
const SYSTEM_ASSET_ALLOW_LIST = [
{
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"
}]]
}
];
const ASSET_TRANSFORM_QUERY_KEYS = [
"key",
"transforms",
"width",
"height",
"format",
"fit",
"quality",
"withoutEnlargement",
"focal_point_x",
"focal_point_y"
];
const FILTER_VARIABLES = [
"$NOW",
"$CURRENT_USER",
"$CURRENT_ROLE"
];
const ALIAS_TYPES = [
"alias",
"o2m",
"m2m",
"m2a",
"o2a",
"files",
"translations"
];
const SNAPSHOT_VERSION = {
FULL: 1,
PARTIAL: 2
};
const DEFAULT_AUTH_PROVIDER = "default";
const COLUMN_TRANSFORMS = [
"year",
"month",
"day",
"weekday",
"hour",
"minute",
"second"
];
const UUID_REGEX = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
const REFRESH_COOKIE_OPTIONS = {
httpOnly: true,
domain: env["REFRESH_TOKEN_COOKIE_DOMAIN"],
maxAge: getMilliseconds(env["REFRESH_TOKEN_TTL"]),
secure: Boolean(env["REFRESH_TOKEN_COOKIE_SECURE"]),
sameSite: env["REFRESH_TOKEN_COOKIE_SAME_SITE"] || "strict"
};
const SESSION_COOKIE_OPTIONS = {
httpOnly: true,
domain: env["SESSION_COOKIE_DOMAIN"],
maxAge: getMilliseconds(env["SESSION_COOKIE_TTL"]),
secure: Boolean(env["SESSION_COOKIE_SECURE"]),
sameSite: env["SESSION_COOKIE_SAME_SITE"] || "strict"
};
const OAS_REQUIRED_SCHEMAS = [
"Error",
"Query",
"x-metadata"
];
/** Formats from which transformation is supported */
const SUPPORTED_IMAGE_TRANSFORM_FORMATS = [
"image/jpeg",
"image/png",
"image/webp",
"image/tiff",
"image/avif"
];
/** Formats where metadata extraction is supported */
const SUPPORTED_IMAGE_METADATA_FORMATS = [
"image/jpeg",
"image/png",
"image/webp",
"image/gif",
"image/tiff",
"image/avif"
];
/** File uploads */
const FILE_UPLOADS = {
MAX_SIZE: bytes.parse(env["FILES_MAX_UPLOAD_SIZE"]),
MAX_CONCURRENCY: Number(env["FILES_MAX_UPLOAD_CONCURRENCY"])
};
const extensionsStorageMaxConcurrency = Number(env["EXTENSIONS_STORAGE_MAX_CONCURRENCY"]);
/** Extensions */
const EXTENSIONS = { STORAGE_MAX_CONCURRENCY: extensionsStorageMaxConcurrency >= 1 ? extensionsStorageMaxConcurrency : 20 };
/** Resumable uploads (TUS) */
const RESUMABLE_UPLOADS = {
ENABLED: toBoolean(env["TUS_ENABLED"]),
CHUNK_SIZE: bytes.parse(env["TUS_CHUNK_SIZE"]),
EXPIRATION_TIME: getMilliseconds(env["TUS_UPLOAD_EXPIRATION"], 6e5),
SCHEDULE: String(env["TUS_CLEANUP_SCHEDULE"])
};
const ALLOWED_DB_DEFAULT_FUNCTIONS = ["gen_random_uuid()"];
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"
];
//#endregion
export { ALIAS_TYPES, ALLOWED_DB_DEFAULT_FUNCTIONS, ASSET_TRANSFORM_QUERY_KEYS, COLUMN_TRANSFORMS, CUSTOM_LLM_FIELDS, DEFAULT_AUTH_PROVIDER, EXTENSIONS, FILE_UPLOADS, FILTER_VARIABLES, OAS_REQUIRED_SCHEMAS, REFRESH_COOKIE_OPTIONS, RESUMABLE_UPLOADS, SESSION_COOKIE_OPTIONS, SNAPSHOT_VERSION, SUPPORTED_IMAGE_METADATA_FORMATS, SUPPORTED_IMAGE_TRANSFORM_FORMATS, SYSTEM_ASSET_ALLOW_LIST, UUID_REGEX };