const XOR_KEY = "BofangKey"; const PREFIX = "#02"; function encryptXOR(text, key) { let encrypted = ""; for (let i = 0; i < text.length; i++) { encrypted += String.fromCharCode(text.charCodeAt(i) ^ key.charCodeAt(i % key.length)); } return encrypted; } function encryptSQL(sql) { return PREFIX + encryptXOR(encodeURIComponent(sql), XOR_KEY); } function getSessionToken() { const Parse = getApp().Parse; const currentUser = Parse && Parse.User && Parse.User.current(); if (!currentUser) return ""; if (typeof currentUser.getSessionToken == "function") { return currentUser.getSessionToken(); } return currentUser.get && currentUser.get("sessionToken") || ""; } function buildNovaQLData(sql, params) { const data = { sql: encryptSQL(sql), token: getSessionToken(), }; if (Array.isArray(params) && params.length > 0) { data.params = JSON.stringify(params); } return data; } module.exports = { encryptSQL, buildNovaQLData, };