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.
- package/.env.example +7 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +43 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +29 -0
- package/.github/labels.json +92 -0
- package/.github/pull_request_template.md +64 -0
- package/.github/workflows/ci.yml +87 -0
- package/.github/workflows/labels.yml +27 -0
- package/.github/workflows/manual-publish.yml +105 -0
- package/.github/workflows/publish.yml +57 -0
- package/.github/workflows/release.yml +124 -0
- package/.github/workflows/security-audit.yml +44 -0
- package/.husky/pre-commit +12 -0
- package/.husky/pre-push +27 -0
- package/.lintstagedrc.json +3 -0
- package/AGENTS.md +449 -0
- package/CHANGELOG.md +38 -0
- package/CHANGES.md +259 -0
- package/LICENSE +15 -0
- package/PUBLISHING.md +191 -0
- package/README.md +385 -0
- package/ROADMAP.md +158 -0
- package/SETUP-COMPLETE.md +446 -0
- package/WORKFLOW-SUMMARY.md +368 -0
- package/completions/_huntr +168 -0
- package/completions/huntr.1 +266 -0
- package/completions/huntr.bash +91 -0
- package/dist/api/client.d.ts +14 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +74 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/personal/activities.d.ts +20 -0
- package/dist/api/personal/activities.d.ts.map +1 -0
- package/dist/api/personal/activities.js +50 -0
- package/dist/api/personal/activities.js.map +1 -0
- package/dist/api/personal/boards.d.ts +9 -0
- package/dist/api/personal/boards.d.ts.map +1 -0
- package/dist/api/personal/boards.js +16 -0
- package/dist/api/personal/boards.js.map +1 -0
- package/dist/api/personal/index.d.ts +17 -0
- package/dist/api/personal/index.d.ts.map +1 -0
- package/dist/api/personal/index.js +37 -0
- package/dist/api/personal/index.js.map +1 -0
- package/dist/api/personal/jobs.d.ts +13 -0
- package/dist/api/personal/jobs.d.ts.map +1 -0
- package/dist/api/personal/jobs.js +31 -0
- package/dist/api/personal/jobs.js.map +1 -0
- package/dist/api/personal/user.d.ts +8 -0
- package/dist/api/personal/user.d.ts.map +1 -0
- package/dist/api/personal/user.js +13 -0
- package/dist/api/personal/user.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +501 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/capture-session.d.ts +10 -0
- package/dist/commands/capture-session.d.ts.map +1 -0
- package/dist/commands/capture-session.js +478 -0
- package/dist/commands/capture-session.js.map +1 -0
- package/dist/config/clerk-session-manager.d.ts +44 -0
- package/dist/config/clerk-session-manager.d.ts.map +1 -0
- package/dist/config/clerk-session-manager.js +232 -0
- package/dist/config/clerk-session-manager.js.map +1 -0
- package/dist/config/config-manager.d.ts +15 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +51 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/keychain-manager.d.ts +6 -0
- package/dist/config/keychain-manager.d.ts.map +1 -0
- package/dist/config/keychain-manager.js +37 -0
- package/dist/config/keychain-manager.js.map +1 -0
- package/dist/config/token-capture.d.ts +11 -0
- package/dist/config/token-capture.d.ts.map +1 -0
- package/dist/config/token-capture.js +252 -0
- package/dist/config/token-capture.js.map +1 -0
- package/dist/config/token-manager.d.ts +38 -0
- package/dist/config/token-manager.d.ts.map +1 -0
- package/dist/config/token-manager.js +153 -0
- package/dist/config/token-manager.js.map +1 -0
- package/dist/lib/list-options.d.ts +69 -0
- package/dist/lib/list-options.d.ts.map +1 -0
- package/dist/lib/list-options.js +299 -0
- package/dist/lib/list-options.js.map +1 -0
- package/dist/types/personal.d.ts +113 -0
- package/dist/types/personal.d.ts.map +1 -0
- package/dist/types/personal.js +4 -0
- package/dist/types/personal.js.map +1 -0
- package/docs/AUTOMATIC-PUBLISHING.md +520 -0
- package/docs/CHANGELOG-AUTOMATION.md +418 -0
- package/docs/CI-CD-SETUP.md +582 -0
- package/docs/DEV-SETUP.md +512 -0
- package/docs/ENHANCEMENT-PLAN.md +204 -0
- package/docs/ENTITY-TYPES.md +462 -0
- package/docs/GITHUB-ACTIONS-GUIDE.md +367 -0
- package/docs/NPM-PUBLISHING.md +324 -0
- package/docs/OUTPUT-EXAMPLES.md +414 -0
- package/docs/OUTPUT-FORMATS.md +299 -0
- package/docs/TESTING.md +216 -0
- package/eslint.config.js +68 -0
- package/package.json +64 -0
- package/src/api/client.ts +88 -0
- package/src/api/personal/activities.ts +66 -0
- package/src/api/personal/boards.ts +14 -0
- package/src/api/personal/index.ts +25 -0
- package/src/api/personal/jobs.ts +33 -0
- package/src/api/personal/user.ts +10 -0
- package/src/cli.ts +487 -0
- package/src/commands/capture-session.ts +582 -0
- package/src/config/clerk-session-manager.ts +263 -0
- package/src/config/config-manager.ts +56 -0
- package/src/config/keychain-manager.ts +30 -0
- package/src/config/token-capture.ts +233 -0
- package/src/config/token-manager.ts +139 -0
- package/src/lib/list-options.ts +370 -0
- package/src/types/personal.ts +114 -0
- package/tests/example.test.ts +130 -0
- 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"}
|