@ingeno/pipedream-services 1.0.63 → 1.0.65

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 (64) hide show
  1. package/dist/aws/apn/partner-central-client.test.d.ts +2 -0
  2. package/dist/aws/apn/partner-central-client.test.d.ts.map +1 -0
  3. package/dist/aws/apn/partner-central-client.test.js +38 -0
  4. package/dist/aws/apn/partner-central-client.test.js.map +1 -0
  5. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.d.ts +2 -0
  6. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.d.ts.map +1 -0
  7. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.js +34 -0
  8. package/dist/aws/apn/zoho-crm/apn-opportunities-sync-step.test.js.map +1 -0
  9. package/dist/aws/aws-list-stream.test.d.ts +3 -0
  10. package/dist/aws/aws-list-stream.test.d.ts.map +1 -0
  11. package/dist/aws/aws-list-stream.test.js +50 -0
  12. package/dist/aws/aws-list-stream.test.js.map +1 -0
  13. package/dist/collections/collections-to-table.test.d.ts +2 -0
  14. package/dist/collections/collections-to-table.test.d.ts.map +1 -0
  15. package/dist/collections/collections-to-table.test.js +105 -0
  16. package/dist/collections/collections-to-table.test.js.map +1 -0
  17. package/dist/collections/converter.test.d.ts +2 -0
  18. package/dist/collections/converter.test.d.ts.map +1 -0
  19. package/dist/collections/converter.test.js +304 -0
  20. package/dist/collections/converter.test.js.map +1 -0
  21. package/dist/postgres/posgres-test-config.d.ts +8 -0
  22. package/dist/postgres/posgres-test-config.d.ts.map +1 -0
  23. package/dist/postgres/posgres-test-config.js +8 -0
  24. package/dist/postgres/posgres-test-config.js.map +1 -0
  25. package/dist/postgres/postgres-test-connection.test.d.ts +2 -0
  26. package/dist/postgres/postgres-test-connection.test.d.ts.map +1 -0
  27. package/dist/postgres/postgres-test-connection.test.js +68 -0
  28. package/dist/postgres/postgres-test-connection.test.js.map +1 -0
  29. package/dist/postgres/postgres.d.ts.map +1 -1
  30. package/dist/postgres/postgres.js +5 -3
  31. package/dist/postgres/postgres.js.map +1 -1
  32. package/dist/postgres/postgres.test.d.ts +2 -0
  33. package/dist/postgres/postgres.test.d.ts.map +1 -0
  34. package/dist/postgres/postgres.test.js +497 -0
  35. package/dist/postgres/postgres.test.js.map +1 -0
  36. package/dist/streams/list-stream.test.d.ts +2 -0
  37. package/dist/streams/list-stream.test.d.ts.map +1 -0
  38. package/dist/streams/list-stream.test.js +169 -0
  39. package/dist/streams/list-stream.test.js.map +1 -0
  40. package/dist/zoho-crm/index.d.ts +1 -4
  41. package/dist/zoho-crm/index.d.ts.map +1 -1
  42. package/dist/zoho-crm/index.js +1 -4
  43. package/dist/zoho-crm/index.js.map +1 -1
  44. package/dist/zoho-crm/zoho-crm-client.d.ts +68 -0
  45. package/dist/zoho-crm/zoho-crm-client.d.ts.map +1 -1
  46. package/dist/zoho-crm/zoho-crm-client.js +216 -0
  47. package/dist/zoho-crm/zoho-crm-client.js.map +1 -1
  48. package/dist/zoho-crm/zoho-crm-client.test.d.ts +2 -0
  49. package/dist/zoho-crm/zoho-crm-client.test.d.ts.map +1 -0
  50. package/dist/zoho-crm/zoho-crm-client.test.js +341 -0
  51. package/dist/zoho-crm/zoho-crm-client.test.js.map +1 -0
  52. package/dist/zoho-crm/zoho-crm-fetcher.d.ts +2 -8
  53. package/dist/zoho-crm/zoho-crm-fetcher.d.ts.map +1 -1
  54. package/dist/zoho-crm/zoho-crm-fetcher.js +110 -28
  55. package/dist/zoho-crm/zoho-crm-fetcher.js.map +1 -1
  56. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.d.ts +8 -0
  57. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.d.ts.map +1 -0
  58. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.js +117 -0
  59. package/dist/zoho-crm/zoho-crm-to-database-collection-converter.js.map +1 -0
  60. package/package.json +3 -2
  61. package/dist/zoho-crm/module-processor.d.ts +0 -8
  62. package/dist/zoho-crm/module-processor.d.ts.map +0 -1
  63. package/dist/zoho-crm/module-processor.js +0 -114
  64. package/dist/zoho-crm/module-processor.js.map +0 -1
