@ingeno/pipedream-services 1.0.74 → 1.0.76

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.
Files changed (60) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/slack/example.d.ts +3 -0
  6. package/dist/slack/example.d.ts.map +1 -0
  7. package/dist/slack/example.js +49 -0
  8. package/dist/slack/example.js.map +1 -0
  9. package/dist/slack/index.d.ts +2 -0
  10. package/dist/slack/index.d.ts.map +1 -0
  11. package/dist/slack/index.js +2 -0
  12. package/dist/slack/index.js.map +1 -0
  13. package/dist/slack/slack-service.d.ts +72 -0
  14. package/dist/slack/slack-service.d.ts.map +1 -0
  15. package/dist/slack/slack-service.js +138 -0
  16. package/dist/slack/slack-service.js.map +1 -0
  17. package/dist/zoho-crm/zoho-crm-fetcher.d.ts.map +1 -1
  18. package/dist/zoho-crm/zoho-crm-fetcher.js +25 -42
  19. package/dist/zoho-crm/zoho-crm-fetcher.js.map +1 -1
  20. package/package.json +7 -2
  21. package/dist/aws/apn/partner-central-client.test.d.ts +0 -2
  22. package/dist/aws/apn/partner-central-client.test.d.ts.map +0 -1
  23. package/dist/aws/apn/partner-central-client.test.js +0 -38
  24. package/dist/aws/apn/partner-central-client.test.js.map +0 -1
  25. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.d.ts +0 -2
  26. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.d.ts.map +0 -1
  27. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.js +0 -34
  28. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.js.map +0 -1
  29. package/dist/aws/aws-list-stream.test.d.ts +0 -3
  30. package/dist/aws/aws-list-stream.test.d.ts.map +0 -1
  31. package/dist/aws/aws-list-stream.test.js +0 -50
  32. package/dist/aws/aws-list-stream.test.js.map +0 -1
  33. package/dist/collections/collections-to-table-stream.test.d.ts +0 -2
  34. package/dist/collections/collections-to-table-stream.test.d.ts.map +0 -1
  35. package/dist/collections/collections-to-table-stream.test.js +0 -70
  36. package/dist/collections/collections-to-table-stream.test.js.map +0 -1
  37. package/dist/collections/collections-to-table.test.d.ts +0 -2
  38. package/dist/collections/collections-to-table.test.d.ts.map +0 -1
  39. package/dist/collections/collections-to-table.test.js +0 -105
  40. package/dist/collections/collections-to-table.test.js.map +0 -1
  41. package/dist/collections/converter.test.d.ts +0 -2
  42. package/dist/collections/converter.test.d.ts.map +0 -1
  43. package/dist/collections/converter.test.js +0 -304
  44. package/dist/collections/converter.test.js.map +0 -1
  45. package/dist/postgres/postgres-test-connection.test.d.ts +0 -2
  46. package/dist/postgres/postgres-test-connection.test.d.ts.map +0 -1
  47. package/dist/postgres/postgres-test-connection.test.js +0 -68
  48. package/dist/postgres/postgres-test-connection.test.js.map +0 -1
  49. package/dist/postgres/postgres.test.d.ts +0 -2
  50. package/dist/postgres/postgres.test.d.ts.map +0 -1
  51. package/dist/postgres/postgres.test.js +0 -497
  52. package/dist/postgres/postgres.test.js.map +0 -1
  53. package/dist/streams/list-stream.test.d.ts +0 -2
  54. package/dist/streams/list-stream.test.d.ts.map +0 -1
  55. package/dist/streams/list-stream.test.js +0 -169
  56. package/dist/streams/list-stream.test.js.map +0 -1
  57. package/dist/zoho-crm/zoho-crm-client.test.d.ts +0 -2
  58. package/dist/zoho-crm/zoho-crm-client.test.d.ts.map +0 -1
  59. package/dist/zoho-crm/zoho-crm-client.test.js +0 -341
  60. package/dist/zoho-crm/zoho-crm-client.test.js.map +0 -1
