@major-tech/resource-client 0.2.13 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@
8
8
  * npx @major-tech/resource-client remove <name>
9
9
  * npx @major-tech/resource-client list
10
10
  *
11
- * Types: database-postgresql | database-mssql | database-dynamodb | database-cosmosdb | database-snowflake | api-hubspot | api-googlesheets | api-custom | api-lambda | storage-s3
11
+ * Types: database-postgresql | database-mssql | database-dynamodb | database-cosmosdb | database-snowflake | api-hubspot | api-googlesheets | api-custom | api-lambda | api-salesforce | storage-s3
12
12
  *
13
13
  * Examples:
14
14
  * npx @major-tech/resource-client add "abc-123" "orders-db" "database-postgresql" "Orders database" "app-123"
@@ -149,6 +149,7 @@ function getClientClass(type) {
149
149
  'api-hubspot': 'HubSpotResourceClient',
150
150
  'api-googlesheets': 'GoogleSheetsResourceClient',
151
151
  'api-lambda': 'LambdaResourceClient',
152
+ 'api-salesforce': 'SalesforceResourceClient',
152
153
  'storage-s3': 'S3ResourceClient',
153
154
  };
154
155
  return typeMap[type] || 'PostgresResourceClient';
@@ -183,7 +184,7 @@ function generateIndexFile(resources) {
183
184
  }
184
185
 
