resuml 1.20.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DOCS.md +314 -0
- package/README.md +7 -2
- package/dist/{chunk-KRJMZ2RQ.js → chunk-GRIYYG45.js} +242 -2
- package/dist/chunk-GRIYYG45.js.map +1 -0
- package/dist/index.d.ts +422 -3
- package/dist/index.js +119 -54
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +4 -8
- package/dist/mcp/server.js.map +1 -1
- package/package.json +26 -52
- package/dist/api.d.ts +0 -9
- package/dist/api.js +0 -20
- package/dist/api.js.map +0 -1
- package/dist/chunk-4ZOTZUAW.js +0 -6666
- package/dist/chunk-4ZOTZUAW.js.map +0 -1
- package/dist/chunk-JP7UCR3P.js +0 -182
- package/dist/chunk-JP7UCR3P.js.map +0 -1
- package/dist/chunk-KRJMZ2RQ.js.map +0 -1
- package/dist/chunk-ZLA7NFYP.js +0 -90
- package/dist/chunk-ZLA7NFYP.js.map +0 -1
- package/dist/index-yHdKpxms.d.ts +0 -422
- package/dist/themeLoader-ZGWEGYXG.js +0 -7
- package/dist/themeLoader-ZGWEGYXG.js.map +0 -1
- package/scripts/build-builder.js +0 -25
- package/scripts/build-skills-db.js +0 -314
- package/scripts/bundle-themes.js +0 -1104
- package/scripts/dev-server.js +0 -392
- package/scripts/enrich-themes-manifest.mjs +0 -156
- package/scripts/generate-types.cjs +0 -55
- package/scripts/mcp-call.mjs +0 -99
- package/scripts/quick-bundle.cjs +0 -129
- package/scripts/render-theme-thumbs.mjs +0 -117
- package/scripts/test-mcp.mjs +0 -583
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,376 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This file was automatically generated by json-schema-to-typescript.
|
|
6
|
+
* DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
|
|
7
|
+
* and run json-schema-to-typescript to regenerate this file.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Similar to the standard date type, but each section after the year is optional. e.g. 2014-06-29 or 2023-04
|
|
11
|
+
*/
|
|
12
|
+
type Iso8601 = string;
|
|
13
|
+
interface ResumeSchema {
|
|
14
|
+
/**
|
|
15
|
+
* link to the version of the schema that can validate the resume
|
|
16
|
+
*/
|
|
17
|
+
$schema?: string;
|
|
18
|
+
basics?: {
|
|
19
|
+
name?: string;
|
|
20
|
+
/**
|
|
21
|
+
* e.g. Web Developer
|
|
22
|
+
*/
|
|
23
|
+
label?: string;
|
|
24
|
+
/**
|
|
25
|
+
* URL (as per RFC 3986) to a image in JPEG or PNG format
|
|
26
|
+
*/
|
|
27
|
+
image?: string;
|
|
28
|
+
/**
|
|
29
|
+
* e.g. thomas@gmail.com
|
|
30
|
+
*/
|
|
31
|
+
email?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Phone numbers are stored as strings so use any format you like, e.g. 712-117-2923
|
|
34
|
+
*/
|
|
35
|
+
phone?: string;
|
|
36
|
+
/**
|
|
37
|
+
* URL (as per RFC 3986) to your website, e.g. personal homepage
|
|
38
|
+
*/
|
|
39
|
+
url?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Write a short 2-3 sentence biography about yourself
|
|
42
|
+
*/
|
|
43
|
+
summary?: string;
|
|
44
|
+
location?: {
|
|
45
|
+
/**
|
|
46
|
+
* To add multiple address lines, use
|
|
47
|
+
* . For example, 1234 Glücklichkeit Straße
|
|
48
|
+
* Hinterhaus 5. Etage li.
|
|
49
|
+
*/
|
|
50
|
+
address?: string;
|
|
51
|
+
postalCode?: string;
|
|
52
|
+
city?: string;
|
|
53
|
+
/**
|
|
54
|
+
* code as per ISO-3166-1 ALPHA-2, e.g. US, AU, IN
|
|
55
|
+
*/
|
|
56
|
+
countryCode?: string;
|
|
57
|
+
/**
|
|
58
|
+
* The general region where you live. Can be a US state, or a province, for instance.
|
|
59
|
+
*/
|
|
60
|
+
region?: string;
|
|
61
|
+
[k: string]: unknown;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Specify any number of social networks that you participate in
|
|
65
|
+
*/
|
|
66
|
+
profiles?: {
|
|
67
|
+
/**
|
|
68
|
+
* e.g. Facebook or Twitter
|
|
69
|
+
*/
|
|
70
|
+
network?: string;
|
|
71
|
+
/**
|
|
72
|
+
* e.g. neutralthoughts
|
|
73
|
+
*/
|
|
74
|
+
username?: string;
|
|
75
|
+
/**
|
|
76
|
+
* e.g. http://twitter.example.com/neutralthoughts
|
|
77
|
+
*/
|
|
78
|
+
url?: string;
|
|
79
|
+
[k: string]: unknown;
|
|
80
|
+
}[];
|
|
81
|
+
[k: string]: unknown;
|
|
82
|
+
};
|
|
83
|
+
work?: {
|
|
84
|
+
/**
|
|
85
|
+
* e.g. Facebook
|
|
86
|
+
*/
|
|
87
|
+
name?: string;
|
|
88
|
+
/**
|
|
89
|
+
* e.g. Menlo Park, CA
|
|
90
|
+
*/
|
|
91
|
+
location?: string;
|
|
92
|
+
/**
|
|
93
|
+
* e.g. Social Media Company
|
|
94
|
+
*/
|
|
95
|
+
description?: string;
|
|
96
|
+
/**
|
|
97
|
+
* e.g. Software Engineer
|
|
98
|
+
*/
|
|
99
|
+
position?: string;
|
|
100
|
+
/**
|
|
101
|
+
* e.g. http://facebook.example.com
|
|
102
|
+
*/
|
|
103
|
+
url?: string;
|
|
104
|
+
startDate?: Iso8601;
|
|
105
|
+
endDate?: Iso8601;
|
|
106
|
+
/**
|
|
107
|
+
* Give an overview of your responsibilities at the company
|
|
108
|
+
*/
|
|
109
|
+
summary?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Specify multiple accomplishments
|
|
112
|
+
*/
|
|
113
|
+
highlights?: string[];
|
|
114
|
+
[k: string]: unknown;
|
|
115
|
+
}[];
|
|
116
|
+
volunteer?: {
|
|
117
|
+
/**
|
|
118
|
+
* e.g. Facebook
|
|
119
|
+
*/
|
|
120
|
+
organization?: string;
|
|
121
|
+
/**
|
|
122
|
+
* e.g. Software Engineer
|
|
123
|
+
*/
|
|
124
|
+
position?: string;
|
|
125
|
+
/**
|
|
126
|
+
* e.g. http://facebook.example.com
|
|
127
|
+
*/
|
|
128
|
+
url?: string;
|
|
129
|
+
startDate?: Iso8601;
|
|
130
|
+
endDate?: Iso8601;
|
|
131
|
+
/**
|
|
132
|
+
* Give an overview of your responsibilities at the company
|
|
133
|
+
*/
|
|
134
|
+
summary?: string;
|
|
135
|
+
/**
|
|
136
|
+
* Specify accomplishments and achievements
|
|
137
|
+
*/
|
|
138
|
+
highlights?: string[];
|
|
139
|
+
[k: string]: unknown;
|
|
140
|
+
}[];
|
|
141
|
+
education?: {
|
|
142
|
+
/**
|
|
143
|
+
* e.g. Massachusetts Institute of Technology
|
|
144
|
+
*/
|
|
145
|
+
institution?: string;
|
|
146
|
+
/**
|
|
147
|
+
* e.g. http://facebook.example.com
|
|
148
|
+
*/
|
|
149
|
+
url?: string;
|
|
150
|
+
/**
|
|
151
|
+
* e.g. Arts
|
|
152
|
+
*/
|
|
153
|
+
area?: string;
|
|
154
|
+
/**
|
|
155
|
+
* e.g. Bachelor
|
|
156
|
+
*/
|
|
157
|
+
studyType?: string;
|
|
158
|
+
startDate?: Iso8601;
|
|
159
|
+
endDate?: Iso8601;
|
|
160
|
+
/**
|
|
161
|
+
* grade point average, e.g. 3.67/4.0
|
|
162
|
+
*/
|
|
163
|
+
score?: string;
|
|
164
|
+
/**
|
|
165
|
+
* List notable courses/subjects
|
|
166
|
+
*/
|
|
167
|
+
courses?: string[];
|
|
168
|
+
[k: string]: unknown;
|
|
169
|
+
}[];
|
|
170
|
+
/**
|
|
171
|
+
* Specify any awards you have received throughout your professional career
|
|
172
|
+
*/
|
|
173
|
+
awards?: {
|
|
174
|
+
/**
|
|
175
|
+
* e.g. One of the 100 greatest minds of the century
|
|
176
|
+
*/
|
|
177
|
+
title?: string;
|
|
178
|
+
date?: Iso8601;
|
|
179
|
+
/**
|
|
180
|
+
* e.g. Time Magazine
|
|
181
|
+
*/
|
|
182
|
+
awarder?: string;
|
|
183
|
+
/**
|
|
184
|
+
* e.g. Received for my work with Quantum Physics
|
|
185
|
+
*/
|
|
186
|
+
summary?: string;
|
|
187
|
+
[k: string]: unknown;
|
|
188
|
+
}[];
|
|
189
|
+
/**
|
|
190
|
+
* Specify any certificates you have received throughout your professional career
|
|
191
|
+
*/
|
|
192
|
+
certificates?: {
|
|
193
|
+
/**
|
|
194
|
+
* e.g. Certified Kubernetes Administrator
|
|
195
|
+
*/
|
|
196
|
+
name?: string;
|
|
197
|
+
date?: Iso8601;
|
|
198
|
+
/**
|
|
199
|
+
* e.g. http://example.com
|
|
200
|
+
*/
|
|
201
|
+
url?: string;
|
|
202
|
+
/**
|
|
203
|
+
* e.g. CNCF
|
|
204
|
+
*/
|
|
205
|
+
issuer?: string;
|
|
206
|
+
[k: string]: unknown;
|
|
207
|
+
}[];
|
|
208
|
+
/**
|
|
209
|
+
* Specify your publications through your career
|
|
210
|
+
*/
|
|
211
|
+
publications?: {
|
|
212
|
+
/**
|
|
213
|
+
* e.g. The World Wide Web
|
|
214
|
+
*/
|
|
215
|
+
name?: string;
|
|
216
|
+
/**
|
|
217
|
+
* e.g. IEEE, Computer Magazine
|
|
218
|
+
*/
|
|
219
|
+
publisher?: string;
|
|
220
|
+
releaseDate?: Iso8601;
|
|
221
|
+
/**
|
|
222
|
+
* e.g. http://www.computer.org.example.com/csdl/mags/co/1996/10/rx069-abs.html
|
|
223
|
+
*/
|
|
224
|
+
url?: string;
|
|
225
|
+
/**
|
|
226
|
+
* Short summary of publication. e.g. Discussion of the World Wide Web, HTTP, HTML.
|
|
227
|
+
*/
|
|
228
|
+
summary?: string;
|
|
229
|
+
[k: string]: unknown;
|
|
230
|
+
}[];
|
|
231
|
+
/**
|
|
232
|
+
* List out your professional skill-set
|
|
233
|
+
*/
|
|
234
|
+
skills?: {
|
|
235
|
+
/**
|
|
236
|
+
* e.g. Web Development
|
|
237
|
+
*/
|
|
238
|
+
name?: string;
|
|
239
|
+
/**
|
|
240
|
+
* e.g. Master
|
|
241
|
+
*/
|
|
242
|
+
level?: string;
|
|
243
|
+
/**
|
|
244
|
+
* List some keywords pertaining to this skill
|
|
245
|
+
*/
|
|
246
|
+
keywords?: string[];
|
|
247
|
+
[k: string]: unknown;
|
|
248
|
+
}[];
|
|
249
|
+
/**
|
|
250
|
+
* List any other languages you speak
|
|
251
|
+
*/
|
|
252
|
+
languages?: {
|
|
253
|
+
/**
|
|
254
|
+
* e.g. English, Spanish
|
|
255
|
+
*/
|
|
256
|
+
language?: string;
|
|
257
|
+
/**
|
|
258
|
+
* e.g. Fluent, Beginner
|
|
259
|
+
*/
|
|
260
|
+
fluency?: string;
|
|
261
|
+
[k: string]: unknown;
|
|
262
|
+
}[];
|
|
263
|
+
interests?: {
|
|
264
|
+
/**
|
|
265
|
+
* e.g. Philosophy
|
|
266
|
+
*/
|
|
267
|
+
name?: string;
|
|
268
|
+
keywords?: string[];
|
|
269
|
+
[k: string]: unknown;
|
|
270
|
+
}[];
|
|
271
|
+
/**
|
|
272
|
+
* List references you have received
|
|
273
|
+
*/
|
|
274
|
+
references?: {
|
|
275
|
+
/**
|
|
276
|
+
* e.g. Timothy Cook
|
|
277
|
+
*/
|
|
278
|
+
name?: string;
|
|
279
|
+
/**
|
|
280
|
+
* e.g. Joe blogs was a great employee, who turned up to work at least once a week. He exceeded my expectations when it came to doing nothing.
|
|
281
|
+
*/
|
|
282
|
+
reference?: string;
|
|
283
|
+
[k: string]: unknown;
|
|
284
|
+
}[];
|
|
285
|
+
/**
|
|
286
|
+
* Specify career projects
|
|
287
|
+
*/
|
|
288
|
+
projects?: {
|
|
289
|
+
/**
|
|
290
|
+
* e.g. The World Wide Web
|
|
291
|
+
*/
|
|
292
|
+
name?: string;
|
|
293
|
+
/**
|
|
294
|
+
* Short summary of project. e.g. Collated works of 2017.
|
|
295
|
+
*/
|
|
296
|
+
description?: string;
|
|
297
|
+
/**
|
|
298
|
+
* Specify multiple features
|
|
299
|
+
*/
|
|
300
|
+
highlights?: string[];
|
|
301
|
+
/**
|
|
302
|
+
* Specify special elements involved
|
|
303
|
+
*/
|
|
304
|
+
keywords?: string[];
|
|
305
|
+
startDate?: Iso8601;
|
|
306
|
+
endDate?: Iso8601;
|
|
307
|
+
/**
|
|
308
|
+
* e.g. http://www.computer.org/csdl/mags/co/1996/10/rx069-abs.html
|
|
309
|
+
*/
|
|
310
|
+
url?: string;
|
|
311
|
+
/**
|
|
312
|
+
* Specify your role on this project or in company
|
|
313
|
+
*/
|
|
314
|
+
roles?: string[];
|
|
315
|
+
/**
|
|
316
|
+
* Specify the relevant company/entity affiliations e.g. 'greenpeace', 'corporationXYZ'
|
|
317
|
+
*/
|
|
318
|
+
entity?: string;
|
|
319
|
+
/**
|
|
320
|
+
* e.g. 'volunteering', 'presentation', 'talk', 'application', 'conference'
|
|
321
|
+
*/
|
|
322
|
+
type?: string;
|
|
323
|
+
[k: string]: unknown;
|
|
324
|
+
}[];
|
|
325
|
+
/**
|
|
326
|
+
* The schema version and any other tooling configuration lives here
|
|
327
|
+
*/
|
|
328
|
+
meta?: {
|
|
329
|
+
/**
|
|
330
|
+
* URL (as per RFC 3986) to latest version of this document
|
|
331
|
+
*/
|
|
332
|
+
canonical?: string;
|
|
333
|
+
/**
|
|
334
|
+
* A version field which follows semver - e.g. v1.0.0
|
|
335
|
+
*/
|
|
336
|
+
version?: string;
|
|
337
|
+
/**
|
|
338
|
+
* Using ISO 8601 with YYYY-MM-DDThh:mm:ss
|
|
339
|
+
*/
|
|
340
|
+
lastModified?: string;
|
|
341
|
+
[k: string]: unknown;
|
|
342
|
+
};
|
|
343
|
+
[k: string]: unknown;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
/**
|
|
347
|
+
* Merges and validates resume data objects against the JSON Resume schema.
|
|
348
|
+
* @param yamlContents - An array of YAML strings containing resume data.
|
|
349
|
+
* @returns The merged and validated resume data.
|
|
350
|
+
* @throws Error if validation fails.
|
|
351
|
+
*/
|
|
352
|
+
declare function processResumeData(yamlContents: string[]): Promise<ResumeSchema>;
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Load and parse resume files
|
|
356
|
+
*/
|
|
357
|
+
declare function loadResumeFiles(inputPath?: string): Promise<{
|
|
358
|
+
files: string[];
|
|
359
|
+
yamlContents: string[];
|
|
360
|
+
}>;
|
|
361
|
+
|
|
362
|
+
interface ThemeModule {
|
|
363
|
+
render: (resume: Record<string, unknown>, options?: Record<string, unknown>) => string | Promise<string>;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Load a theme module by name
|
|
367
|
+
* @param themeName The name of the theme to load
|
|
368
|
+
* @param options Optional settings (autoInstall: boolean)
|
|
369
|
+
* @returns The loaded theme module
|
|
370
|
+
*/
|
|
371
|
+
declare function loadTheme(themeName: string, options?: {
|
|
372
|
+
autoInstall?: boolean;
|
|
373
|
+
}): ThemeModule;
|
|
5
374
|
|
|
6
375
|
interface ThemeConfig {
|
|
7
376
|
sections?: {
|
|
@@ -40,6 +409,56 @@ declare namespace themeRender {
|
|
|
40
409
|
export { themeRender_injectCss as injectCss, themeRender_renderTheme as renderTheme };
|
|
41
410
|
}
|
|
42
411
|
|
|
412
|
+
type AtsCheckCategory = 'contact' | 'content' | 'structure' | 'keywords';
|
|
413
|
+
type AtsCheckWeight = 'high' | 'medium' | 'low';
|
|
414
|
+
type AtsRating = 'excellent' | 'good' | 'needs-work' | 'poor';
|
|
415
|
+
type AtsFitLevel = 'strong' | 'partial' | 'weak';
|
|
416
|
+
interface AtsCheck {
|
|
417
|
+
id: string;
|
|
418
|
+
category: AtsCheckCategory;
|
|
419
|
+
weight: AtsCheckWeight;
|
|
420
|
+
passed: boolean;
|
|
421
|
+
score: number;
|
|
422
|
+
message: string;
|
|
423
|
+
suggestion?: string;
|
|
424
|
+
}
|
|
425
|
+
interface AtsKeywordMatch {
|
|
426
|
+
matched: string[];
|
|
427
|
+
missing: string[];
|
|
428
|
+
extra: string[];
|
|
429
|
+
matchPercentage: number;
|
|
430
|
+
}
|
|
431
|
+
interface AtsFitAssessment {
|
|
432
|
+
level: AtsFitLevel;
|
|
433
|
+
message: string;
|
|
434
|
+
}
|
|
435
|
+
interface AtsResult {
|
|
436
|
+
score: number;
|
|
437
|
+
rating: AtsRating;
|
|
438
|
+
checks: AtsCheck[];
|
|
439
|
+
keywords?: AtsKeywordMatch;
|
|
440
|
+
fitAssessment?: AtsFitAssessment;
|
|
441
|
+
summary: string;
|
|
442
|
+
}
|
|
443
|
+
interface AtsOptions {
|
|
444
|
+
language?: string;
|
|
445
|
+
jobDescription?: string;
|
|
446
|
+
threshold?: number;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Run ATS analysis on a resume.
|
|
451
|
+
*
|
|
452
|
+
* Performs deterministic, offline checks:
|
|
453
|
+
* 1. Generic best-practice checks (contact, content, structure)
|
|
454
|
+
* 2. Optional job-description keyword matching
|
|
455
|
+
*
|
|
456
|
+
* @param resume - Validated resume data
|
|
457
|
+
* @param options - ATS analysis options
|
|
458
|
+
* @returns Full ATS analysis result with score, checks, and suggestions
|
|
459
|
+
*/
|
|
460
|
+
declare function analyzeAts(resume: ResumeSchema, options?: AtsOptions): AtsResult;
|
|
461
|
+
|
|
43
462
|
declare const program: Command;
|
|
44
463
|
|
|
45
|
-
export { program, themeRender };
|
|
464
|
+
export { type AtsOptions, type AtsResult, analyzeAts, loadResumeFiles, loadTheme, processResumeData, program, themeRender };
|