UNPKG

reshuffle-salesforce-connector

Version:
80 lines 3.22 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; exports.__esModule = true; exports.validateToken = exports.validateQuery = exports.validateEncryptionKey = exports.validateClientSecret = exports.validateClientId = exports.validateBaseURL = exports.openAuthenticationWindow = exports.AUTHPATH = void 0; var open_1 = __importDefault(require("open")); var jsforce_1 = __importDefault(require("jsforce")); var encrypt_1 = require("./encrypt"); exports.AUTHPATH = '/reshuffle-salesforce-connector/oauth'; function openAuthenticationWindow(clientId, clientSecret, baseURL) { var oauth2 = new jsforce_1["default"].OAuth2({ clientId: validateClientId(clientId), clientSecret: validateClientSecret(clientSecret), redirectUri: validateBaseURL(baseURL) + exports.AUTHPATH }); var url = oauth2.getAuthorizationUrl({ scope: 'full refresh_token' }); open_1["default"](url)["catch"](console.error); return url; } exports.openAuthenticationWindow = openAuthenticationWindow; function validateBaseURL(url) { if (typeof url !== 'string') { throw new Error("Invalid url: " + url); } var match = url.match(/^(https:\/\/[\w-]+(\.[\w-]+)*(:\d{1,5})?)\/?$/); if (!match) { throw new Error("Invalid url: " + url); } return match[1]; } exports.validateBaseURL = validateBaseURL; function validateClientId(clientId) { if (!/^[A-Za-z0-9\._]{85}$/.test(clientId || '')) { throw new Error("Invalid clientId: " + clientId); } return clientId; } exports.validateClientId = validateClientId; function validateClientSecret(clientSecret) { if (!/^[A-Z0-9]{64}$/.test(clientSecret || '')) { throw new Error("Invalid clientSecret: " + clientSecret); } return clientSecret; } exports.validateClientSecret = validateClientSecret; var encryptionKeyRegex = new RegExp("^[0-9a-fA-F]{" + encrypt_1.ENCRYPTION_KEY_LENGTH * 2 + "}$"); function validateEncryptionKey(key) { if (typeof key === 'string') { if (!encryptionKeyRegex.test(key)) { throw new Error("Invalid encryption key: " + key); } return Buffer.from(key, 'hex'); } if (typeof key === 'object' && key instanceof Buffer) { if (key.length !== encrypt_1.ENCRYPTION_KEY_LENGTH) { throw new Error("Invalid encryption key: " + key); } return key; } throw new Error("Invalid encryption key: " + key); } exports.validateEncryptionKey = validateEncryptionKey; var queryRegex = new RegExp('^\\s*(SELECT|select)\\s+([A-Z]\\w+)(\\s*,\\s*[A-Z]\\w+)*\\s+' + '(FROM|from)\\s+[A-Z]\\w+\\s*$'); function validateQuery(query) { if (!queryRegex.test(query || '')) { throw new Error("Invalid query: " + query); } return query.trim().replace(/\s\s+/g, ' ').replace(/\s?,\s?/g, ','); } exports.validateQuery = validateQuery; function validateToken(token) { if (typeof token !== 'string' || !/^[0-9a-zA-Z\._!]+$/.test(token)) { throw new Error("Invalid token: " + token); } return token; } exports.validateToken = validateToken; //# sourceMappingURL=common.js.map