185
186
  function addResource(resourceId, name, type, description, applicationId, framework) {
186
- const validTypes = ['database-postgresql', 'database-mssql', 'database-dynamodb', 'database-cosmosdb', 'database-snowflake', 'api-hubspot', 'api-googlesheets', 'api-custom', 'api-lambda', 'storage-s3'];
187
+ const validTypes = ['database-postgresql', 'database-mssql', 'database-dynamodb', 'database-cosmosdb', 'database-snowflake', 'api-hubspot', 'api-googlesheets', 'api-custom', 'api-lambda', 'api-salesforce', 'storage-s3'];
187
188
  if (!validTypes.includes(type)) {
188
189
  console.error(`❌ Invalid type: ${type}`);
189
190
  console.error(` Valid types: ${validTypes.join(', ')}`);
@@ -320,7 +321,7 @@ function main() {
320
321
  console.log(' npx @major-tech/resource-client add <resource_id> <name> <type> <description> <application_id> [--framework <nextjs|vite>]');
321
322
  console.log(' npx @major-tech/resource-client remove <name> [--framework <nextjs|vite>]');
322
323
  console.log(' npx @major-tech/resource-client list');
323
- console.log('\nTypes: database-postgresql | database-mssql | database-dynamodb | database-cosmosdb | database-snowflake | api-hubspot | api-googlesheets | api-custom | api-lambda | storage-s3');
324
+ console.log('\nTypes: database-postgresql | database-mssql | database-dynamodb | database-cosmosdb | database-snowflake | api-hubspot | api-googlesheets | api-custom | api-lambda | api-salesforce | storage-s3');
324
325
  return;
325
326
  }
326
327
 
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+ var salesforce_exports = {};
21
+ __export(salesforce_exports, {
22
+ SalesforceResourceClient: () => SalesforceResourceClient
23
+ });
24
+ module.exports = __toCommonJS(salesforce_exports);
25
+ var import_base = require("../base");
26
+ class SalesforceResourceClient extends import_base.BaseResourceClient {
27
+ static {
28
+ __name(this, "SalesforceResourceClient");
29
+ }
30
+ /**
31
+ * Invoke a Salesforce API request
32
+ *
33
+ * @param method - HTTP method (GET, POST, PATCH, DELETE)
34
+ * @param path - Salesforce API path (e.g., "/services/data/v63.0/query")
35
+ * @param invocationKey - Unique key for this invocation (for tracking)
36
+ * @param options - Optional query params, body, and timeout
37
+ * @returns The API response with status and body
38
+ */
39
+ async invoke(method, path, invocationKey, options = {}) {
40
+ const payload = {
41
+ type: "api",
42
+ subtype: "salesforce",
43
+ method,
44
+ path,
45
+ query: options.query,
46
+ body: options.body,
47
+ timeoutMs: options.timeoutMs || 3e4
48
+ };
49
+ return this.invokeRaw(payload, invocationKey);
50
+ }
51
+ /**
52
+ * Execute a SOQL query
53
+ *
54
+ * @param query - SOQL query string
55
+ * @param invocationKey - Unique key for this invocation
56
+ * @param options - Optional timeout
57
+ * @returns Query results
58
+ *
59
+ * @example
60
+ * ```typescript
61
+ * const result = await client.query(
62
+ * "SELECT Id, Name, CreatedDate FROM Account WHERE CreatedDate > 2024-01-01T00:00:00Z",
63
+ * "recent-accounts"
64
+ * );
65
+ * ```
66
+ */
67
+ async query(query, invocationKey, options = {}) {
68
+ return this.invoke("GET", "/services/data/v63.0/query", invocationKey, {
69
+ query: { q: [query] },
70
+ timeoutMs: options.timeoutMs
71
+ });
72
+ }
73
+ /**
74
+ * Get a single record by ID
75
+ *
76
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
77
+ * @param recordId - The record ID
78
+ * @param invocationKey - Unique key for this invocation
79
+ * @param options - Optional fields to retrieve and timeout
80
+ * @returns The record data
81
+ */
82
+ async getRecord(objectType, recordId, invocationKey, options = {}) {
83
+ const query = {};
84
+ if (options.fields && options.fields.length > 0) {
85
+ query.fields = [options.fields.join(",")];
86
+ }
87
+ return this.invoke("GET", `/services/data/v63.0/sobjects/${objectType}/${recordId}`, invocationKey, { query: Object.keys(query).length > 0 ? query : void 0, timeoutMs: options.timeoutMs });
88
+ }
89
+ /**
90
+ * Create a new record
91
+ *
92
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
93
+ * @param data - Record data
94
+ * @param invocationKey - Unique key for this invocation
95
+ * @param options - Optional timeout
96
+ * @returns The created record ID
97
+ */
98
+ async createRecord(objectType, data, invocationKey, options = {}) {
99
+ return this.invoke("POST", `/services/data/v63.0/sobjects/${objectType}`, invocationKey, { body: { type: "json", value: data }, timeoutMs: options.timeoutMs });
100
+ }
101
+ /**
102
+ * Update an existing record
103
+ *
104
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
105
+ * @param recordId - The record ID to update
106
+ * @param data - Fields to update
107
+ * @param invocationKey - Unique key for this invocation
108
+ * @param options - Optional timeout
109
+ * @returns Empty response on success
110
+ */
111
+ async updateRecord(objectType, recordId, data, invocationKey, options = {}) {
112
+ return this.invoke("PATCH", `/services/data/v63.0/sobjects/${objectType}/${recordId}`, invocationKey, { body: { type: "json", value: data }, timeoutMs: options.timeoutMs });
113
+ }
114
+ /**
115
+ * Delete a record
116
+ *
117
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
118
+ * @param recordId - The record ID to delete
119
+ * @param invocationKey - Unique key for this invocation
120
+ * @param options - Optional timeout
121
+ * @returns Empty response on success
122
+ */
123
+ async deleteRecord(objectType, recordId, invocationKey, options = {}) {
124
+ return this.invoke("DELETE", `/services/data/v63.0/sobjects/${objectType}/${recordId}`, invocationKey, { timeoutMs: options.timeoutMs });
125
+ }
126
+ /**
127
+ * Describe an object to get its metadata
128
+ *
129
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
130
+ * @param invocationKey - Unique key for this invocation
131
+ * @param options - Optional timeout
132
+ * @returns Object metadata including fields, relationships, etc.
133
+ */
134
+ async describeObject(objectType, invocationKey, options = {}) {
135
+ return this.invoke("GET", `/services/data/v63.0/sobjects/${objectType}/describe`, invocationKey, { timeoutMs: options.timeoutMs });
136
+ }
137
+ }
138
+ //# sourceMappingURL=salesforce.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/clients/salesforce.ts"],
4
+ "sourcesContent": ["import type {\n HttpMethod,\n QueryParams,\n ApiSalesforcePayload,\n ApiInvokeResponse,\n} from \"../schemas\";\nimport { BaseResourceClient } from \"../base\";\n\n/**\n * Client for interacting with Salesforce API resources.\n *\n * This client provides a simple interface for making authenticated requests\n * to the Salesforce REST API. Authentication is handled automatically.\n *\n * @example\n * ```typescript\n * // Query accounts using SOQL\n * const result = await client.invoke(\n * \"GET\",\n * \"/services/data/v63.0/query\",\n * \"query-accounts\",\n * { query: { q: [\"SELECT Id, Name FROM Account LIMIT 10\"] } }\n * );\n *\n * // Get a specific account\n * const account = await client.invoke(\n * \"GET\",\n * \"/services/data/v63.0/sobjects/Account/001xx000003ABCDEF\",\n * \"get-account\"\n * );\n *\n * // Create a new account\n * const newAccount = await client.invoke(\n * \"POST\",\n * \"/services/data/v63.0/sobjects/Account\",\n * \"create-account\",\n * { body: { type: \"json\", value: { Name: \"Acme Corp\" } } }\n * );\n *\n * // Update an account\n * await client.invoke(\n * \"PATCH\",\n * \"/services/data/v63.0/sobjects/Account/001xx000003ABCDEF\",\n * \"update-account\",\n * { body: { type: \"json\", value: { Name: \"Updated Name\" } } }\n * );\n * ```\n */\nexport class SalesforceResourceClient extends BaseResourceClient {\n /**\n * Invoke a Salesforce API request\n *\n * @param method - HTTP method (GET, POST, PATCH, DELETE)\n * @param path - Salesforce API path (e.g., \"/services/data/v63.0/query\")\n * @param invocationKey - Unique key for this invocation (for tracking)\n * @param options - Optional query params, body, and timeout\n * @returns The API response with status and body\n */\n async invoke(\n method: HttpMethod,\n path: string,\n invocationKey: string,\n options: {\n query?: QueryParams;\n body?: { type: \"json\"; value: unknown };\n timeoutMs?: number;\n } = {}\n ): Promise<ApiInvokeResponse> {\n const payload: ApiSalesforcePayload = {\n type: \"api\",\n subtype: \"salesforce\",\n method,\n path,\n query: options.query,\n body: options.body,\n timeoutMs: options.timeoutMs || 30000,\n };\n\n return this.invokeRaw(payload, invocationKey) as Promise<ApiInvokeResponse>;\n }\n\n /**\n * Execute a SOQL query\n *\n * @param query - SOQL query string\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Query results\n *\n * @example\n * ```typescript\n * const result = await client.query(\n * \"SELECT Id, Name, CreatedDate FROM Account WHERE CreatedDate > 2024-01-01T00:00:00Z\",\n * \"recent-accounts\"\n * );\n * ```\n */\n async query(\n query: string,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\"GET\", \"/services/data/v63.0/query\", invocationKey, {\n query: { q: [query] },\n timeoutMs: options.timeoutMs,\n });\n }\n\n /**\n * Get a single record by ID\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId - The record ID\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional fields to retrieve and timeout\n * @returns The record data\n */\n async getRecord(\n objectType: string,\n recordId: string,\n invocationKey: string,\n options: { fields?: string[]; timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n const query: QueryParams = {};\n if (options.fields && options.fields.length > 0) {\n query.fields = [options.fields.join(\",\")];\n }\n\n return this.invoke(\n \"GET\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n invocationKey,\n { query: Object.keys(query).length > 0 ? query : undefined, timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Create a new record\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param data - Record data\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns The created record ID\n */\n async createRecord(\n objectType: string,\n data: Record<string, unknown>,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"POST\",\n `/services/data/v63.0/sobjects/${objectType}`,\n invocationKey,\n { body: { type: \"json\", value: data }, timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Update an existing record\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId - The record ID to update\n * @param data - Fields to update\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Empty response on success\n */\n async updateRecord(\n objectType: string,\n recordId: string,\n data: Record<string, unknown>,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"PATCH\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n invocationKey,\n { body: { type: \"json\", value: data }, timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Delete a record\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param recordId - The record ID to delete\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Empty response on success\n */\n async deleteRecord(\n objectType: string,\n recordId: string,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"DELETE\",\n `/services/data/v63.0/sobjects/${objectType}/${recordId}`,\n invocationKey,\n { timeoutMs: options.timeoutMs }\n );\n }\n\n /**\n * Describe an object to get its metadata\n *\n * @param objectType - Salesforce object type (e.g., \"Account\", \"Contact\")\n * @param invocationKey - Unique key for this invocation\n * @param options - Optional timeout\n * @returns Object metadata including fields, relationships, etc.\n */\n async describeObject(\n objectType: string,\n invocationKey: string,\n options: { timeoutMs?: number } = {}\n ): Promise<ApiInvokeResponse> {\n return this.invoke(\n \"GET\",\n `/services/data/v63.0/sobjects/${objectType}/describe`,\n invocationKey,\n { timeoutMs: options.timeoutMs }\n );\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAMA;;;;;AAAA,kBAAmC;AA0C7B,MAAO,iCAAiC,+BAAkB;EA1ChE,OA0CgE;;;;;;;;;;;;EAU9D,MAAM,OACJ,QACA,MACA,eACA,UAII,CAAA,GAAE;AAEN,UAAM,UAAgC;MACpC,MAAM;MACN,SAAS;MACT;MACA;MACA,OAAO,QAAQ;MACf,MAAM,QAAQ;MACd,WAAW,QAAQ,aAAa;;AAGlC,WAAO,KAAK,UAAU,SAAS,aAAa;EAC9C;;;;;;;;;;;;;;;;;EAkBA,MAAM,MACJ,OACA,eACA,UAAkC,CAAA,GAAE;AAEpC,WAAO,KAAK,OAAO,OAAO,8BAA8B,eAAe;MACrE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAC;MACnB,WAAW,QAAQ;KACpB;EACH;;;;;;;;;;EAWA,MAAM,UACJ,YACA,UACA,eACA,UAAqD,CAAA,GAAE;AAEvD,UAAM,QAAqB,CAAA;AAC3B,QAAI,QAAQ,UAAU,QAAQ,OAAO,SAAS,GAAG;AAC/C,YAAM,SAAS,CAAC,QAAQ,OAAO,KAAK,GAAG,CAAC;IAC1C;AAEA,WAAO,KAAK,OACV,OACA,iCAAiC,UAAU,IAAI,QAAQ,IACvD,eACA,EAAE,OAAO,OAAO,KAAK,KAAK,EAAE,SAAS,IAAI,QAAQ,QAAW,WAAW,QAAQ,UAAS,CAAE;EAE9F;;;;;;;;;;EAWA,MAAM,aACJ,YACA,MACA,eACA,UAAkC,CAAA,GAAE;AAEpC,WAAO,KAAK,OACV,QACA,iCAAiC,UAAU,IAC3C,eACA,EAAE,MAAM,EAAE,MAAM,QAAQ,OAAO,KAAI,GAAI,WAAW,QAAQ,UAAS,CAAE;EAEzE;;;;;;;;;;;EAYA,MAAM,aACJ,YACA,UACA,MACA,eACA,UAAkC,CAAA,GAAE;AAEpC,WAAO,KAAK,OACV,SACA,iCAAiC,UAAU,IAAI,QAAQ,IACvD,eACA,EAAE,MAAM,EAAE,MAAM,QAAQ,OAAO,KAAI,GAAI,WAAW,QAAQ,UAAS,CAAE;EAEzE;;;;;;;;;;EAWA,MAAM,aACJ,YACA,UACA,eACA,UAAkC,CAAA,GAAE;AAEpC,WAAO,KAAK,OACV,UACA,iCAAiC,UAAU,IAAI,QAAQ,IACvD,eACA,EAAE,WAAW,QAAQ,UAAS,CAAE;EAEpC;;;;;;;;;EAUA,MAAM,eACJ,YACA,eACA,UAAkC,CAAA,GAAE;AAEpC,WAAO,KAAK,OACV,OACA,iCAAiC,UAAU,aAC3C,eACA,EAAE,WAAW,QAAQ,UAAS,CAAE;EAEpC;;",
6
+ "names": []
7
+ }
@@ -0,0 +1,142 @@
1
+ import type { HttpMethod, QueryParams, ApiInvokeResponse } from "../schemas";
2
+ import { BaseResourceClient } from "../base";
3
+ /**
4
+ * Client for interacting with Salesforce API resources.
5
+ *
6
+ * This client provides a simple interface for making authenticated requests
7
+ * to the Salesforce REST API. Authentication is handled automatically.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // Query accounts using SOQL
12
+ * const result = await client.invoke(
13
+ * "GET",
14
+ * "/services/data/v63.0/query",
15
+ * "query-accounts",
16
+ * { query: { q: ["SELECT Id, Name FROM Account LIMIT 10"] } }
17
+ * );
18
+ *
19
+ * // Get a specific account
20
+ * const account = await client.invoke(
21
+ * "GET",
22
+ * "/services/data/v63.0/sobjects/Account/001xx000003ABCDEF",
23
+ * "get-account"
24
+ * );
25
+ *
26
+ * // Create a new account
27
+ * const newAccount = await client.invoke(
28
+ * "POST",
29
+ * "/services/data/v63.0/sobjects/Account",
30
+ * "create-account",
31
+ * { body: { type: "json", value: { Name: "Acme Corp" } } }
32
+ * );
33
+ *
34
+ * // Update an account
35
+ * await client.invoke(
36
+ * "PATCH",
37
+ * "/services/data/v63.0/sobjects/Account/001xx000003ABCDEF",
38
+ * "update-account",
39
+ * { body: { type: "json", value: { Name: "Updated Name" } } }
40
+ * );
41
+ * ```
42
+ */
43
+ export declare class SalesforceResourceClient extends BaseResourceClient {
44
+ /**
45
+ * Invoke a Salesforce API request
46
+ *
47
+ * @param method - HTTP method (GET, POST, PATCH, DELETE)
48
+ * @param path - Salesforce API path (e.g., "/services/data/v63.0/query")
49
+ * @param invocationKey - Unique key for this invocation (for tracking)
50
+ * @param options - Optional query params, body, and timeout
51
+ * @returns The API response with status and body
52
+ */
53
+ invoke(method: HttpMethod, path: string, invocationKey: string, options?: {
54
+ query?: QueryParams;
55
+ body?: {
56
+ type: "json";
57
+ value: unknown;
58
+ };
59
+ timeoutMs?: number;
60
+ }): Promise<ApiInvokeResponse>;
61
+ /**
62
+ * Execute a SOQL query
63
+ *
64
+ * @param query - SOQL query string
65
+ * @param invocationKey - Unique key for this invocation
66
+ * @param options - Optional timeout
67
+ * @returns Query results
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const result = await client.query(
72
+ * "SELECT Id, Name, CreatedDate FROM Account WHERE CreatedDate > 2024-01-01T00:00:00Z",
73
+ * "recent-accounts"
74
+ * );
75
+ * ```
76
+ */
77
+ query(query: string, invocationKey: string, options?: {
78
+ timeoutMs?: number;
79
+ }): Promise<ApiInvokeResponse>;
80
+ /**
81
+ * Get a single record by ID
82
+ *
83
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
84
+ * @param recordId - The record ID
85
+ * @param invocationKey - Unique key for this invocation
86
+ * @param options - Optional fields to retrieve and timeout
87
+ * @returns The record data
88
+ */
89
+ getRecord(objectType: string, recordId: string, invocationKey: string, options?: {
90
+ fields?: string[];
91
+ timeoutMs?: number;
92
+ }): Promise<ApiInvokeResponse>;
93
+ /**
94
+ * Create a new record
95
+ *
96
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
97
+ * @param data - Record data
98
+ * @param invocationKey - Unique key for this invocation
99
+ * @param options - Optional timeout
100
+ * @returns The created record ID
101
+ */
102
+ createRecord(objectType: string, data: Record<string, unknown>, invocationKey: string, options?: {
103
+ timeoutMs?: number;
104
+ }): Promise<ApiInvokeResponse>;
105
+ /**
106
+ * Update an existing record
107
+ *
108
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
109
+ * @param recordId - The record ID to update
110
+ * @param data - Fields to update
111
+ * @param invocationKey - Unique key for this invocation
112
+ * @param options - Optional timeout
113
+ * @returns Empty response on success
114
+ */
115
+ updateRecord(objectType: string, recordId: string, data: Record<string, unknown>, invocationKey: string, options?: {
116
+ timeoutMs?: number;
117
+ }): Promise<ApiInvokeResponse>;
118
+ /**
119
+ * Delete a record
120
+ *
121
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
122
+ * @param recordId - The record ID to delete
123
+ * @param invocationKey - Unique key for this invocation
124
+ * @param options - Optional timeout
125
+ * @returns Empty response on success
126
+ */
127
+ deleteRecord(objectType: string, recordId: string, invocationKey: string, options?: {
128
+ timeoutMs?: number;
129
+ }): Promise<ApiInvokeResponse>;
130
+ /**
131
+ * Describe an object to get its metadata
132
+ *
133
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
134
+ * @param invocationKey - Unique key for this invocation
135
+ * @param options - Optional timeout
136
+ * @returns Object metadata including fields, relationships, etc.
137
+ */
138
+ describeObject(objectType: string, invocationKey: string, options?: {
139
+ timeoutMs?: number;
140
+ }): Promise<ApiInvokeResponse>;
141
+ }
142
+ //# sourceMappingURL=salesforce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"salesforce.d.ts","sourceRoot":"","sources":["../../src/clients/salesforce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EAEX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D;;;;;;;;OAQG;IACG,MAAM,CACV,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QACP,KAAK,CAAC,EAAE,WAAW,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAC;QACxC,SAAS,CAAC,EAAE,MAAM,CAAC;KACf,GACL,OAAO,CAAC,iBAAiB,CAAC;IAc7B;;;;;;;;;;;;;;;OAeG;IACG,KAAK,CACT,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,iBAAiB,CAAC;IAO7B;;;;;;;;OAQG;IACG,SAAS,CACb,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACtD,OAAO,CAAC,iBAAiB,CAAC;IAc7B;;;;;;;;OAQG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,iBAAiB,CAAC;IAS7B;;;;;;;;;OASG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,iBAAiB,CAAC;IAS7B;;;;;;;;OAQG;IACG,YAAY,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,iBAAiB,CAAC;IAS7B;;;;;;;OAOG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACnC,OAAO,CAAC,iBAAiB,CAAC;CAQ9B"}
@@ -0,0 +1,151 @@
1
+ import { BaseResourceClient } from "../base";
2
+ /**
3
+ * Client for interacting with Salesforce API resources.
4
+ *
5
+ * This client provides a simple interface for making authenticated requests
6
+ * to the Salesforce REST API. Authentication is handled automatically.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // Query accounts using SOQL
11
+ * const result = await client.invoke(
12
+ * "GET",
13
+ * "/services/data/v63.0/query",
14
+ * "query-accounts",
15
+ * { query: { q: ["SELECT Id, Name FROM Account LIMIT 10"] } }
16
+ * );
17
+ *
18
+ * // Get a specific account
19
+ * const account = await client.invoke(
20
+ * "GET",
21
+ * "/services/data/v63.0/sobjects/Account/001xx000003ABCDEF",
22
+ * "get-account"
23
+ * );
24
+ *
25
+ * // Create a new account
26
+ * const newAccount = await client.invoke(
27
+ * "POST",
28
+ * "/services/data/v63.0/sobjects/Account",
29
+ * "create-account",
30
+ * { body: { type: "json", value: { Name: "Acme Corp" } } }
31
+ * );
32
+ *
33
+ * // Update an account
34
+ * await client.invoke(
35
+ * "PATCH",
36
+ * "/services/data/v63.0/sobjects/Account/001xx000003ABCDEF",
37
+ * "update-account",
38
+ * { body: { type: "json", value: { Name: "Updated Name" } } }
39
+ * );
40
+ * ```
41
+ */
42
+ export class SalesforceResourceClient extends BaseResourceClient {
43
+ /**
44
+ * Invoke a Salesforce API request
45
+ *
46
+ * @param method - HTTP method (GET, POST, PATCH, DELETE)
47
+ * @param path - Salesforce API path (e.g., "/services/data/v63.0/query")
48
+ * @param invocationKey - Unique key for this invocation (for tracking)
49
+ * @param options - Optional query params, body, and timeout
50
+ * @returns The API response with status and body
51
+ */
52
+ async invoke(method, path, invocationKey, options = {}) {
53
+ const payload = {
54
+ type: "api",
55
+ subtype: "salesforce",
56
+ method,
57
+ path,
58
+ query: options.query,
59
+ body: options.body,
60
+ timeoutMs: options.timeoutMs || 30000,
61
+ };
62
+ return this.invokeRaw(payload, invocationKey);
63
+ }
64
+ /**
65
+ * Execute a SOQL query
66
+ *
67
+ * @param query - SOQL query string
68
+ * @param invocationKey - Unique key for this invocation
69
+ * @param options - Optional timeout
70
+ * @returns Query results
71
+ *
72
+ * @example
73
+ * ```typescript
74
+ * const result = await client.query(
75
+ * "SELECT Id, Name, CreatedDate FROM Account WHERE CreatedDate > 2024-01-01T00:00:00Z",
76
+ * "recent-accounts"
77
+ * );
78
+ * ```
79
+ */
80
+ async query(query, invocationKey, options = {}) {
81
+ return this.invoke("GET", "/services/data/v63.0/query", invocationKey, {
82
+ query: { q: [query] },
83
+ timeoutMs: options.timeoutMs,
84
+ });
85
+ }
86
+ /**
87
+ * Get a single record by ID
88
+ *
89
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
90
+ * @param recordId - The record ID
91
+ * @param invocationKey - Unique key for this invocation
92
+ * @param options - Optional fields to retrieve and timeout
93
+ * @returns The record data
94
+ */
95
+ async getRecord(objectType, recordId, invocationKey, options = {}) {
96
+ const query = {};
97
+ if (options.fields && options.fields.length > 0) {
98
+ query.fields = [options.fields.join(",")];
99
+ }
100
+ return this.invoke("GET", `/services/data/v63.0/sobjects/${objectType}/${recordId}`, invocationKey, { query: Object.keys(query).length > 0 ? query : undefined, timeoutMs: options.timeoutMs });
101
+ }
102
+ /**
103
+ * Create a new record
104
+ *
105
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
106
+ * @param data - Record data
107
+ * @param invocationKey - Unique key for this invocation
108
+ * @param options - Optional timeout
109
+ * @returns The created record ID
110
+ */
111
+ async createRecord(objectType, data, invocationKey, options = {}) {
112
+ return this.invoke("POST", `/services/data/v63.0/sobjects/${objectType}`, invocationKey, { body: { type: "json", value: data }, timeoutMs: options.timeoutMs });
113
+ }
114
+ /**
115
+ * Update an existing record
116
+ *
117
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
118
+ * @param recordId - The record ID to update
119
+ * @param data - Fields to update
120
+ * @param invocationKey - Unique key for this invocation
121
+ * @param options - Optional timeout
122
+ * @returns Empty response on success
123
+ */
124
+ async updateRecord(objectType, recordId, data, invocationKey, options = {}) {
125
+ return this.invoke("PATCH", `/services/data/v63.0/sobjects/${objectType}/${recordId}`, invocationKey, { body: { type: "json", value: data }, timeoutMs: options.timeoutMs });
126
+ }
127
+ /**
128
+ * Delete a record
129
+ *
130
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
131
+ * @param recordId - The record ID to delete
132
+ * @param invocationKey - Unique key for this invocation
133
+ * @param options - Optional timeout
134
+ * @returns Empty response on success
135
+ */
136
+ async deleteRecord(objectType, recordId, invocationKey, options = {}) {
137
+ return this.invoke("DELETE", `/services/data/v63.0/sobjects/${objectType}/${recordId}`, invocationKey, { timeoutMs: options.timeoutMs });
138
+ }
139
+ /**
140
+ * Describe an object to get its metadata
141
+ *
142
+ * @param objectType - Salesforce object type (e.g., "Account", "Contact")
143
+ * @param invocationKey - Unique key for this invocation
144
+ * @param options - Optional timeout
145
+ * @returns Object metadata including fields, relationships, etc.
146
+ */
147
+ async describeObject(objectType, invocationKey, options = {}) {
148
+ return this.invoke("GET", `/services/data/v63.0/sobjects/${objectType}/describe`, invocationKey, { timeoutMs: options.timeoutMs });
149
+ }
150
+ }
151
+ //# sourceMappingURL=salesforce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"salesforce.js","sourceRoot":"","sources":["../../src/clients/salesforce.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,OAAO,wBAAyB,SAAQ,kBAAkB;IAC9D;;;;;;;;OAQG;IACH,KAAK,CAAC,MAAM,CACV,MAAkB,EAClB,IAAY,EACZ,aAAqB,EACrB,UAII,EAAE;QAEN,MAAM,OAAO,GAAyB;YACpC,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,YAAY;YACrB,MAAM;YACN,IAAI;YACJ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;SACtC,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAA+B,CAAC;IAC9E,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,KAAK,CACT,KAAa,EACb,aAAqB,EACrB,UAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,4BAA4B,EAAE,aAAa,EAAE;YACrE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YACrB,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CACb,UAAkB,EAClB,QAAgB,EAChB,aAAqB,EACrB,UAAqD,EAAE;QAEvD,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAChB,KAAK,EACL,iCAAiC,UAAU,IAAI,QAAQ,EAAE,EACzD,aAAa,EACb,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAC3F,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAChB,UAAkB,EAClB,IAA6B,EAC7B,aAAqB,EACrB,UAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,MAAM,CAChB,MAAM,EACN,iCAAiC,UAAU,EAAE,EAC7C,aAAa,EACb,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACtE,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,YAAY,CAChB,UAAkB,EAClB,QAAgB,EAChB,IAA6B,EAC7B,aAAqB,EACrB,UAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,MAAM,CAChB,OAAO,EACP,iCAAiC,UAAU,IAAI,QAAQ,EAAE,EACzD,aAAa,EACb,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACtE,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAChB,UAAkB,EAClB,QAAgB,EAChB,aAAqB,EACrB,UAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,MAAM,CAChB,QAAQ,EACR,iCAAiC,UAAU,IAAI,QAAQ,EAAE,EACzD,aAAa,EACb,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACjC,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAClB,UAAkB,EAClB,aAAqB,EACrB,UAAkC,EAAE;QAEpC,OAAO,IAAI,CAAC,MAAM,CAChB,KAAK,EACL,iCAAiC,UAAU,WAAW,EACtD,aAAa,EACb,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CACjC,CAAC;IACJ,CAAC;CACF"}
package/dist/index.cjs CHANGED
@@ -30,6 +30,7 @@ __export(index_exports, {
30
30
  PostgresResourceClient: () => import_postgres.PostgresResourceClient,
31
31
  ResourceInvokeError: () => import_errors.ResourceInvokeError,
32
32
  S3ResourceClient: () => import_s3.S3ResourceClient,
33
+ SalesforceResourceClient: () => import_salesforce.SalesforceResourceClient,
33
34
  SnowflakeResourceClient: () => import_snowflake.SnowflakeResourceClient
34
35
  });
35
36
  module.exports = __toCommonJS(index_exports);
@@ -43,6 +44,7 @@ var import_cosmosdb = require("./clients/cosmosdb");
43
44
  var import_snowflake = require("./clients/snowflake");
44
45
  var import_api_custom = require("./clients/api-custom");
45
46
  var import_hubspot = require("./clients/hubspot");
47
+ var import_salesforce = require("./clients/salesforce");
46
48
  var import_googlesheets = require("./clients/googlesheets");
47
49
  var import_s3 = require("./clients/s3");
48
50
  var import_lambda = require("./clients/lambda");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["// Export all schemas and types\nexport * from \"./schemas\";\n\n// Export base client and config\nexport { BaseResourceClient, type BaseClientConfig } from \"./base\";\n\n// Export errors\nexport { ResourceInvokeError } from \"./errors\";\n\n// Export individual clients\nexport { PostgresResourceClient } from \"./clients/postgres\";\nexport { MssqlResourceClient } from \"./clients/mssql\";\nexport { DynamoDBResourceClient } from \"./clients/dynamodb\";\nexport { CosmosDBResourceClient } from \"./clients/cosmosdb\";\nexport { SnowflakeResourceClient } from \"./clients/snowflake\";\nexport { CustomApiResourceClient } from \"./clients/api-custom\";\nexport { HubSpotResourceClient } from \"./clients/hubspot\";\nexport { GoogleSheetsResourceClient } from \"./clients/googlesheets\";\nexport { S3ResourceClient } from \"./clients/s3\";\nexport { LambdaResourceClient } from \"./clients/lambda\";\n\n// Re-export common response types for convenience\nexport type {\n DatabaseInvokeResponse,\n DynamoDBInvokeResponse,\n CosmosDBInvokeResponse,\n SnowflakeInvokeResponse,\n ApiInvokeResponse,\n StorageInvokeResponse,\n LambdaInvokeResponse,\n BaseInvokeSuccess,\n} from \"./schemas/response\";\n\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;AACA,0BAAc,sBADd;AAIA,kBAA0D;AAG1D,oBAAoC;AAGpC,sBAAuC;AACvC,mBAAoC;AACpC,sBAAuC;AACvC,sBAAuC;AACvC,uBAAwC;AACxC,wBAAwC;AACxC,qBAAsC;AACtC,0BAA2C;AAC3C,gBAAiC;AACjC,oBAAqC;",
4
+ "sourcesContent": ["// Export all schemas and types\nexport * from \"./schemas\";\n\n// Export base client and config\nexport { BaseResourceClient, type BaseClientConfig } from \"./base\";\n\n// Export errors\nexport { ResourceInvokeError } from \"./errors\";\n\n// Export individual clients\nexport { PostgresResourceClient } from \"./clients/postgres\";\nexport { MssqlResourceClient } from \"./clients/mssql\";\nexport { DynamoDBResourceClient } from \"./clients/dynamodb\";\nexport { CosmosDBResourceClient } from \"./clients/cosmosdb\";\nexport { SnowflakeResourceClient } from \"./clients/snowflake\";\nexport { CustomApiResourceClient } from \"./clients/api-custom\";\nexport { HubSpotResourceClient } from \"./clients/hubspot\";\nexport { SalesforceResourceClient } from \"./clients/salesforce\";\nexport { GoogleSheetsResourceClient } from \"./clients/googlesheets\";\nexport { S3ResourceClient } from \"./clients/s3\";\nexport { LambdaResourceClient } from \"./clients/lambda\";\n\n// Re-export common response types for convenience\nexport type {\n DatabaseInvokeResponse,\n DynamoDBInvokeResponse,\n CosmosDBInvokeResponse,\n SnowflakeInvokeResponse,\n ApiInvokeResponse,\n StorageInvokeResponse,\n LambdaInvokeResponse,\n BaseInvokeSuccess,\n} from \"./schemas/response\";\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;AACA,0BAAc,sBADd;AAIA,kBAA0D;AAG1D,oBAAoC;AAGpC,sBAAuC;AACvC,mBAAoC;AACpC,sBAAuC;AACvC,sBAAuC;AACvC,uBAAwC;AACxC,wBAAwC;AACxC,qBAAsC;AACtC,wBAAyC;AACzC,0BAA2C;AAC3C,gBAAiC;AACjC,oBAAqC;",
6
6
  "names": []
7
7
  }
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export { CosmosDBResourceClient } from "./clients/cosmosdb";
8
8
  export { SnowflakeResourceClient } from "./clients/snowflake";
9
9
  export { CustomApiResourceClient } from "./clients/api-custom";
10
10
  export { HubSpotResourceClient } from "./clients/hubspot";
11
+ export { SalesforceResourceClient } from "./clients/salesforce";
11
12
  export { GoogleSheetsResourceClient } from "./clients/googlesheets";
12
13
  export { S3ResourceClient } from "./clients/s3";
13
14
  export { LambdaResourceClient } from "./clients/lambda";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAGnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAGnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGxD,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ export { CosmosDBResourceClient } from "./clients/cosmosdb";
12
12
  export { SnowflakeResourceClient } from "./clients/snowflake";
13
13
  export { CustomApiResourceClient } from "./clients/api-custom";
14
14
  export { HubSpotResourceClient } from "./clients/hubspot";
15
+ export { SalesforceResourceClient } from "./clients/salesforce";
15
16
  export { GoogleSheetsResourceClient } from "./clients/googlesheets";
16
17
  export { S3ResourceClient } from "./clients/s3";
17
18
  export { LambdaResourceClient } from "./clients/lambda";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,WAAW,CAAC;AAE1B,gCAAgC;AAChC,OAAO,EAAE,kBAAkB,EAAyB,MAAM,QAAQ,CAAC;AAEnE,gBAAgB;AAChB,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,4BAA4B;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,WAAW,CAAC;AAE1B,gCAAgC;AAChC,OAAO,EAAE,kBAAkB,EAAyB,MAAM,QAAQ,CAAC;AAEnE,gBAAgB;AAChB,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,4BAA4B;AAC5B,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var api_salesforce_exports = {};
16
+ module.exports = __toCommonJS(api_salesforce_exports);
17
+ //# sourceMappingURL=api-salesforce.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["api-salesforce.js"],
4
+ "sourcesContent": ["export {};\n//# sourceMappingURL=api-salesforce.js.map"],
5
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
6
+ "names": []
7
+ }
@@ -0,0 +1,28 @@
1
+ import type { JsonBody, HttpMethod, QueryParams } from "./common";
2
+ /**
3
+ * Payload for invoking a Salesforce API resource
4
+ * Note: Salesforce authentication is handled automatically by the API
5
+ *
6
+ * Common usage patterns:
7
+ * - SOQL Query: GET /services/data/v63.0/query?q=SELECT+Id,Name+FROM+Account
8
+ * - Get Record: GET /services/data/v63.0/sobjects/Account/{id}
9
+ * - Create Record: POST /services/data/v63.0/sobjects/Account
10
+ * - Update Record: PATCH /services/data/v63.0/sobjects/Account/{id}
11
+ * - Delete Record: DELETE /services/data/v63.0/sobjects/Account/{id}
12
+ * - Describe Object: GET /services/data/v63.0/sobjects/Account/describe
13
+ */
14
+ export interface ApiSalesforcePayload {
15
+ type: "api";
16
+ subtype: "salesforce";
17
+ /** HTTP method to use */
18
+ method: HttpMethod;
19
+ /** Salesforce API path (e.g., "/services/data/v63.0/query" or "/services/data/v63.0/sobjects/Account") */
20
+ path: string;
21
+ /** Optional query parameters (e.g., { q: ["SELECT Id FROM Account"] } for SOQL) */
22
+ query?: QueryParams;
23
+ /** Optional JSON body (for POST/PATCH requests) */
24
+ body?: JsonBody;
25
+ /** Optional timeout in milliseconds (default: 30000) */
26
+ timeoutMs?: number;
27
+ }
28
+ //# sourceMappingURL=api-salesforce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-salesforce.d.ts","sourceRoot":"","sources":["../../src/schemas/api-salesforce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,YAAY,CAAC;IACtB,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,0GAA0G;IAC1G,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,mDAAmD;IACnD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=api-salesforce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-salesforce.js","sourceRoot":"","sources":["../../src/schemas/api-salesforce.ts"],"names":[],"mappings":""}
@@ -24,6 +24,7 @@ __reExport(index_exports, require("./snowflake"), module.exports);
24
24
  __reExport(index_exports, require("./s3"), module.exports);
25
25
  __reExport(index_exports, require("./api-custom"), module.exports);
26
26
  __reExport(index_exports, require("./api-hubspot"), module.exports);
27
+ __reExport(index_exports, require("./api-salesforce"), module.exports);
27
28
  __reExport(index_exports, require("./api-googlesheets"), module.exports);
28
29
  __reExport(index_exports, require("./lambda"), module.exports);
29
30
  __reExport(index_exports, require("./request"), module.exports);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/schemas/index.ts"],
4
- "sourcesContent": ["// Re-export all types\nexport * from \"./common\";\nexport * from \"./postgres\";\nexport * from \"./mssql\";\nexport * from \"./dynamodb\";\nexport * from \"./cosmosdb\";\nexport * from \"./snowflake\";\nexport * from \"./s3\";\nexport * from \"./api-custom\";\nexport * from \"./api-hubspot\";\nexport * from \"./api-googlesheets\";\nexport * from \"./lambda\";\nexport * from \"./request\";\nexport * from \"./response\";\n\n// Import for discriminated union\nimport type { ApiCustomPayload } from \"./api-custom\";\nimport type { ApiHubSpotPayload } from \"./api-hubspot\";\nimport type { ApiGoogleSheetsPayload } from \"./api-googlesheets\";\nimport type { DbPostgresPayload } from \"./postgres\";\nimport type { DbMssqlPayload } from \"./mssql\";\nimport type { DbDynamoDBPayload } from \"./dynamodb\";\nimport type { DbCosmosDBPayload } from \"./cosmosdb\";\nimport type { DbSnowflakePayload } from \"./snowflake\";\nimport type { StorageS3Payload } from \"./s3\";\nimport type { ApiLambdaPayload } from \"./lambda\";\n\n/**\n * Discriminated union of all resource payload types\n * Use the 'subtype' field to narrow the type\n */\nexport type ResourceInvokePayload =\n | ApiCustomPayload\n | DbPostgresPayload\n | DbMssqlPayload\n | DbDynamoDBPayload\n | DbCosmosDBPayload\n | DbSnowflakePayload\n | ApiHubSpotPayload\n | ApiGoogleSheetsPayload\n | StorageS3Payload\n | ApiLambdaPayload;\n\n"],
5
- "mappings": ";;;;;;;;;;;;;;;AAAA;;AACA,0BAAc,qBADd;AAEA,0BAAc,uBAFd;AAGA,0BAAc,oBAHd;AAIA,0BAAc,uBAJd;AAKA,0BAAc,uBALd;AAMA,0BAAc,wBANd;AAOA,0BAAc,iBAPd;AAQA,0BAAc,yBARd;AASA,0BAAc,0BATd;AAUA,0BAAc,+BAVd;AAWA,0BAAc,qBAXd;AAYA,0BAAc,sBAZd;AAaA,0BAAc,uBAbd;",
4
+ "sourcesContent": ["// Re-export all types\nexport * from \"./common\";\nexport * from \"./postgres\";\nexport * from \"./mssql\";\nexport * from \"./dynamodb\";\nexport * from \"./cosmosdb\";\nexport * from \"./snowflake\";\nexport * from \"./s3\";\nexport * from \"./api-custom\";\nexport * from \"./api-hubspot\";\nexport * from \"./api-salesforce\";\nexport * from \"./api-googlesheets\";\nexport * from \"./lambda\";\nexport * from \"./request\";\nexport * from \"./response\";\n\n// Import for discriminated union\nimport type { ApiCustomPayload } from \"./api-custom\";\nimport type { ApiHubSpotPayload } from \"./api-hubspot\";\nimport type { ApiSalesforcePayload } from \"./api-salesforce\";\nimport type { ApiGoogleSheetsPayload } from \"./api-googlesheets\";\nimport type { DbPostgresPayload } from \"./postgres\";\nimport type { DbMssqlPayload } from \"./mssql\";\nimport type { DbDynamoDBPayload } from \"./dynamodb\";\nimport type { DbCosmosDBPayload } from \"./cosmosdb\";\nimport type { DbSnowflakePayload } from \"./snowflake\";\nimport type { StorageS3Payload } from \"./s3\";\nimport type { ApiLambdaPayload } from \"./lambda\";\n\n/**\n * Discriminated union of all resource payload types\n * Use the 'subtype' field to narrow the type\n */\nexport type ResourceInvokePayload =\n | ApiCustomPayload\n | DbPostgresPayload\n | DbMssqlPayload\n | DbDynamoDBPayload\n | DbCosmosDBPayload\n | DbSnowflakePayload\n | ApiHubSpotPayload\n | ApiSalesforcePayload\n | ApiGoogleSheetsPayload\n | StorageS3Payload\n | ApiLambdaPayload;\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;AAAA;;AACA,0BAAc,qBADd;AAEA,0BAAc,uBAFd;AAGA,0BAAc,oBAHd;AAIA,0BAAc,uBAJd;AAKA,0BAAc,uBALd;AAMA,0BAAc,wBANd;AAOA,0BAAc,iBAPd;AAQA,0BAAc,yBARd;AASA,0BAAc,0BATd;AAUA,0BAAc,6BAVd;AAWA,0BAAc,+BAXd;AAYA,0BAAc,qBAZd;AAaA,0BAAc,sBAbd;AAcA,0BAAc,uBAdd;",
6
6
  "names": []
7
7
  }
@@ -7,12 +7,14 @@ export * from "./snowflake";
7
7
  export * from "./s3";
8
8
  export * from "./api-custom";
9
9
  export * from "./api-hubspot";
10
+ export * from "./api-salesforce";
10
11
  export * from "./api-googlesheets";
11
12
  export * from "./lambda";
12
13
  export * from "./request";
13
14
  export * from "./response";
14
15
  import type { ApiCustomPayload } from "./api-custom";
15
16
  import type { ApiHubSpotPayload } from "./api-hubspot";
17
+ import type { ApiSalesforcePayload } from "./api-salesforce";
16
18
  import type { ApiGoogleSheetsPayload } from "./api-googlesheets";
17
19
  import type { DbPostgresPayload } from "./postgres";
18
20
  import type { DbMssqlPayload } from "./mssql";
@@ -25,5 +27,5 @@ import type { ApiLambdaPayload } from "./lambda";
25
27
  * Discriminated union of all resource payload types
26
28
  * Use the 'subtype' field to narrow the type
27
29
  */
28
- export type ResourceInvokePayload = ApiCustomPayload | DbPostgresPayload | DbMssqlPayload | DbDynamoDBPayload | DbCosmosDBPayload | DbSnowflakePayload | ApiHubSpotPayload | ApiGoogleSheetsPayload | StorageS3Payload | ApiLambdaPayload;
30
+ export type ResourceInvokePayload = ApiCustomPayload | DbPostgresPayload | DbMssqlPayload | DbDynamoDBPayload | DbCosmosDBPayload | DbSnowflakePayload | ApiHubSpotPayload | ApiSalesforcePayload | ApiGoogleSheetsPayload | StorageS3Payload | ApiLambdaPayload;
29
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAG3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,sBAAsB,GACtB,gBAAgB,GAChB,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAG3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,iBAAiB,GACjB,oBAAoB,GACpB,sBAAsB,GACtB,gBAAgB,GAChB,gBAAgB,CAAC"}
@@ -8,6 +8,7 @@ export * from "./snowflake";
8
8
  export * from "./s3";
9
9
  export * from "./api-custom";
10
10
  export * from "./api-hubspot";
11
+ export * from "./api-salesforce";
11
12
  export * from "./api-googlesheets";
12
13
  export * from "./lambda";
13
14
  export * from "./request";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,MAAM,CAAC;AACrB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@major-tech/resource-client",
3
- "version": "0.2.13",
3
+ "version": "0.2.15",
4
4
  "description": "TypeScript client library for invoking Major resources (PostgreSQL, Custom APIs, HubSpot, S3)",
5
5
  "type": "module",
6
6
  "sideEffects": false,