huntr-cli 1.0.9

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 (117) hide show
  1. package/.env.example +7 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +43 -0
  3. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
  5. package/.github/labels.json +92 -0
  6. package/.github/pull_request_template.md +64 -0
  7. package/.github/workflows/ci.yml +87 -0
  8. package/.github/workflows/labels.yml +27 -0
  9. package/.github/workflows/manual-publish.yml +105 -0
  10. package/.github/workflows/publish.yml +57 -0
  11. package/.github/workflows/release.yml +124 -0
  12. package/.github/workflows/security-audit.yml +44 -0
  13. package/.husky/pre-commit +12 -0
  14. package/.husky/pre-push +27 -0
  15. package/.lintstagedrc.json +3 -0
  16. package/AGENTS.md +449 -0
  17. package/CHANGELOG.md +38 -0
  18. package/CHANGES.md +259 -0
  19. package/LICENSE +15 -0
  20. package/PUBLISHING.md +191 -0
  21. package/README.md +385 -0
  22. package/ROADMAP.md +158 -0
  23. package/SETUP-COMPLETE.md +446 -0
  24. package/WORKFLOW-SUMMARY.md +368 -0
  25. package/completions/_huntr +168 -0
  26. package/completions/huntr.1 +266 -0
  27. package/completions/huntr.bash +91 -0
  28. package/dist/api/client.d.ts +14 -0
  29. package/dist/api/client.d.ts.map +1 -0
  30. package/dist/api/client.js +74 -0
  31. package/dist/api/client.js.map +1 -0
  32. package/dist/api/personal/activities.d.ts +20 -0
  33. package/dist/api/personal/activities.d.ts.map +1 -0
  34. package/dist/api/personal/activities.js +50 -0
  35. package/dist/api/personal/activities.js.map +1 -0
  36. package/dist/api/personal/boards.d.ts +9 -0
  37. package/dist/api/personal/boards.d.ts.map +1 -0
  38. package/dist/api/personal/boards.js +16 -0
  39. package/dist/api/personal/boards.js.map +1 -0
  40. package/dist/api/personal/index.d.ts +17 -0
  41. package/dist/api/personal/index.d.ts.map +1 -0
  42. package/dist/api/personal/index.js +37 -0
  43. package/dist/api/personal/index.js.map +1 -0
  44. package/dist/api/personal/jobs.d.ts +13 -0
  45. package/dist/api/personal/jobs.d.ts.map +1 -0
  46. package/dist/api/personal/jobs.js +31 -0
  47. package/dist/api/personal/jobs.js.map +1 -0
  48. package/dist/api/personal/user.d.ts +8 -0
  49. package/dist/api/personal/user.d.ts.map +1 -0
  50. package/dist/api/personal/user.js +13 -0
  51. package/dist/api/personal/user.js.map +1 -0
  52. package/dist/cli.d.ts +3 -0
  53. package/dist/cli.d.ts.map +1 -0
  54. package/dist/cli.js +501 -0
  55. package/dist/cli.js.map +1 -0
  56. package/dist/commands/capture-session.d.ts +10 -0
  57. package/dist/commands/capture-session.d.ts.map +1 -0
  58. package/dist/commands/capture-session.js +478 -0
  59. package/dist/commands/capture-session.js.map +1 -0
  60. package/dist/config/clerk-session-manager.d.ts +44 -0
  61. package/dist/config/clerk-session-manager.d.ts.map +1 -0
  62. package/dist/config/clerk-session-manager.js +232 -0
  63. package/dist/config/clerk-session-manager.js.map +1 -0
  64. package/dist/config/config-manager.d.ts +15 -0
  65. package/dist/config/config-manager.d.ts.map +1 -0
  66. package/dist/config/config-manager.js +51 -0
  67. package/dist/config/config-manager.js.map +1 -0
  68. package/dist/config/keychain-manager.d.ts +6 -0
  69. package/dist/config/keychain-manager.d.ts.map +1 -0
  70. package/dist/config/keychain-manager.js +37 -0
  71. package/dist/config/keychain-manager.js.map +1 -0
  72. package/dist/config/token-capture.d.ts +11 -0
  73. package/dist/config/token-capture.d.ts.map +1 -0
  74. package/dist/config/token-capture.js +252 -0
  75. package/dist/config/token-capture.js.map +1 -0
  76. package/dist/config/token-manager.d.ts +38 -0
  77. package/dist/config/token-manager.d.ts.map +1 -0
  78. package/dist/config/token-manager.js +153 -0
  79. package/dist/config/token-manager.js.map +1 -0
  80. package/dist/lib/list-options.d.ts +69 -0
  81. package/dist/lib/list-options.d.ts.map +1 -0
  82. package/dist/lib/list-options.js +299 -0
  83. package/dist/lib/list-options.js.map +1 -0
  84. package/dist/types/personal.d.ts +113 -0
  85. package/dist/types/personal.d.ts.map +1 -0
  86. package/dist/types/personal.js +4 -0
  87. package/dist/types/personal.js.map +1 -0
  88. package/docs/AUTOMATIC-PUBLISHING.md +520 -0
  89. package/docs/CHANGELOG-AUTOMATION.md +418 -0
  90. package/docs/CI-CD-SETUP.md +582 -0
  91. package/docs/DEV-SETUP.md +512 -0
  92. package/docs/ENHANCEMENT-PLAN.md +204 -0
  93. package/docs/ENTITY-TYPES.md +462 -0
  94. package/docs/GITHUB-ACTIONS-GUIDE.md +367 -0
  95. package/docs/NPM-PUBLISHING.md +324 -0
  96. package/docs/OUTPUT-EXAMPLES.md +414 -0
  97. package/docs/OUTPUT-FORMATS.md +299 -0
  98. package/docs/TESTING.md +216 -0
  99. package/eslint.config.js +68 -0
  100. package/package.json +64 -0
  101. package/src/api/client.ts +88 -0
  102. package/src/api/personal/activities.ts +66 -0
  103. package/src/api/personal/boards.ts +14 -0
  104. package/src/api/personal/index.ts +25 -0
  105. package/src/api/personal/jobs.ts +33 -0
  106. package/src/api/personal/user.ts +10 -0
  107. package/src/cli.ts +487 -0
  108. package/src/commands/capture-session.ts +582 -0
  109. package/src/config/clerk-session-manager.ts +263 -0
  110. package/src/config/config-manager.ts +56 -0
  111. package/src/config/keychain-manager.ts +30 -0
  112. package/src/config/token-capture.ts +233 -0
  113. package/src/config/token-manager.ts +139 -0
  114. package/src/lib/list-options.ts +370 -0
  115. package/src/types/personal.ts +114 -0
  116. package/tests/example.test.ts +130 -0
  117. package/tsconfig.json +19 -0