@@ -0,0 +1,117 @@
1
+ function createEmptyDatabaseSchema(schemaName) {
2
+ return {
3
+ name: schemaName,
4
+ prepareMode: 'drop',
5
+ columns: [
6
+ { name: 'id', type: 'id' },
7
+ { name: 'raw_data', transform: (record) => JSON.stringify(record) },
8
+ ],
9
+ };
10
+ }
11
+ function extractAllFieldNamesFromRecords(records) {
12
+ const allFieldNames = records
13
+ .flatMap(record => Object.keys(record));
14
+ return [...new Set(allFieldNames)].sort();
15
+ }
16
+ function sanitizeFieldNameForDatabase(fieldName) {
17
+ return fieldName.toLowerCase().replace(/[^a-z0-9_]/g, '_');
18
+ }
19
+ function inferColumnTypeFromFieldName(fieldName) {
20
+ if (fieldName.includes('Date') || fieldName.includes('Time') || fieldName.includes('_time')) {
21
+ return fieldName.includes('Date') && !fieldName.includes('Time') ? 'date' : 'datetime';
22
+ }
23
+ if (fieldName.includes('Amount') || fieldName.includes('Revenue') || fieldName.includes('_amount')) {
24
+ return 'currency';
25
+ }
26
+ if (fieldName.includes('Probability') || fieldName.includes('Rate') || fieldName.includes('_rate') || fieldName.includes('_number')) {
27
+ return 'number';
28
+ }
29
+ if (fieldName.includes('Opt_Out') || fieldName.includes('_opt_out') || fieldName.includes('converted')) {
30
+ return 'bool';
31
+ }
32
+ return 'text';
33
+ }
34
+ function extractSampleValuesFromRecords(records, fieldName, sampleSize = 10) {
35
+ return records
36
+ .slice(0, sampleSize)
37
+ .map((record) => record[fieldName])
38
+ .filter((value) => value !== null && value !== undefined && value !== '');
39
+ }
40
+ function refineColumnTypeFromSampleValue(sampleValue, inferredType) {
41
+ if (typeof sampleValue === 'boolean') {
42
+ return 'bool';
43
+ }
44
+ if (typeof sampleValue === 'number') {
45
+ return 'number';
46
+ }
47
+ if (typeof sampleValue === 'string' && (inferredType === 'date' || inferredType === 'datetime')) {
48
+ const parsedDate = new Date(sampleValue);
49
+ return isNaN(parsedDate.getTime()) ? 'text' : inferredType;
50
+ }
51
+ return inferredType;
52
+ }
53
+ function createColumnsForNestedObject(fieldName, sanitizedColumnName, sampleValue) {
54
+ const nestedProperties = [
55
+ { key: 'name', exists: sampleValue.name },
56
+ { key: 'id', exists: sampleValue.id },
57
+ { key: 'email', exists: sampleValue.email }
58
+ ];
59
+ return nestedProperties
60
+ .filter(property => property.exists)
61
+ .map(property => ({
62
+ name: `${sanitizedColumnName}_${property.key}`,
63
+ path: `${fieldName}.${property.key}`
64
+ }));
65
+ }
66
+ function createColumnFromField(fieldName, records) {
67
+ if (fieldName === 'id') {
68
+ return [{ name: 'record_id', path: 'id' }];
69
+ }
70
+ const sanitizedColumnName = sanitizeFieldNameForDatabase(fieldName);
71
+ let columnType = inferColumnTypeFromFieldName(fieldName);
72
+ const sampleValues = extractSampleValuesFromRecords(records, fieldName);
73
+ if (sampleValues.length > 0) {
74
+ const firstSampleValue = sampleValues[0];
75
+ if (typeof firstSampleValue === 'object' && firstSampleValue !== null) {
76
+ return createColumnsForNestedObject(fieldName, sanitizedColumnName, firstSampleValue);
77
+ }
78
+ columnType = refineColumnTypeFromSampleValue(firstSampleValue, columnType);
79
+ }
80
+ return [{ name: sanitizedColumnName, path: fieldName, type: columnType }];
81
+ }
82
+ function convertFieldsToColumns(fieldNames, records) {
83
+ const baseColumns = [{ name: 'id', type: 'id' }];
84
+ const fieldColumns = fieldNames.flatMap(fieldName => createColumnFromField(fieldName, records));
85
+ const rawDataColumn = [
86
+ { name: 'raw_data', transform: (record) => JSON.stringify(record) }
87
+ ];
88
+ return [...baseColumns, ...fieldColumns, ...rawDataColumn];
89
+ }
90
+ export function createDatabaseSchemaFromZohoCRMRecords(records, schemaName) {
91
+ if (!records || records.length === 0) {
92
+ return createEmptyDatabaseSchema(schemaName);
93
+ }
94
+ const allFieldNames = extractAllFieldNamesFromRecords(records);
95
+ const databaseColumns = convertFieldsToColumns(allFieldNames, records);
96
+ return {
97
+ name: schemaName,
98
+ prepareMode: 'drop',
99
+ columns: databaseColumns,
100
+ };
101
+ }
102
+ export async function convertZohoCRMModuleToDatabaseCollection(moduleName, client, options = {}) {
103
+ const { maxRecords } = options;
104
+ console.log(`Processing module: ${moduleName}`);
105
+ const zohoCRMRecords = await client.getAllRecordsWithFields(moduleName, { maxRecords: maxRecords || undefined });
106
+ const databaseSchema = createDatabaseSchemaFromZohoCRMRecords(zohoCRMRecords, moduleName.toLowerCase());
107
+ const databaseCollection = {
108
+ schema: databaseSchema,
109
+ objects: zohoCRMRecords.map((record, index) => ({
110
+ id: index + 1,
111
+ ...record,
112
+ })),
113
+ };
114
+ console.log(`Processed ${zohoCRMRecords.length} records for module: ${moduleName}`);
115
+ return databaseCollection;
116
+ }
117
+ //# 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.63",
3
+ "version": "1.0.65",
4
4
  "description": "Service utilities for Clarity data integrations",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -77,7 +77,8 @@
