@ingeno/pipedream-services 1.0.64 → 1.0.66

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 (67) hide show
  1. package/dist/aws/apn/index.d.ts +1 -0
  2. package/dist/aws/apn/index.d.ts.map +1 -1
  3. package/dist/aws/apn/index.js +1 -0
  4. package/dist/aws/apn/index.js.map +1 -1
  5. package/dist/aws/apn/opportunities-helper.d.ts +4 -0
  6. package/dist/aws/apn/opportunities-helper.d.ts.map +1 -0
  7. package/dist/aws/apn/opportunities-helper.js +23 -0
  8. package/dist/aws/apn/opportunities-helper.js.map +1 -0
  9. package/dist/aws/apn/partner-central-client.d.ts.map +1 -1
  10. package/dist/aws/apn/partner-central-client.js.map +1 -1
  11. package/dist/collections/collections-to-table-stream.test.d.ts +2 -0
  12. package/dist/collections/collections-to-table-stream.test.d.ts.map +1 -0
  13. package/dist/collections/collections-to-table-stream.test.js +70 -0
  14. package/dist/collections/collections-to-table-stream.test.js.map +1 -0
  15. package/dist/collections/collections-to-table.d.ts +13 -2
  16. package/dist/collections/collections-to-table.d.ts.map +1 -1
  17. package/dist/collections/collections-to-table.js +21 -17
  18. package/dist/collections/collections-to-table.js.map +1 -1
  19. package/dist/collections/collections-to-table.test.js +4 -4
  20. package/dist/collections/collections-to-table.test.js.map +1 -1
  21. package/dist/collections/index.d.ts +0 -1
  22. package/dist/collections/index.d.ts.map +1 -1
  23. package/dist/collections/index.js +0 -1
  24. package/dist/collections/index.js.map +1 -1
  25. package/dist/collections/types.d.ts +10 -0
  26. package/dist/collections/types.d.ts.map +1 -1
  27. package/dist/google-sheets/google-sheets-service.d.ts +18 -0
  28. package/dist/google-sheets/google-sheets-service.d.ts.map +1 -0
  29. package/dist/google-sheets/google-sheets-service.js +25 -0
  30. package/dist/google-sheets/google-sheets-service.js.map +1 -0
  31. package/dist/google-sheets/index.d.ts +2 -0
  32. package/dist/google-sheets/index.d.ts.map +1 -0
  33. package/dist/google-sheets/index.js +2 -0
  34. package/dist/google-sheets/index.js.map +1 -0
  35. package/dist/index.d.ts +1 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/postgres/postgres.d.ts +10 -1
  40. package/dist/postgres/postgres.d.ts.map +1 -1
  41. package/dist/postgres/postgres.js +167 -111
  42. package/dist/postgres/postgres.js.map +1 -1
  43. package/dist/zoho-crm/index.d.ts +1 -4
  44. package/dist/zoho-crm/index.d.ts.map +1 -1
  45. package/dist/zoho-crm/index.js +1 -4
  46. package/dist/zoho-crm/index.js.map +1 -1
  47. package/dist/zoho-crm/zoho-crm-client.d.ts +6 -1
  48. package/dist/zoho-crm/zoho-crm-client.d.ts.map +1 -1
  49. package/dist/zoho-crm/zoho-crm-client.js +92 -97
  50. package/dist/zoho-crm/zoho-crm-client.js.map +1 -1
  51. package/dist/zoho-crm/zoho-crm-fetcher.d.ts +2 -8
  52. package/dist/zoho-crm/zoho-crm-fetcher.d.ts.map +1 -1
  53. package/dist/zoho-crm/zoho-crm-fetcher.js +118 -101
  54. package/dist/zoho-crm/zoho-crm-fetcher.js.map +1 -1
  55. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.d.ts +27 -0
  56. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.d.ts.map +1 -0
  57. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.js +219 -0
  58. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.js.map +1 -0
  59. package/package.json +7 -1
  60. package/dist/collections/collections-summary.d.ts +0 -3
  61. package/dist/collections/collections-summary.d.ts.map +0 -1
  62. package/dist/collections/collections-summary.js +0 -7
  63. package/dist/collections/collections-summary.js.map +0 -1
  64. package/dist/zoho-crm/module-processor.d.ts +0 -8
  65. package/dist/zoho-crm/module-processor.d.ts.map +0 -1
  66. package/dist/zoho-crm/module-processor.js +0 -114
  67. package/dist/zoho-crm/module-processor.js.map +0 -1
