const webpack = require("webpack"); const ReactRefreshWebpackPlugin = require("@pmmmwh/react-refresh-webpack-plugin"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const ESLintPlugin = require("eslint-webpack-plugin"); const fs = require("fs"); const isDev = false; const compiler = webpack({ mode: isDev ? "development" : "production", entry: ["./src/index.js", ...(isDev ? ["webpack-hot-middleware/client?reload=true&overlay=true"] : [])], module: { rules: [ { test: /\.js$/, exclude: /node_modules/, use: [ { loader: require.resolve("babel-loader"), options: { plugins: [isDev && require.resolve("react-refresh/babel")].filter(Boolean), presets: [["@babel/preset-react", { runtime: "automatic" }]] } } ] }, { test: /\.css$/, use: ["style-loader", "css-loader"] } ] }, plugins: [ new HtmlWebpackPlugin({ templateContent: "\n
" + '' }), ...(isDev ? [new ReactRefreshWebpackPlugin(), new webpack.HotModuleReplacementPlugin(), new ESLintPlugin()] : []) ], resolve: { extensions: ["*", ".js"], fallback: { crypto: false } }, performance: { maxEntrypointSize: 2024000, maxAssetSize: 2024000 }, devtool: isDev ? "source-map" : false, optimization: { moduleIds: "deterministic", splitChunks: { //chunks: "all", /*cacheGroups: { commons: { test: /[\\/]node_modules[\\/]/, name: "vendors", chunks: "all" } }*/ } }, output: { filename: "searchPopper.js",//"[name].[contenthash].js", chunkFilename: "searchPopper.js",//"[name].[contenthash].js", clean: true, asyncChunks: false } }); const express = require("express"); const app = express(); const http = require("http"); const server = http.createServer(app); const compression = require("compression"); const { Server } = require("socket.io"); const async = require("async"); var onlyOnce = true; async function run() { const io = new Server(server); const interval = setInterval(async () => { const sockets = await io.fetchSockets(); async.forEachOf( sockets, async function (socket, key, callback) { if (socket.data && socket.data.auth) { callback(); } else { callback(); } }, async function (err) {} ); }, 1000 * 10); let globalHash; var connListener = io.on("connection", (socket) => { if (socket.handshake.headers.authorization) { const authheader = socket.handshake.headers.authorization; const auth = new Buffer.from(authheader.split(" ")[1], "base64").toString().split(":"); console.log(auth); } socket.on("getHash", () => { if (globalHash) socket.emit("hash", globalHash); }); runapp(socket); }); if (isDev) { app.use( require("webpack-dev-middleware")(compiler, { headers: (req, res, context) => { if (req.url == "/") { res.setHeader("Cache-Control", "max-age=0"); } } }) ); app.use(require("webpack-hot-middleware")(compiler)); compiler.hooks.done.tap("MyPlugin", (params) => { globalHash = params.toJson().hash; if (onlyOnce) io.emit("hash", globalHash); onlyOnce = false; }); } else { compiler.run((err, stats) => { if (err || stats.hasErrors()) { console.log(err); } globalHash = "prod" + stats.hash; io.emit("hash", globalHash); console.log("prod" + stats.hash); console.log(stats.toString({ colors: true })); }); app.use(function (req, res, next) { if (req.path == "/") { express.static("dist")(req, res, next); } else { express.static("dist", { maxAge: 60 * 60 * 24 * 100 * 1000 })(req, res, next); } }); app.use(compression()); } let printerOnline = false; server.listen(1111, "0.0.0.0", () => {}); } run(); var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : 'jtlshop', password : 'jtlshop', database : 'jtldb' }); connection.connect(); function permute(nums) { let result = []; if (nums.length === 0) return []; if (nums.length === 1) return [nums]; for (let i = 0; i < nums.length; i++) { const currentNum = nums[i]; const remainingNums = nums.slice(0, i).concat(nums.slice(i + 1)); const remainingNumsPermuted = permute(remainingNums); for (let j = 0; j < remainingNumsPermuted.length; j++) { const permutedArray = [currentNum].concat(remainingNumsPermuted[j]); result.push(permutedArray); } } return result; } function runapp(socket){ socket.on("search", (text, offset, callback) => { try{ text = text.toString().trim().replace(/(\D)-/g, "$1 ").replace(/ {2,}/g, " "); let queries = []; let qstr = ''; for(const per of permute(text.split(' '))){ for(let i=0;i