@civiq/entity-resolution 0.1.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.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +135 -0
  3. package/data/bioguide-fec-mapping.json +4186 -0
  4. package/data/sec-sic-data.json +10427 -0
  5. package/dist/__tests__/company-entity-resolver.test.d.ts +6 -0
  6. package/dist/__tests__/company-entity-resolver.test.d.ts.map +1 -0
  7. package/dist/__tests__/company-entity-resolver.test.js +267 -0
  8. package/dist/__tests__/company-entity-resolver.test.js.map +1 -0
  9. package/dist/__tests__/entity-resolution.test.d.ts +2 -0
  10. package/dist/__tests__/entity-resolution.test.d.ts.map +1 -0
  11. package/dist/__tests__/entity-resolution.test.js +296 -0
  12. package/dist/__tests__/entity-resolution.test.js.map +1 -0
  13. package/dist/__tests__/fec-entity-resolution.test.d.ts +2 -0
  14. package/dist/__tests__/fec-entity-resolution.test.d.ts.map +1 -0
  15. package/dist/__tests__/fec-entity-resolution.test.js +49 -0
  16. package/dist/__tests__/fec-entity-resolution.test.js.map +1 -0
  17. package/dist/bioguide-fec-mapping.d.ts +27 -0
  18. package/dist/bioguide-fec-mapping.d.ts.map +1 -0
  19. package/dist/bioguide-fec-mapping.js +57 -0
  20. package/dist/bioguide-fec-mapping.js.map +1 -0
  21. package/dist/cache.d.ts +18 -0
  22. package/dist/cache.d.ts.map +1 -0
  23. package/dist/cache.js +18 -0
  24. package/dist/cache.js.map +1 -0
  25. package/dist/committee-agency-map.d.ts +58 -0
  26. package/dist/committee-agency-map.d.ts.map +1 -0
  27. package/dist/committee-agency-map.js +658 -0
  28. package/dist/committee-agency-map.js.map +1 -0
  29. package/dist/committee-alias-table.d.ts +11 -0
  30. package/dist/committee-alias-table.d.ts.map +1 -0
  31. package/dist/committee-alias-table.js +191 -0
  32. package/dist/committee-alias-table.js.map +1 -0
  33. package/dist/company-alias-table.d.ts +36 -0
  34. package/dist/company-alias-table.d.ts.map +1 -0
  35. package/dist/company-alias-table.js +1307 -0
  36. package/dist/company-alias-table.js.map +1 -0
  37. package/dist/company-entity-resolver.d.ts +94 -0
  38. package/dist/company-entity-resolver.d.ts.map +1 -0
  39. package/dist/company-entity-resolver.js +282 -0
  40. package/dist/company-entity-resolver.js.map +1 -0
  41. package/dist/configure.d.ts +15 -0
  42. package/dist/configure.d.ts.map +1 -0
  43. package/dist/configure.js +19 -0
  44. package/dist/configure.js.map +1 -0
  45. package/dist/fec-entity-resolution.d.ts +88 -0
  46. package/dist/fec-entity-resolution.d.ts.map +1 -0
  47. package/dist/fec-entity-resolution.js +407 -0
  48. package/dist/fec-entity-resolution.js.map +1 -0
  49. package/dist/index.d.ts +30 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +33 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/industry-taxonomy.d.ts +90 -0
  54. package/dist/industry-taxonomy.d.ts.map +1 -0
  55. package/dist/industry-taxonomy.js +1026 -0
  56. package/dist/industry-taxonomy.js.map +1 -0
  57. package/dist/lda-issue-policy-map.d.ts +13 -0
  58. package/dist/lda-issue-policy-map.d.ts.map +1 -0
  59. package/dist/lda-issue-policy-map.js +193 -0
  60. package/dist/lda-issue-policy-map.js.map +1 -0
  61. package/dist/lobbying-committee-resolver.d.ts +23 -0
  62. package/dist/lobbying-committee-resolver.d.ts.map +1 -0
  63. package/dist/lobbying-committee-resolver.js +158 -0
  64. package/dist/lobbying-committee-resolver.js.map +1 -0
  65. package/dist/logger.d.ts +20 -0
  66. package/dist/logger.d.ts.map +1 -0
  67. package/dist/logger.js +20 -0
  68. package/dist/logger.js.map +1 -0
  69. package/dist/sic-sector-map.d.ts +32 -0
  70. package/dist/sic-sector-map.d.ts.map +1 -0
  71. package/dist/sic-sector-map.js +109 -0
  72. package/dist/sic-sector-map.js.map +1 -0
  73. package/dist/ticker-industry-resolver.d.ts +22 -0
  74. package/dist/ticker-industry-resolver.d.ts.map +1 -0
  75. package/dist/ticker-industry-resolver.js +254 -0
  76. package/dist/ticker-industry-resolver.js.map +1 -0
  77. package/dist/types.d.ts +30 -0
  78. package/dist/types.d.ts.map +1 -0
  79. package/dist/types.js +6 -0
  80. package/dist/types.js.map +1 -0
  81. package/package.json +51 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) 2019-2025 Mark Sandford
