{"_id":"3vot-salesforce-proxy","_rev":"64-8f00de8d98dca35ae330a38cdc7d21c5","name":"3vot-salesforce-proxy","description":"A Production Proxy Server written in NodeJS with clustering that translates standard traditional REST to Salesforce Rest API. It makes it easy work with Salesforce Data in Javascript, and includes stateless oauth2 and password based login.","dist-tags":{"latest":"0.2.3"},"versions":{"0.0.1":{"name":"3vot-salesforce-proxy","version":"0.0.1","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0"},"_id":"3vot-salesforce-proxy@0.0.1","dist":{"shasum":"112ab38abefb8c24859e92e0872fe6064a55674f","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.1.tgz","integrity":"sha512-HlK3uxnXataY8BjaNsphKAwwjnMU3S1dFu44kZhNO077aXWIO5rLrJvjrfz1NzdPeInrzoQ7r/YPmElD6yLh/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+VYwayc2X7Q2FBQwugw2clXP/x+hkKVbYwa7QCPTCHAIgf7bSGaOEnG2xGShsxBC+ppSNUwpU96EfgfuBPBvBXSI="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.2":{"name":"3vot-salesforce-proxy","version":"0.0.2","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.2","dist":{"shasum":"863ff5a0712ad04855673b271b8d90c399180e62","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.2.tgz","integrity":"sha512-iRZVF+Z9IhAVuM7hCfdYocj+KGZzJ3V/wkAfx5Z9p+mQNzrr/GaGA7dDfG8W5H65dDihMf3l6jysx5UU2HumRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjpJvOi9A7hU2B8br/PEjarjrAORdkSdGfjLQ/gotWqAIgJoQTB5Xhc7OHV3YrB5a0Gq5EQSDb6S/Mb3HKGdSH6rs="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.3":{"name":"3vot-salesforce-proxy","version":"0.0.3","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.3","dist":{"shasum":"7c9ecf4397c2453a1f93e9d08113de618a43fd43","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.3.tgz","integrity":"sha512-trXW8iWnFdWX9/MnLEmRNcpuOP/V5wfquepDqra0CtHkvhEA530P8nps8qhLJm4OKt/KnDtHh5edzj/TES/oBg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDhgMRXxmLDYfhz7u82TIDY3V0aBUYbTpdH9BHMTNygAIgHcZpu1c4kicL2YaMIJ72znAZjqv0ljRyW/q1/KlIcq0="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.4":{"name":"3vot-salesforce-proxy","version":"0.0.4","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.4","dist":{"shasum":"c4337807e3509e4e12bcd43aabeaa1380829c6e0","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.4.tgz","integrity":"sha512-RazZGE8yBZlLHYToz3RUo0n0dJssH46qmUCnmEZQxiDS8m5XIjJ1TnJwmp2Y6dZy3zFWzOoBMD9prl7xRgYFxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsaP6zlYcco/D0QH/jK3Iq12Kh9kpJ+9T7OkaagwOc/wIhANa+Dn344OjyrEQvlz90Fcp48L2BfCg0PJ+n2ZRF8cwZ"}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.5":{"name":"3vot-salesforce-proxy","version":"0.0.5","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.5","dist":{"shasum":"ac1788f37bcac7e3f692ed6e62ec2d3e4d9eb9ab","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.5.tgz","integrity":"sha512-/CAAHFEnfBLweZf7FChfECSPhDevGnTwhOqw8KaWFl5inoApI7AB6PBQsZvTyPuJuQpdsU/G/k7IBfj7JMK6uQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDP60fv+9emldiJOn0GF4Bwc7lpxNOxeIpQHZ33UlBN3AiEA4ygs5DlZLYzTiTs/mFWZ+Gan4z9ZHQ2FSZLpWdIBgwU="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.6":{"name":"3vot-salesforce-proxy","version":"0.0.6","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.6","dist":{"shasum":"007c43f8f18d791953894064748c38be7a649457","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.6.tgz","integrity":"sha512-NZ0LfJWwsry584jj+sSi0Rzk0tD8HewnUvO1XtYRRGdLsYAaOS7ulara0A3wOH+Lp+MyFmCvoPpQAbyW+VOclw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIApVAhUH/aoRHWQJ9qeYDBLeYXCxaLHK17cPxgXBJrXuAiEAmtFbB08lVqN8/n8DazvhpidG93r/4b/FyIT7aAF+yCM="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.7":{"name":"3vot-salesforce-proxy","version":"0.0.7","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.7","dist":{"shasum":"51ead24ae88aa9a1532e6394ec30a77edcf8553f","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.7.tgz","integrity":"sha512-YB+sBFU7SzQQo4nW3E8etkA8QJFTpModL3MsN4OaH3E69vRGA86Ql7es0reU9Z+FeTBYA1Svy2hyMVa6fovEiQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIENlAnQ513SjgDADRBniv7pOHQUwTm3QaqtrPHiyRSlUAiAbKKVFeoQBYaB6C62z8+9eWQ6ztp0VCn77G2WXR7zNUw=="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.8":{"name":"3vot-salesforce-proxy","version":"0.0.8","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.8","dist":{"shasum":"3a808d6e5a77da7ab784599cfb4293803ea7be64","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.8.tgz","integrity":"sha512-1eChazwTPhzd44xizfmlH7Zxli2+KQ6L74LYgd1u+Av/n7tM8e+0/ZzogBRnmXxPXTVy49mlu9BzHqoy4H/r6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCDtwnRpP9MMMWM9iamaI6iUFbigC35XMZI8+G+iWvruAIhAM2CI69dVkVU4YArPyyk6aZZyv9jk6qUZD536fue1hzf"}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.0.9":{"name":"3vot-salesforce-proxy","version":"0.0.9","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.0.9","dist":{"shasum":"7d5645d6ec2a47ac2f5ce19f5d5aee6a7c45262a","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.0.9.tgz","integrity":"sha512-ULKdUPqWgKu+NxJmevHw5D0fdzt2Q2GiwAeJRM2FZqiwIHxTBEGsUe+6otX+PVECAMH/kx6k+eM9MDkpAevERg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFlPnWhaKOKsaYJB8QortOljeP+gl/T6AH70cIX2d5Q5AiA1FLVawjRUjS8K8sOWEw+MkC/2b0shelgySQhHQzFJ2w=="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.1.0":{"name":"3vot-salesforce-proxy","version":"0.1.0","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.1.0","dist":{"shasum":"24a079350f6380532ec664984bb32ca7f10dfce5","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.1.0.tgz","integrity":"sha512-eHvnNONef8+qiYFsvPjqsDanAb8h9rSxDegdWIDO7ChAC85W6QacXd6g/KpntfT18GysniHXrdWGClrPl7I55g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBwnQdKPcEDa5FP3eVMv1/E/Vt5du4l51MIzkTfvJWxRAiBez7yE46bQWeQJTFqiSwiomBz8iULrlrVhGn5+x2nDOg=="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.1.1":{"name":"3vot-salesforce-proxy","version":"0.1.1","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.1.1","dist":{"shasum":"4cb4a111ab54e2df98aa92370c64ac2ac4c240cc","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.1.1.tgz","integrity":"sha512-eFvDV4uNS+tr6iSIleaG8/oEjC4w09h9cqD9YAQ+FM9pYUyFbqotjsMXH/ZLQ1GoM2Ub7mt3tGy3ZvAmMLQ0dA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCIWwYGUToL1TgILKW0he+0JRcPnPSKq0a0vVcpN1bqJwIgYmU+qUhhNz0C+PbKsFLUF68/7WbVIN9YI+1OVy1bTOs="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.1.2":{"name":"3vot-salesforce-proxy","version":"0.1.2","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.1.2","dist":{"shasum":"c77fbe74276e402cc38e7fe945984dcc082e1d20","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.1.2.tgz","integrity":"sha512-NK0nCpvxYMfUhxcKCSy9Ls+txeAEIUlOlcUMiQsxBs/aL1YyjGiB3NDdjStq7xUMklFnM9zUnc2dnCc6AyHYxw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXdSc1fGkLwOIrhyy67rrDqzUA+na2t3V6y9u1EdPOHAIhAJC7L0hNoaJLjgHzeytaU7NlPfg3e12Zc4848YyFGvI1"}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.1.3":{"name":"3vot-salesforce-proxy","version":"0.1.3","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.1.3","dist":{"shasum":"2672439729b4c2a40d96467b31d26d66eadd616b","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.1.3.tgz","integrity":"sha512-WN+S0IkhRRN2CzDdZxq9UApaqekSoSX+xxEDQdnMgS4GiXB+GhBh1QXbEV4MqgB/kCO2wlkSgDPLf/tTfTblbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDChzdh3E2/vMg8ctn6besIathOnXKn9mk17tu/TYolzQIhAJwiAZ2FwrcGCw/S6duXGZv1FTz68CrPQOf3hwCmNjDW"}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.1.5":{"name":"3vot-salesforce-proxy","version":"0.1.5","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.1.5","dist":{"shasum":"9a885e621055e10fe87456f2bc049b59afb2a69a","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.1.5.tgz","integrity":"sha512-WhAYgK+etTZJ5Cq59wDZ+Z5l9dUZHAzG+/BCF1034xmib0RVm5S2uN+JEFdYY4N63T7HSmXPcQUhhPGUEeJO5Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdAotPGIHoFYyaLDvTN7TlN9gf36/7K91nTGIPlgOKdgIgHd/aD0cpcjS28uJmn/oc4CP67G0CGrbbrTO8YRAbqNw="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.1.6":{"name":"3vot-salesforce-proxy","version":"0.1.6","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"BSD","dependencies":{"q":"~1.0.0","mocha":"~1.17.1","should":"~3.1.2","express":"~3.4.8","superagent":"~0.16.0","node.extend":"~1.0.9","parse":"~1.2.13","querystring":"~0.2.0","supertest":"~0.9.0"},"_id":"3vot-salesforce-proxy@0.1.6","dist":{"shasum":"3d95b24680f68f1b5a802699a1c32720f8b9808a","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.1.6.tgz","integrity":"sha512-s2b4Y0/0z0QcJNGDPOZ/nA/td5aQsbgOib+MukjcbLZJ+lV8DedPHKOsBv7D3BEmfiBNM1HOBEvOVgnEBq9wjg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHMUvm+rOoMdhPt6ZO2fJY7lT55jK2oiFEsJ4IQogHr0AiEAxuICAs/GY4h70AMuJKVtF1PjadwNP8dwoRQm3EDoc1Y="}]},"_from":".","_npmVersion":"1.3.5","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.2.0":{"name":"3vot-salesforce-proxy","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","version":"0.2.0","private":false,"scripts":{"start":"node ./bin/www"},"dependencies":{"express":"4.8.0","static-favicon":"~1.0.0","morgan":"~1.0.0","cookie-parser":"~1.0.1","body-parser":"~1.0.0","debug":"~0.7.4","cookie-session":"~1.1.0","tape":"~3.0.3","dotenv":"~0.4.0","express-cors":"0.0.3"},"author":{"name":"roberto@rodriguezartavia.com"},"repository":{"type":"git","url":"https://github.com/3vot/3vot-salesforce-proxy"},"license":"BSD","bugs":{"url":"https://github.com/3vot/3vot-salesforce-proxy/issues"},"_id":"3vot-salesforce-proxy@0.2.0","dist":{"shasum":"678eec594d55e7fe4cb6944387bab5516f073bca","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.2.0.tgz","integrity":"sha512-GTpFo6CNN0svJikkJOJv6Px+/Wr7R8Kq2LAVFQpkIwXTWOYVz8uS9SoW31HAdsAfGV5boK+9cjD8DFWtfyLPoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEJF3U7c6zk/68paX/ACQOSjBqOKDBy5JTJEtzyMtedRAiB7ltoVHH70YBoat6BgvQ6Gn23+jWsXVcCnRKiRDUhAwA=="}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.2.1":{"name":"3vot-salesforce-proxy","description":"Salesforce Production NodeJS Proxy Server that translates SF-REST-API into standard REST to be consumed by BackboneJS, SpineJS, Angular, Ember, etc. It includes an OAUTH Authentication Strategy for OAUTH 2.0 Password and Server and Cookie Stateless Sessio","version":"0.2.1","private":false,"scripts":{"start":"node ./bin/www"},"dependencies":{"express":"4.8.0","static-favicon":"~1.0.0","morgan":"~1.0.0","cookie-parser":"~1.0.1","body-parser":"~1.0.0","debug":"~0.7.4","cookie-session":"~1.1.0","tape":"~3.0.3","dotenv":"~0.4.0","express-cors":"0.0.3"},"author":{"name":"roberto@rodriguezartavia.com"},"repository":{"type":"git","url":"https://github.com/3vot/3vot-salesforce-proxy"},"license":"BSD","bugs":{"url":"https://github.com/3vot/3vot-salesforce-proxy/issues"},"_id":"3vot-salesforce-proxy@0.2.1","dist":{"shasum":"e15186334c25c5ffd23fc5e95e39c71eca2dcbb2","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.2.1.tgz","integrity":"sha512-rBugfmo4s0DIG9DDaq6ihfIPKZfgKhjh5u++2sgcCDfhLJ5pKh3MfV2xNHjvbF4gqjwlNLRM8zEunS8nwA2gfw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDgKLC44BY0ntt+gn4O5gx9mGJ49SHajNEuDEZ4b/B5wQIhALaO/5W2iARyMG0DByK+uzYPpzr5iHVw+aBed2hitzip"}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.2.2":{"name":"3vot-salesforce-proxy","description":"A Production Proxy Server written in NodeJS with clustering that translates standard traditional REST to Salesforce Rest API. It makes it easy work with Salesforce Data in Javascript, and includes stateless oauth2 and password based login.","version":"0.2.2","private":false,"scripts":{"start":"node ./bin/www"},"dependencies":{"express":"4.8.0","static-favicon":"~1.0.0","morgan":"~1.0.0","cookie-parser":"~1.0.1","body-parser":"~1.0.0","debug":"~0.7.4","cookie-session":"~1.1.0","tape":"~3.0.3","dotenv":"~0.4.0","express-cors":"0.0.3","superagent":"~0.21.0","jsforce":"~1.3.1"},"author":{"name":"roberto@rodriguezartavia.com"},"repository":{"type":"git","url":"https://github.com/3vot/3vot-salesforce-proxy"},"license":"BSD","bugs":{"url":"https://github.com/3vot/3vot-salesforce-proxy/issues"},"_id":"3vot-salesforce-proxy@0.2.2","dist":{"shasum":"58feedbcfcea710f90c8b8c784836ce1ca47f6c3","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.2.2.tgz","integrity":"sha512-ARXnVNmap2BC4PlkYoCVkIRDd+up6SeM29dzjLR2Rn/VM3IDbojhsWySmlakNXvH06MR2A7HPazxLukbVlUOIg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDN1+6Mn/G5qjB6k0B5ovA/2cDEL8Q8pZBIyR0l7rJp6wIhAIt8v8R0osYZLbO68jVs5sQdEFovBgX7jk9tcBaRFnZB"}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]},"0.2.3":{"name":"3vot-salesforce-proxy","description":"A Production Proxy Server written in NodeJS with clustering that translates standard traditional REST to Salesforce Rest API. It makes it easy work with Salesforce Data in Javascript, and includes stateless oauth2 and password based login.","version":"0.2.3","private":false,"scripts":{"start":"node ./bin/www"},"dependencies":{"express":"4.8.0","static-favicon":"~1.0.0","morgan":"~1.0.0","cookie-parser":"~1.0.1","body-parser":"~1.0.0","debug":"~0.7.4","cookie-session":"~1.1.0","tape":"~3.0.3","dotenv":"~0.4.0","express-cors":"0.0.3","superagent":"~0.21.0","jsforce":"~1.3.1"},"author":{"name":"roberto@rodriguezartavia.com"},"repository":{"type":"git","url":"https://github.com/3vot/3vot-salesforce-proxy"},"license":"BSD","bugs":{"url":"https://github.com/3vot/3vot-salesforce-proxy/issues"},"_id":"3vot-salesforce-proxy@0.2.3","dist":{"shasum":"81b64012d0c70c523a2f4740f4d9d61a93923cda","tarball":"https://registry.npmjs.org/3vot-salesforce-proxy/-/3vot-salesforce-proxy-0.2.3.tgz","integrity":"sha512-SksofmwViYdDrEWuCZF1Wa7B0btuz1RLK82SuXCsO+v1yBzkwtk9sD3ydFx3o+UahlPVdZt7CRH+0a62b0BVig==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6XMnA+jQJFd9383Njozdt5xSPRtNdA8WGt9VjxCVnawIhAPz5IquEIbLKvrBWKi0fCYxe/jY2Z+eFDDrDwiMGpoHd"}]},"_from":".","_npmVersion":"1.3.11","_npmUser":{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"},"maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}]}},"readme":"[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)\n\n# 3vot-salesforce-proxy\n\n## WHY\n\nSalesforce uses OAUTH 2.0 for authentication and does not provide CORS to connect directly from Web Apps.\n\nMore importantly the Salesforce REST API is not designed to be frontend friendly. Most Models and AJAX modules won't work. Salesforce App Developers end up not using models and communicating with Salesforce REST API directly. This approach requires knowledge of APEX and Salesforce, makes App Development much more expensive and breaks M*VC.\n\n## What\n\nA Production Proxy Server written in NodeJS with clustering that translates standard traditional REST to Salesforce Rest API. It makes it easy work with Salesforce Data in Javascript. \n\nDevelopers can simply create object `Account.create({ Name: \"Acme\" })` - query `Account.query(\"select id, name from account\")` - update and delete 'account.save()' - 'account.delete()'.\n\nThis way frontend developers can build Salesforce Apps, reducing costs and improving development speed in several by 3X+.\n\nThe server includes Login based in oauth2 or password, handles session refresh and it's stateless, so it can be scaled instantly up to infinity.\n\n## How\n\nSimply use the Heroku Button to get your Proxy Server Running now!\n[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy)\n\nDeploy from NPM by using the file app.js as or bin/www as node start script.\n\nUse the routes in routes/login and routes/api in your own server, making sure you are using the cookie-session NPM module\n\n## More\n\nThis Server is part of [ClayForSalesforce.com](http://clayforsalesforce.com) , a platform to develop Modern Frontend Apps for Salesforce as Visualforce/Static Resources, in the Browser and in Mobile Devices.\n\nSalesforce has a particular Rest idiosyncrasy in that it returns null for updates and deletes, they mix Id and id fields and return the Rest results wrapped in another object. It should work with most Ajax Models if you cater for this issues.\n\nClayforSalesforce has a versatile model called Clay Model that can be used in conjuntion with the Salesforce APi Adapter called clay-model-salesforce-api which makes everything works out of the box and as an additional featurea only sends modified fields on update, which is great while dealing with update in context of CRUD and FLS Security.\n\n\nThis package is supported by 3VOT Corporation.\n\n## Install\n\n$ npm install 3vot-salesforce-proxy\n\n## Setup\nSetup can be somewhat accelerated by using the Heroku button > APP_NAME, then `heroku clone ` and `heroku config:pull`\n\n1. Create a Salesforce Connect App for localhost (localhost:5000) and one for production ( using your server url or xxxx.herokuapp.com )\n\n2. Setup the following ENV Variables file .env and .denv\nSALESFORCE_CLIENT_ID, SALESFORCE_CLIENT_SECRET, SALESFORCE_REDIRECT_URL, NODE_ENV, ORIGINS\n\nCheck this gist for a quick format: https://gist.github.com/rodriguezartav/b5ed90528075777d2edd\n\n## Getting Started\nStart the server\nProduction `foreman start` - auto loads .env\nProduction `./bin/ww` - loads .env \nDevelopment `./bin/w` - loads .denv\n\nPoint your browser to http://localhost:5000/login , check out /session and /whoami\n\n## Using from an App\nFirst you must login, point your browser to the /login route make sure to supply and app_url query string variable. This is the URL where the Proxy will redirect after login. You can also hardcode this value as ENV-VARIABLE called SALESFORCE_FINAL_URL\n\nNow make regular HTTP REST API Calls GET,POST,PUT,DEL using OBJECT/ID url's\n\nGet requests with a ?query=select... querystring are treated as SOQL Queries, add autoFetch and maxFetch query string params to control how many records to return. ie: http://localhost:5000/Account?query=\"select id, name from Account&autoFetch=true&maxFetch=10000\"\n\nAlso available is the Apex Rest route [GET,POST,PUT,DEL,PATCH] apex/method where method is the APEX TEST method name. Params can be supplied in http body when [POST,PUT,DEL,PATCH], for GET request include querystring with the method name. apex/method?param1=true\n\n## Rules\nAfter login the proxy will redirect depending on the following rules:\n\n1. app_url: It will use the app_url query string provided to the login route. /login?app_url=myapp.com/start\n2. SALESFORCE_FINAL_URL: ENV variable that points to a final route, use it when you only have one app.\n3. /login/whoami: By default, the proxy will redirect to the whoami route, the browser will end up here so it's not good to use the default other than when testing for development.\n\nIf you are running the proxy in development, there is also the /session route. Which will output Salesforce Security Token, this is valid for testing and easily obtaining tokens. It will not be available in production becase you'll set the ENV Variable NODE_ENV to 'production'\n\n### Using the Proxy\nThe Proxy is based and uses jsforce, so follow up on JSFORCE documentation, study the tests provide in this repo or request support from us.\n\nThe proxy is designed to work out of the box with Javascript Models, specially clay-model using clay-model-salesforce-api.\n\nWhen using clay-model, apps without code modification between Visualforce Remoting deployed inside Salesforce or deployed Externally using the API and this Proxy.\n\nMore information about using the proxy can be found in clay-model and clay-model-salesforce-api repositories in 3VOT Profile in Github.\n\n### CORS\n\nSet the allowed domains on the enviroment variable ORIGINS=*.DOMAIN.com , other domains separated by ','\n\n### Clustering\nThis API Proxy server is enabled with clustering, we also use forking to make sure any unhandled exception won't stop the server, just the worker while the master just spins up a new worker.\n\n\n## Using in another server\n\nIn order to use this proxy in your server, simple use the login and api route. The login route is not really necessary, as long as the salesforce property is defined in the session. The saleforce property is stored just like salesforce returns it.\n\n## Testing\nFirst create and fill in the file .denv that runs on development. Make sure to create a Salesforce Connected App that points to http://localhost:5000/login/callback and set the Client Id and Secret on .denv file.\n\n\nUsing Tape, run `tape ./test`\n\n\n# Support\n\n3VOT Saleforce Proxy is supported by 3VOT Corporation and it's a core component of the Clay Plataform @ 3vot.com\n\n\nThank You\n\n\n\n\n","maintainers":[{"name":"rodriguezartav","email":"roberto@rodriguezartavia.com"}],"time":{"modified":"2022-06-12T14:07:33.441Z","created":"2014-02-04T15:46:33.620Z","0.0.1":"2014-02-04T15:47:08.810Z","0.0.2":"2014-02-04T20:08:50.769Z","0.0.3":"2014-02-05T19:19:02.957Z","0.0.4":"2014-02-09T03:29:27.719Z","0.0.5":"2014-02-09T04:18:07.720Z","0.0.6":"2014-02-10T18:06:33.581Z","0.0.7":"2014-02-10T18:15:59.745Z","0.0.8":"2014-02-10T19:13:27.443Z","0.0.9":"2014-02-10T19:20:36.035Z","0.1.0":"2014-02-10T20:42:28.321Z","0.1.1":"2014-02-11T04:42:58.904Z","0.1.2":"2014-02-11T04:48:08.367Z","0.1.3":"2014-02-11T04:54:35.678Z","0.1.5":"2014-02-11T05:06:34.509Z","0.1.6":"2014-02-11T05:32:13.613Z","0.2.0":"2015-01-03T00:41:28.639Z","0.2.1":"2015-01-03T01:11:03.936Z","0.2.2":"2015-01-03T13:16:52.494Z","0.2.3":"2015-01-03T16:04:06.284Z"},"readmeFilename":"README.md","license":"BSD","repository":{"type":"git","url":"https://github.com/3vot/3vot-salesforce-proxy"},"author":{"name":"roberto@rodriguezartavia.com"},"bugs":{"url":"https://github.com/3vot/3vot-salesforce-proxy/issues"}}