UNPKG

@rudderstack/integrations-lib

Version:

A comprehensive TypeScript library providing shared utilities, SDKs, and tools for RudderStack integrations and destinations.

120 lines 10.5 kB
"use strict"; 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