@@ -1,169 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { firstValueFrom, toArray } from 'rxjs';
3
- import { createPaginatedStream } from './list-stream.js';
4
- describe('createPaginatedStream', () => {
5
- it('should handle single page with no nextPageToken', async () => {
6
- const mockItems = [
7
- { id: 1, name: 'Item 1' },
8
- { id: 2, name: 'Item 2' }
9
- ];
10
- let callCount = 0;
11
- const mockPaginatedFn = async (options) => {
12
- callCount++;
13
- if (callCount === 1) {
14
- expect(options.nextPageToken).toBeUndefined();
15
- return {
16
- items: mockItems,
17
- nextPageToken: undefined
18
- };
19
- }
20
- throw new Error('Should not be called again');
21
- };
22
- const stream = createPaginatedStream(mockPaginatedFn, {});
23
- const result = await firstValueFrom(stream.pipe(toArray()));
24
- expect(result).toEqual(mockItems);
25
- expect(callCount).toBe(1);
26
- });
27
- it('should handle multiple pages with nextPageToken', async () => {
28
- const page1Items = [
29
- { id: 1, name: 'Item 1' },
30
- { id: 2, name: 'Item 2' }
31
- ];
32
- const page2Items = [
33
- { id: 3, name: 'Item 3' },
34
- { id: 4, name: 'Item 4' }
35
- ];
36
- let callCount = 0;
37
- const mockPaginatedFn = async (options) => {
38
- callCount++;
39
- if (callCount === 1) {
40
- expect(options.nextPageToken).toBeUndefined();
41
- return {
42
- items: page1Items,
43
- nextPageToken: 'token-page-2'
44
- };
45
- }
46
- else if (callCount === 2) {
47
- expect(options.nextPageToken).toBe('token-page-2');
48
- return {
49
- items: page2Items,
50
- nextPageToken: undefined
51
- };
52
- }
53
- throw new Error('Unexpected call');
54
- };
55
- const stream = createPaginatedStream(mockPaginatedFn, {});
56
- const result = await firstValueFrom(stream.pipe(toArray()));
57
- expect(result).toEqual([...page1Items, ...page2Items]);
58
- expect(callCount).toBe(2);
59
- });
60
- it('should handle three pages with proper token progression', async () => {
61
- const pages = [
62
- [{ id: 1, name: 'Item 1' }],
63
- [{ id: 2, name: 'Item 2' }],
64
- [{ id: 3, name: 'Item 3' }]
65
- ];
66
- const tokens = [undefined, 'token-2', 'token-3'];
67
- const nextTokens = ['token-2', 'token-3', undefined];
68
- let callCount = 0;
69
- const mockPaginatedFn = async (options) => {
70
- expect(options.nextPageToken).toBe(tokens[callCount]);
71
- const result = {
72
- items: pages[callCount],
73
- nextPageToken: nextTokens[callCount]
74
- };
75
- callCount++;
76
- return result;
77
- };
78
- const stream = createPaginatedStream(mockPaginatedFn, { pageSize: 1 });
79
- const result = await firstValueFrom(stream.pipe(toArray()));
80
- expect(result).toEqual(pages.flat());
81
- expect(callCount).toBe(3);
82
- });
83
- it('should handle empty results', async () => {
84
- const mockPaginatedFn = async (_options) => {
85
- return {
86
- items: [],
87
- nextPageToken: undefined
88
- };
89
- };
90
- const stream = createPaginatedStream(mockPaginatedFn, {});
91
- const result = await firstValueFrom(stream.pipe(toArray()));
92
- expect(result).toEqual([]);
93
- });
94
- it('should preserve options across pagination calls', async () => {
95
- const testOptions = {
96
- pageSize: 10,
97
- };
98
- let callCount = 0;
99
- const mockPaginatedFn = async (options) => {
100
- callCount++;
101
- expect(options.pageSize).toBe(10);
102
- if (callCount === 1) {
103
- expect(options.nextPageToken).toBeUndefined();
104
- return {
105
- items: [{ id: 1, name: 'Phone' }],
106
- nextPageToken: 'next-token'
107
- };
108
- }
109
- else {
110
- expect(options.nextPageToken).toBe('next-token');
111
- return {
112
- items: [{ id: 2, name: 'Laptop' }],
113
- nextPageToken: undefined
114
- };
115
- }
116
- };
117
- const stream = createPaginatedStream(mockPaginatedFn, testOptions);
118
- const result = await firstValueFrom(stream.pipe(toArray()));
119
- expect(result).toEqual([
120
- { id: 1, name: 'Phone' },
121
- { id: 2, name: 'Laptop' }
122
- ]);
123
- expect(callCount).toBe(2);
124
- });
125
- it('should handle pages with mixed item counts', async () => {
126
- let callCount = 0;
127
- const mockPaginatedFn = async (_options) => {
128
- callCount++;
129
- if (callCount === 1) {
130
- return {
131
- items: [
132
- { id: 1, name: 'Item 1' },
133
- { id: 2, name: 'Item 2' },
134
- { id: 3, name: 'Item 3' }
135
- ],
136
- nextPageToken: 'page-2'
137
- };
138
- }
139
- else if (callCount === 2) {
140
- return {
141
- items: [{ id: 4, name: 'Item 4' }],
142
- nextPageToken: 'page-3'
143
- };
144
- }
145
- else {
146
- return {
147
- items: [],
148
- nextPageToken: undefined
149
- };
150
- }
151
- };
152
- const stream = createPaginatedStream(mockPaginatedFn, {});
153
- const result = await firstValueFrom(stream.pipe(toArray()));
154
- expect(result).toEqual([
155
- { id: 1, name: 'Item 1' },
156
- { id: 2, name: 'Item 2' },
157
- { id: 3, name: 'Item 3' },
158
- { id: 4, name: 'Item 4' }
159
- ]);
160
- });
161
- it('should propagate errors from paginated function', async () => {
162
- const mockPaginatedFn = async (_options) => {
163
- throw new Error('API Error');
164
- };
165
- const stream = createPaginatedStream(mockPaginatedFn, {});
166
- await expect(firstValueFrom(stream.pipe(toArray()))).rejects.toThrow('API Error');
167
- });
168
- });
169
- //# sourceMappingURL=list-stream.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list-stream.test.js","sourceRoot":"","sources":["../../src/streams/list-stream.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=zoho-crm-client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zoho-crm-client.test.d.ts","sourceRoot":"","sources":["../../src/zoho-crm/zoho-crm-client.test.ts"],"names":[],"mappings":""}
@@ -1,341 +0,0 @@
1
- import dotenv from 'dotenv';
2
- dotenv.config({ path: path.resolve(process.cwd(), '../../.env') });
3
- import path from 'path';
4
- import { beforeAll, describe, expect, it } from 'vitest';
5
- import { zohoTestCredentials } from '@ingeno/pipedream-simulator';
6
- import { ZohoCRMClient } from './zoho-crm-client.js';
7
- describe('ZohoCRM Real Integration Tests', () => {
8
- let client;
9
- const testOpportunityId = `TEST-OPP-TO-DELETE`;
10
- const testOpportunityName = `Test APN Opportunity - Safe to delete`;
11
- beforeAll(async () => {
12
- console.log('🧪 Setting up real Zoho CRM integration test...');
13
- const credentials = await zohoTestCredentials();
14
- client = new ZohoCRMClient({
15
- accessToken: credentials.oauth_access_token,
16
- apiDomain: credentials.api_domain,
17
- });
18
- console.log('āœ… Authenticated client created successfully');
19
- }, 30000); // 30 second timeout for auth
20
- it('should add an APN opportunity if it does not exist', async () => {
21
- console.log('🧪 Testing real APN Opportunity creation...');
22
- // Define the opportunity data to create
23
- const opportunityData = {
24
- Opportunity_Id: testOpportunityId,
25
- Name: testOpportunityName,
26
- Customer_Name: 'Test Customer Corp',
27
- Opportunity_Type: 'Migration',
28
- Status: 'Active',
29
- Value: 75000,
30
- Description: 'Test opportunity created by automated integration test',
31
- Expected_Close_Date: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0], // 30 days from now
32
- Stage: 'Prospecting',
33
- Source: 'API Integration Test'
34
- };
35
- // Step 1: Search for existing opportunity with the same Opportunity_Id
36
- console.log(`šŸ” Searching for existing opportunity with ID: "${testOpportunityId}"`);
37
- const searchResults = await client.searchAPNOpportunities(`Opportunity_Id:equals:${testOpportunityId}`, { fields: ['id', 'Opportunity_Id', 'Name', 'Customer_Name', 'Status'] });
38
- let opportunityId;
39
- if (searchResults.data && searchResults.data.length > 0) {
40
- const opportunity = searchResults.data[0];
41
- expect(opportunity).toBeDefined();
42
- expect(opportunity.Opportunity_Id).toBe(testOpportunityId);
43
- opportunityId = opportunity.id;
44
- }
45
- else {
46
- const createResult = await client.createAPNOpportunity(opportunityData);
47
- expect(createResult).toBeDefined();
48
- expect(createResult.code).toBe('SUCCESS');
49
- opportunityId = createResult.details.id;
50
- }
51
- // Step 2: Verify we can retrieve the opportunity by ID
52
- console.log(`šŸ” Verifying opportunity can be retrieved by ID: ${opportunityId}`);
53
- const retrievedOpportunity = await client.getAPNOpportunity(opportunityId);
54
- expect(retrievedOpportunity).toBeDefined();
55
- expect(retrievedOpportunity.id).toBe(opportunityId);
56
- expect(retrievedOpportunity.Name).toBe(testOpportunityName);
57
- // Step 3: Test updating the opportunity
58
- console.log(`šŸ“ Testing opportunity update...`);
59
- const updateData = {
60
- Description: `Updated by integration test at ${new Date().toISOString()}`,
61
- Status: 'In Progress'
62
- };
63
- const updateResult = await client.updateAPNOpportunity(opportunityId, updateData);
64
- expect(updateResult).toBeDefined();
65
- expect(updateResult.details.id).toBe(opportunityId);
66
- // Step 4 : Delete the test opportunity
67
- console.log(`šŸ—‘ļø Deleting test opportunity with ID: ${opportunityId}`);
68
- const deleteResult = await client.deleteAPNOpportunity(opportunityId);
69
- expect(deleteResult).toBe(true);
70
- }, 120000);
71
- it('should fetch deal stage history for existing deals', async () => {
72
- console.log('🧪 Testing deal stage history fetching...');
73
- // Step 1: Get a few deals to test with
74
- console.log('šŸ“Š Fetching existing deals to test stage history...');
75
- const deals = await client.getDeals({ maxRecords: 5 });
76
- expect(deals).toBeDefined();
77
- expect(Array.isArray(deals)).toBe(true);
78
- if (deals.length === 0) {
79
- console.log('āš ļø No deals found, skipping stage history test');
80
- return;
81
- }
82
- const testDeal = deals[0];
83
- console.log(`šŸŽÆ Testing stage history for deal: ${testDeal.id} (${testDeal.Deal_Name || testDeal.Name || 'Unnamed Deal'})`);
84
- // Step 2: Test basic stage history fetch
85
- console.log('šŸ“ˆ Fetching stage history...');
86
- const stageHistory = await client.getDealStageHistory(testDeal.id);
87
- expect(stageHistory).toBeDefined();
88
- expect(Array.isArray(stageHistory)).toBe(true);
89
- console.log(`āœ… Found ${stageHistory.length} stage history records`);
90
- // Validate stage history structure if records exist
91
- if (stageHistory.length > 0) {
92
- const historyRecord = stageHistory[0];
93
- console.log('šŸ“ Sample stage history record:', JSON.stringify(historyRecord, null, 2));
94
- expect(historyRecord).toBeDefined();
95
- expect(typeof historyRecord).toBe('object');
96
- }
97
- // Step 3: Test paginated stage history fetch
98
- console.log('šŸ“„ Testing paginated stage history fetch...');
99
- const allStageHistory = await client.getAllDealStageHistory(testDeal.id, 10);
100
- expect(allStageHistory).toBeDefined();
101
- expect(Array.isArray(allStageHistory)).toBe(true);
102
- expect(allStageHistory.length).toBeLessThanOrEqual(10);
103
- console.log(`āœ… Paginated fetch returned ${allStageHistory.length} records`);
104
- // Step 4: Test streaming stage history
105
- console.log('🌊 Testing stage history streaming...');
106
- const stream = client.createDealStageHistoryStream(testDeal.id);
107
- expect(stream).toBeDefined();
108
- expect(typeof stream.subscribe).toBe('function');
109
- console.log('āœ… Stage history stream created successfully');
110
- console.log('šŸŽ‰ Deal stage history tests completed successfully');
111
- }, 60000);
112
- it('should fetch related list metadata for modules', async () => {
113
- console.log('🧪 Testing related list metadata fetching...');
114
- // Step 1: Test getting related list metadata for Deals module
115
- console.log('šŸ”— Fetching related list metadata for Deals module...');
116
- const dealsMetadata = await client.getRelatedListMetadata('Deals');
117
- expect(dealsMetadata).toBeDefined();
118
- expect(dealsMetadata.related_lists).toBeDefined();
119
- expect(Array.isArray(dealsMetadata.related_lists)).toBe(true);
120
- console.log(`āœ… Found ${dealsMetadata.related_lists.length} related lists for Deals`);
121
- // Step 2: Test structured related record types function
122
- console.log('šŸ“‹ Getting structured related record types for Deals...');
123
- const relatedTypes = await client.getModuleRelatedRecordTypes('Deals');
124
- expect(relatedTypes).toBeDefined();
125
- expect(Array.isArray(relatedTypes)).toBe(true);
126
- console.log(`āœ… Found ${relatedTypes.length} related record types`);
127
- // Validate structure of related types
128
- if (relatedTypes.length > 0) {
129
- const firstType = relatedTypes[0];
130
- console.log('šŸ“ Sample related type:', JSON.stringify(firstType, null, 2));
131
- expect(firstType).toBeDefined();
132
- expect(typeof firstType.api_name).toBe('string');
133
- expect(typeof firstType.display_label).toBe('string');
134
- expect(typeof firstType.sequence_number).toBe('number');
135
- }
136
- // Step 3: Test with Accounts module
137
- console.log('šŸ¢ Testing with Accounts module...');
138
- const accountsRelatedTypes = await client.getModuleRelatedRecordTypes('Accounts');
139
- expect(accountsRelatedTypes).toBeDefined();
140
- expect(Array.isArray(accountsRelatedTypes)).toBe(true);
141
- console.log(`āœ… Found ${accountsRelatedTypes.length} related record types for Accounts`);
142
- // Step 4: Test getting related records if we have any deals
143
- if (relatedTypes.length > 0) {
144
- console.log('šŸ” Testing related records fetching...');
145
- // Get a deal to test with
146
- const deals = await client.getDeals({ maxRecords: 1 });
147
- if (deals.length > 0) {
148
- const testDeal = deals[0];
149
- const firstRelatedType = relatedTypes[0];
150
- console.log(`šŸŽÆ Testing related records for deal: ${testDeal.id}, related type: ${firstRelatedType.api_name}`);
151
- try {
152
- const relatedRecords = await client.getRelatedRecords('Deals', testDeal.id, firstRelatedType.api_name, { per_page: 5 });
153
- expect(relatedRecords).toBeDefined();
154
- expect(relatedRecords.data).toBeDefined();
155
- expect(Array.isArray(relatedRecords.data)).toBe(true);
156
- console.log(`āœ… Found ${relatedRecords.data.length} related records of type ${firstRelatedType.api_name}`);
157
- }
158
- catch (error) {
159
- console.log(`āš ļø Could not fetch related records for ${firstRelatedType.api_name}: ${error.message}`);
160
- // This is expected for some related types that might not have data or permissions
161
- }
162
- }
163
- }
164
- console.log('šŸŽ‰ Related list metadata tests completed successfully');
165
- }, 60000);
166
- it('should fetch pipeline information for Deals module', async () => {
167
- console.log('🧪 Testing pipeline fetching...');
168
- // Step 1: Test getting Deals layout ID
169
- console.log('šŸ—ļø Getting Deals layout ID...');
170
- const layoutId = await client.getDealsLayoutId();
171
- expect(layoutId).toBeDefined();
172
- expect(typeof layoutId).toBe('string');
173
- expect(layoutId.length).toBeGreaterThan(0);
174
- console.log(`āœ… Found Deals layout ID: ${layoutId}`);
175
- // Step 2: Test getting pipelines using layout ID
176
- console.log('šŸ”§ Fetching pipelines using layout ID...');
177
- const pipelinesRaw = await client.getPipelines(layoutId);
178
- expect(pipelinesRaw).toBeDefined();
179
- expect(pipelinesRaw.pipeline).toBeDefined();
180
- expect(Array.isArray(pipelinesRaw.pipeline)).toBe(true);
181
- console.log(`āœ… Found ${pipelinesRaw.pipeline.length} pipeline(s) in raw response`);
182
- // Step 3: Test structured pipeline details
183
- console.log('šŸ“Š Getting structured pipeline details...');
184
- const pipelineDetails = await client.getPipelineDetails(layoutId);
185
- expect(pipelineDetails).toBeDefined();
186
- expect(Array.isArray(pipelineDetails)).toBe(true);
187
- console.log(`āœ… Found ${pipelineDetails.length} structured pipeline(s)`);
188
- // Validate pipeline structure if pipelines exist
189
- if (pipelineDetails.length > 0) {
190
- const firstPipeline = pipelineDetails[0];
191
- console.log('šŸ“ Sample pipeline:', JSON.stringify(firstPipeline, null, 2));
192
- expect(firstPipeline).toBeDefined();
193
- expect(typeof firstPipeline.id).toBe('string');
194
- expect(typeof firstPipeline.display_value).toBe('string');
195
- expect(typeof firstPipeline.default).toBe('boolean');
196
- expect(Array.isArray(firstPipeline.stages)).toBe(true);
197
- // Validate stage structure if stages exist
198
- if (firstPipeline.stages.length > 0) {
199
- const firstStage = firstPipeline.stages[0];
200
- expect(firstStage).toBeDefined();
201
- expect(typeof firstStage.id).toBe('string');
202
- expect(typeof firstStage.display_value).toBe('string');
203
- expect(typeof firstStage.sequence_number).toBe('number');
204
- console.log(`āœ… Pipeline "${firstPipeline.display_value}" has ${firstPipeline.stages.length} stages`);
205
- }
206
- }
207
- // Step 4: Test convenience method for Deals pipelines
208
- console.log('šŸŽÆ Testing convenience method for Deals pipelines...');
209
- const dealsPipelines = await client.getDealsPipelines();
210
- expect(dealsPipelines).toBeDefined();
211
- expect(Array.isArray(dealsPipelines)).toBe(true);
212
- expect(dealsPipelines.length).toBe(pipelineDetails.length);
213
- console.log(`āœ… Convenience method returned ${dealsPipelines.length} pipeline(s)`);
214
- // Step 5: Test getting a specific pipeline if we have any
215
- if (dealsPipelines.length > 0) {
216
- const testPipelineId = dealsPipelines[0].id;
217
- console.log(`šŸŽÆ Testing specific pipeline fetch for ID: ${testPipelineId}`);
218
- const specificPipeline = await client.getDealsPipeline(testPipelineId);
219
- expect(specificPipeline).toBeDefined();
220
- expect(Array.isArray(specificPipeline)).toBe(true);
221
- expect(specificPipeline.length).toBe(1);
222
- expect(specificPipeline[0].id).toBe(testPipelineId);
223
- console.log(`āœ… Successfully fetched specific pipeline: ${specificPipeline[0].display_value}`);
224
- }
225
- console.log('šŸŽ‰ Pipeline tests completed successfully');
226
- }, 60000);
227
- it('should explore available settings and configurations like pipelines', async () => {
228
- console.log('🧪 Exploring other settings/configurations available in Zoho CRM...');
229
- // Common settings endpoints that might exist
230
- const settingsEndpoints = [
231
- '/settings/modules',
232
- '/settings/fields',
233
- '/settings/layouts',
234
- '/settings/pipeline',
235
- '/settings/custom_views',
236
- '/settings/roles',
237
- '/settings/profiles',
238
- '/settings/users',
239
- '/settings/territories',
240
- '/settings/currencies',
241
- '/settings/custom_links',
242
- '/settings/workflow',
243
- '/settings/automation',
244
- '/settings/blueprints',
245
- '/settings/tags',
246
- '/settings/related_lists',
247
- '/settings/picklist_values',
248
- '/settings/organization',
249
- '/settings/company_details',
250
- '/settings/preferences',
251
- '/settings/variables',
252
- '/settings/macros',
253
- '/settings/email_templates',
254
- '/settings/inventory_templates',
255
- '/settings/attachments',
256
- '/settings/notes',
257
- '/settings/activities',
258
- '/settings/forecasts',
259
- '/settings/analytics',
260
- '/settings/dashboard',
261
- '/settings/reports',
262
- '/settings/integrations',
263
- '/settings/apis',
264
- '/settings/webhooks',
265
- '/settings/functions',
266
- '/settings/canvas',
267
- '/settings/widgets',
268
- '/settings/zia'
269
- ];
270
- const workingEndpoints = [];
271
- const failedEndpoints = [];
272
- for (const endpoint of settingsEndpoints) {
273
- try {
274
- console.log(`šŸ” Testing: ${endpoint}`);
275
- const response = await client.makeRequest(endpoint, {}, `explore ${endpoint}`);
276
- console.log(`āœ… SUCCESS: ${endpoint}`);
277
- console.log(` Response keys: [${Object.keys(response).join(', ')}]`);
278
- // Show sample data structure for interesting endpoints
279
- if (response && typeof response === 'object') {
280
- const firstKey = Object.keys(response)[0];
281
- if (firstKey && Array.isArray(response[firstKey]) && response[firstKey].length > 0) {
282
- const sampleItem = response[firstKey][0];
283
- console.log(` Sample item keys: [${Object.keys(sampleItem).join(', ')}]`);
284
- }
285
- }
286
- workingEndpoints.push(endpoint);
287
- }
288
- catch (error) {
289
- console.log(`āŒ FAILED: ${endpoint} - ${error.message}`);
290
- failedEndpoints.push({ endpoint, error: error.message });
291
- }
292
- }
293
- console.log(`\nšŸ“Š Summary:`);
294
- console.log(`āœ… Working endpoints: ${workingEndpoints.length}`);
295
- console.log(`āŒ Failed endpoints: ${failedEndpoints.length}`);
296
- console.log(`\nāœ… Available Settings/Configurations:`);
297
- workingEndpoints.forEach(endpoint => {
298
- console.log(` - ${endpoint}`);
299
- });
300
- // Test some specific settings that we know work
301
- console.log(`\nšŸ”§ Testing specific working endpoints with parameters...`);
302
- try {
303
- // Test modules with specific module
304
- console.log(`šŸ“‹ Testing /settings/modules for specific module...`);
305
- const moduleSettings = await client.makeRequest('/settings/modules/Deals', {}, 'get Deals module settings');
306
- console.log(` Deals module settings keys: [${Object.keys(moduleSettings).join(', ')}]`);
307
- }
308
- catch (error) {
309
- console.log(` āŒ Failed: ${error.message}`);
310
- }
311
- try {
312
- // Test fields with module parameter
313
- console.log(`šŸ“ Testing /settings/fields with module parameter...`);
314
- const fieldsSettings = await client.makeRequest('/settings/fields?module=Deals', {}, 'get Deals fields settings');
315
- console.log(` Deals fields count: ${fieldsSettings.fields?.length || 0}`);
316
- }
317
- catch (error) {
318
- console.log(` āŒ Failed: ${error.message}`);
319
- }
320
- try {
321
- // Test layouts with module parameter
322
- console.log(`šŸ—ļø Testing /settings/layouts with module parameter...`);
323
- const layoutsSettings = await client.makeRequest('/settings/layouts?module=Deals', {}, 'get Deals layouts settings');
324
- console.log(` Deals layouts count: ${layoutsSettings.layouts?.length || 0}`);
325
- }
326
- catch (error) {
327
- console.log(` āŒ Failed: ${error.message}`);
328
- }
329
- try {
330
- // Test organization settings
331
- console.log(`šŸ¢ Testing /settings/organization...`);
332
- const orgSettings = await client.makeRequest('/settings/organization', {}, 'get organization settings');
333
- console.log(` Organization settings keys: [${Object.keys(orgSettings).join(', ')}]`);
334
- }
335
- catch (error) {
336
- console.log(` āŒ Failed: ${error.message}`);
337
- }
338
- console.log('šŸŽ‰ Settings exploration completed');
339
- }, 120000); // Longer timeout for this comprehensive test
340
- });
341
- //# sourceMappingURL=zoho-crm-client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"zoho-crm-client.test.js","sourceRoot":"","sources":["../../src/zoho-crm/zoho-crm-client.test.ts"],"names":[],"mappings":"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"}