sc-elections-mcp 0.5.0
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.
- package/README.md +187 -0
- package/dist/api/ethics-client.d.ts +45 -0
- package/dist/api/ethics-client.js +662 -0
- package/dist/api/ethics-client.js.map +1 -0
- package/dist/api/vrems-client.d.ts +18 -0
- package/dist/api/vrems-client.js +93 -0
- package/dist/api/vrems-client.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/candidate-detail.d.ts +12 -0
- package/dist/parsers/candidate-detail.js +112 -0
- package/dist/parsers/candidate-detail.js.map +1 -0
- package/dist/parsers/candidate-search.d.ts +6 -0
- package/dist/parsers/candidate-search.js +39 -0
- package/dist/parsers/candidate-search.js.map +1 -0
- package/dist/parsers/csv-export.d.ts +5 -0
- package/dist/parsers/csv-export.js +81 -0
- package/dist/parsers/csv-export.js.map +1 -0
- package/dist/tools/campaign.d.ts +2 -0
- package/dist/tools/campaign.js +191 -0
- package/dist/tools/campaign.js.map +1 -0
- package/dist/tools/cross-search.d.ts +26 -0
- package/dist/tools/cross-search.js +219 -0
- package/dist/tools/cross-search.js.map +1 -0
- package/dist/tools/overlap.d.ts +25 -0
- package/dist/tools/overlap.js +201 -0
- package/dist/tools/overlap.js.map +1 -0
- package/dist/tools/search.d.ts +2 -0
- package/dist/tools/search.js +146 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/sei.d.ts +2 -0
- package/dist/tools/sei.js +99 -0
- package/dist/tools/sei.js.map +1 -0
- package/dist/tools/vrems.d.ts +2 -0
- package/dist/tools/vrems.js +138 -0
- package/dist/tools/vrems.js.map +1 -0
- package/dist/types.d.ts +430 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ethics-client.js","sourceRoot":"","sources":["../../src/api/ethics-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { VremsElectionYear, VremsElection, VremsCandidate, VremsSearchCandidate, CandidateSearchParams } from '../types.js';
|
|
2
|
+
export declare function getElectionYears(electionType: string): Promise<VremsElectionYear[]>;
|
|
3
|
+
export declare function getElections(electionType: string, year: number): Promise<VremsElection[]>;
|
|
4
|
+
/**
|
|
5
|
+
* Search candidates within an election. Uses a two-step flow:
|
|
6
|
+
* 1. POST search to get HTML results + session cookie
|
|
7
|
+
* 2. GET CSV export with session cookie for rich data (phone, email, filing fee)
|
|
8
|
+
* Falls back to HTML parsing if CSV export fails.
|
|
9
|
+
*/
|
|
10
|
+
export declare function searchCandidates(params: CandidateSearchParams): Promise<{
|
|
11
|
+
candidates: VremsCandidate[];
|
|
12
|
+
fallback?: VremsSearchCandidate[];
|
|
13
|
+
}>;
|
|
14
|
+
/**
|
|
15
|
+
* Fetch raw HTML for a candidate detail page.
|
|
16
|
+
* Returns the HTML string for parsing by candidate-detail parser.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getCandidateDetailHtml(candidateId: string, electionId: string): Promise<string>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { parseCsvExport } from '../parsers/csv-export.js';
|
|
2
|
+
import { parseSearchHtml } from '../parsers/candidate-search.js';
|
|
3
|
+
const BASE = 'https://vrems.scvotes.sc.gov';
|
|
4
|
+
// ============================================================
|
|
5
|
+
// Election Lookup (clean JSON APIs)
|
|
6
|
+
// ============================================================
|
|
7
|
+
export async function getElectionYears(electionType) {
|
|
8
|
+
const response = await fetch(`${BASE}/Candidate/GetYearsByElectionType?electionType=${encodeURIComponent(electionType)}`, { headers: { 'X-Requested-With': 'XMLHttpRequest' } });
|
|
9
|
+
if (!response.ok)
|
|
10
|
+
return [];
|
|
11
|
+
return response.json();
|
|
12
|
+
}
|
|
13
|
+
export async function getElections(electionType, year) {
|
|
14
|
+
const response = await fetch(`${BASE}/Candidate/GetElections?electionType=${encodeURIComponent(electionType)}&year=${year}`, { headers: { 'X-Requested-With': 'XMLHttpRequest' } });
|
|
15
|
+
if (!response.ok)
|
|
16
|
+
return [];
|
|
17
|
+
return response.json();
|
|
18
|
+
}
|
|
19
|
+
// ============================================================
|
|
20
|
+
// Candidate Search (HTML + CSV export with session cookies)
|
|
21
|
+
// ============================================================
|
|
22
|
+
/**
|
|
23
|
+
* Search candidates within an election. Uses a two-step flow:
|
|
24
|
+
* 1. POST search to get HTML results + session cookie
|
|
25
|
+
* 2. GET CSV export with session cookie for rich data (phone, email, filing fee)
|
|
26
|
+
* Falls back to HTML parsing if CSV export fails.
|
|
27
|
+
*/
|
|
28
|
+
export async function searchCandidates(params) {
|
|
29
|
+
const formBody = new URLSearchParams({
|
|
30
|
+
ElectionId: params.electionId,
|
|
31
|
+
SelectedOffice: params.office || '-1',
|
|
32
|
+
SelectedAssociatedCounties: params.county || '',
|
|
33
|
+
SelectedCandidateStatus: params.status || 'All',
|
|
34
|
+
CandidateFirstName: params.firstName || '',
|
|
35
|
+
CandidateLastName: params.lastName || '',
|
|
36
|
+
SelectedPoliticalParty: params.party || 'All',
|
|
37
|
+
SelectedFilingLocation: params.filingLocation || 'All',
|
|
38
|
+
});
|
|
39
|
+
// Step 1: POST search to establish session
|
|
40
|
+
const searchResponse = await fetch(`${BASE}/Candidate/CandidateSearch/`, {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
headers: {
|
|
43
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
44
|
+
'X-Requested-With': 'XMLHttpRequest',
|
|
45
|
+
},
|
|
46
|
+
body: formBody.toString(),
|
|
47
|
+
});
|
|
48
|
+
if (!searchResponse.ok) {
|
|
49
|
+
throw new Error(`Candidate search failed: ${searchResponse.status}`);
|
|
50
|
+
}
|
|
51
|
+
const searchHtml = await searchResponse.text();
|
|
52
|
+
// Extract session cookie from Set-Cookie header
|
|
53
|
+
const cookies = searchResponse.headers.getSetCookie?.() || [];
|
|
54
|
+
const sessionCookie = cookies.find(c => c.startsWith('.AspNetCore.Mvc.CookieTempDataProvider'));
|
|
55
|
+
if (sessionCookie) {
|
|
56
|
+
// Step 2: GET CSV export with session cookie
|
|
57
|
+
try {
|
|
58
|
+
const exportResponse = await fetch(`${BASE}/Candidate/ExportSearchResults`, {
|
|
59
|
+
headers: {
|
|
60
|
+
Cookie: sessionCookie.split(';')[0],
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
if (exportResponse.ok) {
|
|
64
|
+
const csvText = await exportResponse.text();
|
|
65
|
+
const candidates = parseCsvExport(csvText);
|
|
66
|
+
if (candidates.length > 0) {
|
|
67
|
+
return { candidates };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Fall through to HTML parsing
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Fallback: parse HTML table
|
|
76
|
+
const fallback = parseSearchHtml(searchHtml);
|
|
77
|
+
return { candidates: [], fallback };
|
|
78
|
+
}
|
|
79
|
+
// ============================================================
|
|
80
|
+
// Candidate Detail (HTML page)
|
|
81
|
+
// ============================================================
|
|
82
|
+
/**
|
|
83
|
+
* Fetch raw HTML for a candidate detail page.
|
|
84
|
+
* Returns the HTML string for parsing by candidate-detail parser.
|
|
85
|
+
*/
|
|
86
|
+
export async function getCandidateDetailHtml(candidateId, electionId) {
|
|
87
|
+
const response = await fetch(`${BASE}/Candidate/CandidateDetail/?candidateId=${encodeURIComponent(candidateId)}&electionId=${encodeURIComponent(electionId)}&searchType=Default`);
|
|
88
|
+
if (!response.ok) {
|
|
89
|
+
throw new Error(`Candidate detail request failed: ${response.status}`);
|
|
90
|
+
}
|
|
91
|
+
return response.text();
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=vrems-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vrems-client.js","sourceRoot":"","sources":["../../src/api/vrems-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
|
+
import { registerSearchTools } from './tools/search.js';
|
|
5
|
+
import { registerCampaignTools } from './tools/campaign.js';
|
|
6
|
+
import { registerCrossSearchTools } from './tools/cross-search.js';
|
|
7
|
+
import { registerSeiTools } from './tools/sei.js';
|
|
8
|
+
import { registerVremsTools } from './tools/vrems.js';
|
|
9
|
+
import { registerOverlapTools } from './tools/overlap.js';
|
|
10
|
+
const server = new McpServer({
|
|
11
|
+
name: 'sc-elections-mcp',
|
|
12
|
+
version: '0.5.0',
|
|
13
|
+
});
|
|
14
|
+
// Ethics Commission tools (ethicsfiling.sc.gov)
|
|
15
|
+
registerSearchTools(server);
|
|
16
|
+
registerCampaignTools(server);
|
|
17
|
+
registerCrossSearchTools(server);
|
|
18
|
+
registerOverlapTools(server);
|
|
19
|
+
registerSeiTools(server);
|
|
20
|
+
// SC Votes / VREMS tools (vrems.scvotes.sc.gov)
|
|
21
|
+
registerVremsTools(server);
|
|
22
|
+
async function main() {
|
|
23
|
+
const transport = new StdioServerTransport();
|
|
24
|
+
await server.connect(transport);
|
|
25
|
+
}
|
|
26
|
+
main().catch((error) => {
|
|
27
|
+
console.error('Fatal error:', error);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,kBAAkB;IACxB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,gDAAgD;AAChD,mBAAmB,CAAC,MAAM,CAAC,CAAA;AAC3B,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAC7B,wBAAwB,CAAC,MAAM,CAAC,CAAA;AAChC,oBAAoB,CAAC,MAAM,CAAC,CAAA;AAC5B,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAExB,gDAAgD;AAChD,kBAAkB,CAAC,MAAM,CAAC,CAAA;AAE1B,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAA;IAC5C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { VremsCandidateDetail } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse the HTML detail page returned by VREMS CandidateDetail GET.
|
|
4
|
+
*
|
|
5
|
+
* Page structure uses:
|
|
6
|
+
* <span class="label-min-width font-bold">Label:</span>
|
|
7
|
+
* <span class="text-min-width">Value</span>
|
|
8
|
+
*
|
|
9
|
+
* Documents use <a class="document-link"> with JS click handlers containing
|
|
10
|
+
* candidateId and documentTypeSid variables.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseCandidateDetail(html: string): VremsCandidateDetail;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { parse } from 'node-html-parser';
|
|
2
|
+
/**
|
|
3
|
+
* Parse the HTML detail page returned by VREMS CandidateDetail GET.
|
|
4
|
+
*
|
|
5
|
+
* Page structure uses:
|
|
6
|
+
* <span class="label-min-width font-bold">Label:</span>
|
|
7
|
+
* <span class="text-min-width">Value</span>
|
|
8
|
+
*
|
|
9
|
+
* Documents use <a class="document-link"> with JS click handlers containing
|
|
10
|
+
* candidateId and documentTypeSid variables.
|
|
11
|
+
*/
|
|
12
|
+
export function parseCandidateDetail(html) {
|
|
13
|
+
const root = parse(html);
|
|
14
|
+
// Extract candidateId from hidden input for document URLs
|
|
15
|
+
const candidateId = root.querySelector('input#CandidateId')?.getAttribute('value')
|
|
16
|
+
|| root.querySelector('input[name="CandidateId"]')?.getAttribute('value')
|
|
17
|
+
|| '';
|
|
18
|
+
return {
|
|
19
|
+
name: extractFirstH2(root),
|
|
20
|
+
election: extractLabelValue(root, 'Election'),
|
|
21
|
+
office: extractLabelValue(root, 'Office'),
|
|
22
|
+
nameOnBallot: extractLabelValue(root, 'Name on Ballot'),
|
|
23
|
+
party: extractLabelValue(root, 'Party'),
|
|
24
|
+
address: extractLabelValue(root, 'Address'),
|
|
25
|
+
status: extractLabelValue(root, 'Status'),
|
|
26
|
+
dateFiled: extractLabelValue(root, 'Date Filed'),
|
|
27
|
+
locationFiled: extractLabelValue(root, 'Location Filed'),
|
|
28
|
+
documents: parseDocuments(root, candidateId, html),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the first h2 that isn't "Candidate Documents" or similar section header.
|
|
33
|
+
*/
|
|
34
|
+
function extractFirstH2(root) {
|
|
35
|
+
const h2s = root.querySelectorAll('h2');
|
|
36
|
+
for (const h2 of h2s) {
|
|
37
|
+
const text = h2.text.trim();
|
|
38
|
+
if (text && !text.includes('Document')) {
|
|
39
|
+
return text;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return '';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extract value from the VREMS label/value span pattern:
|
|
46
|
+
* <span class="label-min-width font-bold">Label:</span>
|
|
47
|
+
* <span class="text-min-width">Value</span>
|
|
48
|
+
*/
|
|
49
|
+
function extractLabelValue(root, label) {
|
|
50
|
+
const spans = root.querySelectorAll('span.label-min-width');
|
|
51
|
+
for (const span of spans) {
|
|
52
|
+
const text = span.text.trim().replace(/:$/, '');
|
|
53
|
+
if (text === label) {
|
|
54
|
+
const next = span.nextElementSibling;
|
|
55
|
+
if (next) {
|
|
56
|
+
return next.text.trim();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return '';
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Parse document links from the detail page.
|
|
64
|
+
* Documents use <a class="document-link"> with JS click handlers.
|
|
65
|
+
* The JS extracts candidateId and documentTypeSid from data attributes on the row.
|
|
66
|
+
*/
|
|
67
|
+
function parseDocuments(root, candidateId, html) {
|
|
68
|
+
const docs = [];
|
|
69
|
+
const links = root.querySelectorAll('a.document-link');
|
|
70
|
+
for (const link of links) {
|
|
71
|
+
const name = link.text.trim();
|
|
72
|
+
// Try to get doc type from parent row's data attributes
|
|
73
|
+
const row = link.closest('tr');
|
|
74
|
+
const docType = row?.getAttribute('data-document-type')
|
|
75
|
+
|| row?.getAttribute('data-key')
|
|
76
|
+
|| '';
|
|
77
|
+
// If no data attributes, infer doc type from link text
|
|
78
|
+
let inferredType = docType;
|
|
79
|
+
if (!inferredType) {
|
|
80
|
+
if (name.includes('SICPP') || name.includes('Filing Form')) {
|
|
81
|
+
inferredType = 'SICPledge';
|
|
82
|
+
}
|
|
83
|
+
else if (name.includes('Filing Fee') || name.includes('Receipt')) {
|
|
84
|
+
inferredType = 'FilingReceipt';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (candidateId && inferredType) {
|
|
88
|
+
docs.push({
|
|
89
|
+
name,
|
|
90
|
+
type: inferredType,
|
|
91
|
+
url: `https://vrems.scvotes.sc.gov/Candidate/ViewCandidateDocument?candidateId=${candidateId}&documentTypeSid=${inferredType}`,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
docs.push({ name, type: inferredType, url: '' });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Fallback: parse document types from the JS click handler in the page
|
|
99
|
+
if (docs.length === 0 && candidateId) {
|
|
100
|
+
const docTypeMatches = html.matchAll(/documentTypeSid=([^&'"]+)/g);
|
|
101
|
+
for (const match of docTypeMatches) {
|
|
102
|
+
const type = match[1];
|
|
103
|
+
docs.push({
|
|
104
|
+
name: type,
|
|
105
|
+
type,
|
|
106
|
+
url: `https://vrems.scvotes.sc.gov/Candidate/ViewCandidateDocument?candidateId=${candidateId}&documentTypeSid=${type}`,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return docs;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=candidate-detail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidate-detail.js","sourceRoot":"","sources":["../../src/parsers/candidate-detail.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { VremsSearchCandidate } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Parse the HTML table fragment returned by VREMS CandidateSearch POST.
|
|
4
|
+
* Extracts candidate data and IDs from the DataTable rows.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parseSearchHtml(html: string): VremsSearchCandidate[];
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { parse } from 'node-html-parser';
|
|
2
|
+
/**
|
|
3
|
+
* Parse the HTML table fragment returned by VREMS CandidateSearch POST.
|
|
4
|
+
* Extracts candidate data and IDs from the DataTable rows.
|
|
5
|
+
*/
|
|
6
|
+
export function parseSearchHtml(html) {
|
|
7
|
+
const root = parse(html);
|
|
8
|
+
const rows = root.querySelectorAll('table#gridCandidateSearch tbody tr');
|
|
9
|
+
if (rows.length === 0) {
|
|
10
|
+
// Try without table ID in case markup changes
|
|
11
|
+
const altRows = root.querySelectorAll('tbody tr');
|
|
12
|
+
if (altRows.length > 0) {
|
|
13
|
+
return altRows.map(parseRow).filter(Boolean);
|
|
14
|
+
}
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
return rows.map(parseRow).filter(Boolean);
|
|
18
|
+
}
|
|
19
|
+
function parseRow(row) {
|
|
20
|
+
const cells = row.querySelectorAll('td');
|
|
21
|
+
if (cells.length < 7)
|
|
22
|
+
return null;
|
|
23
|
+
const link = cells[2]?.querySelector('a');
|
|
24
|
+
const href = link?.getAttribute('href') || '';
|
|
25
|
+
// href = "CandidateDetail/?candidateId=12345&electionId=22121&searchType=Default"
|
|
26
|
+
const params = new URLSearchParams(href.split('?')[1] || '');
|
|
27
|
+
return {
|
|
28
|
+
candidateId: params.get('candidateId') || row.getAttribute('data-key') || '',
|
|
29
|
+
electionId: params.get('electionId') || '',
|
|
30
|
+
office: cells[0]?.text?.trim() || '',
|
|
31
|
+
counties: cells[1]?.text?.trim() || '',
|
|
32
|
+
name: cells[2]?.text?.trim() || '',
|
|
33
|
+
runningMate: cells[3]?.text?.trim() || '',
|
|
34
|
+
party: cells[4]?.text?.trim() || '',
|
|
35
|
+
filingLocation: cells[5]?.text?.trim() || '',
|
|
36
|
+
status: cells[6]?.text?.trim() || '',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=candidate-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"candidate-search.js","sourceRoot":"","sources":["../../src/parsers/candidate-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAGxC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,oCAAoC,CAAC,CAAA;IAExE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,8CAA8C;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAA;QACjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAA2B,CAAA;QACxE,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAA2B,CAAA;AACrE,CAAC;AAED,SAAS,QAAQ,CAAC,GAA6B;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IAE7C,kFAAkF;IAClF,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAE5D,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE;QAC5E,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;QAC1C,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACpC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACtC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAClC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACzC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QACnC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;QAC5C,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;KACrC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse a CSV line handling quoted fields with embedded commas.
|
|
3
|
+
*/
|
|
4
|
+
function parseCsvLine(line) {
|
|
5
|
+
const fields = [];
|
|
6
|
+
let current = '';
|
|
7
|
+
let inQuotes = false;
|
|
8
|
+
let i = 0;
|
|
9
|
+
while (i < line.length) {
|
|
10
|
+
const ch = line[i];
|
|
11
|
+
if (inQuotes) {
|
|
12
|
+
if (ch === '"') {
|
|
13
|
+
if (i + 1 < line.length && line[i + 1] === '"') {
|
|
14
|
+
// RFC 4180: "" inside quoted field = literal "
|
|
15
|
+
current += '"';
|
|
16
|
+
i += 2;
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
// End of quoted field
|
|
20
|
+
inQuotes = false;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
current += ch;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (ch === '"') {
|
|
27
|
+
inQuotes = true;
|
|
28
|
+
}
|
|
29
|
+
else if (ch === ',') {
|
|
30
|
+
fields.push(current.trim());
|
|
31
|
+
current = '';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
current += ch;
|
|
35
|
+
}
|
|
36
|
+
i++;
|
|
37
|
+
}
|
|
38
|
+
fields.push(current.trim());
|
|
39
|
+
return fields;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse the 25-column CSV export from VREMS ExportSearchResults.
|
|
43
|
+
*/
|
|
44
|
+
export function parseCsvExport(csv) {
|
|
45
|
+
const lines = csv.split('\n');
|
|
46
|
+
if (lines.length < 2)
|
|
47
|
+
return [];
|
|
48
|
+
// Skip header row
|
|
49
|
+
return lines.slice(1)
|
|
50
|
+
.filter(line => line.trim())
|
|
51
|
+
.map(line => {
|
|
52
|
+
const f = parseCsvLine(line);
|
|
53
|
+
return {
|
|
54
|
+
ballotSortOrder: f[0] || '',
|
|
55
|
+
filingLevel: f[1] || '',
|
|
56
|
+
electionName: f[2] || '',
|
|
57
|
+
office: f[3] || '',
|
|
58
|
+
district: f[4] || '',
|
|
59
|
+
counties: f[5] || '',
|
|
60
|
+
ballotFirstMiddle: f[6] || '',
|
|
61
|
+
ballotLastSuffix: f[7] || '',
|
|
62
|
+
runningMate: f[8] || '',
|
|
63
|
+
firstName: f[9] || '',
|
|
64
|
+
middleName: f[10] || '',
|
|
65
|
+
lastName: f[11] || '',
|
|
66
|
+
suffix: f[12] || '',
|
|
67
|
+
party: f[13] || '',
|
|
68
|
+
filingLocation: f[14] || '',
|
|
69
|
+
dateFiled: f[15] || '',
|
|
70
|
+
timeFiled: f[16] || '',
|
|
71
|
+
filingFee: f[17] || '',
|
|
72
|
+
status: f[18] || '',
|
|
73
|
+
statusDate: f[19] || '',
|
|
74
|
+
address: f[20] || '',
|
|
75
|
+
phone: f[21] || '',
|
|
76
|
+
email: f[22] || '',
|
|
77
|
+
runningMateOffice: f[23] || '',
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=csv-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-export.js","sourceRoot":"","sources":["../../src/parsers/csv-export.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC/C,+CAA+C;oBAC/C,OAAO,IAAI,GAAG,CAAA;oBACd,CAAC,IAAI,CAAC,CAAA;oBACN,SAAQ;gBACV,CAAC;gBACD,sBAAsB;gBACtB,QAAQ,GAAG,KAAK,CAAA;YAClB,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,EAAE,CAAA;YACf,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YAC3B,OAAO,GAAG,EAAE,CAAA;QACd,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,EAAE,CAAA;QACf,CAAC;QACD,CAAC,EAAE,CAAA;IACL,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAC3B,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,kBAAkB;IAClB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SAClB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC3B,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAC5B,OAAO;YACL,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC3B,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACxB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAClB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACpB,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACpB,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC7B,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAC5B,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YACrB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACrB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACnB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YAClB,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACtB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACtB,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACnB,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACvB,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YACpB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YAClB,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;YAClB,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE;SAC/B,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|