UNPKG

bot-guardian-js

Version:

A powerful bot detection and prevention library for Node.js applications

139 lines (129 loc) 4.75 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupGuardian = void 0; // src/cli/setup.ts const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); function detectFramework() { var _a, _b, _c, _d; try { const packageJson = JSON.parse(fs_1.default.readFileSync('./package.json', 'utf8')); if ((_a = packageJson.dependencies) === null || _a === void 0 ? void 0 : _a.next) return 'nextjs'; if ((_b = packageJson.dependencies) === null || _b === void 0 ? void 0 : _b.express) return 'express'; if (((_c = packageJson.dependencies) === null || _c === void 0 ? void 0 : _c.react) && !((_d = packageJson.dependencies) === null || _d === void 0 ? void 0 : _d.next)) return 'react'; return 'unknown'; } catch (error) { return 'unknown'; } } function setupNextJs() { // Create middleware file const middlewareDir = './lib'; if (!fs_1.default.existsSync(middlewareDir)) { fs_1.default.mkdirSync(middlewareDir, { recursive: true }); } const middlewareContent = ` import { withGuardian } from 'bot-guardian-js/nextjs'; export default withGuardian; `; fs_1.default.writeFileSync(path_1.default.join(middlewareDir, 'guardian.js'), middlewareContent); // Create example API route const apiDir = './pages/api'; if (!fs_1.default.existsSync(apiDir)) { fs_1.default.mkdirSync(apiDir, { recursive: true }); } const apiRouteContent = ` import withGuardian from '../../lib/guardian'; function handler(req, res) { // Access bot detection results const botDetection = req.botDetection; res.status(200).json({ message: botDetection.isBot ? 'Hello Bot!' : 'Hello Human!', botDetection }); } export default withGuardian(handler); `; fs_1.default.writeFileSync(path_1.default.join(apiDir, 'guardian-test.js'), apiRouteContent); console.log('✅ Next.js integration set up successfully!'); console.log('📝 Added middleware at: lib/guardian.js'); console.log('📝 Added example API route at: pages/api/guardian-test.js'); } function setupExpress() { const appFile = './app.js'; if (!fs_1.default.existsSync(appFile)) { const expressAppContent = ` const express = require('express'); const { createGuardianMiddleware } = require('bot-guardian-js/express'); const app = express(); const port = process.env.PORT || 3000; // Add GuardianJS middleware app.use(createGuardianMiddleware()); app.get('/', (req, res) => { res.json({ message: req.botDetection.isBot ? 'Hello Bot!' : 'Hello Human!', botDetection: req.botDetection }); }); app.listen(port, () => { console.log(\`Server running on port \${port}\`); }); `; fs_1.default.writeFileSync(appFile, expressAppContent); console.log('✅ Express integration set up successfully!'); console.log('📝 Created new Express app with GuardianJS at: app.js'); } else { console.log('⚠️ Existing app.js found. Please manually add the middleware:'); console.log(` const { createGuardianMiddleware } = require('bot-guardian-js/express'); app.use(createGuardianMiddleware()); `); } } function setupReact() { // Create provider component const componentsDir = './src/components'; if (!fs_1.default.existsSync(componentsDir)) { fs_1.default.mkdirSync(componentsDir, { recursive: true }); } const providerContent = ` import { GuardianProvider } from 'bot-guardian-js/react'; export default function AppWrapper({ children }) { return ( <GuardianProvider> {children} </GuardianProvider> ); } `; fs_1.default.writeFileSync(path_1.default.join(componentsDir, 'GuardianWrapper.jsx'), providerContent); console.log('✅ React integration set up successfully!'); console.log('📝 Added provider component at: src/components/GuardianWrapper.jsx'); console.log('⚠️ Please wrap your app with this component in your main index.js or App.js file.'); } function setupGuardian() { const framework = detectFramework(); console.log(`🔍 Detected framework: ${framework}`); switch (framework) { case 'nextjs': setupNextJs(); break; case 'express': setupExpress(); break; case 'react': setupReact(); break; default: console.log('⚠️ Could not detect framework. Please check documentation for manual setup.'); } } exports.setupGuardian = setupGuardian;