import * as path from 'path' import { IMAGE_PRESET, E_BROADBAND_SPEED } from "./network.js" import { resolve, template } from '@polymech/commons' import { sync as read } from '@polymech/fs/read' import { sanitizeUri } from 'micromark-util-sanitize-uri' export const OSR_ROOT = () => path.resolve(resolve("${OSR_ROOT}")) export const LOGGING_NAMESPACE = 'polymech-site' export const TRANSLATE_CONTENT = true export const LANGUAGES = ['en', 'ar', 'de', 'ja', 'es', 'zh', 'fr'] export const LANGUAGES_PROD = ['en', 'es', 'ar', 'de', 'ja', 'zh', 'fr', 'nl', 'it', 'pt'] export const isRTL = (lang) => lang === 'ar' // i18n constants export const I18N_STORE = (root, lang) => `${root}/i18n-store/store-${lang}.json` export const I18N_SOURCE_LANGUAGE = 'en' export const I18N_CACHE = true export const I18N_ASSET_PATH = "${SRC_DIR}/${SRC_NAME}-${DST_LANG}${SRC_EXT}" // Library - Howtos export const HOWTO_GLOB = '**/config.json' export const FILES_WEB = 'https://files.polymech.io/files/machines/howtos/' export const HOWTO_FILTER_LLM = false export const HOWTO_ROOT = () => path.resolve(resolve("./public/resources/howtos")) export const HOWTO_FILES_ABS = (id) => `${HOWTO_ROOT()}/${id}` export const HOWTO_FILES_WEB = (id: string) => `${FILES_WEB}/${id}` // Products export const PRODUCT_ROOT = () => path.resolve(resolve("${OSR_ROOT}/products")) export const PRODUCT_BRANCHES = read(path.join(PRODUCT_ROOT(), 'config/machines.json'), 'json') export const PRODUCT_GLOB = '**/config.json' export const ENABLED_PRODUCTS = "${OSR_ROOT}/products/config/machines.json" export const PRODUCT_SPECS = (rel) => `${PRODUCT_ROOT()}/${rel}/specs.xlsx` // Product compiler export const PRODUCT_CONFIG = (product) => path.resolve(resolve(`${PRODUCT_ROOT()}/${product}/config.json`, false, { product })) export const PRODUCT_DIR = (product) => path.resolve(resolve(`${PRODUCT_ROOT()}/${product}`)) export const PRODUCT_HUGO_TEMPLATE = './osr/hugo/root.html' export const PRODUCTS_TARGET_SRC = './src/content/en/retail' export const PRODUCTS_TARGET = (lang) => `./content/${lang}/products` // Product assets export const ASSETS_LOCAL = false export const ASSETS_GLOB = '*.+(JPG|jpg|jpeg|png|PNG|gif)' // OSRL - Language export const IS_DEV = true export const OSRL_ENV = 'astro-release' export const OSRL_ENV_DEV = 'astro-debug' export const OSRL_ENVIRONMENT = IS_DEV ? OSRL_ENV_DEV : OSRL_ENV export const OSRL_MODULE_NAME = 'polymech.io' export const OSRL_PRODUCT_PROFILE = './src/config/profile.json' export const OSRL_LANG_FLAVOR = 'osr' // Tasks export const TASK_CONFIG_LOG_DIRECTORY = './config/' // Task: compile:content export const TASK_COMPILE_CONTENT = true export const TASK_COMPILE_CONTENT_CACHE = false // Task - Logging export const TASK_LOG_DIRECTORY = './logs/' // Task - Retail Config export const REGISTER_PRODUCT_TASKS = true export const RETAIL_PRODUCT_BRANCH = 'site' export const PROJECTS_BRANCH = 'projects' export const RETAIL_COMPILE_CACHE = false export const RETAIL_MEDIA_CACHE = true export const RETAIL_LOG_LEVEL_I18N_PRODUCT_ASSETS = 'info' export const ConvertProductMedia = true export const TranslateProductAssets = false export const PopulateProductDefaults = true // CAD export const CAD_MAIN_MATCH = (product) => `${product}/cad*/*Global*.+(SLDASM)` export const CAD_CAM_MAIN_MATCH = (product) => `${product}/cad*/*-CNC*.+(SLDASM)` export const CAD_CACHE = true export const CAD_EXPORT_CONFIGURATIONS = false export const CAD_EXPORT_SUB_COMPONENTS = true export const CAD_MODEL_FILE_PATH = (SOURCE, CONFIGURATION = '') => SOURCE.replace('.json', `${CONFIGURATION ? '-' + CONFIGURATION : ''}.tree.json`) export const CAD_DEFAULT_CONFIGURATION = 'Default' export const CAD_RENDERER = 'solidworks' export const CAD_RENDERER_VIEW = 'Render' export const CAD_RENDERER_QUALITY = 1 export const CAD_EXTENSIONS = ['.STEP', '.html'] export const CAD_MODEL_EXT = '.tree.json' export const CAD_URL = (file: string, variables: Record) => sanitizeUri(template("${OSR_MACHINES_ASSETS_URL}/${file}", { file, ...variables })) export const ASSET_URL = (file: string, variables: Record) => sanitizeUri(template("${OSR_MACHINES_ASSETS_URL}/products/${product_rel_min}/${file}", { file, ...variables })) export const ITEM_ASSET_URL = (variables: Record) => template("${OSR_MACHINES_ASSETS_URL}/${ITEM_REL}/${assetPath}/${filePath}", variables) //back compat - osr-cad export const parseBoolean = (value: string): boolean => { return value === '1' || value.toLowerCase() === 'true'; } ///////////////////////////////////////////// // // Rendering - Store export const SHOW_DESCRIPTION = false export const SHOW_LICENSE = true export const SHOW_RENDERINGS = true export const SHOW_TABS = false export const SHOW_GALLERY = true export const SHOW_FILES = true export const SHOW_SPECS = true export const SHOW_CHECKOUT = true export const SHOW_CONTACT = true export const SHOW_3D_PREVIEW = true export const SHOW_RESOURCES = true export const SHOW_DEBUG = false export const SHOW_SAMPLES = true export const SHOW_README = false export const SHOW_RELATED = true ///////////////////////////////////////////// // // Plugins // RSS export const RSS_CONFIG = { title: 'Polymech RSS Feed', description: '', } ///////////////////////////////////////////// // // Defaults export const DEFAULT_IMAGE_URL = 'https://picsum.photos/640/640' export const default_image = () => { return { alt: 'none', src: DEFAULT_IMAGE_URL } } export const DEFAULT_LICENSE = `CERN Open Source Hardware License` export const DEFAULT_CONTACT = `sales@plastic-hub.com` ///////////////////////////////////////////// // // Optimization export const O_IMAGE = IMAGE_PRESET[E_BROADBAND_SPEED.MEDIUM] export const IMAGE_SETTINGS = { GALLERY: { SHOW_TITLE: true, SHOW_DESCRIPTION: false, SIZES_THUMB: O_IMAGE.sizes_thumbs, SIZES_LARGE: O_IMAGE.sizes_large, SIZES_REGULAR: O_IMAGE.sizes_medium }, LIGHTBOX: { SHOW_TITLE: true, SHOW_DESCRIPTION: true, SIZES_THUMB: O_IMAGE.sizes_thumbs, SIZES_LARGE: O_IMAGE.sizes_large, SIZES_REGULAR: O_IMAGE.sizes_medium } }