@@ -1,114 +1,131 @@
1
- import { ZohoCRMClient, ZohoAuth, collectionSummary, collectionsToTables, fillTables, processModule } from '../index.js';
2
- /**
3
- * Reusable function to fetch data from Zoho CRM modules and save to PostgreSQL
4
- *
5
- * @param options Configuration options for the fetch operation
6
- * @returns Summary of tables created and records processed
7
- */
8
- export async function fetchZohoCRMData(options) {
9
- const { zohoCredentials, postgresCredentials, modules, maxResults, tablesPrefix = 'zoho_crm_' } = options;
10
- // Initialize Zoho Auth and Client
1
+ import { from } from 'rxjs';
2
+ import { ZohoCRMClient, ZohoAuth, collectionStreamsToTableRowStreams, fillTablesFromStreams, convertZohoCRMModuleToDatabaseCollectionStream } from '../index.js';
3
+ async function createAuthenticatedZohoCRMClient(zohoCredentials) {
11
4
  const zohoAuth = new ZohoAuth(zohoCredentials);
12
5
  const accessToken = await zohoAuth.getAccessToken();
13
- const client = new ZohoCRMClient({
6
+ return new ZohoCRMClient({
14
7
  accessToken,
15
8
  apiDomain: zohoCredentials.api_domain,
16
9
  });
17
- // Check if Deals is in modules and add DealHistory if so
18
- const enhancedModules = [...modules];
19
- const includesPipelines = modules.includes('Deals');
20
- if (includesPipelines && !enhancedModules.includes('DealHistory')) {
21
- enhancedModules.push('DealHistory');
10
+ }
11
+ const addRequiredModuleDependencies = (modules) => {
12
+ const modulesWithDependencies = [...modules];
13
+ const shouldIncludePipelines = modules.includes('Deals');
14
+ if (shouldIncludePipelines && !modulesWithDependencies.includes('DealHistory')) {
15
+ modulesWithDependencies.push('DealHistory');
22
16
  console.log('Added DealHistory module since Deals is included');
23
17
  }
24
- console.log(`Fetching data from modules: ${enhancedModules.join(', ')}`);
25
- console.log(`Max results per module: ${maxResults || 'all'}`);
26
- // Process each module using the generic processor
27
- const moduleCollections = await Promise.all(enhancedModules.map(async (moduleName) => {
28
- console.log(`Fetching ${moduleName}...`);
29
- return await processModule(moduleName, client, { maxRecords: maxResults || undefined });
30
- }));
31
- const collections = [...moduleCollections];
32
- // If Deals is included, also fetch and process pipelines
33
- if (includesPipelines) {
34
- console.log('Fetching Deals pipelines...');
35
- try {
36
- const pipelinesData = await client.getDealsPipelines();
37
- // Create a collection for pipelines
38
- const pipelinesCollection = {
39
- schema: {
40
- name: 'pipelines',
41
- prepareMode: 'drop',
42
- columns: [
43
- { name: 'id', type: 'id' },
44
- { name: 'pipeline_id', path: 'id' },
45
- { name: 'display_value', type: 'text' },
46
- { name: 'default', type: 'bool' },
47
- { name: 'stages_count', transform: (pipeline) => pipeline.stages?.length || 0 },
48
- { name: 'stages_data', type: 'json', path: 'stages' },
49
- ],
50
- },
51
- objects: pipelinesData.map((pipeline, index) => ({
52
- id: index + 1,
53
- ...pipeline,
54
- })),
55
- };
56
- // Create a separate collection for pipeline stages using functional programming
57
- const stagesData = pipelinesData
58
- .filter((pipeline) => pipeline.stages && Array.isArray(pipeline.stages))
59
- .flatMap((pipeline) => pipeline.stages.map((stage) => ({
60
- id: stage.id,
61
- pipeline_id: pipeline.id,
62
- pipeline_display_value: pipeline.display_value,
63
- stage_id: stage.id,
64
- stage_display_value: stage.display_value,
65
- sequence_number: stage.sequence_number,
66
- forecast_category: stage.forecast_category,
67
- forecast_type: stage.forecast_type,
68
- probability: stage.probability || 0,
69
- })));
70
- const pipelineStagesCollection = {
71
- schema: {
72
- name: 'pipeline_stages',
73
- prepareMode: 'drop',
74
- columns: [
75
- { name: 'id', type: 'id' },
76
- { name: 'pipeline_id', type: 'text' },
77
- { name: 'pipeline_display_value', type: 'text' },
78
- { name: 'stage_id', type: 'text' },
79
- { name: 'stage_display_value', type: 'text' },
80
- { name: 'sequence_number', type: 'number' },
81
- { name: 'forecast_category', type: 'text' },
82
- { name: 'forecast_type', type: 'text' },
83
- { name: 'probability', type: 'number' },
84
- ],
85
- },
86
- objects: stagesData,
87
- };
88
- const pipelineCollections = [pipelinesCollection, pipelineStagesCollection];
89
- collections.push(...pipelineCollections);
90
- console.log(`Processed ${pipelinesData.length} pipelines`);
91
- console.log(`Processed ${stagesData.length} pipeline stages`);
92
- }
93
- catch (error) {
94
- console.warn('Failed to fetch pipelines:', error.message);
95
- }
18
+ return { modulesWithDependencies, shouldIncludePipelines };
19
+ };
20
+ const buildCollectionSchema = (name, columns, prepareMode = 'drop') => ({
21
+ name,
22
+ prepareMode,
23
+ columns,
24
+ });
25
+ const buildPipelinesCollection = (pipelinesData) => {
26
+ const pipelinesSchema = buildCollectionSchema('pipelines', [
27
+ { name: 'id', type: 'id' },
28
+ { name: 'pipeline_id', path: 'id' },
29
+ { name: 'display_value', type: 'text' },
30
+ { name: 'default', type: 'bool' },
31
+ { name: 'stages_count', transform: (pipeline) => pipeline.stages?.length || 0 },
32
+ { name: 'stages_data', type: 'json', path: 'stages' },
33
+ ]);
34
+ return {
35
+ schema: pipelinesSchema,
36
+ objects: pipelinesData.map((pipeline, index) => ({
37
+ id: index + 1,
38
+ ...pipeline,
39
+ })),
40
+ };
41
+ };
42
+ const buildPipelineStagesCollection = (pipelinesData) => {
43
+ const flattenedStages = pipelinesData
44
+ .filter((pipeline) => pipeline.stages && Array.isArray(pipeline.stages))
45
+ .flatMap((pipeline) => pipeline.stages.map((stage) => ({
46
+ id: stage.id,
47
+ pipeline_id: pipeline.id,
48
+ pipeline_display_value: pipeline.display_value,
49
+ stage_id: stage.id,
50
+ stage_display_value: stage.display_value,
51
+ sequence_number: stage.sequence_number,
52
+ forecast_category: stage.forecast_category,
53
+ forecast_type: stage.forecast_type,
54
+ probability: stage.probability || 0,
55
+ })));
56
+ const stagesSchema = buildCollectionSchema('pipeline_stages', [
57
+ { name: 'id', type: 'id' },
58
+ { name: 'pipeline_id', type: 'text' },
59
+ { name: 'pipeline_display_value', type: 'text' },
60
+ { name: 'stage_id', type: 'text' },
61
+ { name: 'stage_display_value', type: 'text' },
62
+ { name: 'sequence_number', type: 'number' },
63
+ { name: 'forecast_category', type: 'text' },
64
+ { name: 'forecast_type', type: 'text' },
65
+ { name: 'probability', type: 'number' },
66
+ ]);
67
+ return {
68
+ schema: stagesSchema,
69
+ objects: flattenedStages,
70
+ };
71
+ };
72
+ const fetchAndBuildPipelineCollections = async (client) => {
73
+ console.log('Fetching Deals pipelines...');
74
+ try {
75
+ const pipelinesData = await client.getDealsPipelines();
76
+ const pipelinesCollection = buildPipelinesCollection(pipelinesData);
77
+ const pipelineStagesCollection = buildPipelineStagesCollection(pipelinesData);
78
+ console.log(`Processed ${pipelinesData.length} pipelines`);
79
+ console.log(`Processed ${pipelineStagesCollection.objects.length} pipeline stages`);
80
+ return [pipelinesCollection, pipelineStagesCollection];
96
81
  }
97
- // Log summary
98
- collectionSummary(collections);
99
- // Convert to table format
100
- const tablesRows = collectionsToTables(collections);
101
- // Fill PostgreSQL tables
102
- await fillTables({
82
+ catch (error) {
83
+ console.warn('Failed to fetch pipelines:', error.message);
84
+ return [];
85
+ }
86
+ };
87
+ const saveCollectionStreamsAndCreateSummary = async (collectionStreams, postgresCredentials, tablesPrefix) => {
88
+ // Skip summary to avoid re-fetching objects for streaming efficiency
89
+ console.log(`Processing ${collectionStreams.length} collection streams for database insertion`);
90
+ const tableRowStreams = collectionStreamsToTableRowStreams(collectionStreams);
91
+ await fillTablesFromStreams({
103
92
  auth: postgresCredentials,
104
- tablesRows,
93
+ tableRowStreams,
105
94
  tablesPrefix,
106
95
  });
107
- return {
108
- summary: collections.map((c) => ({
109
- table: `${tablesPrefix}${c.schema.name}`,
110
- records: c.objects.length,
111
- })),
112
- };
96
+ // For streaming collections, we can't know the exact count without materializing
97
+ // This is acceptable since the primary benefit is memory efficiency during processing
98
+ return collectionStreams.map((collectionStream) => ({
99
+ table: `${tablesPrefix}${collectionStream.schema.name}`,
100
+ records: collectionStream.recordCount || 0, // Use known count if available
101
+ }));
102
+ };
103
+ const logFetchOperationDetails = (modules, maxResults) => {
104
+ console.log(`Fetching data from modules: ${modules.join(', ')}`);
105
+ console.log(`Max results per module: ${maxResults || 'all'}`);
106
+ };
107
+ const fetchAllModuleCollectionStreams = async (modules, client, maxResults) => Promise.all(modules.map(async (moduleName) => {
108
+ console.log(`Fetching ${moduleName}...`);
109
+ return await convertZohoCRMModuleToDatabaseCollectionStream(moduleName, client, { maxRecords: maxResults || undefined });
110
+ }));
111
+ export async function fetchZohoCRMData(options) {
112
+ const { zohoCredentials, postgresCredentials, modules, maxResults, tablesPrefix = 'zoho_crm_' } = options;
113
+ const client = await createAuthenticatedZohoCRMClient(zohoCredentials);
114
+ const { modulesWithDependencies, shouldIncludePipelines } = addRequiredModuleDependencies(modules);
115
+ logFetchOperationDetails(modulesWithDependencies, maxResults);
116
+ const moduleCollectionStreams = await fetchAllModuleCollectionStreams(modulesWithDependencies, client, maxResults);
117
+ const allCollectionStreams = [...moduleCollectionStreams];
118
+ if (shouldIncludePipelines) {
119
+ const pipelineCollections = await fetchAndBuildPipelineCollections(client);
120
+ // Convert pipeline collections to streams for consistency
121
+ const pipelineStreams = pipelineCollections.map(collection => ({
122
+ schema: collection.schema,
123
+ objects: from(collection.objects),
124
+ recordCount: collection.objects.length // Keep count for small pipeline data
125
+ }));
126
+ allCollectionStreams.push(...pipelineStreams);
127
+ }
128
+ const summary = await saveCollectionStreamsAndCreateSummary(allCollectionStreams, postgresCredentials, tablesPrefix);
129
+ return { summary };
113
130
  }
114
131
  //# sourceMappingURL=zoho-crm-fetcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zoho-crm-fetcher.js","sourceRoot":"","sources":["../../src/zoho-crm/zoho-crm-fetcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zoho-crm-fetcher.js","sourceRoot":"","sources":["../../src/zoho-crm/zoho-crm-fetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Collection, CollectionSchema, CollectionStream } from '../collections/types.js';
2
+ import type { ZohoCRMClient, ZohoCRMRecord } from './zoho-crm-client.js';
3
+ export interface ZohoCRMConversionOptions {
4
+ maxRecords?: number;
5
+ }
6
+ export interface ZohoFieldMetadata {
7
+ api_name: string;
8
+ data_type: string;
9
+ field_label: string;
10
+ json_type: string;
11
+ length?: number;
12
+ decimal_place?: number;
13
+ pick_list_values?: Array<{
14
+ display_value: string;
15
+ actual_value: string;
16
+ }>;
17
+ lookup?: {
18
+ module: {
19
+ api_name: string;
20
+ };
21
+ };
22
+ }
23
+ export declare const createDatabaseSchemaFromFieldMetadata: (fieldsMetadata: ZohoFieldMetadata[], schemaName: string) => CollectionSchema;
24
+ export declare const createDatabaseSchemaFromZohoCRMRecords: (records: ZohoCRMRecord[], schemaName: string) => CollectionSchema;
25
+ export declare const convertZohoCRMModuleToDatabaseCollection: (moduleName: string, client: ZohoCRMClient, options?: ZohoCRMConversionOptions) => Promise<Collection>;
26
+ export declare const convertZohoCRMModuleToDatabaseCollectionStream: (moduleName: string, client: ZohoCRMClient, options?: ZohoCRMConversionOptions) => Promise<CollectionStream>;
27
+ //# sourceMappingURL=zoho-crm-to-database-collection-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoho-crm-to-database-collection-converter.d.ts","sourceRoot":"","sources":["../../src/zoho-crm/zoho-crm-to-database-collection-converter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,yBAAyB,CAAA;AACjH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAIxE,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,KAAK,CAAC;QACvB,aAAa,EAAE,MAAM,CAAA;QACrB,YAAY,EAAE,MAAM,CAAA;KACrB,CAAC,CAAA;IACF,MAAM,CAAC,EAAE;QACP,MAAM,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAA;KAC7B,CAAA;CACF;AAiMD,eAAO,MAAM,qCAAqC,GAChD,gBAAgB,iBAAiB,EAAE,EACnC,YAAY,MAAM,KACjB,gBAwBF,CAAA;AAED,eAAO,MAAM,sCAAsC,GAAI,SAAS,aAAa,EAAE,EAAE,YAAY,MAAM,KAAG,gBAcrG,CAAA;AAED,eAAO,MAAM,wCAAwC,GACnD,YAAY,MAAM,EAClB,QAAQ,aAAa,EACrB,UAAS,wBAA6B,KACrC,OAAO,CAAC,UAAU,CASpB,CAAA;AAsBD,eAAO,MAAM,8CAA8C,GACzD,YAAY,MAAM,EAClB,QAAQ,aAAa,EACrB,UAAS,wBAA6B,KACrC,OAAO,CAAC,gBAAgB,CAqB1B,CAAA"}
@@ -0,0 +1,219 @@
1
+ import { from } from 'rxjs';
2
+ import { map, toArray } from 'rxjs/operators';
3
+ const ZOHO_FIELD_LIMIT = 50;
4
+ const createEmptyDatabaseSchema = (schemaName) => ({
5
+ name: schemaName,
6
+ prepareMode: 'drop',
7
+ columns: [
8
+ { name: 'id', type: 'id' },
9
+ { name: 'raw_data', transform: (record) => JSON.stringify(record) },
10
+ ],
11
+ });
12
+ const extractAllFieldNamesFromRecords = (records) => {
13
+ const allFieldNames = records.flatMap(record => Object.keys(record));
14
+ return [...new Set(allFieldNames)].sort();
15
+ };
16
+ const sanitizeFieldNameForDatabase = (fieldName) => fieldName.toLowerCase().replace(/[^a-z0-9_]/g, '_');
17
+ const inferColumnTypeFromFieldName = (fieldName) => {
18
+ if (fieldName.includes('Date') || fieldName.includes('Time') || fieldName.includes('_time')) {
19
+ return fieldName.includes('Date') && !fieldName.includes('Time') ? 'date' : 'datetime';
20
+ }
21
+ if (fieldName.includes('Amount') || fieldName.includes('Revenue') || fieldName.includes('_amount')) {
22
+ return 'currency';
23
+ }
24
+ if (fieldName.includes('Probability') || fieldName.includes('Rate') || fieldName.includes('_rate') || fieldName.includes('_number')) {
25
+ return 'number';
26
+ }
27
+ if (fieldName.includes('Opt_Out') || fieldName.includes('_opt_out') || fieldName.includes('converted')) {
28
+ return 'bool';
29
+ }
30
+ return 'text';
31
+ };
32
+ const extractSampleValuesFromRecords = (records, fieldName, sampleSize = 10) => records
33
+ .slice(0, sampleSize)
34
+ .map((record) => record[fieldName])
35
+ .filter((value) => value !== null && value !== undefined && value !== '');
36
+ const refineColumnTypeFromSampleValue = (sampleValue, inferredType) => {
37
+ if (typeof sampleValue === 'boolean') {
38
+ return 'bool';
39
+ }
40
+ if (typeof sampleValue === 'number') {
41
+ return 'number';
42
+ }
43
+ if (typeof sampleValue === 'string' && (inferredType === 'date' || inferredType === 'datetime')) {
44
+ const parsedDate = new Date(sampleValue);
45
+ return isNaN(parsedDate.getTime()) ? 'text' : inferredType;
46
+ }
47
+ return inferredType;
48
+ };
49
+ const createColumnsForNestedObject = (fieldName, sanitizedColumnName, sampleValue) => {
50
+ const nestedProperties = [
51
+ { key: 'name', exists: sampleValue.name },
52
+ { key: 'id', exists: sampleValue.id },
53
+ { key: 'email', exists: sampleValue.email }
54
+ ];
55
+ return nestedProperties
56
+ .filter(property => property.exists)
57
+ .map(property => ({
58
+ name: `${sanitizedColumnName}_${property.key}`,
59
+ path: `${fieldName}.${property.key}`
60
+ }));
61
+ };
62
+ const createColumnFromField = (fieldName, records) => {
63
+ if (fieldName === 'id') {
64
+ return [{ name: 'record_id', path: 'id' }];
65
+ }
66
+ const sanitizedColumnName = sanitizeFieldNameForDatabase(fieldName);
67
+ let columnType = inferColumnTypeFromFieldName(fieldName);
68
+ const sampleValues = extractSampleValuesFromRecords(records, fieldName);
69
+ if (sampleValues.length > 0) {
70
+ const firstSampleValue = sampleValues[0];
71
+ if (typeof firstSampleValue === 'object' && firstSampleValue !== null) {
72
+ return createColumnsForNestedObject(fieldName, sanitizedColumnName, firstSampleValue);
73
+ }
74
+ columnType = refineColumnTypeFromSampleValue(firstSampleValue, columnType);
75
+ }
76
+ return [{ name: sanitizedColumnName, path: fieldName, type: columnType }];
77
+ };
78
+ const convertFieldsToColumns = (fieldNames, records) => {
79
+ const baseColumns = [{ name: 'id', type: 'id' }];
80
+ const fieldColumns = fieldNames.flatMap(fieldName => createColumnFromField(fieldName, records));
81
+ const rawDataColumn = [
82
+ { name: 'raw_data', transform: (record) => JSON.stringify(record) }
83
+ ];
84
+ return [...baseColumns, ...fieldColumns, ...rawDataColumn];
85
+ };
86
+ const mapZohoDataTypeToColumnType = (dataType) => {
87
+ const typeMapping = {
88
+ 'datetime': 'datetime',
89
+ 'date': 'date',
90
+ 'currency': 'currency',
91
+ 'number': 'number',
92
+ 'decimal': 'number',
93
+ 'integer': 'number',
94
+ 'bigint': 'number',
95
+ 'boolean': 'bool',
96
+ 'picklist': 'text',
97
+ 'multiselectpicklist': 'text',
98
+ 'lookup': 'text',
99
+ 'text': 'text',
100
+ 'textarea': 'text',
101
+ 'email': 'text',
102
+ 'phone': 'text',
103
+ 'url': 'text',
104
+ 'formula': 'text',
105
+ 'autonumber': 'text',
106
+ 'ownerlookup': 'text',
107
+ 'userlookup': 'text',
108
+ };
109
+ return typeMapping[dataType.toLowerCase()] || 'text';
110
+ };
111
+ const createColumnFromFieldMetadata = (field) => {
112
+ if (field.api_name === 'id') {
113
+ return [{ name: 'record_id', path: 'id' }];
114
+ }
115
+ const sanitizedColumnName = sanitizeFieldNameForDatabase(field.api_name);
116
+ const columnType = mapZohoDataTypeToColumnType(field.data_type);
117
+ if (field.lookup && field.lookup.module) {
118
+ return createColumnsForLookupField(field, sanitizedColumnName);
119
+ }
120
+ return [{
121
+ name: sanitizedColumnName,
122
+ path: field.api_name,
123
+ type: columnType
124
+ }];
125
+ };
126
+ const createColumnsForLookupField = (field, sanitizedColumnName) => {
127
+ return [
128
+ {
129
+ name: `${sanitizedColumnName}_id`,
130
+ path: `${field.api_name}.id`
131
+ },
132
+ {
133
+ name: `${sanitizedColumnName}_name`,
134
+ path: `${field.api_name}.name`
135
+ }
136
+ ];
137
+ };
138
+ const deduplicateColumns = (columns, schemaName) => {
139
+ const seenNames = new Set();
140
+ const duplicates = [];
141
+ const deduplicatedColumns = columns.filter(column => {
142
+ if (seenNames.has(column.name)) {
143
+ duplicates.push(column.name);
144
+ return false;
145
+ }
146
+ seenNames.add(column.name);
147
+ return true;
148
+ });
149
+ if (duplicates.length > 0) {
150
+ console.warn(`Schema '${schemaName}': Removed ${duplicates.length} duplicate column(s): ${duplicates.join(', ')}`);
151
+ }
152
+ return deduplicatedColumns;
153
+ };
154
+ export const createDatabaseSchemaFromFieldMetadata = (fieldsMetadata, schemaName) => {
155
+ if (!fieldsMetadata || fieldsMetadata.length === 0) {
156
+ return createEmptyDatabaseSchema(schemaName);
157
+ }
158
+ const baseColumns = [{ name: 'id', type: 'id' }];
159
+ const fieldColumns = fieldsMetadata.flatMap(field => createColumnFromFieldMetadata(field));
160
+ const rawDataColumn = [
161
+ { name: 'raw_data', transform: (record) => JSON.stringify(record) }
162
+ ];
163
+ const allColumns = [...baseColumns, ...fieldColumns, ...rawDataColumn];
164
+ const deduplicatedColumns = deduplicateColumns(allColumns, schemaName);
165
+ return {
166
+ name: schemaName,
167
+ prepareMode: 'drop',
168
+ columns: deduplicatedColumns,
169
+ };
170
+ };
171
+ export const createDatabaseSchemaFromZohoCRMRecords = (records, schemaName) => {
172
+ if (!records || records.length === 0) {
173
+ return createEmptyDatabaseSchema(schemaName);
174
+ }
175
+ const allFieldNames = extractAllFieldNamesFromRecords(records);
176
+ const databaseColumns = convertFieldsToColumns(allFieldNames, records);
177
+ const deduplicatedColumns = deduplicateColumns(databaseColumns, schemaName);
178
+ return {
179
+ name: schemaName,
180
+ prepareMode: 'drop',
181
+ columns: deduplicatedColumns,
182
+ };
183
+ };
184
+ export const convertZohoCRMModuleToDatabaseCollection = async (moduleName, client, options = {}) => {
185
+ const collectionStream = await convertZohoCRMModuleToDatabaseCollectionStream(moduleName, client, options);
186
+ const objects = await from(collectionStream.objects).pipe(toArray()).toPromise() || [];
187
+ return {
188
+ schema: collectionStream.schema,
189
+ objects
190
+ };
191
+ };
192
+ const getAllRecordsWithFieldMetadata = async (moduleName, client, options = {}) => {
193
+ const fieldsMetadata = await client.getModuleFields(moduleName);
194
+ const fieldNames = fieldsMetadata.fields?.slice(0, ZOHO_FIELD_LIMIT).map((field) => field.api_name) || ['*'];
195
+ const records = await client.getAllRecords(moduleName, {
196
+ fields: fieldNames,
197
+ maxRecords: options.maxRecords
198
+ });
199
+ return {
200
+ records,
201
+ fieldsMetadata: fieldsMetadata.fields || []
202
+ };
203
+ };
204
+ export const convertZohoCRMModuleToDatabaseCollectionStream = async (moduleName, client, options = {}) => {
205
+ const { maxRecords } = options;
206
+ console.log(`Processing module: ${moduleName}`);
207
+ const { records, fieldsMetadata } = await getAllRecordsWithFieldMetadata(moduleName, client, { maxRecords });
208
+ const databaseSchema = createDatabaseSchemaFromFieldMetadata(fieldsMetadata, moduleName.toLowerCase());
209
+ const objectStream = from(records).pipe(map((record, index) => ({
210
+ id: index + 1,
211
+ ...record,
212
+ })));
213
+ console.log(`Processed ${records.length} records for module: ${moduleName} using field metadata`);
214
+ return {
215
+ schema: databaseSchema,
216
+ objects: objectStream,
217
+ };
218
+ };
219
+ //# sourceMappingURL=zoho-crm-to-database-collection-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zoho-crm-to-database-collection-converter.js","sourceRoot":"","sources":["../../src/zoho-crm/zoho-crm-to-database-collection-converter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ingeno/pipedream-services",
3
- "version": "1.0.64",
3
+ "version": "1.0.66",
4
4
  "description": "Service utilities for Clarity data integrations",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,6 +18,10 @@
18
18
  "import": "./dist/date/index.js",
19
19
  "types": "./dist/date/index.d.ts"
20
20
  },
21
+ "./google-sheets": {
22
+ "import": "./dist/google-sheets/index.js",
23
+ "types": "./dist/google-sheets/index.d.ts"
24
+ },
21
25
  "./zoho": {
22
26
  "import": "./dist/zoho/index.js",
23
27
  "types": "./dist/zoho/index.d.ts"
@@ -47,6 +51,8 @@
47
51
  "@aws-sdk/client-organizations": "^3.835.0",
48
52
  "@aws-sdk/client-partnercentral-selling": "^3.830.0",
49
53
  "@aws-sdk/client-sts": "^3.400.0",
54
+ "@googleapis/sheets": "^7.0.0",
55
+ "googleapis": "^144.0.0",
50
56
  "axios": "^1.10.0",
51
57
  "dayjs": "^1.11.13",
52
58
  "dayjs-plugin-utc": "^0.1.2",
@@ -1,3 +0,0 @@
1
- import type { Collection } from './types.js';
2
- export declare const collectionSummary: (collections: Collection[]) => void;
3
- //# sourceMappingURL=collections-summary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collections-summary.d.ts","sourceRoot":"","sources":["../../src/collections/collections-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C,eAAO,MAAM,iBAAiB,GAAI,aAAa,UAAU,EAAE,SAK1D,CAAA"}
@@ -1,7 +0,0 @@
1
- export const collectionSummary = (collections) => {
2
- collections.forEach((collection) => {
3
- console.log(`${collection.schema.name} - ${collection.objects.length} objects`);
4
- console.log(`${collection.schema.name} - sample object: ${JSON.stringify(collection.objects[0], null, 2)}`);
5
- });
6
- };
7
- //# sourceMappingURL=collections-summary.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collections-summary.js","sourceRoot":"","sources":["../../src/collections/collections-summary.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,WAAyB,EAAE,EAAE;IAC7D,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,CAAA;QAC/E,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,qBAAqB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;IAC7G,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -1,8 +0,0 @@
1
- import type { Collection, CollectionSchema } from '../collections/types.js';
2
- import type { ZohoCRMClient, ZohoCRMRecord } from './zoho-crm-client.js';
3
- export interface ModuleProcessorOptions {
4
- maxRecords?: number;
5
- }
6
- export declare function generateSchemaFromRecords(records: ZohoCRMRecord[], schemaName: string): CollectionSchema;
7
- export declare function processModule(moduleName: string, client: ZohoCRMClient, options?: ModuleProcessorOptions): Promise<Collection>;
8
- //# sourceMappingURL=module-processor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-processor.d.ts","sourceRoot":"","sources":["../../src/zoho-crm/module-processor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAsB,MAAM,yBAAyB,CAAA;AAC/F,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAExE,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAGD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAuGxG;AAGD,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,UAAU,CAAC,CAqBrB"}