bot-guardian-js
Version:
A powerful bot detection and prevention library for Node.js applications
139 lines (129 loc) • 4.75 kB
JavaScript
"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;