77
77
  "build": "npm run clean && npm run build:tsc",
78
78
  "build:tsc": "tsc",
79
79
  "build:watch": "tsc -w",
80
- "lint": "eslint src/**/*.ts --fix",
80
+ "lint": "eslint src/**/*.ts",
81
+ "lint:fix": "eslint src/**/*.ts --fix",
81
82
  "clean": "rm -rf dist",
82
83
  "test": "vitest run",
83
84
  "test:watch": "vitest --watch",
@@ -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"}
@@ -1,114 +0,0 @@
1
- // Helper function to dynamically generate schema from Zoho CRM records
2
- export function generateSchemaFromRecords(records, schemaName) {
3
- if (!records || records.length === 0) {
4
- return {
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
- }
13
- const allFields = new Set();
14
- // Collect all field names from all records
15
- records.forEach((record) => {
16
- Object.keys(record).forEach((key) => {
17
- allFields.add(key);
18
- });
19
- });
20
- // Convert field names to database column definitions
21
- const columns = [{ name: 'id', type: 'id' }];
22
- // Sort fields for consistent ordering
23
- const sortedFields = Array.from(allFields).sort();
24
- sortedFields.forEach((field) => {
25
- // Skip the 'id' field from Zoho as we handle it separately
26
- if (field === 'id') {
27
- columns.push({ name: 'record_id', path: 'id' });
28
- return;
29
- }
30
- const columnName = field.toLowerCase().replace(/[^a-z0-9_]/g, '_');
31
- // Determine data type based on field name patterns and sample data
32
- let type = 'text';
33
- // Check field name patterns
34
- if (field.includes('Date') || field.includes('Time') || field.includes('_time')) {
35
- type = field.includes('Date') && !field.includes('Time') ? 'date' : 'datetime';
36
- }
37
- else if (field.includes('Amount') || field.includes('Revenue') || field.includes('_amount')) {
38
- type = 'currency';
39
- }
40
- else if (field.includes('Probability') ||
41
- field.includes('Rate') ||
42
- field.includes('_rate') ||
43
- field.includes('_number')) {
44
- type = 'number';
45
- }
46
- else if (field.includes('Opt_Out') || field.includes('_opt_out') || field.includes('converted')) {
47
- type = 'bool';
48
- }
49
- // Sample the data to refine type detection
50
- const sampleValues = records
51
- .slice(0, 10)
52
- .map((record) => record[field])
53
- .filter((val) => val !== null && val !== undefined && val !== '');
54
- if (sampleValues.length > 0) {
55
- const sampleValue = sampleValues[0];
56
- if (typeof sampleValue === 'boolean') {
57
- type = 'bool';
58
- }
59
- else if (typeof sampleValue === 'number') {
60
- type = 'number';
61
- }
62
- else if (typeof sampleValue === 'object' && sampleValue !== null) {
63
- // Handle nested objects (like Owner, Account_Name, etc.)
64
- if (sampleValue.name) {
65
- columns.push({ name: `${columnName}_name`, path: `${field}.name` });
66
- }
67
- if (sampleValue.id) {
68
- columns.push({ name: `${columnName}_id`, path: `${field}.id` });
69
- }
70
- if (sampleValue.email) {
71
- columns.push({ name: `${columnName}_email`, path: `${field}.email` });
72
- }
73
- return; // Skip adding the main field since we're handling nested properties
74
- }
75
- else if (typeof sampleValue === 'string') {
76
- // Check if it's a valid date/timestamp string
77
- if (type === 'date' || type === 'datetime') {
78
- // Try to parse the date to validate it's a proper timestamp
79
- const date = new Date(sampleValue);
80
- if (isNaN(date.getTime())) {
81
- // Invalid date, treat as text
82
- type = 'text';
83
- }
84
- }
85
- }
86
- }
87
- columns.push({ name: columnName, path: field, type });
88
- });
89
- // Always add raw_data column for full JSON
90
- columns.push({ name: 'raw_data', transform: (record) => JSON.stringify(record) });
91
- return {
92
- name: schemaName,
93
- prepareMode: 'drop',
94
- columns,
95
- };
96
- }
97
- // Generic function to process any Zoho CRM module
98
- export async function processModule(moduleName, client, options = {}) {
99
- const { maxRecords } = options;
100
- console.log(`Processing module: ${moduleName}`);
101
- const records = await client.getAllRecordsWithFields(moduleName, { maxRecords: maxRecords || undefined });
102
- const schema = generateSchemaFromRecords(records, moduleName.toLowerCase());
103
- // Create collection with manually assigned IDs
104
- const collection = {
105
- schema,
106
- objects: records.map((record, index) => ({
107
- id: index + 1,
108
- ...record,
109
- })),
110
- };
111
- console.log(`Processed ${records.length} records for module: ${moduleName}`);
112
- return collection;
113
- }
114
- //# sourceMappingURL=module-processor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-processor.js","sourceRoot":"","sources":["../../src/zoho-crm/module-processor.ts"],"names":[],"mappings":"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"}