3
+ * Licensed under the MIT License. See LICENSE and NOTICE files.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=company-entity-resolver.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company-entity-resolver.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/company-entity-resolver.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,267 @@
1
+ /**
2
+ * Copyright (c) 2019-2025 Mark Sandford
3
+ * Licensed under the MIT License. See LICENSE and NOTICE files.
4
+ */
5
+ import { describe, it, expect } from 'vitest';
6
+ import { normalizeCompanyName, resolveCompanyName, resolveCompanyNames, companiesMatch, validateTokenOverlap, similarityRatio, } from '../company-entity-resolver';
7
+ import { findCompanyByAlias } from '../company-alias-table';
8
+ import { IndustrySector } from '../industry-taxonomy';
9
+ // ── normalizeCompanyName ────────────────────────────────────────────
10
+ describe('normalizeCompanyName', () => {
11
+ it('strips corporate suffixes', () => {
12
+ expect(normalizeCompanyName('Dow Chemical Co')).toBe('DOW CHEMICAL');
13
+ expect(normalizeCompanyName('PFIZER INC.')).toBe('PFIZER');
14
+ expect(normalizeCompanyName('Johnson & Johnson Inc')).toBe('JOHNSON AND JOHNSON');
15
+ });
16
+ it('normalizes ampersand to AND', () => {
17
+ expect(normalizeCompanyName('AT&T')).toBe('AT AND T');
18
+ });
19
+ it('removes punctuation', () => {
20
+ expect(normalizeCompanyName('J.P. Morgan')).toBe('JP MORGAN');
21
+ });
22
+ it('expands known abbreviations', () => {
23
+ expect(normalizeCompanyName('JNJ')).toBe('JOHNSON AND JOHNSON');
24
+ expect(normalizeCompanyName('MSFT')).toBe('MICROSOFT');
25
+ expect(normalizeCompanyName('GOOG')).toBe('ALPHABET');
26
+ });
27
+ it('collapses whitespace', () => {
28
+ expect(normalizeCompanyName(' DOW CHEMICAL ')).toBe('DOW CHEMICAL');
29
+ });
30
+ it('handles empty and whitespace-only input', () => {
31
+ expect(normalizeCompanyName('')).toBe('');
32
+ expect(normalizeCompanyName(' ')).toBe('');
33
+ });
34
+ });
35
+ // ── Cross-API Matching ──────────────────────────────────────────────
36
+ describe('cross-API company matching', () => {
37
+ it('matches EPA "DOW CHEMICAL CO" with SEC "Dow Inc." via alias table', () => {
38
+ const result = companiesMatch('DOW CHEMICAL CO', 'Dow Inc.');
39
+ expect(result.match).toBe(true);
40
+ expect(result.confidence).toBeGreaterThanOrEqual(0.8);
41
+ });
42
+ it('matches EPA "DOW CHEMICAL CO TEXAS OPERATIONS" with FEC "DOW INC"', () => {
43
+ const aliasA = findCompanyByAlias('DOW CHEMICAL CO TEXAS OPERATIONS');
44
+ const aliasB = findCompanyByAlias('DOW INC');
45
+ expect(aliasA).not.toBeNull();
46
+ expect(aliasB).not.toBeNull();
47
+ expect(aliasA.canonicalName).toBe(aliasB.canonicalName);
48
+ });
49
+ it('matches "EXXONMOBIL" with "EXXON MOBIL CORP" via alias table', () => {
50
+ const result = companiesMatch('EXXONMOBIL', 'EXXON MOBIL CORP');
51
+ expect(result.match).toBe(true);
52
+ });
53
+ it('matches "JOHNSON & JOHNSON" with "JNJ" via abbreviation + alias', () => {
54
+ const aliasA = findCompanyByAlias('JOHNSON & JOHNSON');
55
+ const aliasB = findCompanyByAlias('JNJ');
56
+ expect(aliasA).not.toBeNull();
57
+ expect(aliasB).not.toBeNull();
58
+ expect(aliasA.canonicalName).toBe('JOHNSON AND JOHNSON');
59
+ expect(aliasB.canonicalName).toBe('JOHNSON AND JOHNSON');
60
+ });
61
+ it('matches "LOCKHEED MARTIN CORP" with "LOCKHEED MARTIN CORPORATION"', () => {
62
+ const result = companiesMatch('LOCKHEED MARTIN CORP', 'LOCKHEED MARTIN CORPORATION');
63
+ expect(result.match).toBe(true);
64
+ expect(result.confidence).toBeGreaterThanOrEqual(0.9);
65
+ });
66
+ it('matches "RAYTHEON CO" with "RAYTHEON TECHNOLOGIES" via alias table', () => {
67
+ const aliasA = findCompanyByAlias('RAYTHEON CO');
68
+ const aliasB = findCompanyByAlias('RAYTHEON TECHNOLOGIES');
69
+ expect(aliasA).not.toBeNull();
70
+ expect(aliasB).not.toBeNull();
71
+ expect(aliasA.canonicalName).toBe(aliasB.canonicalName);
72
+ });
73
+ it('matches "FACEBOOK" with "META PLATFORMS" via alias table', () => {
74
+ const aliasA = findCompanyByAlias('FACEBOOK');
75
+ const aliasB = findCompanyByAlias('META PLATFORMS INC');
76
+ expect(aliasA).not.toBeNull();
77
+ expect(aliasB).not.toBeNull();
78
+ expect(aliasA.canonicalName).toBe(aliasB.canonicalName);
79
+ });
80
+ it('matches "WAL-MART STORES INC" with "WALMART"', () => {
81
+ const aliasA = findCompanyByAlias('WAL-MART STORES INC');
82
+ const aliasB = findCompanyByAlias('WALMART');
83
+ expect(aliasA).not.toBeNull();
84
+ expect(aliasB).not.toBeNull();
85
+ expect(aliasA.canonicalName).toBe(aliasB.canonicalName);
86
+ });
87
+ });
88
+ // ── False Positive Rejection ────────────────────────────────────────
89
+ describe('false positive rejection', () => {
90
+ it('rejects "American Health Association" vs "American Heart Association"', () => {
91
+ expect(validateTokenOverlap('AMERICAN HEALTH ASSOCIATION', 'AMERICAN HEART ASSOCIATION')).toBe(false);
92
+ });
93
+ it('rejects "American Health Association" via companiesMatch', () => {
94
+ const result = companiesMatch('American Health Association', 'American Heart Association');
95
+ expect(result.match).toBe(false);
96
+ });
97
+ it('rejects "Goldman Sachs" vs "Goldman Stanley"', () => {
98
+ const result = companiesMatch('Goldman Sachs', 'Goldman Stanley');
99
+ expect(result.match).toBe(false);
100
+ });
101
+ it('rejects "Apple" vs "Alphabet"', () => {
102
+ const result = companiesMatch('APPLE INC', 'ALPHABET INC');
103
+ expect(result.match).toBe(false);
104
+ });
105
+ it('rejects "FORD MOTOR" vs "FORD FOUNDATION"', () => {
106
+ const result = companiesMatch('FORD MOTOR CO', 'FORD FOUNDATION');
107
+ expect(result.match).toBe(false);
108
+ });
109
+ });
110
+ // ── SIC Code Boost ──────────────────────────────────────────────────
111
+ describe('SIC code cross-validation', () => {
112
+ it('boosts confidence when SIC sectors match', () => {
113
+ // "PFIZER PHARMA" vs "PFIZER HEALTH" — same SIC sector (Health)
114
+ const withSic = companiesMatch('PFIZER PHARMACEUTICALS', 'PFIZER HEALTHCARE', {
115
+ sicCodeA: '2834', // Chemicals/Pharmaceuticals → Health
116
+ sicCodeB: '2834',
117
+ });
118
+ const withoutSic = companiesMatch('PFIZER PHARMACEUTICALS', 'PFIZER HEALTHCARE');
119
+ expect(withSic.confidence).toBeGreaterThanOrEqual(withoutSic.confidence);
120
+ });
121
+ it('does not boost when SIC sectors differ', () => {
122
+ const result = companiesMatch('SOME ENERGY CORP', 'SOME ENERGY CORP', {
123
+ sicCodeA: '2911', // Petroleum → Energy
124
+ sicCodeB: '6020', // Banking → Finance
125
+ });
126
+ // Exact match still works regardless
127
+ expect(result.match).toBe(true);
128
+ });
129
+ });
130
+ // ── resolveCompanyName ──────────────────────────────────────────────
131
+ describe('resolveCompanyName', () => {
132
+ it('resolves known company via alias table', () => {
133
+ const result = resolveCompanyName('DOW CHEMICAL CO');
134
+ expect(result).not.toBeNull();
135
+ expect(result.canonicalName).toBe('DOW');
136
+ expect(result.confidence).toBeGreaterThanOrEqual(0.8);
137
+ expect(result.sector).toBe(IndustrySector.MISC_BUSINESS);
138
+ });
139
+ it('resolves with SIC context', () => {
140
+ const result = resolveCompanyName('PFIZER INC', { sicCode: '2834' });
141
+ expect(result).not.toBeNull();
142
+ expect(result.canonicalName).toBe('PFIZER');
143
+ expect(result.sector).toBe(IndustrySector.HEALTH);
144
+ expect(result.confidence).toBe(0.95);
145
+ });
146
+ it('returns normalized form for unknown companies', () => {
147
+ const result = resolveCompanyName('Acme Widget Corp');
148
+ expect(result).not.toBeNull();
149
+ expect(result.canonicalName).toBe('ACME WIDGET');
150
+ expect(result.confidence).toBe(0.5);
151
+ });
152
+ it('returns null for empty input', () => {
153
+ expect(resolveCompanyName('')).toBeNull();
154
+ expect(resolveCompanyName(' ')).toBeNull();
155
+ });
156
+ });
157
+ // ── resolveCompanyNames (batch) ─────────────────────────────────────
158
+ describe('resolveCompanyNames', () => {
159
+ it('deduplicates entries that resolve to the same company', () => {
160
+ const results = resolveCompanyNames([
161
+ { name: 'DOW CHEMICAL CO', source: 'EPA' },
162
+ { name: 'Dow Inc.', source: 'SEC' },
163
+ { name: 'DOW INC', source: 'FEC' },
164
+ ]);
165
+ expect(results.size).toBe(1);
166
+ const dow = results.get('DOW');
167
+ expect(dow).toBeDefined();
168
+ expect(dow.aliases.length).toBeGreaterThanOrEqual(2);
169
+ });
170
+ it('keeps distinct companies separate', () => {
171
+ const results = resolveCompanyNames([
172
+ { name: 'PFIZER INC', source: 'FEC' },
173
+ { name: 'MERCK & CO', source: 'SEC' },
174
+ ]);
175
+ expect(results.size).toBe(2);
176
+ });
177
+ it('merges SIC codes from multiple sources', () => {
178
+ const results = resolveCompanyNames([
179
+ { name: 'Johnson & Johnson', source: 'FEC', context: { sicCode: '2834' } },
180
+ { name: 'JNJ', source: 'SEC', context: { sicCode: '3841' } },
181
+ ]);
182
+ const jnj = results.get('JOHNSON AND JOHNSON');
183
+ expect(jnj).toBeDefined();
184
+ // Should have both SIC codes from alias table
185
+ expect(jnj.sicCodes.length).toBeGreaterThanOrEqual(2);
186
+ });
187
+ });
188
+ // ── Batch Performance ───────────────────────────────────────────────
189
+ describe('batch performance', () => {
190
+ it('resolves 100 names in under 100ms', () => {
191
+ const names = Array.from({ length: 100 }, (_, i) => ({
192
+ name: `Company ${i} Inc`,
193
+ source: 'test',
194
+ }));
195
+ const start = performance.now();
196
+ resolveCompanyNames(names);
197
+ const elapsed = performance.now() - start;
198
+ expect(elapsed).toBeLessThan(100);
199
+ });
200
+ });
201
+ // ── similarityRatio ─────────────────────────────────────────────────
202
+ describe('similarityRatio', () => {
203
+ it('returns 1.0 for identical strings', () => {
204
+ expect(similarityRatio('PFIZER', 'PFIZER')).toBe(1.0);
205
+ });
206
+ it('returns 0 for completely different strings', () => {
207
+ expect(similarityRatio('ABC', 'XYZ')).toBe(0);
208
+ });
209
+ it('returns high ratio for similar strings', () => {
210
+ expect(similarityRatio('NORTHROP', 'NORTHRUP')).toBeGreaterThan(0.8);
211
+ });
212
+ it('returns 1.0 for two empty strings', () => {
213
+ expect(similarityRatio('', '')).toBe(1.0);
214
+ });
215
+ });
216
+ // ── validateTokenOverlap ────────────────────────────────────────────
217
+ describe('validateTokenOverlap', () => {
218
+ it('rejects words that differ by one character but are different words', () => {
219
+ expect(validateTokenOverlap('american health association', 'american heart association')).toBe(false);
220
+ });
221
+ it('accepts names with corporate suffix differences', () => {
222
+ expect(validateTokenOverlap('lockheed martin', 'lockheed martin corporation')).toBe(true);
223
+ });
224
+ it('accepts single-word matches', () => {
225
+ expect(validateTokenOverlap('boeing', 'the boeing company')).toBe(true);
226
+ });
227
+ it('handles typos gracefully', () => {
228
+ expect(validateTokenOverlap('northrop grumman', 'northrup grumman')).toBe(true);
229
+ });
230
+ it('returns false for empty strings', () => {
231
+ expect(validateTokenOverlap('', '')).toBe(false);
232
+ });
233
+ });
234
+ // ── findCompanyByAlias ──────────────────────────────────────────────
235
+ describe('findCompanyByAlias', () => {
236
+ it('finds by canonical name', () => {
237
+ const result = findCompanyByAlias('PFIZER');
238
+ expect(result).not.toBeNull();
239
+ expect(result.canonicalName).toBe('PFIZER');
240
+ });
241
+ it('finds by known alias', () => {
242
+ const result = findCompanyByAlias('GOOGLE');
243
+ expect(result).not.toBeNull();
244
+ expect(result.canonicalName).toBe('ALPHABET');
245
+ });
246
+ it('finds after stripping suffixes', () => {
247
+ const result = findCompanyByAlias('Boeing Company');
248
+ expect(result).not.toBeNull();
249
+ expect(result.canonicalName).toBe('BOEING');
250
+ });
251
+ it('returns null for unknown companies', () => {
252
+ expect(findCompanyByAlias('Acme Widget Corp')).toBeNull();
253
+ });
254
+ it('returns null for empty input', () => {
255
+ expect(findCompanyByAlias('')).toBeNull();
256
+ expect(findCompanyByAlias(' ')).toBeNull();
257
+ });
258
+ it('has correct sector for known companies', () => {
259
+ const pfizer = findCompanyByAlias('PFIZER');
260
+ expect(pfizer.sector).toBe(IndustrySector.HEALTH);
261
+ const exxon = findCompanyByAlias('EXXONMOBIL');
262
+ expect(exxon.sector).toBe(IndustrySector.ENERGY_NATURAL_RESOURCES);
263
+ const jpmorgan = findCompanyByAlias('JPMORGAN CHASE');
264
+ expect(jpmorgan.sector).toBe(IndustrySector.FINANCE_INSURANCE_REAL_ESTATE);
265
+ });
266
+ });
267
+ //# sourceMappingURL=company-entity-resolver.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"company-entity-resolver.test.js","sourceRoot":"","sources":["../../src/__tests__/company-entity-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entity-resolution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-resolution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/entity-resolution.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,296 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import {
3
+ // Industry taxonomy
4
+ IndustrySector, categorizeContribution, categorizePACByName,
5
+ // Committee-agency map
6
+ HOUSE_COMMITTEE_MAPPINGS, SENATE_COMMITTEE_MAPPINGS, ALL_COMMITTEE_MAPPINGS, getAgenciesForCommittee, getTopicsForCommittee, getCommitteesForAgency,
7
+ // Committee aliases
8
+ COMMITTEE_ALIASES, getAllCommitteeAliasNames,
9
+ // Lobbying resolver
10
+ resolveGovernmentEntity, resolveFilingEntities, getResolvedCommittees,
11
+ // SIC sector map
12
+ sicToSector,
13
+ // LDA issue map
14
+ LDA_ISSUE_POLICY_MAP, getLDAIssueLabel, getPolicyAreasForLDAIssue, getAllLDAIssueCodes,
15
+ // Bioguide-FEC mapping
16
+ getFECIdFromBioguide, hasFECMapping, getBioguideFromFEC, getMappingStats, } from '../index';
17
+ // ── Industry Taxonomy ────────────────────────────────────────────────
18
+ describe('IndustrySector enum', () => {
19
+ it('has 13 sectors', () => {
20
+ const values = Object.values(IndustrySector);
21
+ expect(values).toHaveLength(13);
22
+ });
23
+ it('includes expected sector values', () => {
24
+ expect(IndustrySector.DEFENSE).toBe('Defense');
25
+ expect(IndustrySector.HEALTH).toBe('Health');
26
+ expect(IndustrySector.ENERGY_NATURAL_RESOURCES).toBe('Energy/Natural Resources');
27
+ expect(IndustrySector.FINANCE_INSURANCE_REAL_ESTATE).toBe('Finance/Insurance/Real Estate');
28
+ });
29
+ });
30
+ describe('categorizeContribution', () => {
31
+ it('categorizes a defense contractor by employer', () => {
32
+ const result = categorizeContribution('LOCKHEED MARTIN', 'ENGINEER');
33
+ expect(result.sector).toBe(IndustrySector.DEFENSE);
34
+ expect(result.confidence).toBe('high');
35
+ expect(result.matchSource).toBe('employer');
36
+ });
37
+ it('categorizes a hospital employee by employer', () => {
38
+ const result = categorizeContribution('JOHNS HOPKINS HOSPITAL', 'NURSE');
39
+ expect(result.sector).toBe(IndustrySector.HEALTH);
40
+ });
41
+ it('categorizes by occupation when employer is generic', () => {
42
+ const result = categorizeContribution('SELF-EMPLOYED', 'ATTORNEY');
43
+ expect(result.sector).toBe(IndustrySector.LAWYERS_LOBBYISTS);
44
+ expect(result.matchSource).toBe('occupation');
45
+ });
46
+ it('returns Other for unrecognizable employer/occupation', () => {
47
+ const result = categorizeContribution('ACME WIDGETS', 'WIDGET MAKER');
48
+ expect(result.sector).toBe(IndustrySector.OTHER);
49
+ });
50
+ it('handles empty strings', () => {
51
+ const result = categorizeContribution('', '');
52
+ expect(result.sector).toBe(IndustrySector.OTHER);
53
+ });
54
+ });
55
+ describe('categorizePACByName', () => {
56
+ it('categorizes a defense PAC', () => {
57
+ const result = categorizePACByName('RAYTHEON COMPANY PAC');
58
+ expect(result.sector).toBe(IndustrySector.DEFENSE);
59
+ });
60
+ it('categorizes a labor PAC', () => {
61
+ const result = categorizePACByName('AFL-CIO PAC');
62
+ expect(result.sector).toBe(IndustrySector.LABOR);
63
+ });
64
+ it('returns Other for unknown PAC', () => {
65
+ const result = categorizePACByName('OBSCURE FRIENDS PAC');
66
+ expect(result.sector).toBe(IndustrySector.OTHER);
67
+ });
68
+ });
69
+ // ── Committee-Agency Map ─────────────────────────────────────────────
70
+ describe('committee-agency map', () => {
71
+ it('has House committee mappings', () => {
72
+ expect(HOUSE_COMMITTEE_MAPPINGS.length).toBeGreaterThan(5);
73
+ expect(HOUSE_COMMITTEE_MAPPINGS.every(m => m.chamber === 'House')).toBe(true);
74
+ });
75
+ it('has Senate committee mappings', () => {
76
+ expect(SENATE_COMMITTEE_MAPPINGS.length).toBeGreaterThan(5);
77
+ expect(SENATE_COMMITTEE_MAPPINGS.every(m => m.chamber === 'Senate')).toBe(true);
78
+ });
79
+ it('ALL_COMMITTEE_MAPPINGS includes both chambers', () => {
80
+ expect(ALL_COMMITTEE_MAPPINGS.length).toBe(HOUSE_COMMITTEE_MAPPINGS.length + SENATE_COMMITTEE_MAPPINGS.length);
81
+ });
82
+ it('each mapping has required fields', () => {
83
+ for (const m of ALL_COMMITTEE_MAPPINGS) {
84
+ expect(m.committeeCode).toBeTruthy();
85
+ expect(m.committeeName).toBeTruthy();
86
+ expect(['House', 'Senate', 'Joint']).toContain(m.chamber);
87
+ expect(m.agencies.length).toBeGreaterThan(0);
88
+ expect(m.topics.length).toBeGreaterThan(0);
89
+ }
90
+ });
91
+ });
92
+ describe('getAgenciesForCommittee', () => {
93
+ it('returns agencies for a known committee name', () => {
94
+ // Function takes committee NAME, not code — does string matching
95
+ const agencies = getAgenciesForCommittee('Armed Services');
96
+ expect(agencies.length).toBeGreaterThan(0);
97
+ expect(agencies.some(a => a.slug === 'department-of-defense')).toBe(true);
98
+ });
99
+ it('returns empty array for unknown committee name', () => {
100
+ expect(getAgenciesForCommittee('Galactic Federation')).toEqual([]);
101
+ });
102
+ });
103
+ describe('getTopicsForCommittee', () => {
104
+ it('returns topics for a known committee name', () => {
105
+ const topics = getTopicsForCommittee('Armed Services');
106
+ expect(topics.length).toBeGreaterThan(0);
107
+ expect(topics).toContain('defense');
108
+ });
109
+ it('returns empty array for unknown committee', () => {
110
+ expect(getTopicsForCommittee('ZZZZ')).toEqual([]);
111
+ });
112
+ });
113
+ describe('getCommitteesForAgency', () => {
114
+ it('finds committees overseeing DOD', () => {
115
+ const committees = getCommitteesForAgency('department-of-defense');
116
+ expect(committees.length).toBeGreaterThan(0);
117
+ expect(committees.some(c => c.committeeCode === 'HSAS')).toBe(true);
118
+ });
119
+ it('returns empty for unknown agency', () => {
120
+ expect(getCommitteesForAgency('fake-agency')).toEqual([]);
121
+ });
122
+ });
123
+ // ── Committee Aliases ────────────────────────────────────────────────
124
+ describe('COMMITTEE_ALIASES', () => {
125
+ it('is a Map with entries', () => {
126
+ expect(COMMITTEE_ALIASES).toBeInstanceOf(Map);
127
+ expect(COMMITTEE_ALIASES.size).toBeGreaterThan(20);
128
+ });
129
+ it('resolves formal committee names', () => {
130
+ expect(COMMITTEE_ALIASES.get('senate armed services')).toBe('SSAS');
131
+ expect(COMMITTEE_ALIASES.get('house judiciary')).toBe('HSJU');
132
+ });
133
+ it('getAllCommitteeAliasNames returns strings', () => {
134
+ const names = getAllCommitteeAliasNames();
135
+ expect(names.length).toBeGreaterThan(20);
136
+ expect(typeof names[0]).toBe('string');
137
+ });
138
+ });
139
+ // ── Lobbying Committee Resolver ──────────────────────────────────────
140
+ describe('resolveGovernmentEntity', () => {
141
+ it('resolves noise entities', () => {
142
+ const result = resolveGovernmentEntity('U.S. Congress');
143
+ expect(result.type).toBe('noise');
144
+ expect(result.confidence).toBe(0);
145
+ });
146
+ it('filters blank strings as noise', () => {
147
+ expect(resolveGovernmentEntity('').type).toBe('noise');
148
+ expect(resolveGovernmentEntity(' ').type).toBe('noise');
149
+ });
150
+ it('resolves exact committee alias match', () => {
151
+ const result = resolveGovernmentEntity('Senate Armed Services');
152
+ expect(result.type).toBe('committee');
153
+ expect(result.committeeCode).toBe('SSAS');
154
+ expect(result.confidence).toBe(1.0);
155
+ });
156
+ it('resolves exact agency alias match', () => {
157
+ const result = resolveGovernmentEntity('Department of Energy');
158
+ expect(result.type).toBe('agency');
159
+ expect(result.agencySlug).toBeTruthy();
160
+ expect(result.confidence).toBe(1.0);
161
+ });
162
+ it('returns unresolved for unknown entities', () => {
163
+ const result = resolveGovernmentEntity('Galactic Federation of Planets');
164
+ expect(result.type).toBe('unresolved');
165
+ expect(result.confidence).toBe(0);
166
+ });
167
+ it('preserves raw text in result', () => {
168
+ const result = resolveGovernmentEntity('Senate Armed Services');
169
+ expect(result.rawText).toBe('Senate Armed Services');
170
+ });
171
+ });
172
+ describe('resolveFilingEntities', () => {
173
+ it('resolves an array of entities', () => {
174
+ const results = resolveFilingEntities([
175
+ 'Senate Armed Services',
176
+ 'U.S. Congress',
177
+ 'Unknown Entity',
178
+ ]);
179
+ expect(results).toHaveLength(3);
180
+ expect(results[0].type).toBe('committee');
181
+ expect(results[1].type).toBe('noise');
182
+ expect(results[2].type).toBe('unresolved');
183
+ });
184
+ });
185
+ describe('getResolvedCommittees', () => {
186
+ it('extracts committees from resolved entities', () => {
187
+ const resolutions = resolveFilingEntities(['Senate Armed Services', 'House Judiciary']);
188
+ const committees = getResolvedCommittees(resolutions);
189
+ expect(committees.length).toBe(2);
190
+ expect(committees.some(c => c.committeeCode === 'SSAS')).toBe(true);
191
+ expect(committees.some(c => c.committeeCode === 'HSJU')).toBe(true);
192
+ });
193
+ it('derives committees from agency resolutions', () => {
194
+ const resolutions = resolveFilingEntities(['Department of Defense']);
195
+ const committees = getResolvedCommittees(resolutions);
196
+ // DOD oversight should include Armed Services committees
197
+ expect(committees.length).toBeGreaterThan(0);
198
+ // Agency-derived committees have reduced confidence
199
+ expect(committees.every(c => c.confidence <= 0.9)).toBe(true);
200
+ });
201
+ it('deduplicates committee codes taking highest confidence', () => {
202
+ const resolutions = resolveFilingEntities([
203
+ 'Senate Armed Services',
204
+ 'Senate Armed Services Committee',
205
+ ]);
206
+ const committees = getResolvedCommittees(resolutions);
207
+ const ssasCodes = committees.filter(c => c.committeeCode === 'SSAS');
208
+ expect(ssasCodes).toHaveLength(1);
209
+ });
210
+ });
211
+ // ── SIC Sector Map ───────────────────────────────────────────────────
212
+ describe('sicToSector', () => {
213
+ it('maps agriculture SIC codes to Agribusiness', () => {
214
+ expect(sicToSector('0100')).toBe(IndustrySector.AGRIBUSINESS);
215
+ expect(sicToSector('0999')).toBe(IndustrySector.AGRIBUSINESS);
216
+ });
217
+ it('maps mining SIC codes to Energy/Natural Resources', () => {
218
+ expect(sicToSector('1000')).toBe(IndustrySector.ENERGY_NATURAL_RESOURCES);
219
+ });
220
+ it('maps construction SIC codes to Construction', () => {
221
+ expect(sicToSector('1500')).toBe(IndustrySector.CONSTRUCTION);
222
+ });
223
+ it('maps banking SIC codes to Finance', () => {
224
+ expect(sicToSector('6000')).toBe(IndustrySector.FINANCE_INSURANCE_REAL_ESTATE);
225
+ });
226
+ it('returns a sector or null for edge-case SIC codes', () => {
227
+ // Empty and non-numeric should return null
228
+ expect(sicToSector('')).toBeNull();
229
+ expect(sicToSector('abcd')).toBeNull();
230
+ // 9999 may map to a sector (public administration range) — just verify it returns a string or null
231
+ const result = sicToSector('9999');
232
+ if (result !== null) {
233
+ expect(Object.values(IndustrySector)).toContain(result);
234
+ }
235
+ });
236
+ });
237
+ // ── LDA Issue Policy Map ─────────────────────────────────────────────
238
+ describe('LDA issue mapping', () => {
239
+ it('exports the mapping object', () => {
240
+ expect(LDA_ISSUE_POLICY_MAP).toBeDefined();
241
+ expect(Object.keys(LDA_ISSUE_POLICY_MAP).length).toBeGreaterThan(20);
242
+ });
243
+ it('getLDAIssueLabel returns labels for known codes', () => {
244
+ expect(getLDAIssueLabel('DEF')).toBe('Defense');
245
+ expect(getLDAIssueLabel('HCR')).toBe('Health Issues');
246
+ expect(getLDAIssueLabel('AGR')).toBe('Agriculture');
247
+ });
248
+ it('getLDAIssueLabel returns the code itself for unknown codes', () => {
249
+ // Unknown codes fall through to returning the raw code
250
+ expect(getLDAIssueLabel('ZZZ')).toBe('ZZZ');
251
+ });
252
+ it('getPolicyAreasForLDAIssue returns policy areas', () => {
253
+ const areas = getPolicyAreasForLDAIssue('DEF');
254
+ expect(areas).not.toBeNull();
255
+ expect(areas.length).toBeGreaterThan(0);
256
+ expect(areas.some(a => a.includes('Security') || a.includes('Defense'))).toBe(true);
257
+ });
258
+ it('getAllLDAIssueCodes returns all codes', () => {
259
+ const codes = getAllLDAIssueCodes();
260
+ expect(codes.length).toBeGreaterThan(20);
261
+ expect(codes).toContain('DEF');
262
+ expect(codes).toContain('HCR');
263
+ });
264
+ });
265
+ // ── Bioguide-FEC Mapping ─────────────────────────────────────────────
266
+ describe('bioguide-FEC mapping', () => {
267
+ it('getMappingStats returns counts', () => {
268
+ const stats = getMappingStats();
269
+ expect(stats.totalMappings).toBeGreaterThan(400); // 537 members expected
270
+ expect(stats.houseMembers).toBeGreaterThan(200);
271
+ expect(stats.senateMembers).toBeGreaterThan(50);
272
+ });
273
+ it('hasFECMapping returns true for known members', () => {
274
+ // Nancy Pelosi's bioguide ID
275
+ expect(hasFECMapping('P000197')).toBe(true);
276
+ });
277
+ it('hasFECMapping returns false for unknown IDs', () => {
278
+ expect(hasFECMapping('ZZZZZZ')).toBe(false);
279
+ });
280
+ it('getFECIdFromBioguide returns FEC ID for known members', () => {
281
+ const fecId = getFECIdFromBioguide('P000197');
282
+ expect(fecId).not.toBeNull();
283
+ expect(fecId.length).toBeGreaterThan(0);
284
+ });
285
+ it('getFECIdFromBioguide returns null for unknown members', () => {
286
+ expect(getFECIdFromBioguide('ZZZZZZ')).toBeNull();
287
+ });
288
+ it('getBioguideFromFEC does reverse lookup', () => {
289
+ const fecId = getFECIdFromBioguide('P000197');
290
+ if (fecId) {
291
+ const bioguide = getBioguideFromFEC(fecId);
292
+ expect(bioguide).toBe('P000197');
293
+ }
294
+ });
295
+ });
296
+ //# sourceMappingURL=entity-resolution.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-resolution.test.js","sourceRoot":"","sources":["../../src/__tests__/entity-resolution.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fec-entity-resolution.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fec-entity-resolution.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/fec-entity-resolution.test.ts"],"names":[],"mappings":""}