@simonecoelhosfo/optimizely-mcp-server
Version:
Optimizely MCP Server for AI assistants with integrated CLI tools
71 lines (62 loc) • 2.45 kB
JavaScript
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Simple binary copier that runs BEFORE the app starts
const platform = process.platform;
const arch = process.arch;
const nodeVersion = process.versions.modules;
// Find package root by looking for prebuilds
let packageRoot = __dirname;
while (!fs.existsSync(path.join(packageRoot, 'prebuilds')) && packageRoot !== path.dirname(packageRoot)) {
packageRoot = path.dirname(packageRoot);
}
const sourceBinary = path.join(packageRoot, 'prebuilds', `${platform}-${arch}`, 'better_sqlite3.node');
if (fs.existsSync(sourceBinary)) {
// Find better-sqlite3 in multiple possible locations
const possiblePaths = [
path.join(packageRoot, '..', '..', 'better-sqlite3'),
path.join(packageRoot, '..', 'better-sqlite3'),
path.join(packageRoot, 'node_modules', 'better-sqlite3'),
path.join(process.cwd(), 'node_modules', 'better-sqlite3')
];
let betterSqliteDir = null;
for (const possiblePath of possiblePaths) {
if (fs.existsSync(possiblePath)) {
betterSqliteDir = possiblePath;
break;
}
}
if (betterSqliteDir) {
// ALL possible paths from the error log
const targets = [
'build/better_sqlite3.node',
'build/Debug/better_sqlite3.node',
'build/Release/better_sqlite3.node',
'out/Debug/better_sqlite3.node',
'Debug/better_sqlite3.node',
'out/Release/better_sqlite3.node',
'Release/better_sqlite3.node',
'build/default/better_sqlite3.node',
`compiled/${process.version.substring(1)}/${platform}/${arch}/better_sqlite3.node`,
'addon-build/release/install-root/better_sqlite3.node',
'addon-build/debug/install-root/better_sqlite3.node',
'addon-build/default/install-root/better_sqlite3.node',
`lib/binding/node-v${nodeVersion}-${platform}-${arch}/better_sqlite3.node`
];
// Copy to ALL locations
let copied = 0;
for (const relativePath of targets) {
const targetPath = path.join(betterSqliteDir, relativePath);
try {
fs.mkdirSync(path.dirname(targetPath), { recursive: true });
fs.copyFileSync(sourceBinary, targetPath);
copied++;
} catch (e) {
// Continue
}
}
}
}