jd-intel 0.8.0 → 0.8.2
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/LICENSE +1 -1
- package/README.md +16 -3
- package/package.json +2 -2
- package/registry/ashby.json +118 -47
- package/registry/greenhouse.json +195 -129
- package/registry/lever.json +68 -30
- package/registry/recruitee.json +67 -23
- package/registry/smartrecruiters.json +72 -28
- package/registry/teamtailor.json +55 -31
- package/registry/workday.json +197 -27
- package/src/adapters/ashby.js +2 -1
- package/src/adapters/greenhouse.js +2 -1
- package/src/adapters/lever.js +2 -1
- package/src/adapters/recruitee.js +2 -1
- package/src/adapters/smartrecruiters.js +2 -1
- package/src/adapters/teamtailor.js +2 -1
- package/src/adapters/workday.js +2 -1
- package/src/errors.js +43 -0
- package/src/index.js +5 -0
- package/src/registry.js +6 -1
package/registry/workday.json
CHANGED
|
@@ -1,29 +1,199 @@
|
|
|
1
1
|
[
|
|
2
|
-
{"slug": "cisco",
|
|
3
|
-
{"slug": "salesforce",
|
|
4
|
-
{"slug": "bankofamerica",
|
|
5
|
-
{"slug": "adobe",
|
|
6
|
-
{"slug": "nvidia",
|
|
7
|
-
{"slug": "servicetitan",
|
|
8
|
-
{"slug": "cvshealth",
|
|
9
|
-
{"slug": "target",
|
|
10
|
-
{"slug": "rbc",
|
|
11
|
-
{"slug": "capitalone",
|
|
12
|
-
{"slug": "bmo",
|
|
13
|
-
{"slug": "hpe",
|
|
14
|
-
{"slug": "mastercard",
|
|
15
|
-
{"slug": "hp",
|
|
16
|
-
{"slug": "wolterskluwer",
|
|
17
|
-
{"slug": "mckesson",
|
|
18
|
-
{"slug": "thehartford",
|
|
19
|
-
{"slug": "equifax",
|
|
20
|
-
{"slug": "zillow",
|
|
21
|
-
{"slug": "nationwide",
|
|
22
|
-
{"slug": "toyota",
|
|
23
|
-
{"slug": "progressiveleasing",
|
|
24
|
-
{"slug": "fico",
|
|
25
|
-
{"slug": "sonyglobal",
|
|
26
|
-
{"slug": "sonypictures",
|
|
27
|
-
{"slug": "merative",
|
|
28
|
-
{"slug": "duckcreek",
|
|
2
|
+
{"slug": "cisco", "name": "Cisco", "sector": "networking", "config": {"tenant": "cisco", "env": "wd5", "site": "Cisco_Careers"}},
|
|
3
|
+
{"slug": "salesforce", "name": "Salesforce", "sector": "crm / saas", "config": {"tenant": "salesforce", "env": "wd12", "site": "External_Career_Site"}},
|
|
4
|
+
{"slug": "bankofamerica", "name": "Bank of America", "sector": "banking", "config": {"tenant": "ghr", "env": "wd1", "site": "Lateral-US"}},
|
|
5
|
+
{"slug": "adobe", "name": "Adobe", "sector": "creative software", "config": {"tenant": "adobe", "env": "wd5", "site": "external_experienced"}},
|
|
6
|
+
{"slug": "nvidia", "name": "Nvidia", "sector": "semiconductors", "config": {"tenant": "nvidia", "env": "wd5", "site": "NVIDIAExternalCareerSite"}},
|
|
7
|
+
{"slug": "servicetitan", "name": "ServiceTitan", "sector": "vertical saas", "config": {"tenant": "servicetitan", "env": "wd1", "site": "ServiceTitan"}},
|
|
8
|
+
{"slug": "cvshealth", "name": "CVS Health", "sector": "healthcare / pharmacy", "config": {"tenant": "cvshealth", "env": "wd1", "site": "CVS_Health_Careers"}},
|
|
9
|
+
{"slug": "target", "name": "Target", "sector": "retail", "config": {"tenant": "target", "env": "wd5", "site": "targetcareers"}},
|
|
10
|
+
{"slug": "rbc", "name": "Royal Bank of Canada", "sector": "banking", "config": {"tenant": "rbc", "env": "wd3", "site": "RBCGLOBAL1"}},
|
|
11
|
+
{"slug": "capitalone", "name": "Capital One", "sector": "banking / fintech", "config": {"tenant": "capitalone", "env": "wd12", "site": "Capital_One"}},
|
|
12
|
+
{"slug": "bmo", "name": "Bank of Montreal", "sector": "banking", "config": {"tenant": "bmo", "env": "wd3", "site": "External"}},
|
|
13
|
+
{"slug": "hpe", "name": "Hewlett Packard Enterprise", "sector": "enterprise tech", "config": {"tenant": "hpe", "env": "wd5", "site": "Jobsathpe"}},
|
|
14
|
+
{"slug": "mastercard", "name": "Mastercard", "sector": "payments", "config": {"tenant": "mastercard", "env": "wd1", "site": "CorporateCareers"}},
|
|
15
|
+
{"slug": "hp", "name": "HP Inc.", "sector": "personal computing", "config": {"tenant": "hp", "env": "wd5", "site": "ExternalCareerSite"}},
|
|
16
|
+
{"slug": "wolterskluwer", "name": "Wolters Kluwer", "sector": "information services", "config": {"tenant": "wk", "env": "wd3", "site": "External"}},
|
|
17
|
+
{"slug": "mckesson", "name": "McKesson", "sector": "healthcare distribution", "config": {"tenant": "mckesson", "env": "wd3", "site": "External_Careers"}},
|
|
18
|
+
{"slug": "thehartford", "name": "The Hartford", "sector": "insurance", "config": {"tenant": "thehartford", "env": "wd5", "site": "Careers_External"}},
|
|
19
|
+
{"slug": "equifax", "name": "Equifax", "sector": "credit data", "config": {"tenant": "equifax", "env": "wd5", "site": "External"}},
|
|
20
|
+
{"slug": "zillow", "name": "Zillow Group", "sector": "real estate tech", "config": {"tenant": "zillow", "env": "wd5", "site": "Zillow_Group_External"}},
|
|
21
|
+
{"slug": "nationwide", "name": "Nationwide", "sector": "insurance / financial services", "config": {"tenant": "nationwide", "env": "wd1", "site": "Nationwide_Career"}},
|
|
22
|
+
{"slug": "toyota", "name": "Toyota Motor North America", "sector": "automotive", "config": {"tenant": "toyota", "env": "wd503", "site": "TMNA"}},
|
|
23
|
+
{"slug": "progressiveleasing", "name": "Progressive Leasing", "sector": "fintech / lease-to-own", "config": {"tenant": "progleasing", "env": "wd5", "site": "ProgLeasingCareers"}},
|
|
24
|
+
{"slug": "fico", "name": "FICO", "sector": "analytics / credit", "config": {"tenant": "fico", "env": "wd1", "site": "External"}},
|
|
25
|
+
{"slug": "sonyglobal", "name": "Sony Group", "sector": "electronics / entertainment", "config": {"tenant": "sonyglobal", "env": "wd1", "site": "SonyGlobalCareers"}},
|
|
26
|
+
{"slug": "sonypictures", "name": "Sony Pictures Entertainment", "sector": "media / entertainment", "config": {"tenant": "spe", "env": "wd1", "site": "SonyPicturesEntertainment"}},
|
|
27
|
+
{"slug": "merative", "name": "Merative", "sector": "health data", "config": {"tenant": "merative", "env": "wd12", "site": "External_Career_Site"}},
|
|
28
|
+
{"slug": "duckcreek", "name": "Duck Creek Technologies", "sector": "insurance software", "config": {"tenant": "duckcreek", "env": "wd1", "site": "duckcreekcareers"}},
|
|
29
|
+
{"slug": "expedia", "name": "Expedia Group", "sector": "travel", "config": {"tenant": "expedia", "env": "wd108", "site": "search"}},
|
|
30
|
+
{"slug": "workday", "name": "Workday", "sector": "hr tech", "config": {"tenant": "workday", "env": "wd5", "site": "Workday"}},
|
|
31
|
+
{"slug": "kyndryl", "name": "Kyndryl", "sector": "it services", "config": {"tenant": "kyndryl", "env": "wd5", "site": "KyndrylProfessionalCareers"}},
|
|
32
|
+
{"slug": "huron", "name": "Huron Consulting", "sector": "consulting", "config": {"tenant": "huron", "env": "wd1", "site": "huroncareers"}},
|
|
33
|
+
{"slug": "nxp", "name": "NXP Semiconductors", "sector": "semiconductors", "config": {"tenant": "nxp", "env": "wd3", "site": "careers"}},
|
|
34
|
+
{"slug": "pwc", "name": "PwC", "sector": "consulting", "config": {"tenant": "pwc", "env": "wd3", "site": "Global_Experienced_Careers"}},
|
|
35
|
+
{"slug": "deutschebank", "name": "Deutsche Bank", "sector": "banking", "config": {"tenant": "db", "env": "wd3", "site": "DBWebsite"}},
|
|
36
|
+
{"slug": "pciservices", "name": "PCI Pharma Services", "sector": "pharma services", "config": {"tenant": "pciservices", "env": "wd1", "site": "External"}},
|
|
37
|
+
{"slug": "xcelenergy", "name": "Xcel Energy", "sector": "energy", "config": {"tenant": "xcelenergy", "env": "wd1", "site": "External"}},
|
|
38
|
+
{"slug": "dukeenergy", "name": "Duke Energy", "sector": "energy", "config": {"tenant": "dukeenergy", "env": "wd1", "site": "Search"}},
|
|
39
|
+
{"slug": "tcenergy", "name": "TC Energy", "sector": "energy", "config": {"tenant": "tcenergy", "env": "wd3", "site": "CAREER_SITE_TC"}},
|
|
40
|
+
{"slug": "uniphar", "name": "Uniphar", "sector": "healthcare distribution", "config": {"tenant": "uniphar", "env": "wd3", "site": "uniphar_external_careers"}},
|
|
41
|
+
{"slug": "franklintempleton", "name": "Franklin Templeton", "sector": "asset management", "config": {"tenant": "franklintempleton", "env": "wd5", "site": "Primary-External-1"}},
|
|
42
|
+
{"slug": "atmosenergy", "name": "Atmos Energy", "sector": "energy", "config": {"tenant": "atmosenergy", "env": "wd108", "site": "External_Career_Site"}},
|
|
43
|
+
{"slug": "levistraussandco", "name": "Levi Strauss & Co.", "sector": "retail", "config": {"tenant": "levistraussandco", "env": "wd5", "site": "External"}},
|
|
44
|
+
{"slug": "knitwellgroup", "name": "KnitWell Group", "sector": "retail", "config": {"tenant": "knitwellgroup", "env": "wd1", "site": "US_Retail_Jobs"}},
|
|
45
|
+
{"slug": "cdw", "name": "CDW", "sector": "it services", "config": {"tenant": "cdw", "env": "wd5", "site": "Careers"}},
|
|
46
|
+
{"slug": "caa", "name": "Creative Artists Agency", "sector": "media / entertainment", "config": {"tenant": "caa", "env": "wd1", "site": "Careers"}},
|
|
47
|
+
{"slug": "academy", "name": "Academy Sports + Outdoors", "sector": "retail", "config": {"tenant": "academy", "env": "wd1", "site": "Careers"}},
|
|
48
|
+
{"slug": "tsys", "name": "TSYS", "sector": "fintech / payments", "config": {"tenant": "tsys", "env": "wd1", "site": "TSYS"}},
|
|
49
|
+
{"slug": "bitsight", "name": "Bitsight", "sector": "security", "config": {"tenant": "bitsight", "env": "wd1", "site": "bitsight"}},
|
|
50
|
+
{"slug": "forrester", "name": "Forrester", "sector": "research / advisory", "config": {"tenant": "forrester", "env": "wd501", "site": "careers"}},
|
|
51
|
+
{"slug": "unisys", "name": "Unisys", "sector": "it services", "config": {"tenant": "unisys", "env": "wd5", "site": "external"}},
|
|
52
|
+
{"slug": "worldpay", "name": "Worldpay", "sector": "fintech / payments", "config": {"tenant": "worldpay", "env": "wd5", "site": "Worldpay_External_Careers_Site"}},
|
|
53
|
+
{"slug": "blackbaud", "name": "Blackbaud", "sector": "nonprofit software", "config": {"tenant": "blackbaud", "env": "wd1", "site": "ExternalCareers"}},
|
|
54
|
+
{"slug": "rakuten", "name": "Rakuten", "sector": "ecommerce", "config": {"tenant": "rakuten", "env": "wd1", "site": "RakutenInc"}},
|
|
55
|
+
{"slug": "csiweb", "name": "Computer Services Inc", "sector": "banking software", "config": {"tenant": "csiweb", "env": "wd1", "site": "CSI_Careers"}},
|
|
56
|
+
{"slug": "autodesk", "name": "Autodesk", "sector": "design software", "config": {"tenant": "autodesk", "env": "wd1", "site": "Ext"}},
|
|
57
|
+
{"slug": "zoom", "name": "Zoom", "sector": "communications", "config": {"tenant": "zoom", "env": "wd5", "site": "Zoom"}},
|
|
58
|
+
{"slug": "carrier", "name": "Carrier", "sector": "hvac / building systems", "config": {"tenant": "carrier", "env": "wd5", "site": "jobs"}},
|
|
59
|
+
{"slug": "ww", "name": "WW (WeightWatchers)", "sector": "consumer health", "config": {"tenant": "ww", "env": "wd1", "site": "careers"}},
|
|
60
|
+
{"slug": "path", "name": "PATH", "sector": "global health nonprofit", "config": {"tenant": "path", "env": "wd1", "site": "External"}},
|
|
61
|
+
{"slug": "visa", "name": "Visa", "sector": "payments", "config": {"tenant": "visa", "env": "wd5", "site": "Visa"}},
|
|
62
|
+
{"slug": "hospitalsistershealthsystem", "name": "Hospital Sisters Health System", "sector": "healthcare", "config": {"tenant": "hshs", "env": "wd1", "site": "hshscareers"}},
|
|
63
|
+
{"slug": "bannerhealth", "name": "Banner Health", "sector": "healthcare", "config": {"tenant": "bannerhealth", "env": "wd108", "site": "Careers"}},
|
|
64
|
+
{"slug": "memorialhealthcaresystem", "name": "Memorial Healthcare System", "sector": "healthcare", "config": {"tenant": "memorialhealthcare", "env": "wd1", "site": "MHS_Careers"}},
|
|
65
|
+
{"slug": "intermountainhealth", "name": "Intermountain Health", "sector": "healthcare", "config": {"tenant": "imh", "env": "wd108", "site": "IntermountainCareers"}},
|
|
66
|
+
{"slug": "denverhealth", "name": "Denver Health", "sector": "healthcare", "config": {"tenant": "denverhealth", "env": "wd1", "site": "DHHA-Main"}},
|
|
67
|
+
{"slug": "invenergy", "name": "Invenergy", "sector": "energy", "config": {"tenant": "invenergyllc", "env": "wd1", "site": "invenergycareers"}},
|
|
68
|
+
{"slug": "leewardrenewableenergy", "name": "Leeward Renewable Energy", "sector": "energy", "config": {"tenant": "leewardenergy", "env": "wd1", "site": "LeewardCareers"}},
|
|
69
|
+
{"slug": "eonnext", "name": "E.ON Next", "sector": "energy / power grid", "config": {"tenant": "eonnext", "env": "wd3", "site": "EON_Next_Careers"}},
|
|
70
|
+
{"slug": "ameren", "name": "Ameren", "sector": "energy / power grid", "config": {"tenant": "ameren", "env": "wd1", "site": "External"}},
|
|
71
|
+
{"slug": "enbridge", "name": "Enbridge", "sector": "energy", "config": {"tenant": "enbridge", "env": "wd3", "site": "enbridge_careers"}},
|
|
72
|
+
{"slug": "brookshiregrocerycompany", "name": "Brookshire Grocery Company", "sector": "retail", "config": {"tenant": "brookshires", "env": "wd108", "site": "BGC"}},
|
|
73
|
+
{"slug": "conagrabrands", "name": "Conagra Brands", "sector": "cpg / food & beverage", "config": {"tenant": "conagrabrands", "env": "wd1", "site": "Careers_US"}},
|
|
74
|
+
{"slug": "winlandfoods", "name": "Winland Foods", "sector": "cpg / food & beverage", "config": {"tenant": "winlandfoods", "env": "wd1", "site": "External"}},
|
|
75
|
+
{"slug": "fidelityinvestments", "name": "Fidelity Investments", "sector": "asset management", "config": {"tenant": "fmr", "env": "wd1", "site": "FidelityCareers"}},
|
|
76
|
+
{"slug": "thomsonreuters", "name": "Thomson Reuters", "sector": "information services", "config": {"tenant": "thomsonreuters", "env": "wd5", "site": "External_Career_Site"}},
|
|
77
|
+
{"slug": "3m", "name": "3M", "sector": "industrial conglomerate", "config": {"tenant": "3m", "env": "wd1", "site": "Search"}},
|
|
78
|
+
{"slug": "advanceautoparts", "name": "Advance Auto Parts", "sector": "auto parts retail", "config": {"tenant": "advanceauto", "env": "wd5", "site": "AdvanceExternalCareers"}},
|
|
79
|
+
{"slug": "alcoa", "name": "Alcoa", "sector": "aluminum / metals", "config": {"tenant": "alcoa", "env": "wd5", "site": "Careers"}},
|
|
80
|
+
{"slug": "americanelectricpower", "name": "American Electric Power", "sector": "energy / power grid", "config": {"tenant": "aep", "env": "wd1", "site": "AEPCareerSite"}},
|
|
81
|
+
{"slug": "americanfamilyinsurance", "name": "American Family Insurance", "sector": "insurance", "config": {"tenant": "amfam", "env": "wd1", "site": "Careers"}},
|
|
82
|
+
{"slug": "amgen", "name": "Amgen", "sector": "biotech", "config": {"tenant": "amgen", "env": "wd1", "site": "Careers"}},
|
|
83
|
+
{"slug": "analogdevices", "name": "Analog Devices", "sector": "semiconductors", "config": {"tenant": "analogdevices", "env": "wd1", "site": "External"}},
|
|
84
|
+
{"slug": "theandersons", "name": "The Andersons", "sector": "agribusiness", "config": {"tenant": "andersonsinc", "env": "wd1", "site": "TheAndersonsCareers"}},
|
|
85
|
+
{"slug": "appliedmaterials", "name": "Applied Materials", "sector": "semiconductor equipment", "config": {"tenant": "amat", "env": "wd1", "site": "External"}},
|
|
86
|
+
{"slug": "arrowelectronics", "name": "Arrow Electronics", "sector": "electronics distribution", "config": {"tenant": "arrow", "env": "wd1", "site": "AC"}},
|
|
87
|
+
{"slug": "assurant", "name": "Assurant", "sector": "insurance", "config": {"tenant": "assurant", "env": "wd1", "site": "Assurant_Careers"}},
|
|
88
|
+
{"slug": "att", "name": "AT&T", "sector": "telecom", "config": {"tenant": "att", "env": "wd1", "site": "ATTGeneral"}},
|
|
89
|
+
{"slug": "avisbudgetgroup", "name": "Avis Budget Group", "sector": "car rental", "config": {"tenant": "avisbudget", "env": "wd1", "site": "ABG_Careers"}},
|
|
90
|
+
{"slug": "bectondickinson", "name": "Becton Dickinson (BD)", "sector": "medical devices", "config": {"tenant": "bdx", "env": "wd1", "site": "EXTERNAL_CAREER_SITE_USA"}},
|
|
91
|
+
{"slug": "biogen", "name": "Biogen", "sector": "biotech", "config": {"tenant": "biibhr", "env": "wd3", "site": "external"}},
|
|
92
|
+
{"slug": "borgwarner", "name": "BorgWarner", "sector": "automotive parts", "config": {"tenant": "borgwarner", "env": "wd5", "site": "BorgWarner_Careers"}},
|
|
93
|
+
{"slug": "bristolmyerssquibb", "name": "Bristol Myers Squibb", "sector": "pharmaceuticals", "config": {"tenant": "bristolmyerssquibb", "env": "wd5", "site": "BMS"}},
|
|
94
|
+
{"slug": "burlington", "name": "Burlington", "sector": "retail", "config": {"tenant": "burlington", "env": "wd5", "site": "BurlingtonCareers"}},
|
|
95
|
+
{"slug": "caterpillar", "name": "Caterpillar", "sector": "heavy equipment", "config": {"tenant": "cat", "env": "wd5", "site": "CaterpillarCareers"}},
|
|
96
|
+
{"slug": "chevron", "name": "Chevron", "sector": "energy / oil & gas", "config": {"tenant": "chevron", "env": "wd5", "site": "jobs"}},
|
|
97
|
+
{"slug": "citi", "name": "Citi", "sector": "banking", "config": {"tenant": "citi", "env": "wd5", "site": "2"}},
|
|
98
|
+
{"slug": "comcast", "name": "Comcast", "sector": "media / entertainment", "config": {"tenant": "comcast", "env": "wd115", "site": "Comcast_Careers"}},
|
|
99
|
+
{"slug": "conocophillips", "name": "ConocoPhillips", "sector": "energy / oil & gas", "config": {"tenant": "conocophillips", "env": "wd1", "site": "eQuest"}},
|
|
100
|
+
{"slug": "continentalresources", "name": "Continental Resources", "sector": "oil & gas", "config": {"tenant": "clr", "env": "wd5", "site": "CLR_Careers"}},
|
|
101
|
+
{"slug": "davita", "name": "DaVita", "sector": "healthcare / dialysis", "config": {"tenant": "davita", "env": "wd1", "site": "DKC_External"}},
|
|
102
|
+
{"slug": "devonenergy", "name": "Devon Energy", "sector": "oil & gas", "config": {"tenant": "devonenergy", "env": "wd5", "site": "careers"}},
|
|
103
|
+
{"slug": "diamondbackenergy", "name": "Diamondback Energy", "sector": "oil & gas", "config": {"tenant": "diamondbackenergy", "env": "wd12", "site": "DBE"}},
|
|
104
|
+
{"slug": "thewaltdisneycompany", "name": "The Walt Disney Company", "sector": "media / entertainment", "config": {"tenant": "disney", "env": "wd5", "site": "disneycareer"}},
|
|
105
|
+
{"slug": "dollartree", "name": "Dollar Tree", "sector": "retail", "config": {"tenant": "dollartree", "env": "wd5", "site": "dollartreeus"}},
|
|
106
|
+
{"slug": "dupont", "name": "DuPont", "sector": "chemicals / materials", "config": {"tenant": "dupont", "env": "wd5", "site": "jobs"}},
|
|
107
|
+
{"slug": "dxctechnology", "name": "DXC Technology", "sector": "it services", "config": {"tenant": "dxctechnology", "env": "wd1", "site": "DXCJobs"}},
|
|
108
|
+
{"slug": "equinix", "name": "Equinix", "sector": "data centers", "config": {"tenant": "equinix", "env": "wd1", "site": "External"}},
|
|
109
|
+
{"slug": "eversourceenergy", "name": "Eversource Energy", "sector": "energy / power grid", "config": {"tenant": "eversource", "env": "wd1", "site": "ExternalSite"}},
|
|
110
|
+
{"slug": "firstamericantitle", "name": "First American Title (FATCO)", "sector": "title insurance", "config": {"tenant": "firstam", "env": "wd1", "site": "firstamericancareers"}},
|
|
111
|
+
{"slug": "freddiemac", "name": "Freddie Mac", "sector": "mortgage finance", "config": {"tenant": "freddiemac", "env": "wd5", "site": "External"}},
|
|
112
|
+
{"slug": "fanniemae", "name": "Fannie Mae", "sector": "mortgage finance", "config": {"tenant": "fanniemae", "env": "wd1", "site": "FannieMaeCareers"}},
|
|
113
|
+
{"slug": "fedex", "name": "FedEx", "sector": "shipping / logistics", "config": {"tenant": "fedex", "env": "wd1", "site": "FXE_APAC_External"}},
|
|
114
|
+
{"slug": "fidelitynationaltitle", "name": "Fidelity National Title", "sector": "title insurance", "config": {"tenant": "fntg", "env": "wd5", "site": "FNF-Careers"}},
|
|
115
|
+
{"slug": "fifththirdbank", "name": "Fifth Third Bank", "sector": "banking", "config": {"tenant": "fifththird", "env": "wd5", "site": "53careers"}},
|
|
116
|
+
{"slug": "firstcitizensbank", "name": "First Citizens Bank", "sector": "banking", "config": {"tenant": "svb", "env": "wd5", "site": "firstcitizensindia"}},
|
|
117
|
+
{"slug": "fiserv", "name": "Fiserv", "sector": "fintech / payments", "config": {"tenant": "fiserv", "env": "wd5", "site": "EXT"}},
|
|
118
|
+
{"slug": "generalelectric", "name": "General Electric (GE)", "sector": "industrial conglomerate", "config": {"tenant": "geaerospace", "env": "wd5", "site": "GE_ExternalSite"}},
|
|
119
|
+
{"slug": "genuinepartscompany", "name": "Genuine Parts Company", "sector": "auto parts distribution", "config": {"tenant": "genpt", "env": "wd1", "site": "Careers"}},
|
|
120
|
+
{"slug": "globalpartners", "name": "Global Partners", "sector": "energy distribution", "config": {"tenant": "global", "env": "wd1", "site": "globalpartnerscareers"}},
|
|
121
|
+
{"slug": "henryschein", "name": "Henry Schein", "sector": "healthcare distribution", "config": {"tenant": "henryschein", "env": "wd1", "site": "External_Careers"}},
|
|
122
|
+
{"slug": "thehomedepot", "name": "The Home Depot", "sector": "home improvement retail", "config": {"tenant": "homedepot", "env": "wd5", "site": "CareerDepot"}},
|
|
123
|
+
{"slug": "humana", "name": "Humana", "sector": "health insurance", "config": {"tenant": "humana", "env": "wd5", "site": "Humana_External_Career_Site"}},
|
|
124
|
+
{"slug": "huntsmancorporation", "name": "Huntsman Corporation", "sector": "chemicals", "config": {"tenant": "huntsman", "env": "wd1", "site": "Huntsman"}},
|
|
125
|
+
{"slug": "iff", "name": "IFF", "sector": "specialty chemicals", "config": {"tenant": "iff", "env": "wd5", "site": "IFF_Careers"}},
|
|
126
|
+
{"slug": "interpublicgroup", "name": "Interpublic Group (IPG)", "sector": "advertising", "config": {"tenant": "interpublic", "env": "wd5", "site": "OMC"}},
|
|
127
|
+
{"slug": "iqvia", "name": "IQVIA", "sector": "healthcare analytics", "config": {"tenant": "iqvia", "env": "wd1", "site": "IQVIA"}},
|
|
128
|
+
{"slug": "jll", "name": "JLL", "sector": "real estate services", "config": {"tenant": "jll", "env": "wd1", "site": "jllcareers"}},
|
|
129
|
+
{"slug": "kimberlyclark", "name": "Kimberly-Clark", "sector": "cpg / food & beverage", "config": {"tenant": "kimberlyclark", "env": "wd1", "site": "GLOBAL"}},
|
|
130
|
+
{"slug": "landolakes", "name": "Land O'Lakes", "sector": "agribusiness / food", "config": {"tenant": "landolakes", "env": "wd1", "site": "LandOLakes"}},
|
|
131
|
+
{"slug": "leidos", "name": "Leidos", "sector": "defense / it services", "config": {"tenant": "leidos", "env": "wd5", "site": "External"}},
|
|
132
|
+
{"slug": "lennar", "name": "Lennar", "sector": "homebuilding", "config": {"tenant": "lennar", "env": "wd1", "site": "Lennar_Jobs"}},
|
|
133
|
+
{"slug": "lplfinancial", "name": "LPL Financial", "sector": "financial services", "config": {"tenant": "lplfinancial", "env": "wd1", "site": "External"}},
|
|
134
|
+
{"slug": "mtbank", "name": "M&T Bank", "sector": "banking", "config": {"tenant": "mtb", "env": "wd5", "site": "MTB"}},
|
|
135
|
+
{"slug": "marathonpetroleum", "name": "Marathon Petroleum", "sector": "energy / refining", "config": {"tenant": "mpc", "env": "wd1", "site": "MPCCareers"}},
|
|
136
|
+
{"slug": "marshmclennan", "name": "Marsh McLennan", "sector": "insurance brokerage / consulting", "config": {"tenant": "mmc", "env": "wd1", "site": "MMC"}},
|
|
137
|
+
{"slug": "masco", "name": "Masco", "sector": "building products", "config": {"tenant": "masco", "env": "wd1", "site": "Masco"}},
|
|
138
|
+
{"slug": "merck", "name": "Merck", "sector": "pharmaceuticals", "config": {"tenant": "msd", "env": "wd5", "site": "SearchJobs"}},
|
|
139
|
+
{"slug": "mgmresortsinternational", "name": "MGM Resorts International", "sector": "hospitality / gaming", "config": {"tenant": "mgmresorts", "env": "wd5", "site": "MGMCareers"}},
|
|
140
|
+
{"slug": "mondelezinternational", "name": "Mondelez International", "sector": "cpg / food & beverage", "config": {"tenant": "mdlz", "env": "wd3", "site": "External"}},
|
|
141
|
+
{"slug": "morganstanley", "name": "Morgan Stanley", "sector": "banking", "config": {"tenant": "ms", "env": "wd5", "site": "External"}},
|
|
142
|
+
{"slug": "motorolasolutions", "name": "Motorola Solutions", "sector": "communications tech", "config": {"tenant": "motorolasolutions", "env": "wd5", "site": "Careers"}},
|
|
143
|
+
{"slug": "ncrvoyix", "name": "NCR Voyix", "sector": "retail / restaurant tech", "config": {"tenant": "ncr", "env": "wd1", "site": "ext_us"}},
|
|
144
|
+
{"slug": "nglenergypartners", "name": "NGL Energy Partners", "sector": "energy", "config": {"tenant": "nglenergypartners", "env": "wd5", "site": "jobs"}},
|
|
145
|
+
{"slug": "oshkoshcorporation", "name": "Oshkosh Corporation", "sector": "specialty vehicles", "config": {"tenant": "oshkoshcorporation", "env": "wd5", "site": "Oshkosh"}},
|
|
146
|
+
{"slug": "otiselevator", "name": "Otis Elevator", "sector": "industrial / elevators", "config": {"tenant": "otis", "env": "wd504", "site": "REC_Ext_Gateway"}},
|
|
147
|
+
{"slug": "owensminor", "name": "Owens & Minor", "sector": "healthcare distribution", "config": {"tenant": "owensminor", "env": "wd1", "site": "OMCareers"}},
|
|
148
|
+
{"slug": "pacificlife", "name": "Pacific Life", "sector": "insurance", "config": {"tenant": "pacificlife", "env": "wd1", "site": "PacificLifeCareers"}},
|
|
149
|
+
{"slug": "pbfenergy", "name": "PBF Energy", "sector": "energy / refining", "config": {"tenant": "pbfenergy", "env": "wd1", "site": "PBF"}},
|
|
150
|
+
{"slug": "pfizer", "name": "Pfizer", "sector": "pharmaceuticals", "config": {"tenant": "pfizer", "env": "wd1", "site": "PfizerCareers"}},
|
|
151
|
+
{"slug": "plainsallamericanpipeline", "name": "Plains All American Pipeline", "sector": "energy / midstream", "config": {"tenant": "plains", "env": "wd1", "site": "Plains"}},
|
|
152
|
+
{"slug": "polarisinc", "name": "Polaris Inc.", "sector": "powersports vehicles", "config": {"tenant": "polaris", "env": "wd5", "site": "PolarisJobs"}},
|
|
153
|
+
{"slug": "rtx", "name": "RTX (Raytheon Technologies)", "sector": "aerospace / defense", "config": {"tenant": "globalhr", "env": "wd5", "site": "REC_RTX_Ext_Gateway"}},
|
|
154
|
+
{"slug": "rydersystem", "name": "Ryder System", "sector": "logistics / fleet management", "config": {"tenant": "ryder", "env": "wd5", "site": "RyderCareers"}},
|
|
155
|
+
{"slug": "sonoco", "name": "Sonoco", "sector": "packaging", "config": {"tenant": "sonoco", "env": "wd1", "site": "CorporateCareers"}},
|
|
156
|
+
{"slug": "southwestairlines", "name": "Southwest Airlines", "sector": "airline", "config": {"tenant": "swa", "env": "wd1", "site": "external"}},
|
|
157
|
+
{"slug": "spartannash", "name": "SpartanNash", "sector": "food distribution", "config": {"tenant": "spartannash", "env": "wd1", "site": "SpartanNash_Careers"}},
|
|
158
|
+
{"slug": "ufpindustries", "name": "UFP Industries", "sector": "building products", "config": {"tenant": "ufpi", "env": "wd503", "site": "ufpi"}},
|
|
159
|
+
{"slug": "walmart", "name": "Walmart", "sector": "retail", "config": {"tenant": "walmart", "env": "wd504", "site": "WalmartExternal"}},
|
|
160
|
+
{"slug": "williamscompanies", "name": "Williams Companies", "sector": "energy / pipelines", "config": {"tenant": "williams", "env": "wd5", "site": "External"}},
|
|
161
|
+
{"slug": "worldfuelservices", "name": "World Fuel Services (World Kinect)", "sector": "fuel logistics", "config": {"tenant": "wfscorp", "env": "wd5", "site": "wfscareers"}},
|
|
162
|
+
{"slug": "zoetis", "name": "Zoetis", "sector": "animal health", "config": {"tenant": "zoetis", "env": "wd5", "site": "zoetis"}},
|
|
163
|
+
{"slug": "blackrock", "name": "BlackRock", "sector": "asset management", "config": {"tenant": "blackrock", "env": "wd1", "site": "BlackRock_Professional"}},
|
|
164
|
+
{"slug": "boozallenhamilton", "name": "Booz Allen Hamilton", "sector": "consulting", "config": {"tenant": "bah", "env": "wd1", "site": "BAH_Jobs"}},
|
|
165
|
+
{"slug": "cardinalhealth", "name": "Cardinal Health", "sector": "healthcare distribution", "config": {"tenant": "cardinalhealth", "env": "wd1", "site": "EXT"}},
|
|
166
|
+
{"slug": "carmax", "name": "CarMax", "sector": "auto retail", "config": {"tenant": "carmax", "env": "wd1", "site": "External"}},
|
|
167
|
+
{"slug": "cfindustries", "name": "CF Industries", "sector": "chemicals / fertilizer", "config": {"tenant": "cfindustries", "env": "wd1", "site": "careers"}},
|
|
168
|
+
{"slug": "constellationbrands", "name": "Constellation Brands", "sector": "beverages / alcohol", "config": {"tenant": "cbrands", "env": "wd5", "site": "CBI_External_Careers"}},
|
|
169
|
+
{"slug": "thejmsmuckercompany", "name": "The J.M. Smucker Company", "sector": "cpg / food & beverage", "config": {"tenant": "smucker", "env": "wd5", "site": "US_External_Careers"}},
|
|
170
|
+
{"slug": "jabil", "name": "Jabil", "sector": "electronics manufacturing", "config": {"tenant": "jabil", "env": "wd5", "site": "Jabil_Careers"}},
|
|
171
|
+
{"slug": "keybank", "name": "KeyBank", "sector": "banking", "config": {"tenant": "keybank", "env": "wd5", "site": "External_Career_Site"}},
|
|
172
|
+
{"slug": "massmutual", "name": "MassMutual", "sector": "insurance", "config": {"tenant": "massmutual", "env": "wd1", "site": "MMINDCareersite"}},
|
|
173
|
+
{"slug": "pncbank", "name": "PNC Bank", "sector": "banking", "config": {"tenant": "pnc", "env": "wd5", "site": "External"}},
|
|
174
|
+
{"slug": "raymondjames", "name": "Raymond James", "sector": "financial services", "config": {"tenant": "raymondjames", "env": "wd1", "site": "RaymondJamesCareers"}},
|
|
175
|
+
{"slug": "reinsurancegroupofamerica", "name": "Reinsurance Group of America (RGA)", "sector": "reinsurance", "config": {"tenant": "rgare", "env": "wd1", "site": "Careers"}},
|
|
176
|
+
{"slug": "riteaid", "name": "Rite Aid", "sector": "pharmacy retail", "config": {"tenant": "riteaid", "env": "wd1", "site": "External"}},
|
|
177
|
+
{"slug": "stanleyblackdecker", "name": "Stanley Black & Decker", "sector": "tools / hardware", "config": {"tenant": "sbdinc", "env": "wd1", "site": "Stanley_Black_Decker_Career_Site"}},
|
|
178
|
+
{"slug": "taylormorrison", "name": "Taylor Morrison", "sector": "homebuilding", "config": {"tenant": "taylormorrison", "env": "wd1", "site": "TaylorMorrisonCareers"}},
|
|
179
|
+
{"slug": "dow", "name": "Dow", "sector": "chemicals", "config": {"tenant": "dow", "env": "wd1", "site": "ExternalCareers"}},
|
|
180
|
+
{"slug": "gapinc", "name": "Gap Inc.", "sector": "apparel retail", "config": {"tenant": "gapinc", "env": "wd1", "site": "GAPINC"}},
|
|
181
|
+
{"slug": "goodyear", "name": "Goodyear", "sector": "tires / manufacturing", "config": {"tenant": "goodyear", "env": "wd1", "site": "GoodyearCareers"}},
|
|
182
|
+
{"slug": "guardianlife", "name": "Guardian Life", "sector": "insurance", "config": {"tenant": "guardianlife", "env": "wd5", "site": "Guardian-Life-Careers"}},
|
|
183
|
+
{"slug": "mosaic", "name": "Mosaic", "sector": "agribusiness / fertilizer", "config": {"tenant": "mosaic", "env": "wd5", "site": "mosaic"}},
|
|
184
|
+
{"slug": "proctergamble", "name": "Procter & Gamble (P&G)", "sector": "cpg / food & beverage", "config": {"tenant": "pg", "env": "wd5", "site": "1000"}},
|
|
185
|
+
{"slug": "prudentialfinancial", "name": "Prudential Financial", "sector": "insurance / financial services", "config": {"tenant": "pru", "env": "wd5", "site": "Careers"}},
|
|
186
|
+
{"slug": "travelers", "name": "Travelers", "sector": "insurance", "config": {"tenant": "travelers", "env": "wd5", "site": "External"}},
|
|
187
|
+
{"slug": "thermofisherscientific", "name": "Thermo Fisher Scientific", "sector": "life sciences / lab equipment", "config": {"tenant": "thermofisher", "env": "wd5", "site": "thermofishercareers"}},
|
|
188
|
+
{"slug": "thriventfinancial", "name": "Thrivent Financial", "sector": "financial services", "config": {"tenant": "thrivent", "env": "wd5", "site": "external"}},
|
|
189
|
+
{"slug": "tysonfoods", "name": "Tyson Foods", "sector": "food production", "config": {"tenant": "tysonfoods", "env": "wd5", "site": "TSN"}},
|
|
190
|
+
{"slug": "unum", "name": "Unum", "sector": "insurance", "config": {"tenant": "unum", "env": "wd1", "site": "External"}},
|
|
191
|
+
{"slug": "usfoods", "name": "US Foods", "sector": "food distribution", "config": {"tenant": "usfoods", "env": "wd1", "site": "usfoodscareersExternal"}},
|
|
192
|
+
{"slug": "vfcorporation", "name": "VF Corporation", "sector": "apparel / footwear", "config": {"tenant": "vfc", "env": "wd5", "site": "vfc_careers"}},
|
|
193
|
+
{"slug": "vistracorp", "name": "Vistra Corp", "sector": "energy / power grid", "config": {"tenant": "vst", "env": "wd5", "site": "vistra_careers"}},
|
|
194
|
+
{"slug": "wellsfargo", "name": "Wells Fargo", "sector": "banking", "config": {"tenant": "wf", "env": "wd1", "site": "WellsFargoJobs"}},
|
|
195
|
+
{"slug": "jbhunt", "name": "J.B. Hunt", "sector": "logistics / freight", "config": {"tenant": "jbhunt", "env": "wd501", "site": "Careers"}},
|
|
196
|
+
{"slug": "kohls", "name": "Kohl's", "sector": "retail", "config": {"tenant": "kohls", "env": "wd504", "site": "kohlscareers"}},
|
|
197
|
+
{"slug": "livenationentertainment", "name": "Live Nation Entertainment", "sector": "entertainment / events", "config": {"tenant": "livenation", "env": "wd503", "site": "LNExternalSite"}},
|
|
198
|
+
{"slug": "gevernova", "name": "GE Vernova", "sector": "energy / power grid", "config": {"tenant": "gevernova", "env": "wd5", "site": "Vernova_ExternalSite"}}
|
|
29
199
|
]
|
package/src/adapters/ashby.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize } from '../normalizer.js';
|
|
2
|
+
import { atsErrorFromStatus } from '../errors.js';
|
|
2
3
|
|
|
3
4
|
const API_URL = 'https://jobs.ashbyhq.com/api/non-user-graphql';
|
|
4
5
|
const BOARD_URL = 'https://api.ashbyhq.com/posting-api/job-board';
|
|
@@ -28,7 +29,7 @@ async function fetchAshbyRest(slug) {
|
|
|
28
29
|
|
|
29
30
|
if (!resp.ok) {
|
|
30
31
|
if (resp.status === 404) return [];
|
|
31
|
-
throw
|
|
32
|
+
throw atsErrorFromStatus(resp.status, `Ashby REST API error for ${slug}: ${resp.status}`);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
const data = await resp.json();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize, stripHtml } from '../normalizer.js';
|
|
2
|
+
import { atsErrorFromStatus } from '../errors.js';
|
|
2
3
|
|
|
3
4
|
const BASE_URL = 'https://boards-api.greenhouse.io/v1/boards';
|
|
4
5
|
|
|
@@ -16,7 +17,7 @@ export async function fetchGreenhouse(slug) {
|
|
|
16
17
|
|
|
17
18
|
if (!resp.ok) {
|
|
18
19
|
if (resp.status === 404) return []; // Company not found or no jobs
|
|
19
|
-
throw
|
|
20
|
+
throw atsErrorFromStatus(resp.status, `Greenhouse API error for ${slug}: ${resp.status}`);
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
const data = await resp.json();
|
package/src/adapters/lever.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize, stripHtml } from '../normalizer.js';
|
|
2
|
+
import { atsErrorFromStatus } from '../errors.js';
|
|
2
3
|
|
|
3
4
|
const BASE_URL = 'https://api.lever.co/v0/postings';
|
|
4
5
|
|
|
@@ -15,7 +16,7 @@ export async function fetchLever(slug) {
|
|
|
15
16
|
|
|
16
17
|
if (!resp.ok) {
|
|
17
18
|
if (resp.status === 404) return [];
|
|
18
|
-
throw
|
|
19
|
+
throw atsErrorFromStatus(resp.status, `Lever API error for ${slug}: ${resp.status}`);
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
const jobs = await resp.json();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize, stripHtml } from '../normalizer.js';
|
|
2
|
+
import { atsErrorFromStatus } from '../errors.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Fetch jobs from a Recruitee career site.
|
|
@@ -18,7 +19,7 @@ export async function fetchRecruitee(slug) {
|
|
|
18
19
|
|
|
19
20
|
if (!resp.ok) {
|
|
20
21
|
if (resp.status === 404) return []; // No Recruitee site for this slug
|
|
21
|
-
throw
|
|
22
|
+
throw atsErrorFromStatus(resp.status, `Recruitee API error for ${slug}: ${resp.status}`);
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
const data = await resp.json();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize, stripHtml } from '../normalizer.js';
|
|
2
|
+
import { atsErrorFromStatus } from '../errors.js';
|
|
2
3
|
|
|
3
4
|
const BASE_URL = 'https://api.smartrecruiters.com/v1/companies';
|
|
4
5
|
const PAGE_SIZE = 100;
|
|
@@ -30,7 +31,7 @@ export async function fetchSmartrecruiters(slug) {
|
|
|
30
31
|
|
|
31
32
|
if (!resp.ok) {
|
|
32
33
|
if (resp.status === 404) return []; // Company not found
|
|
33
|
-
throw
|
|
34
|
+
throw atsErrorFromStatus(resp.status, `SmartRecruiters API error for ${slug}: ${resp.status}`);
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
const data = await resp.json();
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize, stripHtml } from '../normalizer.js';
|
|
2
|
+
import { atsErrorFromStatus } from '../errors.js';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Fetch jobs from a TeamTailor career site via its public RSS feed.
|
|
@@ -43,7 +44,7 @@ async function resolveFeed(slug, method = 'GET') {
|
|
|
43
44
|
});
|
|
44
45
|
if (resp.ok) return resp;
|
|
45
46
|
if (resp.status !== 404) {
|
|
46
|
-
throw
|
|
47
|
+
throw atsErrorFromStatus(resp.status, `TeamTailor RSS error for ${slug}: ${resp.status}`);
|
|
47
48
|
}
|
|
48
49
|
// 404 on this host — try the next region.
|
|
49
50
|
}
|
package/src/adapters/workday.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { normalize, stripHtml } from '../normalizer.js';
|
|
2
|
+
import { atsErrorFromStatus } from '../errors.js';
|
|
2
3
|
|
|
3
4
|
const MAX_DETAIL_FETCHES = 100;
|
|
4
5
|
const LIST_PAGE_SIZE = 20;
|
|
@@ -49,7 +50,7 @@ export async function fetchWorkday(slug, ctx = {}) {
|
|
|
49
50
|
if (!resp.ok) {
|
|
50
51
|
if (resp.status === 404) return []; // wrong site / no such board
|
|
51
52
|
if (offset === 0) {
|
|
52
|
-
throw
|
|
53
|
+
throw atsErrorFromStatus(resp.status, `Workday API error for ${slug} (${tenant}/${env}/${site}): ${resp.status}`);
|
|
53
54
|
}
|
|
54
55
|
break; // mid-paging failure: keep what we have
|
|
55
56
|
}
|
package/src/errors.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error taxonomy + typed error for the jd-intel toolkit.
|
|
3
|
+
*
|
|
4
|
+
* Codes are short and stable; the MCP tool descriptions teach the AI what each
|
|
5
|
+
* one means. Adapters throw AtsError with a code so callers map failures by
|
|
6
|
+
* `err.code` instead of parsing the message.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export const ERROR_CODES = {
|
|
10
|
+
COMPANY_NOT_FOUND: 'company_not_found', // Slug not in registry and not detected
|
|
11
|
+
ATS_UNREACHABLE: 'ats_unreachable', // Known ATS failed (500, timeout)
|
|
12
|
+
PARTIAL_FAILURE: 'partial_failure', // Discovery mode; some adapters failed
|
|
13
|
+
INVALID_ARGS: 'invalid_args', // Missing required, wrong type, bad pattern
|
|
14
|
+
NO_RESULTS: 'no_results', // Query succeeded, filters returned nothing
|
|
15
|
+
RATE_LIMITED: 'rate_limited', // Upstream returned 429
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Thrown by adapters on an upstream HTTP failure. Carries a stable `code`
|
|
20
|
+
* (ats_unreachable / rate_limited) so the MCP layer maps it without parsing
|
|
21
|
+
* the message. Extends Error, so the message, stack, and `instanceof Error`
|
|
22
|
+
* all keep working for existing library consumers.
|
|
23
|
+
*/
|
|
24
|
+
export class AtsError extends Error {
|
|
25
|
+
constructor(code, message, status) {
|
|
26
|
+
super(message);
|
|
27
|
+
this.name = 'AtsError';
|
|
28
|
+
this.code = code;
|
|
29
|
+
// Upstream HTTP status when one is known. Lets callers distinguish a
|
|
30
|
+
// retryable 503 from a terminal 404 without parsing the message, which
|
|
31
|
+
// is unsafe: Workday messages embed the pod name (wd503) alongside the
|
|
32
|
+
// status, so a message-level /5\d\d/ match reads "wd503: 404" as a 5xx.
|
|
33
|
+
if (status !== undefined) this.status = status;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Helper for adapters: build an AtsError from an HTTP status (429 => rate
|
|
39
|
+
* limited, anything else => unreachable) with the given message.
|
|
40
|
+
*/
|
|
41
|
+
export function atsErrorFromStatus(status, message) {
|
|
42
|
+
return new AtsError(status === 429 ? ERROR_CODES.RATE_LIMITED : ERROR_CODES.ATS_UNREACHABLE, message, status);
|
|
43
|
+
}
|
package/src/index.js
CHANGED
|
@@ -139,3 +139,8 @@ export { applyFilters } from './filters.js';
|
|
|
139
139
|
// Re-export the list of supported ATS names (e.g. so the MCP layer can report
|
|
140
140
|
// the full set detectAts probes, instead of hardcoding a stale subset).
|
|
141
141
|
export { ATS_NAMES };
|
|
142
|
+
|
|
143
|
+
// Error taxonomy + typed error. Adapters throw AtsError with a stable .code
|
|
144
|
+
// (ats_unreachable / rate_limited) so the MCP layer maps failures without
|
|
145
|
+
// parsing messages. ERROR_CODES is the single source of truth for both.
|
|
146
|
+
export { ERROR_CODES, AtsError } from './errors.js';
|
package/src/registry.js
CHANGED
|
@@ -35,7 +35,12 @@ async function fetchPlatform(platform) {
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
async function readPlatform(platform) {
|
|
38
|
-
|
|
38
|
+
// Resolved at call time like registryBaseUrl(): JD_INTEL_REGISTRY_DIR
|
|
39
|
+
// points the disk loader at a different directory (test fixtures), so
|
|
40
|
+
// tests can assert lookup semantics without depending on live registry
|
|
41
|
+
// content.
|
|
42
|
+
const dir = process.env.JD_INTEL_REGISTRY_DIR || REGISTRY_DIR;
|
|
43
|
+
const data = await readFile(join(dir, `${platform}.json`), 'utf-8');
|
|
39
44
|
return JSON.parse(data);
|
|
40
45
|
}
|
|
41
46
|
|