reshuffle-salesforce-connector
Version:
Reshuffle connector for Salesforce
80 lines • 3.22 kB
JavaScript
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
;