@@ -0,0 +1,266 @@
1
+ .TH HUNTR 1 "February 2026" "huntr-cli 1.0.0" "User Commands"
2
+ .SH NAME
3
+ huntr \- CLI tool for managing your Huntr job search board
4
+ .SH SYNOPSIS
5
+ .B huntr
6
+ [\fIGLOBAL OPTIONS\fR] \fICOMMAND\fR [\fICOMMAND OPTIONS\fR] [\fIARGUMENTS\fR]
7
+ .SH DESCRIPTION
8
+ huntr is a command-line interface for managing your Huntr job search board.
9
+ Track activities, search jobs, and manage your application pipeline from the terminal.
10
+ .SH GLOBAL OPTIONS
11
+ .TP
12
+ .BR \-t , " \-\-token" " TOKEN"
13
+ API token for authentication (overrides all other sources)
14
+ .TP
15
+ .BR \-h , " \-\-help"
16
+ Display help for the command
17
+ .TP
18
+ .BR \-V , " \-\-version"
19
+ Output version number
20
+ .SH COMMANDS
21
+ .SS User Profile
22
+ .TP
23
+ .B me [\-j | \-\-json]
24
+ Show your user profile information
25
+ .RS
26
+ Options:
27
+ .TP
28
+ .B \-j, \-\-json
29
+ Output as JSON
30
+ .RE
31
+ .SS Boards
32
+ .TP
33
+ .B boards list [\-f | \-\-format FORMAT] [\-\-fields FIELDS]
34
+ List all your boards
35
+ .RS
36
+ Options:
37
+ .TP
38
+ .B \-f, \-\-format FORMAT
39
+ Output format: table (default), json, csv, pdf, excel
40
+ .TP
41
+ .B \-\-fields FIELDS
42
+ Comma-separated list of fields to include
43
+ .RE
44
+ .TP
45
+ .B boards get BOARD_ID [\-j | \-\-json]
46
+ Get details of a specific board
47
+ .RS
48
+ Options:
49
+ .TP
50
+ .B \-j, \-\-json
51
+ Output as JSON
52
+ .RE
53
+ .SS Jobs
54
+ .TP
55
+ .B jobs list BOARD_ID [\-f | \-\-format FORMAT] [\-\-fields FIELDS]
56
+ List jobs on a board
57
+ .RS
58
+ Options:
59
+ .TP
60
+ .B \-f, \-\-format FORMAT
61
+ Output format: table (default), json, csv, pdf, excel
62
+ .TP
63
+ .B \-\-fields FIELDS
64
+ Comma-separated list of fields to include
65
+ .RE
66
+ .TP
67
+ .B jobs get BOARD_ID JOB_ID [\-j | \-\-json]
68
+ Get details of a specific job
69
+ .RS
70
+ Options:
71
+ .TP
72
+ .B \-j, \-\-json
73
+ Output as JSON
74
+ .RE
75
+ .SS Activities
76
+ .TP
77
+ .B activities list BOARD_ID [\-f | \-\-format FORMAT] [\-d DAYS | \-\-days DAYS] [\-w | \-\-week] [\-\-types TYPES] [\-\-fields FIELDS]
78
+ List actions for a board
79
+ .RS
80
+ Options:
81
+ .TP
82
+ .B \-f, \-\-format FORMAT
83
+ Output format: table (default), json, csv, pdf, excel
84
+ .TP
85
+ .B \-d, \-\-days DAYS
86
+ Filter to last N days (e.g., 7 for past week)
87
+ .TP
88
+ .B \-w, \-\-week
89
+ Filter to last 7 days (alias for \-\-days 7)
90
+ .TP
91
+ .B \-\-types TYPES
92
+ Comma-separated action types (e.g., JOB_MOVED,NOTE_CREATED)
93
+ .TP
94
+ .B \-\-fields FIELDS
95
+ Comma-separated list of fields to include
96
+ .RE
97
+ .TP
98
+ .B activities week-csv BOARD_ID
99
+ Export last 7 days of activity as CSV
100
+ .SS Configuration
101
+ .TP
102
+ .B config capture-session
103
+ Extract Clerk session from your browser automatically (macOS only, recommended)
104
+ .TP
105
+ .B config test-session
106
+ Test the stored Clerk session by fetching a fresh token
107
+ .TP
108
+ .B config check-cdp
109
+ Check Chrome DevTools Protocol connection for session capture
110
+ .TP
111
+ .B config set-token TOKEN [\-k | \-\-keychain]
112
+ Save API token to config file or keychain
113
+ .RS
114
+ Options:
115
+ .TP
116
+ .B \-k, \-\-keychain
117
+ Save to macOS Keychain instead of config file
118
+ .RE
119
+ .TP
120
+ .B config show-token
121
+ Show which authentication sources are configured
122
+ .TP
123
+ .B config clear-token [\-k | \-\-keychain] [\-c | \-\-config]
124
+ Remove saved API token
125
+ .RS
126
+ Options:
127
+ .TP
128
+ .B \-k, \-\-keychain
129
+ Clear from macOS Keychain only
130
+ .TP
131
+ .B \-c, \-\-config
132
+ Clear from config file only
133
+ .RE
134
+ .TP
135
+ .B config clear-session
136
+ Remove stored Clerk session cookie
137
+ .SH OUTPUT FORMATS
138
+ .TP
139
+ .B table
140
+ Human-readable table format (default)
141
+ .TP
142
+ .B json
143
+ Machine-readable JSON format
144
+ .TP
145
+ .B csv
146
+ Comma-separated values for spreadsheet import
147
+ .TP
148
+ .B pdf
149
+ PDF document with professional formatting
150
+ .TP
151
+ .B excel
152
+ Excel spreadsheet (.xlsx) with formatting
153
+ .SH FIELD SELECTION
154
+ .P
155
+ Use \fB\-\-fields\fR to select specific columns in output:
156
+ .TP
157
+ .B huntr boards list \-\-fields ID,Name
158
+ .TP
159
+ .B huntr jobs list <board-id> \-\-fields Title,URL
160
+ .TP
161
+ .B huntr activities list <board-id> \-\-fields Date,Type,Company
162
+ .P
163
+ Available fields depend on the command. Use \fB\-\-help\fR to see available fields.
164
+ .SH AUTHENTICATION
165
+ .P
166
+ The CLI supports multiple authentication methods, with this priority order:
167
+ .IP 1. 3
168
+ CLI argument (\fB\-\-token\fR)
169
+ .IP 2. 3
170
+ Environment variable (\fBHUNTR_API_TOKEN\fR)
171
+ .IP 3. 3
172
+ Session-based (macOS only, auto-refreshing)
173
+ .IP 4. 3
174
+ Config file (~/.huntr/config.json)
175
+ .IP 5. 3
176
+ macOS Keychain (static token)
177
+ .IP 6. 3
178
+ Interactive prompt
179
+ .P
180
+ Recommended: Session-based auth on macOS, environment variable on other platforms.
181
+ .SH EXAMPLES
182
+ .TP
183
+ .B huntr me
184
+ Show your user profile
185
+ .TP
186
+ .B huntr boards list \-\-format json
187
+ List all boards as JSON
188
+ .TP
189
+ .B huntr jobs list <board-id>
190
+ List all jobs on a board (table format)
191
+ .TP
192
+ .B huntr jobs list <board-id> \-\-fields Title,URL \-\-format csv > jobs.csv
193
+ Export job titles and URLs to CSV file
194
+ .TP
195
+ .B huntr activities list <board-id> \-\-days 7 \-\-format pdf > report.pdf
196
+ Export last 7 days of activities as PDF
197
+ .TP
198
+ .B huntr activities list <board-id> \-\-types JOB_MOVED,NOTE_CREATED
199
+ List only job movements and notes
200
+ .TP
201
+ .B huntr config capture-session
202
+ Capture Clerk session from browser (macOS)
203
+ .TP
204
+ .B huntr config test-session
205
+ Verify stored session works correctly
206
+ .SH ENVIRONMENT VARIABLES
207
+ .TP
208
+ .B HUNTR_API_TOKEN
209
+ API token for authentication (cross-platform)
210
+ .SH FILES
211
+ .TP
212
+ .B ~/.huntr/config.json
213
+ Configuration file with saved tokens and settings
214
+ .TP
215
+ .B ~/.husky/
216
+ Git hooks directory (installed via npm)
217
+ .SH KEYBOARD SHORTCUTS
218
+ .P
219
+ No special keyboard shortcuts. Standard terminal commands apply:
220
+ .TP
221
+ .B Ctrl-C
222
+ Cancel current command
223
+ .TP
224
+ .B Ctrl-Z
225
+ Suspend process (on Unix)
226
+ .SH TROUBLESHOOTING
227
+ .TP
228
+ Session expired or invalid (HTTP 401)
229
+ Your browser session has expired. Re-run:
230
+ .B huntr config capture-session
231
+ (macOS only). For other platforms, use \fB\-\-token\fR or environment variable.
232
+ .TP
233
+ No Clerk session stored
234
+ Set up session-based auth with:
235
+ .B huntr config capture-session
236
+ (macOS only). On other platforms, use:
237
+ .B huntr config set-token <token>
238
+ .TP
239
+ Could not connect to Chrome DevTools Protocol
240
+ Ensure Chrome is running. The command will auto-launch Chrome if needed.
241
+ .TP
242
+ No token found
243
+ Set up authentication using one of these methods:
244
+ .TP
245
+ 1. Session: huntr config capture-session (macOS)
246
+ .TP
247
+ 2. Token: huntr config set-token <token>
248
+ .TP
249
+ 3. Environment: export HUNTR_API_TOKEN=<token>
250
+ .TP
251
+ 4. Argument: huntr <command> \-\-token <token>
252
+ .SH SEE ALSO
253
+ .TP
254
+ GitHub: https://github.com/mattmck/huntr-cli
255
+ .TP
256
+ Documentation: https://github.com/mattmck/huntr-cli/tree/main/docs
257
+ .TP
258
+ npm: https://www.npmjs.com/package/huntr-cli
259
+ .TP
260
+ Huntr: https://huntr.co
261
+ .SH AUTHOR
262
+ Matt McKnight <mcknight.matthew@gmail.com>
263
+ .SH LICENSE
264
+ ISC
265
+ .SH HISTORY
266
+ Version 1.0.0 (February 2026): Initial release with session-based auth, field selection, and PDF/Excel export.
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env bash
2
+
3
+ _huntr_completions() {
4
+ local cur prev words cword
5
+ _init_completion || return
6
+
7
+ local commands="me boards jobs activities config"
8
+ local global_opts="-t --token -h --help -V --version"
9
+ local format_opts="-f --format json table csv pdf excel"
10
+ local list_opts="-f --format --fields -d --days --types -w --week"
11
+ local config_cmds="capture-session test-session check-cdp set-token show-token clear-token clear-session"
12
+
13
+ # Handle first level command
14
+ if [[ $cword -eq 1 ]]; then
15
+ COMPREPLY=($(compgen -W "$commands $global_opts" -- "$cur"))
16
+ return 0
17
+ fi
18
+
19
+ # Handle subcommands
20
+ case ${words[1]} in
21
+ me)
22
+ COMPREPLY=($(compgen -W "$global_opts -f --format" -- "$cur"))
23
+ ;;
24
+ boards)
25
+ if [[ $cword -eq 2 ]]; then
26
+ COMPREPLY=($(compgen -W "list get" -- "$cur"))
27
+ elif [[ $cword -gt 2 ]]; then
28
+ case ${words[2]} in
29
+ list)
30
+ COMPREPLY=($(compgen -W "$format_opts $global_opts" -- "$cur"))
31
+ ;;
32
+ get)
33
+ COMPREPLY=($(compgen -W "$format_opts $global_opts" -- "$cur"))
34
+ ;;
35
+ esac
36
+ fi
37
+ ;;
38
+ jobs)
39
+ if [[ $cword -eq 2 ]]; then
40
+ COMPREPLY=($(compgen -W "list get" -- "$cur"))
41
+ elif [[ $cword -gt 2 ]]; then
42
+ case ${words[2]} in
43
+ list)
44
+ COMPREPLY=($(compgen -W "$format_opts $global_opts" -- "$cur"))
45
+ ;;
46
+ get)
47
+ COMPREPLY=($(compgen -W "$format_opts $global_opts" -- "$cur"))
48
+ ;;
49
+ esac
50
+ fi
51
+ ;;
52
+ activities)
53
+ if [[ $cword -eq 2 ]]; then
54
+ COMPREPLY=($(compgen -W "list week-csv" -- "$cur"))
55
+ elif [[ $cword -gt 2 ]]; then
56
+ case ${words[2]} in
57
+ list)
58
+ COMPREPLY=($(compgen -W "$format_opts $global_opts -d --days -w --week --types" -- "$cur"))
59
+ ;;
60
+ week-csv)
61
+ COMPREPLY=($(compgen -W "$global_opts" -- "$cur"))
62
+ ;;
63
+ esac
64
+ fi
65
+ ;;
66
+ config)
67
+ if [[ $cword -eq 2 ]]; then
68
+ COMPREPLY=($(compgen -W "$config_cmds" -- "$cur"))
69
+ elif [[ $cword -gt 2 ]]; then
70
+ case ${words[2]} in
71
+ capture-session|test-session|check-cdp|show-token)
72
+ # No additional options
73
+ ;;
74
+ set-token)
75
+ COMPREPLY=($(compgen -W "$global_opts" -- "$cur"))
76
+ ;;
77
+ clear-token)
78
+ COMPREPLY=($(compgen -W "--all" -- "$cur"))
79
+ ;;
80
+ clear-session)
81
+ # No additional options
82
+ ;;
83
+ esac
84
+ fi
85
+ ;;
86
+ esac
87
+
88
+ return 0
89
+ }
90
+
91
+ complete -F _huntr_completions huntr
@@ -0,0 +1,14 @@
1
+ /** A static token string OR an async function that returns a fresh token. */
2
+ export type TokenProvider = string | (() => Promise<string>);
3
+ export declare class HuntrApiClient {
4
+ private axiosInstance;
5
+ private tokenProvider;
6
+ constructor(tokenProvider: TokenProvider, baseURL?: string);
7
+ get<T>(endpoint: string, params?: Record<string, any>): Promise<T>;
8
+ post<T>(endpoint: string, data?: any): Promise<T>;
9
+ put<T>(endpoint: string, data?: any): Promise<T>;
10
+ delete<T>(endpoint: string): Promise<T>;
11
+ paginate<T>(endpoint: string, params?: Record<string, any>, limit?: number): AsyncGenerator<T[], void, undefined>;
12
+ }
13
+ export declare const createClient: (tokenProvider: TokenProvider, baseURL?: string) => HuntrApiClient;
14
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAMA,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7D,qBAAa,cAAc;IACzB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAwB;gBAEjC,aAAa,EAAE,aAAa,EAAE,OAAO,GAAE,MAAmC;IAmChF,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAKlE,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAKjD,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IAKhD,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;IAKtC,QAAQ,CAAC,CAAC,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,KAAK,GAAE,MAAY,GAClB,cAAc,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC;CAWxC;AAED,eAAO,MAAM,YAAY,GAAI,eAAe,aAAa,EAAE,UAAU,MAAM,KAAG,cAE7E,CAAC"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createClient = exports.HuntrApiClient = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const dotenv_1 = __importDefault(require("dotenv"));
9
+ // Load .env file silently (debug: false suppresses info messages)
10
+ dotenv_1.default.config({ debug: false });
11
+ class HuntrApiClient {
12
+ constructor(tokenProvider, baseURL = 'https://api.huntr.co/org') {
13
+ this.tokenProvider =
14
+ typeof tokenProvider === 'string'
15
+ ? async () => tokenProvider
16
+ : tokenProvider;
17
+ this.axiosInstance = axios_1.default.create({ baseURL });
18
+ // Inject a fresh Authorization header before every request
19
+ this.axiosInstance.interceptors.request.use(async (config) => {
20
+ const token = await this.tokenProvider();
21
+ if (!token)
22
+ throw new Error('No API token available.');
23
+ config.headers = config.headers ?? {};
24
+ config.headers['Authorization'] = `Bearer ${token}`;
25
+ config.headers['Content-Type'] = 'application/json';
26
+ return config;
27
+ });
28
+ this.axiosInstance.interceptors.response.use((response) => response, (error) => {
29
+ if (error.response) {
30
+ const status = error.response.status;
31
+ const apiError = error.response.data;
32
+ const message = apiError?.error?.message ?? apiError?.message ?? 'API request failed';
33
+ throw new Error(`HTTP ${status}: ${message}`);
34
+ }
35
+ if (error.request) {
36
+ throw new Error('No response from API - check your network connection');
37
+ }
38
+ throw error;
39
+ });
40
+ }
41
+ async get(endpoint, params) {
42
+ const response = await this.axiosInstance.get(endpoint, { params });
43
+ return response.data;
44
+ }
45
+ async post(endpoint, data) {
46
+ const response = await this.axiosInstance.post(endpoint, data);
47
+ return response.data;
48
+ }
49
+ async put(endpoint, data) {
50
+ const response = await this.axiosInstance.put(endpoint, data);
51
+ return response.data;
52
+ }
53
+ async delete(endpoint) {
54
+ const response = await this.axiosInstance.delete(endpoint);
55
+ return response.data;
56
+ }
57
+ async *paginate(endpoint, params = {}, limit = 100) {
58
+ let next = undefined;
59
+ do {
60
+ const queryParams = { ...params, limit };
61
+ if (next)
62
+ queryParams.next = next;
63
+ const response = await this.get(endpoint, queryParams);
64
+ yield response.data;
65
+ next = response.next;
66
+ } while (next);
67
+ }
68
+ }
69
+ exports.HuntrApiClient = HuntrApiClient;
70
+ const createClient = (tokenProvider, baseURL) => {
71
+ return new HuntrApiClient(tokenProvider, baseURL);
72
+ };
73
+ exports.createClient = createClient;
74
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { HuntrApiClient } from '../client';
2
+ import { PersonalAction } from '../../types/personal';
3
+ export declare class PersonalActionsApi {
4
+ private client;
5
+ constructor(client: HuntrApiClient);
6
+ listByBoard(boardId: string): Promise<Record<string, PersonalAction>>;
7
+ listByBoardFlat(boardId: string, opts?: {
8
+ since?: Date;
9
+ types?: string[];
10
+ }): Promise<PersonalAction[]>;
11
+ weekSummary(boardId: string): Promise<Array<{
12
+ date: string;
13
+ actionType: string;
14
+ company: string;
15
+ jobTitle: string;
16
+ status: string;
17
+ url: string;
18
+ }>>;
19
+ }
20
+ //# sourceMappingURL=activities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activities.d.ts","sourceRoot":"","sources":["../../../src/api/personal/activities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAqC,MAAM,sBAAsB,CAAC;AAEzF,qBAAa,kBAAkB;IACjB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAGpC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAKrE,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GACxC,OAAO,CAAC,cAAc,EAAE,CAAC;IAmBtB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAChD,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CAwBJ"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersonalActionsApi = void 0;
4
+ class PersonalActionsApi {
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ // Returns object map { [actionId]: PersonalAction }
9
+ async listByBoard(boardId) {
10
+ return this.client.get(`/board/${boardId}/actions`);
11
+ }
12
+ // Returns flattened array sorted by date desc, optionally filtered by action types
13
+ async listByBoardFlat(boardId, opts) {
14
+ const raw = await this.listByBoard(boardId);
15
+ let actions = Object.values(raw);
16
+ if (opts?.since) {
17
+ const cutoff = opts.since.getTime();
18
+ actions = actions.filter(a => new Date(a.date || a.createdAt).getTime() >= cutoff);
19
+ }
20
+ if (opts?.types && opts.types.length > 0) {
21
+ actions = actions.filter(a => opts.types.includes(a.actionType));
22
+ }
23
+ return actions.sort((a, b) => new Date(b.date || b.createdAt).getTime() - new Date(a.date || a.createdAt).getTime());
24
+ }
25
+ // Joins actions with job data to produce enriched rows
26
+ async weekSummary(boardId) {
27
+ const since = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
28
+ const [actions, jobsResponse] = await Promise.all([
29
+ this.listByBoardFlat(boardId, { since }),
30
+ this.client.get(`/board/${boardId}/jobs`),
31
+ ]);
32
+ const jobs = jobsResponse.jobs;
33
+ return actions
34
+ .filter(a => a.actionType !== 'ACTIVITY_CREATED')
35
+ .map(a => {
36
+ const jobId = a.data?._job;
37
+ const job = jobId ? jobs[jobId] : undefined;
38
+ return {
39
+ date: new Date(a.date || a.createdAt).toISOString().substring(0, 16),
40
+ actionType: a.actionType,
41
+ company: a.data?.company?.name ?? '',
42
+ jobTitle: a.data?.job?.title ?? '',
43
+ status: a.data?.toList?.name ?? '',
44
+ url: job?.url ?? '',
45
+ };
46
+ });
47
+ }
48
+ }
49
+ exports.PersonalActionsApi = PersonalActionsApi;
50
+ //# sourceMappingURL=activities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activities.js","sourceRoot":"","sources":["../../../src/api/personal/activities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { HuntrApiClient } from '../client';
2
+ import { Board } from '../../types/personal';
3
+ export declare class PersonalBoardsApi {
4
+ private client;
5
+ constructor(client: HuntrApiClient);
6
+ list(): Promise<Board[]>;
7
+ get(boardId: string): Promise<Board>;
8
+ }
9
+ //# sourceMappingURL=boards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boards.d.ts","sourceRoot":"","sources":["../../../src/api/personal/boards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE7C,qBAAa,iBAAiB;IAChB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAEpC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAIxB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;CAG3C"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PersonalBoardsApi = void 0;
4
+ class PersonalBoardsApi {
5
+ constructor(client) {
6
+ this.client = client;
7
+ }
8
+ async list() {
9
+ return this.client.get('/boards');
10
+ }
11
+ async get(boardId) {
12
+ return this.client.get(`/boards/${boardId}`);
13
+ }
14
+ }
15
+ exports.PersonalBoardsApi = PersonalBoardsApi;
16
+ //# sourceMappingURL=boards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boards.js","sourceRoot":"","sources":["../../../src/api/personal/boards.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAC5B,YAAoB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;IAAG,CAAC;IAE9C,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAQ,WAAW,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;CACF;AAVD,8CAUC"}
@@ -0,0 +1,17 @@
1
+ import { TokenProvider } from '../client';
2
+ import { PersonalUserApi } from './user';
3
+ import { PersonalBoardsApi } from './boards';
4
+ import { PersonalJobsApi } from './jobs';
5
+ import { PersonalActionsApi } from './activities';
6
+ export declare class HuntrPersonalApi {
7
+ user: PersonalUserApi;
8
+ boards: PersonalBoardsApi;
9
+ jobs: PersonalJobsApi;
10
+ actions: PersonalActionsApi;
11
+ constructor(tokenProvider: TokenProvider);
12
+ }
13
+ export * from './user';
14
+ export * from './boards';
15
+ export * from './jobs';
16
+ export * from './activities';
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/personal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,qBAAa,gBAAgB;IACpB,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;gBAEvB,aAAa,EAAE,aAAa;CAOzC;AAED,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.HuntrPersonalApi = void 0;
18
+ const client_1 = require("../client");
19
+ const user_1 = require("./user");
20
+ const boards_1 = require("./boards");
21
+ const jobs_1 = require("./jobs");
22
+ const activities_1 = require("./activities");
23
+ class HuntrPersonalApi {
24
+ constructor(tokenProvider) {
25
+ const client = (0, client_1.createClient)(tokenProvider, 'https://api.huntr.co/api');
26
+ this.user = new user_1.PersonalUserApi(client);
27
+ this.boards = new boards_1.PersonalBoardsApi(client);
28
+ this.jobs = new jobs_1.PersonalJobsApi(client);
29
+ this.actions = new activities_1.PersonalActionsApi(client);
30
+ }
31
+ }
32
+ exports.HuntrPersonalApi = HuntrPersonalApi;
33
+ __exportStar(require("./user"), exports);
34
+ __exportStar(require("./boards"), exports);
35
+ __exportStar(require("./jobs"), exports);
36
+ __exportStar(require("./activities"), exports);
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/personal/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,sCAAwD;AACxD,iCAAyC;AACzC,qCAA6C;AAC7C,iCAAyC;AACzC,6CAAkD;AAElD,MAAa,gBAAgB;IAM3B,YAAY,aAA4B;QACtC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,IAAI,sBAAe,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,0BAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,sBAAe,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAkB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;CACF;AAbD,4CAaC;AAED,yCAAuB;AACvB,2CAAyB;AACzB,yCAAuB;AACvB,+CAA6B"}
@@ -0,0 +1,13 @@
1
+ import { HuntrApiClient } from '../client';
2
+ import { PersonalJob, PersonalJobsResponse } from '../../types/personal';
3
+ export declare class PersonalJobsApi {
4
+ private client;
5
+ constructor(client: HuntrApiClient);
6
+ listByBoard(boardId: string): Promise<PersonalJobsResponse>;
7
+ listByBoardFlat(boardId: string): Promise<PersonalJob[]>;
8
+ get(boardId: string, jobId: string): Promise<PersonalJob>;
9
+ create(boardId: string, job: Partial<PersonalJob>): Promise<PersonalJob>;
10
+ update(boardId: string, jobId: string, updates: Partial<PersonalJob>): Promise<PersonalJob>;
11
+ delete(boardId: string, jobId: string): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../../src/api/personal/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEzE,qBAAa,eAAe;IACd,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAGpC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAK3D,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKxD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIzD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAIxE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3F,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAG5D"}