@rudderstack/integrations-lib
Version:
A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.
120 lines • 10.5 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const jsforce = __importStar(require("jsforce"));
/**
* Salesforce SDK using jsforce
* Provides type-safe SOQL queries and SObject create/update operations
*/
class Salesforce {
/**
* Initialize Salesforce SDK with access token and instance URL
* @param authObject - Authentication object containing accessToken and instanceUrl
* @param config - Optional configuration including API version
*/
constructor(authObject, config) {
this.validateAuthObject(authObject);
const connectionOptions = {
accessToken: authObject.accessToken,
instanceUrl: authObject.instanceUrl,
version: config?.apiVersion,
};
this.connection = new jsforce.Connection(connectionOptions);
}
/**
* Validate authentication object
* @param authObject - Authentication object to validate
* @throws Error if validation fails
*/
// eslint-disable-next-line class-methods-use-this
validateAuthObject(authObject) {
if (!authObject?.accessToken || typeof authObject.accessToken !== 'string') {
throw new Error('accessToken is required and must be a string');
}
// Validate instance URL format
let url;
try {
url = new URL(authObject.instanceUrl);
}
catch (error) {
throw new Error('instanceUrl must be a valid URL');
}
// Validate that URL uses HTTPS protocol
if (url.protocol !== 'https:') {
throw new Error('instanceUrl must be a valid HTTPS URL');
}
}
/**
* Execute SOQL query and return type-safe results
* @param soql - SOQL query string
* @param recordType - Optional type parameter for type-safe record results
* @returns Promise resolving to SOQL result with typed records
* @example
* ```typescript
* interface Account {
* Id: string;
* Name: string;
* attributes: {
* type: string;
* url: string;
* };
* }
* const result = await sdk.query<Account>('SELECT Id, Name, Industry FROM Account LIMIT 10');
* ```
*/
async query(soql) {
try {
const queryResult = await this.connection.query(soql);
return {
totalSize: queryResult.totalSize,
done: queryResult.done,
records: queryResult.records,
};
}
catch (error) {
const errorMessage = error instanceof Error ? error.message : 'Unknown error executing SOQL query';
throw new Error(`SOQL query failed: ${errorMessage}`);
}
}
/**
* Get the underlying jsforce connection (for advanced use cases)
* @returns jsforce Connection instance
*/
getConnection() {
return this.connection;
}
}
exports.default = Salesforce;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNmb3JjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZGtzL3NhbGVzZm9yY2Uvc2FsZXNmb3JjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUFtQztBQUduQzs7O0dBR0c7QUFDSCxNQUFxQixVQUFVO0lBRzdCOzs7O09BSUc7SUFDSCxZQUFZLFVBQWdDLEVBQUUsTUFBeUI7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0saUJBQWlCLEdBQTZCO1lBQ2xELFdBQVcsRUFBRSxVQUFVLENBQUMsV0FBVztZQUNuQyxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVc7WUFDbkMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVO1NBQzVCLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0RBQWtEO0lBQzFDLGtCQUFrQixDQUFDLFVBQWdDO1FBQ3pELElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxJQUFJLE9BQU8sVUFBVSxDQUFDLFdBQVcsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMzRSxNQUFNLElBQUksS0FBSyxDQUFDLDhDQUE4QyxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELCtCQUErQjtRQUMvQixJQUFJLEdBQVEsQ0FBQztRQUNiLElBQUksQ0FBQztZQUNILEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDckQsQ0FBQztRQUVELHdDQUF3QztRQUN4QyxJQUFJLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O09BaUJHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBb0MsSUFBWTtRQUN6RCxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXRELE9BQU87Z0JBQ0wsU0FBUyxFQUFFLFdBQVcsQ0FBQyxTQUFTO2dCQUNoQyxJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7Z0JBQ3RCLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBYzthQUNwQyxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLFlBQVksR0FDaEIsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUM7WUFDaEYsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsWUFBWSxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGO0FBckZELDZCQXFGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGpzZm9yY2UgZnJvbSAnanNmb3JjZSc7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlQXV0aE9iamVjdCwgU2FsZXNmb3JjZUNvbmZpZywgU09RTFJlc3VsdCB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNhbGVzZm9yY2UgU0RLIHVzaW5nIGpzZm9yY2VcbiAqIFByb3ZpZGVzIHR5cGUtc2FmZSBTT1FMIHF1ZXJpZXMgYW5kIFNPYmplY3QgY3JlYXRlL3VwZGF0ZSBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNhbGVzZm9yY2Uge1xuICBwcml2YXRlIGNvbm5lY3Rpb246IGpzZm9yY2UuQ29ubmVjdGlvbjtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZSBTYWxlc2ZvcmNlIFNESyB3aXRoIGFjY2VzcyB0b2tlbiBhbmQgaW5zdGFuY2UgVVJMXG4gICAqIEBwYXJhbSBhdXRoT2JqZWN0IC0gQXV0aGVudGljYXRpb24gb2JqZWN0IGNvbnRhaW5pbmcgYWNjZXNzVG9rZW4gYW5kIGluc3RhbmNlVXJsXG4gICAqIEBwYXJhbSBjb25maWcgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGluY2x1ZGluZyBBUEkgdmVyc2lvblxuICAgKi9cbiAgY29uc3RydWN0b3IoYXV0aE9iamVjdDogU2FsZXNmb3JjZUF1dGhPYmplY3QsIGNvbmZpZz86IFNhbGVzZm9yY2VDb25maWcpIHtcbiAgICB0aGlzLnZhbGlkYXRlQXV0aE9iamVjdChhdXRoT2JqZWN0KTtcbiAgICBjb25zdCBjb25uZWN0aW9uT3B0aW9uczoganNmb3JjZS5Db25uZWN0aW9uQ29uZmlnID0ge1xuICAgICAgYWNjZXNzVG9rZW46IGF1dGhPYmplY3QuYWNjZXNzVG9rZW4sXG4gICAgICBpbnN0YW5jZVVybDogYXV0aE9iamVjdC5pbnN0YW5jZVVybCxcbiAgICAgIHZlcnNpb246IGNvbmZpZz8uYXBpVmVyc2lvbixcbiAgICB9O1xuXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IGpzZm9yY2UuQ29ubmVjdGlvbihjb25uZWN0aW9uT3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgYXV0aGVudGljYXRpb24gb2JqZWN0XG4gICAqIEBwYXJhbSBhdXRoT2JqZWN0IC0gQXV0aGVudGljYXRpb24gb2JqZWN0IHRvIHZhbGlkYXRlXG4gICAqIEB0aHJvd3MgRXJyb3IgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgcHJpdmF0ZSB2YWxpZGF0ZUF1dGhPYmplY3QoYXV0aE9iamVjdDogU2FsZXNmb3JjZUF1dGhPYmplY3QpIHtcbiAgICBpZiAoIWF1dGhPYmplY3Q/LmFjY2Vzc1Rva2VuIHx8IHR5cGVvZiBhdXRoT2JqZWN0LmFjY2Vzc1Rva2VuICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhY2Nlc3NUb2tlbiBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIHN0cmluZycpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIGluc3RhbmNlIFVSTCBmb3JtYXRcbiAgICBsZXQgdXJsOiBVUkw7XG4gICAgdHJ5IHtcbiAgICAgIHVybCA9IG5ldyBVUkwoYXV0aE9iamVjdC5pbnN0YW5jZVVybCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW5zdGFuY2VVcmwgbXVzdCBiZSBhIHZhbGlkIFVSTCcpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgVVJMIHVzZXMgSFRUUFMgcHJvdG9jb2xcbiAgICBpZiAodXJsLnByb3RvY29sICE9PSAnaHR0cHM6Jykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnN0YW5jZVVybCBtdXN0IGJlIGEgdmFsaWQgSFRUUFMgVVJMJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgU09RTCBxdWVyeSBhbmQgcmV0dXJuIHR5cGUtc2FmZSByZXN1bHRzXG4gICAqIEBwYXJhbSBzb3FsIC0gU09RTCBxdWVyeSBzdHJpbmdcbiAgICogQHBhcmFtIHJlY29yZFR5cGUgLSBPcHRpb25hbCB0eXBlIHBhcmFtZXRlciBmb3IgdHlwZS1zYWZlIHJlY29yZCByZXN1bHRzXG4gICAqIEByZXR1cm5zIFByb21pc2UgcmVzb2x2aW5nIHRvIFNPUUwgcmVzdWx0IHdpdGggdHlwZWQgcmVjb3Jkc1xuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGludGVyZmFjZSBBY2NvdW50IHtcbiAgICogICBJZDogc3RyaW5nO1xuICAgKiAgIE5hbWU6IHN0cmluZztcbiAgICogICBhdHRyaWJ1dGVzOiB7XG4gICAqICAgICB0eXBlOiBzdHJpbmc7XG4gICAqICAgICB1cmw6IHN0cmluZztcbiAgICogICB9O1xuICAgKiB9XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNkay5xdWVyeTxBY2NvdW50PignU0VMRUNUIElkLCBOYW1lLCBJbmR1c3RyeSBGUk9NIEFjY291bnQgTElNSVQgMTAnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBxdWVyeTxUIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+KHNvcWw6IHN0cmluZyk6IFByb21pc2U8U09RTFJlc3VsdDxUPj4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeVJlc3VsdCA9IGF3YWl0IHRoaXMuY29ubmVjdGlvbi5xdWVyeShzb3FsKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdG90YWxTaXplOiBxdWVyeVJlc3VsdC50b3RhbFNpemUsXG4gICAgICAgIGRvbmU6IHF1ZXJ5UmVzdWx0LmRvbmUsXG4gICAgICAgIHJlY29yZHM6IHF1ZXJ5UmVzdWx0LnJlY29yZHMgYXMgVFtdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID1cbiAgICAgICAgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvciBleGVjdXRpbmcgU09RTCBxdWVyeSc7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNPUUwgcXVlcnkgZmFpbGVkOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIGpzZm9yY2UgY29ubmVjdGlvbiAoZm9yIGFkdmFuY2VkIHVzZSBjYXNlcylcbiAgICogQHJldHVybnMganNmb3JjZSBDb25uZWN0aW9uIGluc3RhbmNlXG4gICAqL1xuICBnZXRDb25uZWN0aW9uKCk6IGpzZm9yY2UuQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGlvbjtcbiAgfVxufVxuIl19