@mintlify/previewing
Version:
Preview Mintlify docs locally
70 lines (69 loc) • 2.63 kB
JavaScript
import os from 'os';
import path from 'path';
import * as url from 'url';
// package installation location
export const INSTALL_PATH = url.fileURLToPath(new URL('.', import.meta.url));
export const HOME_DIR = os.homedir();
export const DOT_MINTLIFY = path.join(HOME_DIR, '.mintlify');
export let PREVIEW_PATH;
export let PREVIEW_LAST_PATH;
export let MINT_PATH;
export let VERSION_PATH;
export let CLIENT_PATH;
export let NEXT_SIDE_EFFECT_PATH;
export let NEXT_ROUTER_SERVER_PATH;
export let NEXT_CONFIG_PATH;
export let NEXT_PUBLIC_PATH;
export let NEXT_PROPS_PATH;
export let TAR_PATH;
const setPreviewPath = (name) => {
PREVIEW_PATH = path.join(DOT_MINTLIFY, 'previews', name);
PREVIEW_LAST_PATH = `${PREVIEW_PATH}-last`;
MINT_PATH = path.join(PREVIEW_PATH, 'mint');
VERSION_PATH = path.join(MINT_PATH, 'mint-version.txt');
CLIENT_PATH = path.join(MINT_PATH, 'apps', 'client');
const nextDistServerPath = path.join(MINT_PATH, 'node_modules', 'next', 'dist', 'server');
NEXT_SIDE_EFFECT_PATH = path.join(nextDistServerPath, 'next.js');
NEXT_ROUTER_SERVER_PATH = path.join(nextDistServerPath, 'lib', 'router-server.js');
NEXT_CONFIG_PATH = path.join(CLIENT_PATH, '.next', 'required-server-files.json');
NEXT_PUBLIC_PATH = path.join(CLIENT_PATH, 'public');
NEXT_PROPS_PATH = path.join(CLIENT_PATH, 'src', '_props');
TAR_PATH = path.join(PREVIEW_PATH, 'mint.tar.gz');
};
// A port can only belong to one local server at a time, so it gives each running
// preview an isolated workspace while still allowing warm starts to reuse files.
export const configurePreviewPath = (port = 3000) => {
const numericPort = Number(port);
if (!Number.isInteger(numericPort) || numericPort < 1 || numericPort > 65535) {
throw new Error(`invalid preview port: ${port}`);
}
setPreviewPath(String(numericPort));
};
export const configureSharedPreviewPath = () => {
setPreviewPath('shared');
};
configureSharedPreviewPath();
export const MINT_CLIENT_RELEASES_CLOUDFRONT_URL = 'https://releases.mintlify.com';
export const TARGET_MINT_VERSION_URL = `${MINT_CLIENT_RELEASES_CLOUDFRONT_URL}/mint-version.txt`;
export const MINT_VERSION_MAP_URL = `${MINT_CLIENT_RELEASES_CLOUDFRONT_URL}/mint-version-map.json`;
// command execution location
export const CMD_EXEC_PATH = process.cwd();
export const SUPPORTED_MEDIA_EXTENSIONS = [
'jpeg',
'jpg',
'jfif',
'pjpeg',
'pjp',
'png',
'svg',
'svgz',
'ico',
'webp',
'gif',
'apng',
'avif',
'bmp',
'mp4',
'mov',
];
export const LOCAL_LINKED_CLI_VERSION = 'linked to local package';