Skip to content

Commit 77d125c

Browse files
committed
refactor(prospeo): extract shared parse helpers into utils.ts
1 parent 07266c5 commit 77d125c

5 files changed

Lines changed: 35 additions & 60 deletions

File tree

apps/sim/tools/prospeo/bulk_enrich_company.ts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,9 @@ import {
33
type ProspeoBulkEnrichCompanyParams,
44
type ProspeoBulkEnrichCompanyResponse,
55
} from '@/tools/prospeo/types'
6+
import { parseDataArray } from '@/tools/prospeo/utils'
67
import type { ToolConfig } from '@/tools/types'
78

8-
function parseData(value: unknown): unknown[] {
9-
if (Array.isArray(value)) return value
10-
if (typeof value === 'string' && value.trim().length > 0) {
11-
try {
12-
const parsed = JSON.parse(value)
13-
return Array.isArray(parsed) ? parsed : []
14-
} catch {
15-
return []
16-
}
17-
}
18-
return []
19-
}
20-
219
export const bulkEnrichCompanyTool: ToolConfig<
2210
ProspeoBulkEnrichCompanyParams,
2311
ProspeoBulkEnrichCompanyResponse
@@ -50,7 +38,7 @@ export const bulkEnrichCompanyTool: ToolConfig<
5038
'X-KEY': params.apiKey,
5139
'Content-Type': 'application/json',
5240
}),
53-
body: (params) => ({ data: parseData(params.data) }),
41+
body: (params) => ({ data: parseDataArray(params.data) }),
5442
},
5543

5644
transformResponse: async (response: Response) => {

apps/sim/tools/prospeo/bulk_enrich_person.ts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,9 @@ import {
33
type ProspeoBulkEnrichPersonParams,
44
type ProspeoBulkEnrichPersonResponse,
55
} from '@/tools/prospeo/types'
6+
import { parseDataArray } from '@/tools/prospeo/utils'
67
import type { ToolConfig } from '@/tools/types'
78

8-
function parseData(value: unknown): unknown[] {
9-
if (Array.isArray(value)) return value
10-
if (typeof value === 'string' && value.trim().length > 0) {
11-
try {
12-
const parsed = JSON.parse(value)
13-
return Array.isArray(parsed) ? parsed : []
14-
} catch {
15-
return []
16-
}
17-
}
18-
return []
19-
}
20-
219
export const bulkEnrichPersonTool: ToolConfig<
2210
ProspeoBulkEnrichPersonParams,
2311
ProspeoBulkEnrichPersonResponse
@@ -69,7 +57,7 @@ export const bulkEnrichPersonTool: ToolConfig<
6957
'Content-Type': 'application/json',
7058
}),
7159
body: (params) => {
72-
const body: Record<string, unknown> = { data: parseData(params.data) }
60+
const body: Record<string, unknown> = { data: parseDataArray(params.data) }
7361
if (params.only_verified_email !== undefined)
7462
body.only_verified_email = params.only_verified_email
7563
if (params.enrich_mobile !== undefined) body.enrich_mobile = params.enrich_mobile

apps/sim/tools/prospeo/search_company.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,9 @@ import {
44
type ProspeoSearchCompanyParams,
55
type ProspeoSearchCompanyResponse,
66
} from '@/tools/prospeo/types'
7+
import { parseFiltersObject } from '@/tools/prospeo/utils'
78
import type { ToolConfig } from '@/tools/types'
89

9-
function parseFilters(value: unknown): Record<string, unknown> {
10-
if (value && typeof value === 'object' && !Array.isArray(value)) {
11-
return value as Record<string, unknown>
12-
}
13-
if (typeof value === 'string' && value.trim().length > 0) {
14-
try {
15-
const parsed = JSON.parse(value)
16-
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
17-
return parsed as Record<string, unknown>
18-
}
19-
} catch {}
20-
}
21-
return {}
22-
}
23-
2410
export const searchCompanyTool: ToolConfig<
2511
ProspeoSearchCompanyParams,
2612
ProspeoSearchCompanyResponse
@@ -60,7 +46,7 @@ export const searchCompanyTool: ToolConfig<
6046
'Content-Type': 'application/json',
6147
}),
6248
body: (params) => {
63-
const body: Record<string, unknown> = { filters: parseFilters(params.filters) }
49+
const body: Record<string, unknown> = { filters: parseFiltersObject(params.filters) }
6450
if (params.page !== undefined) body.page = params.page
6551
return body
6652
},

apps/sim/tools/prospeo/search_person.ts

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,9 @@ import {
44
type ProspeoSearchPersonParams,
55
type ProspeoSearchPersonResponse,
66
} from '@/tools/prospeo/types'
7+
import { parseFiltersObject } from '@/tools/prospeo/utils'
78
import type { ToolConfig } from '@/tools/types'
89

9-
function parseFilters(value: unknown): Record<string, unknown> {
10-
if (value && typeof value === 'object' && !Array.isArray(value)) {
11-
return value as Record<string, unknown>
12-
}
13-
if (typeof value === 'string' && value.trim().length > 0) {
14-
try {
15-
const parsed = JSON.parse(value)
16-
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
17-
return parsed as Record<string, unknown>
18-
}
19-
} catch {}
20-
}
21-
return {}
22-
}
23-
2410
export const searchPersonTool: ToolConfig<ProspeoSearchPersonParams, ProspeoSearchPersonResponse> =
2511
{
2612
id: 'prospeo_search_person',
@@ -58,7 +44,7 @@ export const searchPersonTool: ToolConfig<ProspeoSearchPersonParams, ProspeoSear
5844
'Content-Type': 'application/json',
5945
}),
6046
body: (params) => {
61-
const body: Record<string, unknown> = { filters: parseFilters(params.filters) }
47+
const body: Record<string, unknown> = { filters: parseFiltersObject(params.filters) }
6248
if (params.page !== undefined) body.page = params.page
6349
return body
6450
},

apps/sim/tools/prospeo/utils.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export function parseDataArray(value: unknown): unknown[] {
2+
if (Array.isArray(value)) return value
3+
if (typeof value === 'string' && value.trim().length > 0) {
4+
try {
5+
const parsed = JSON.parse(value)
6+
return Array.isArray(parsed) ? parsed : []
7+
} catch {
8+
return []
9+
}
10+
}
11+
return []
12+
}
13+
14+
export function parseFiltersObject(value: unknown): Record<string, unknown> {
15+
if (value && typeof value === 'object' && !Array.isArray(value)) {
16+
return value as Record<string, unknown>
17+
}
18+
if (typeof value === 'string' && value.trim().length > 0) {
19+
try {
20+
const parsed = JSON.parse(value)
21+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
22+
return parsed as Record<string, unknown>
23+
}
24+
} catch {}
25+
}
26+
return {}
27+
}

0 commit comments

Comments
 (0)