@yamlresume/core 0.4.0 → 0.4.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/dist/index.d.ts CHANGED
@@ -21,20 +21,9 @@
21
21
  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
22
22
  * IN THE SOFTWARE.
23
23
  */
24
- /**
25
- * Defines the possible types for inline formatting marks.
26
- */
27
- declare enum MarkType {
28
- bold = "bold",
29
- italic = "italic",
30
- underline = "underline",
31
- link = "link"
32
- }
33
- /** Helper type to get the union of possible MarkType keys. */
34
- type MarkTypeOptions = keyof typeof MarkType;
35
24
  /** Represents a bold formatting mark. */
36
25
  type BoldMark = {
37
- type: Extract<MarkTypeOptions, 'bold'>;
26
+ type: 'bold';
38
27
  };
39
28
  /** Represents a link mark with optional attributes. */
40
29
  type LinkMark = {
@@ -47,38 +36,25 @@ type LinkMark = {
47
36
  /** Link target attribute (e.g., '_blank'), often null or empty. */
48
37
  target: string;
49
38
  };
50
- type: Extract<MarkTypeOptions, 'link'>;
39
+ type: 'link';
51
40
  };
52
41
  /** Represents an italic formatting mark. */
53
42
  type ItalicMark = {
54
- type: Extract<MarkTypeOptions, 'italic'>;
43
+ type: 'italic';
55
44
  };
56
45
  /** Represents an underline formatting mark. */
57
46
  type UnderlineMark = {
58
- type: Extract<MarkTypeOptions, 'underline'>;
47
+ type: 'underline';
59
48
  };
60
49
  /** Represents a union of all possible inline formatting marks. */
61
50
  type Mark = BoldMark | ItalicMark | LinkMark | UnderlineMark;
62
51
  /** Represents a sequence of child nodes, often used for block node content. */
63
52
  type Fragment = Node[] | undefined;
64
- /**
65
- * Defines the possible types for block or inline nodes in the document tree.
66
- */
67
- declare enum NodeType {
68
- bulletList = "bulletList",
69
- doc = "doc",
70
- listItem = "listItem",
71
- orderedList = "orderedList",
72
- paragraph = "paragraph",
73
- text = "text"
74
- }
75
- /** Helper type to get the union of possible NodeType keys. */
76
- type NodeTypeOptions = keyof typeof NodeType;
77
53
  /** Represents a bullet list node (unordered list). */
78
54
  type BulletListNode = {
79
55
  /** Child nodes (typically ListItemNode) contained within this list. */
80
56
  content?: Fragment;
81
- type: Extract<NodeTypeOptions, 'bulletList'>;
57
+ type: 'bulletList';
82
58
  /** Optional attributes, typically only includes 'start' which defaults to 1
83
59
  * but isn't semantically used for bullet lists. */
84
60
  attrs?: {
@@ -90,19 +66,19 @@ type DocNode = {
90
66
  /** The top-level block nodes (like ParagraphNode, BulletListNode, etc.) of the
91
67
  * document. */
92
68
  content?: Fragment;
93
- type: Extract<NodeTypeOptions, 'doc'>;
69
+ type: 'doc';
94
70
  };
95
71
  /** Represents an item within a list (either bullet or ordered). */
96
72
  type ListItemNode = {
97
73
  /** Child nodes (like ParagraphNode) contained within this list item. */
98
74
  content?: Fragment;
99
- type: Extract<NodeTypeOptions, 'listItem'>;
75
+ type: 'listItem';
100
76
  };
101
77
  /** Represents an ordered list node. */
102
78
  type OrderedListNode = {
103
79
  /** Child nodes (typically ListItemNode) contained within this list. */
104
80
  content?: Fragment;
105
- type: Extract<NodeTypeOptions, 'orderedList'>;
81
+ type: 'orderedList';
106
82
  /** Optional attributes for the list. */
107
83
  attrs?: {
108
84
  /** The starting number for the ordered list. */
@@ -113,7 +89,7 @@ type OrderedListNode = {
113
89
  type ParagraphNode = {
114
90
  /** Inline child nodes (like TextNode) contained within this paragraph. */
115
91
  content?: Fragment;
116
- type: Extract<NodeTypeOptions, 'paragraph'>;
92
+ type: 'paragraph';
117
93
  };
118
94
  /** Represents a plain text node, with optional associated formatting marks. */
119
95
  type TextNode = {
@@ -122,9 +98,15 @@ type TextNode = {
122
98
  marks?: Mark[];
123
99
  /** The actual text content. */
124
100
  text: string;
125
- type: Extract<NodeTypeOptions, 'text'>;
101
+ type: 'text';
126
102
  };
127
- /** Represents a union of all possible node types in the document tree. */
103
+ /**
104
+ * Represents a union of all possible node types in the document tree.
105
+ *
106
+ * These node types are inspired by the Tiptap editor.
107
+ *
108
+ * @see {@link https://tiptap.dev/docs/editor/core-concepts/schema}
109
+ **/
128
110
  type Node = BulletListNode | DocNode | ListItemNode | OrderedListNode | ParagraphNode | TextNode;
129
111
 
130
112
  /**
@@ -279,63 +261,19 @@ interface Parser {
279
261
  */
280
262
 
281
263
  /**
282
- * This parser is used to parse the tiptap JSON format to the AST.
283
- *
284
- * Under the hood the implementation is pretty naive, it just parses the JSON
285
- * string to a DocNode because we use tiptap editor in frontend, so it is
286
- * guaranteed that the JSON stored by tiptap editor is valid as a tiptap
287
- * document.
288
- *
289
- * @see https://tiptap.dev/docs/editor/core-concepts/schema#parse
290
- */
291
- declare class TiptapParser implements Parser {
292
- /**
293
- * Parse a tiptap JSON string into an AST node.
294
- *
295
- * @param input - The tiptap JSON string to parse.
296
- * @returns The parsed AST node.
297
- */
298
- parse(input: string): DocNode;
299
- }
300
-
301
- /**
302
- * MIT License
303
- *
304
- * Copyright (c) 2023–Present PPResume (https://ppresume.com)
305
- *
306
- * Permission is hereby granted, free of charge, to any person obtaining a copy
307
- * of this software and associated documentation files (the "Software"), to
308
- * deal in the Software without restriction, including without limitation the
309
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
310
- * sell copies of the Software, and to permit persons to whom the Software is
311
- * furnished to do so, subject to the following conditions:
312
- *
313
- * The above copyright notice and this permission notice shall be included in
314
- * all copies or substantial portions of the Software.
315
- *
316
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
317
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
318
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
319
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
320
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
321
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
322
- * IN THE SOFTWARE.
323
- */
324
-
325
- /**
326
- * Parse markdown to tiptap nodes
264
+ * Parse markdown to ast node
327
265
  *
328
266
  * Under the hood this class first parse the markdown to mdast and then
329
- * transform the mdast to tiptap nodes.
267
+ * transform the mdast to ast node.
330
268
  *
331
269
  * @see {@link Parser}
332
270
  */
333
271
  declare class MarkdownParser implements Parser {
334
272
  /**
335
- * Parse markdown to tiptap nodes
273
+ * Parse markdown to ast node
336
274
  *
337
275
  * @param input - The markdown input to parse
338
- * @returns The tiptap node
276
+ * @returns The ast node
339
277
  */
340
278
  parse(input: string): Node;
341
279
  }
@@ -364,285 +302,38 @@ declare class MarkdownParser implements Parser {
364
302
  * IN THE SOFTWARE.
365
303
  */
366
304
  /**
367
- * Represents all possible countries & regions.
368
- */
369
- declare enum Country {
370
- Afghanistan = "Afghanistan",
371
- AlandIslands = "Aland Islands",
372
- Albania = "Albania",
373
- Algeria = "Algeria",
374
- AmericanSamoa = "American Samoa",
375
- Andorra = "Andorra",
376
- Angola = "Angola",
377
- Anguilla = "Anguilla",
378
- Antarctica = "Antarctica",
379
- AntiguaAndBarbuda = "Antigua And Barbuda",
380
- Argentina = "Argentina",
381
- Armenia = "Armenia",
382
- Aruba = "Aruba",
383
- Australia = "Australia",
384
- Austria = "Austria",
385
- Azerbaijan = "Azerbaijan",
386
- Bahrain = "Bahrain",
387
- Bangladesh = "Bangladesh",
388
- Barbados = "Barbados",
389
- Belarus = "Belarus",
390
- Belgium = "Belgium",
391
- Belize = "Belize",
392
- Benin = "Benin",
393
- Bermuda = "Bermuda",
394
- Bhutan = "Bhutan",
395
- Bolivia = "Bolivia",
396
- BonaireSintEustatiusAndSaba = "Bonaire, Sint Eustatius and Saba",
397
- BosniaAndHerzegovina = "Bosnia and Herzegovina",
398
- Botswana = "Botswana",
399
- BouvetIsland = "Bouvet Island",
400
- Brazil = "Brazil",
401
- BritishIndianOceanTerritory = "British Indian Ocean Territory",
402
- Brunei = "Brunei",
403
- Bulgaria = "Bulgaria",
404
- BurkinaFaso = "Burkina Faso",
405
- Burundi = "Burundi",
406
- Cambodia = "Cambodia",
407
- Cameroon = "Cameroon",
408
- Canada = "Canada",
409
- CapeVerde = "Cape Verde",
410
- CaymanIslands = "Cayman Islands",
411
- CentralAfricanRepublic = "Central African Republic",
412
- Chad = "Chad",
413
- Chile = "Chile",
414
- China = "China",
415
- ChristmasIsland = "Christmas Island",
416
- CocosKeelingIslands = "Cocos (Keeling) Islands",
417
- Colombia = "Colombia",
418
- Comoros = "Comoros",
419
- Congo = "Congo",
420
- CookIslands = "Cook Islands",
421
- CostaRica = "Costa Rica",
422
- CoteDIvoireIvoryCoast = "Cote D'Ivoire (Ivory Coast)",
423
- Croatia = "Croatia",
424
- Cuba = "Cuba",
425
- Curaçao = "Cura\u00E7ao",
426
- Cyprus = "Cyprus",
427
- CzechRepublic = "Czech Republic",
428
- DemocraticRepublicoftheCongo = "Democratic Republic of the Congo",
429
- Denmark = "Denmark",
430
- Djibouti = "Djibouti",
431
- Dominica = "Dominica",
432
- DominicanRepublic = "Dominican Republic",
433
- EastTimor = "East Timor",
434
- Ecuador = "Ecuador",
435
- Egypt = "Egypt",
436
- ElSalvador = "El Salvador",
437
- EquatorialGuinea = "Equatorial Guinea",
438
- Eritrea = "Eritrea",
439
- Estonia = "Estonia",
440
- Ethiopia = "Ethiopia",
441
- FalklandIslands = "Falkland Islands",
442
- FaroeIslands = "Faroe Islands",
443
- FijiIslands = "Fiji Islands",
444
- Finland = "Finland",
445
- France = "France",
446
- FrenchGuiana = "French Guiana",
447
- FrenchPolynesia = "French Polynesia",
448
- FrenchSouthernTerritories = "French Southern Territories",
449
- Gabon = "Gabon",
450
- GambiaThe = "Gambia The",
451
- Georgia = "Georgia",
452
- Germany = "Germany",
453
- Ghana = "Ghana",
454
- Gibraltar = "Gibraltar",
455
- Greece = "Greece",
456
- Greenland = "Greenland",
457
- Grenada = "Grenada",
458
- Guadeloupe = "Guadeloupe",
459
- Guam = "Guam",
460
- Guatemala = "Guatemala",
461
- GuernseyAndAlderney = "Guernsey and Alderney",
462
- Guinea = "Guinea",
463
- GuineaBissau = "Guinea-Bissau",
464
- Guyana = "Guyana",
465
- Haiti = "Haiti",
466
- HeardIslandAndMcDonaldIslands = "Heard Island and McDonald Islands",
467
- Honduras = "Honduras",
468
- HongKongSAR = "Hong Kong S.A.R.",
469
- Hungary = "Hungary",
470
- Iceland = "Iceland",
471
- India = "India",
472
- Indonesia = "Indonesia",
473
- Iran = "Iran",
474
- Iraq = "Iraq",
475
- Ireland = "Ireland",
476
- Israel = "Israel",
477
- Italy = "Italy",
478
- Jamaica = "Jamaica",
479
- Japan = "Japan",
480
- Jersey = "Jersey",
481
- Jordan = "Jordan",
482
- Kazakhstan = "Kazakhstan",
483
- Kenya = "Kenya",
484
- Kiribati = "Kiribati",
485
- Kosovo = "Kosovo",
486
- Kuwait = "Kuwait",
487
- Kyrgyzstan = "Kyrgyzstan",
488
- Laos = "Laos",
489
- Latvia = "Latvia",
490
- Lebanon = "Lebanon",
491
- Lesotho = "Lesotho",
492
- Liberia = "Liberia",
493
- Libya = "Libya",
494
- Liechtenstein = "Liechtenstein",
495
- Lithuania = "Lithuania",
496
- Luxembourg = "Luxembourg",
497
- MacauSAR = "Macau S.A.R.",
498
- Madagascar = "Madagascar",
499
- Malawi = "Malawi",
500
- Malaysia = "Malaysia",
501
- Maldives = "Maldives",
502
- Mali = "Mali",
503
- Malta = "Malta",
504
- ManIsleof = "Man (Isle of)",
505
- MarshallIslands = "Marshall Islands",
506
- Martinique = "Martinique",
507
- Mauritania = "Mauritania",
508
- Mauritius = "Mauritius",
509
- Mayotte = "Mayotte",
510
- Mexico = "Mexico",
511
- Micronesia = "Micronesia",
512
- Moldova = "Moldova",
513
- Monaco = "Monaco",
514
- Mongolia = "Mongolia",
515
- Montenegro = "Montenegro",
516
- Montserrat = "Montserrat",
517
- Morocco = "Morocco",
518
- Mozambique = "Mozambique",
519
- Myanmar = "Myanmar",
520
- Namibia = "Namibia",
521
- Nauru = "Nauru",
522
- Nepal = "Nepal",
523
- Netherlands = "Netherlands",
524
- NewCaledonia = "New Caledonia",
525
- NewZealand = "New Zealand",
526
- Nicaragua = "Nicaragua",
527
- Niger = "Niger",
528
- Nigeria = "Nigeria",
529
- Niue = "Niue",
530
- NorfolkIsland = "Norfolk Island",
531
- NorthKorea = "North Korea",
532
- NorthMacedonia = "North Macedonia",
533
- NorthernMarianaIslands = "Northern Mariana Islands",
534
- Norway = "Norway",
535
- Oman = "Oman",
536
- Pakistan = "Pakistan",
537
- Palau = "Palau",
538
- PalestinianTerritoryOccupied = "Palestinian Territory Occupied",
539
- Panama = "Panama",
540
- PapuanewGuinea = "Papua new Guinea",
541
- Paraguay = "Paraguay",
542
- Peru = "Peru",
543
- Philippines = "Philippines",
544
- PitcairnIsland = "Pitcairn Island",
545
- Poland = "Poland",
546
- Portugal = "Portugal",
547
- PuertoRico = "Puerto Rico",
548
- Qatar = "Qatar",
549
- Reunion = "Reunion",
550
- Romania = "Romania",
551
- Russia = "Russia",
552
- Rwanda = "Rwanda",
553
- SaintHelena = "Saint Helena",
554
- SaintKittsAndNevis = "Saint Kitts And Nevis",
555
- SaintLucia = "Saint Lucia",
556
- SaintPierreAndMiquelon = "Saint Pierre and Miquelon",
557
- SaintVincentAndTheGrenadines = "Saint Vincent And The Grenadines",
558
- SaintBarthelemy = "Saint-Barthelemy",
559
- SaintMartinFrenchpart = "Saint-Martin (French part)",
560
- Samoa = "Samoa",
561
- SanMarino = "San Marino",
562
- SaoTomeAndPrincipe = "Sao Tome and Principe",
563
- SaudiArabia = "Saudi Arabia",
564
- Senegal = "Senegal",
565
- Serbia = "Serbia",
566
- Seychelles = "Seychelles",
567
- SierraLeone = "Sierra Leone",
568
- Singapore = "Singapore",
569
- SintMaartenDutchpart = "Sint Maarten (Dutch part)",
570
- Slovakia = "Slovakia",
571
- Slovenia = "Slovenia",
572
- SolomonIslands = "Solomon Islands",
573
- Somalia = "Somalia",
574
- SouthAfrica = "South Africa",
575
- SouthGeorgia = "South Georgia",
576
- SouthKorea = "South Korea",
577
- SouthSudan = "South Sudan",
578
- Spain = "Spain",
579
- SriLanka = "Sri Lanka",
580
- Sudan = "Sudan",
581
- Suriname = "Suriname",
582
- SvalbardAndJanMayenIslands = "Svalbard And Jan Mayen Islands",
583
- Swaziland = "Swaziland",
584
- Sweden = "Sweden",
585
- Switzerland = "Switzerland",
586
- Syria = "Syria",
587
- Taiwan = "Taiwan",
588
- Tajikistan = "Tajikistan",
589
- Tanzania = "Tanzania",
590
- Thailand = "Thailand",
591
- TheBahamas = "The Bahamas",
592
- Togo = "Togo",
593
- Tokelau = "Tokelau",
594
- Tonga = "Tonga",
595
- TrinidadAndTobago = "Trinidad And Tobago",
596
- Tunisia = "Tunisia",
597
- Turkey = "Turkey",
598
- Turkmenistan = "Turkmenistan",
599
- TurksAndCaicosIslands = "Turks And Caicos Islands",
600
- Tuvalu = "Tuvalu",
601
- Uganda = "Uganda",
602
- Ukraine = "Ukraine",
603
- UnitedArabEmirates = "United Arab Emirates",
604
- UnitedKingdom = "United Kingdom",
605
- UnitedStates = "United States",
606
- UnitedStatesMinorOutlyingIslands = "United States Minor Outlying Islands",
607
- Uruguay = "Uruguay",
608
- Uzbekistan = "Uzbekistan",
609
- Vanuatu = "Vanuatu",
610
- VaticanCityStateHolySee = "Vatican City State (Holy See)",
611
- Venezuela = "Venezuela",
612
- Vietnam = "Vietnam",
613
- VirginIslandsBritish = "Virgin Islands (British)",
614
- VirginIslandsUS = "Virgin Islands (US)",
615
- WallisAndFutunaIslands = "Wallis And Futuna Islands",
616
- WesternSahara = "Western Sahara",
617
- Yemen = "Yemen",
618
- Zambia = "Zambia",
619
- Zimbabwe = "Zimbabwe"
620
- }
305
+ * All possible countries and regions in the world.
306
+ */
307
+ declare const COUNTRY_OPTIONS: readonly ["Afghanistan", "Aland Islands", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua And Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bonaire, Sint Eustatius and Saba", "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil", "British Indian Ocean Territory", "Brunei", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Christmas Island", "Cocos (Keeling) Islands", "Colombia", "Comoros", "Congo", "Cook Islands", "Costa Rica", "Cote D'Ivoire (Ivory Coast)", "Croatia", "Cuba", "Curaçao", "Cyprus", "Czech Republic", "Democratic Republic of the Congo", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "East Timor", "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands", "Faroe Islands", "Fiji Islands", "Finland", "France", "French Guiana", "French Polynesia", "French Southern Territories", "Gabon", "Gambia The", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guernsey and Alderney", "Guinea", "Guinea-Bissau", "Guyana", "Haiti", "Heard Island and McDonald Islands", "Honduras", "Hong Kong S.A.R.", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Israel", "Italy", "Jamaica", "Japan", "Jersey", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Kosovo", "Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macau S.A.R.", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Man (Isle of)", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "North Korea", "North Macedonia", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Palestinian Territory Occupied", "Panama", "Papua new Guinea", "Paraguay", "Peru", "Philippines", "Pitcairn Island", "Poland", "Portugal", "Puerto Rico", "Qatar", "Reunion", "Romania", "Russia", "Rwanda", "Saint Helena", "Saint Kitts And Nevis", "Saint Lucia", "Saint Pierre and Miquelon", "Saint Vincent And The Grenadines", "Saint-Barthelemy", "Saint-Martin (French part)", "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Sint Maarten (Dutch part)", "Slovakia", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia", "South Korea", "South Sudan", "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard And Jan Mayen Islands", "Swaziland", "Sweden", "Switzerland", "Syria", "Taiwan", "Tajikistan", "Tanzania", "Thailand", "The Bahamas", "Togo", "Tokelau", "Tonga", "Trinidad And Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks And Caicos Islands", "Tuvalu", "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States", "United States Minor Outlying Islands", "Uruguay", "Uzbekistan", "Vanuatu", "Vatican City State (Holy See)", "Venezuela", "Vietnam", "Virgin Islands (British)", "Virgin Islands (US)", "Wallis And Futuna Islands", "Western Sahara", "Yemen", "Zambia", "Zimbabwe"];
308
+ /**
309
+ * Type for all possible countries and regions in the world.
310
+ */
311
+ type Country = (typeof COUNTRY_OPTIONS)[number];
621
312
  /**
622
313
  * Represents all possible countries & regions with their corresponding English
623
314
  * names.
624
315
  */
625
- declare const englishCountryNames: Record<Country, string>;
316
+ declare const EnglishCountryNames: Record<Country, string>;
626
317
  /**
627
318
  * Represents all possible countries & regions with their corresponding
628
319
  * Simplified Chinese names.
629
320
  */
630
- declare const simplifiedChineseCountryNames: Record<Country, string>;
321
+ declare const SimplifiedChineseCountryNames: Record<Country, string>;
631
322
  /**
632
323
  * Represents all possible countries & regions with their corresponding
633
324
  * Traditional Chinese HK names.
634
325
  */
635
- declare const traditionalChineseCountryHKNames: Record<Country, string>;
326
+ declare const TraditionalChineseCountryHKNames: Record<Country, string>;
636
327
  /**
637
328
  * Represents all possible countries & regions with their corresponding
638
329
  * Traditional Chinese TW names.
639
330
  */
640
- declare const traditionalChineseCountryTWNames: Record<Country, string>;
331
+ declare const TraditionalChineseCountryTWNames: Record<Country, string>;
641
332
  /**
642
333
  * Represents all possible countries & regions with their corresponding
643
334
  * Spanish names.
644
335
  */
645
- declare const spanishCountryNames: Record<Country, string>;
336
+ declare const SpanishCountryNames: Record<Country, string>;
646
337
 
647
338
  /**
648
339
  * MIT License
@@ -1133,18 +824,18 @@ type ResumeLayoutMargins = {
1133
824
  /** Right margin value (e.g., "1.5cm"). */
1134
825
  right: string;
1135
826
  };
1136
- /** Defines the available styles for rendering numbers in the font spec. */
1137
- declare enum FontSpecNumbersStyle {
1138
- /** Standard lining figures (default for CJK languages). */
1139
- Lining = "Lining",
1140
- /** Old-style figures with varying heights (default for Latin languages). */
1141
- OldStyle = "OldStyle",
1142
- /**
1143
- * Represents an undefined state, allowing the style to be automatically
1144
- * determined based on the selected `LocaleLanguage`.
1145
- */
1146
- Auto = "Auto"
1147
- }
827
+ /** The options for the font spec numbers style. */
828
+ declare const FONT_SPEC_NUMBERS_STYLE_OPTIONS: readonly ["Lining", "OldStyle", "Auto"];
829
+ /**
830
+ * The type of font spec numbers style.
831
+ *
832
+ * - `Lining` - standard lining figures (default for CJK languages)
833
+ * - `OldStyle` - old style figures with varying heights (default for Latin
834
+ * languages)
835
+ * - `Auto` - an undefined state, allowing the style to be automatically
836
+ * determined based on the selected `LocaleLanguage`
837
+ */
838
+ type FontSpecNumbersStyle = (typeof FONT_SPEC_NUMBERS_STYLE_OPTIONS)[number];
1148
839
  /** Defines typography settings like font size and number style. */
1149
840
  type ResumeLayoutTypography = {
1150
841
  /** Base font size for the document (e.g., "10pt", "11pt"). */
@@ -1230,90 +921,44 @@ type Resume = {
1230
921
  * IN THE SOFTWARE.
1231
922
  */
1232
923
 
1233
- /** Represents a Tiptap editor JSON string for a single empty paragraph. */
1234
- declare const emptyParagraph = "{\"type\":\"doc\",\"content\":[{\"type\":\"paragraph\"}]}";
1235
- /** Defines standard academic degree types. */
1236
- declare enum Degree {
1237
- MiddleSchool = "Middle School",
1238
- HighSchool = "High School",
1239
- Diploma = "Diploma",
1240
- Associate = "Associate",
1241
- Bachelor = "Bachelor",
1242
- Master = "Master",
1243
- Doctor = "Doctor"
1244
- }
1245
- /** An array containing all possible values from the `Degree` enum. */
1246
- declare const degreeOptions: Degree[];
1247
- /** Defines common world languages.
924
+ /**
925
+ * Defines all possible degrees.
926
+ */
927
+ declare const DEGREE_OPTIONS: readonly ["Middle School", "High School", "Diploma", "Associate", "Bachelor", "Master", "Doctor"];
928
+ /**
929
+ * Type for all possible degrees.
930
+ */
931
+ type Degree = (typeof DEGREE_OPTIONS)[number];
932
+ /**
933
+ * Defines common world languages.
1248
934
  *
1249
935
  * This list contains the most used languages in the world.
1250
936
  *
1251
937
  * TODO: allow users to add their own languages
1252
938
  */
1253
- declare enum Language {
1254
- Arabic = "Arabic",
1255
- Bengali = "Bengali",
1256
- Bhojpuri = "Bhojpuri",
1257
- Cantonese = "Cantonese",
1258
- Chinese = "Chinese",
1259
- Dutch = "Dutch",
1260
- English = "English",
1261
- French = "French",
1262
- German = "German",
1263
- Gujarati = "Gujarati",
1264
- Hausa = "Hausa",
1265
- Hindi = "Hindi",
1266
- Indonesian = "Indonesian",
1267
- Italian = "Italian",
1268
- Japanese = "Japanese",
1269
- Javanese = "Javanese",
1270
- Korean = "Korean",
1271
- Marathi = "Marathi",
1272
- Mandarin = "Mandarin",
1273
- Portuguese = "Portuguese",
1274
- Russian = "Russian",
1275
- Spanish = "Spanish",
1276
- Tamil = "Tamil",
1277
- Turkish = "Turkish",
1278
- Urdu = "Urdu",
1279
- Vietnamese = "Vietnamese"
1280
- }
1281
- /** An array containing all possible values from the `Language` enum. */
1282
- declare const languagesOptions: Language[];
1283
- /** Defines levels of language proficiency.
1284
- *
1285
- * This list of options is coming from LinkedIn.
1286
- */
1287
- declare enum LanguageFluency {
1288
- ElementaryProficiency = "Elementary Proficiency",
1289
- LimitedWorkingProficiency = "Limited Working Proficiency",
1290
- MinimumProfessionalProficiency = "Minimum Professional Proficiency",
1291
- FullProfessionalProficiency = "Full Professional Proficiency",
1292
- NativeOrBilingualProficiency = "Native or Bilingual Proficiency"
1293
- }
1294
- /** An array containing all possible values from the `LanguageFluency` enum. */
1295
- declare const languageFluenciesOptions: LanguageFluency[];
1296
- /** Defines levels of skill proficiency. */
1297
- declare enum SkillLevel {
1298
- Novice = "Novice",
1299
- Beginner = "Beginner",
1300
- Intermediate = "Intermediate",
1301
- Advanced = "Advanced",
1302
- Expert = "Expert",
1303
- Master = "Master"
1304
- }
1305
- /** An array containing all possible values from the `SkillLevel` enum. */
1306
- declare const skillLevelOptions: SkillLevel[];
939
+ declare const LANGUAGE_OPTIONS: readonly ["Afrikaans", "Albanian", "Amharic", "Arabic", "Azerbaijani", "Belarusian", "Bengali", "Bhojpuri", "Bulgarian", "Burmese", "Cantonese", "Catalan", "Chinese", "Croatian", "Czech", "Danish", "Dutch", "English", "Estonian", "Farsi", "Filipino", "Finnish", "French", "German", "Greek", "Gujarati", "Hausa", "Hebrew", "Hindi", "Hungarian", "Icelandic", "Igbo", "Indonesian", "Irish", "Italian", "Japanese", "Javanese", "Kazakh", "Khmer", "Korean", "Lahnda", "Latvian", "Lithuanian", "Malay", "Mandarin", "Marathi", "Nepali", "Norwegian", "Oromo", "Pashto", "Polish", "Portuguese", "Romanian", "Russian", "Serbian", "Shona", "Sinhala", "Slovak", "Slovene", "Somali", "Spanish", "Sundanese", "Swahili", "Swedish", "Tagalog", "Tamil", "Telugu", "Thai", "Turkish", "Ukrainian", "Urdu", "Uzbek", "Vietnamese", "Yoruba", "Zulu"];
940
+ type Language = (typeof LANGUAGE_OPTIONS)[number];
941
+ /**
942
+ * Defines language fluency levels.
943
+ *
944
+ * Based on the Interagency Language Roundtable (ILR) scale.
945
+ */
946
+ declare const LANGUAGE_FLUENCIE_OPTIONS: readonly ["Elementary Proficiency", "Limited Working Proficiency", "Minimum Professional Proficiency", "Full Professional Proficiency", "Native or Bilingual Proficiency"];
947
+ type LanguageFluency = (typeof LANGUAGE_FLUENCIE_OPTIONS)[number];
948
+ /**
949
+ * Defines skill proficiency levels.
950
+ *
951
+ * Based on common industry standards for skill assessment.
952
+ */
953
+ declare const SKILL_LEVEL_OPTIONS: readonly ["Novice", "Beginner", "Intermediate", "Advanced", "Expert", "Master"];
954
+ type SkillLevel = (typeof SKILL_LEVEL_OPTIONS)[number];
1307
955
  /** Defines identifiers for the available resume templates. */
1308
- declare enum TemplateOption {
1309
- ModerncvBanking = "moderncv-banking",
1310
- ModerncvCasual = "moderncv-casual",
1311
- ModerncvClassic = "moderncv-classic"
1312
- }
956
+ declare const TEMPLATE_OPTIONS: readonly ["moderncv-banking", "moderncv-casual", "moderncv-classic"];
957
+ type TemplateOption = (typeof TEMPLATE_OPTIONS)[number];
1313
958
  declare function getTemplateOptionDetail(templateOption: TemplateOption): {
1314
959
  name: string;
1315
960
  description: string;
1316
- id: TemplateOption;
961
+ id: "moderncv-banking" | "moderncv-casual" | "moderncv-classic";
1317
962
  };
1318
963
  /** Provides default, empty item structures for each resume section type. */
1319
964
  declare const resumeItems: ResumeItem;
@@ -1337,13 +982,9 @@ declare const marginOptions: string[];
1337
982
  *
1338
983
  * @see {@link https://en.wikipedia.org/wiki/IETF_language_tag}
1339
984
  */
1340
- declare enum LocaleLanguageOption {
1341
- English = "en",
1342
- SimplifiedChinese = "zh-hans",
1343
- TraditionalChineseHK = "zh-hant-hk",
1344
- TraditionalChineseTW = "zh-hant-tw",
1345
- Spanish = "es"
1346
- }
985
+ declare const LOCALE_LANGUAGE_OPTIONS: readonly ["en", "zh-hans", "zh-hant-hk", "zh-hant-tw", "es"];
986
+ /** Type for all possible locale languages. */
987
+ type LocaleLanguageOption = (typeof LOCALE_LANGUAGE_OPTIONS)[number];
1347
988
  /**
1348
989
  * Get the language code and name of the given locale language.
1349
990
  *
@@ -1351,7 +992,7 @@ declare enum LocaleLanguageOption {
1351
992
  * @returns The language code and name of the given locale language.
1352
993
  */
1353
994
  declare function getLocaleLanguageOptionDetail(localeLanguage: LocaleLanguageOption): {
1354
- localeLanguage: LocaleLanguageOption;
995
+ localeLanguage: "en" | "zh-hans" | "zh-hant-hk" | "zh-hant-tw" | "es";
1355
996
  name: string;
1356
997
  };
1357
998
  /** Default layout configuration for a new resume. */
@@ -1677,9 +1318,11 @@ declare abstract class Renderer {
1677
1318
  * Get the appropriate resume renderer based on the provided resume.
1678
1319
  *
1679
1320
  * @param {Resume} resume - The resume object
1321
+ * @param {Parser} summaryParser - The parser instance for the summary field.
1322
+ * Default to `MarkdownParser` if not provided.
1680
1323
  * @returns {Renderer} The renderer instance for the specified template.
1681
1324
  */
1682
- declare function getResumeRenderer(resume: Resume, summaryParser: Parser): Renderer;
1325
+ declare function getResumeRenderer(resume: Resume, summaryParser?: Parser): Renderer;
1683
1326
 
1684
1327
  /**
1685
1328
  * MIT License
@@ -1705,28 +1348,22 @@ declare function getResumeRenderer(resume: Resume, summaryParser: Parser): Rende
1705
1348
  * IN THE SOFTWARE.
1706
1349
  */
1707
1350
 
1708
- /** Specific terms used within resume sections that require translation. */
1709
- declare enum ResumeTerms {
1710
- /** The term for academic score or GPA. */
1711
- Score = "Score"
1712
- }
1713
1351
  /** Defines the structure for translated terms for a single language. */
1714
- type TermsTranslationValue = {
1352
+ type OptionTranslation = {
1715
1353
  /** Translations for degree types. */
1716
- education: Record<Degree, string>;
1354
+ degrees: Record<Degree, string>;
1717
1355
  /** Translations for language names. */
1718
1356
  languages: Record<Language, string>;
1719
1357
  /** Translations for language fluency levels. */
1720
1358
  languageFluencies: Record<LanguageFluency, string>;
1721
1359
  /** Translations for country names. */
1722
- location: Record<Country, string>;
1360
+ countries: Record<Country, string>;
1723
1361
  /** Translations for resume section titles. */
1724
1362
  sections: Record<SectionID, string>;
1725
1363
  /** Translations for skill proficiency levels. */
1726
1364
  skills: Record<SkillLevel, string>;
1727
- /** Translations for specific resume terms defined in `ResumeTerms`. */
1728
- terms: Record<ResumeTerms, string>;
1729
1365
  };
1366
+ type OptionCategory = keyof OptionTranslation;
1730
1367
  /**
1731
1368
  * Retrieves the translated terms for a specific locale language.
1732
1369
  *
@@ -1738,7 +1375,7 @@ type TermsTranslationValue = {
1738
1375
  * @returns An object containing the translated terms for the specified
1739
1376
  * language.
1740
1377
  */
1741
- declare function getTermsTranslations(language?: LocaleLanguageOption): TermsTranslationValue;
1378
+ declare function getOptionTranslation<K extends OptionCategory>(language: LocaleLanguageOption, category: K, option: keyof OptionTranslation[K]): string;
1742
1379
 
1743
1380
  /**
1744
1381
  * MIT License
@@ -1765,28 +1402,19 @@ declare function getTermsTranslations(language?: LocaleLanguageOption): TermsTra
1765
1402
  */
1766
1403
 
1767
1404
  /** Specific punctuation types used for formatting within templates. */
1768
- declare enum Punctuation {
1769
- /** Standard comma, often used between items in a sentence. */
1770
- Comma = "Comma",
1771
- /** Standard colon, often used before lists or details. */
1772
- Colon = "Colon",
1773
- /** Separator used specifically for lists of items (e.g., keywords, courses),
1774
- * which might differ from a standard comma in some languages. */
1775
- Separator = "Separator"
1776
- }
1405
+ declare const PUNCTUATIONS: readonly ["comma", "colon", "separator"];
1406
+ /** The type of punctuation. */
1407
+ type Punctuation = (typeof PUNCTUATIONS)[number];
1777
1408
  /** Specific terms used within the template structure that need translation. */
1778
- declare enum TemplateTerms {
1779
- /** The heading or label for a list of courses. */
1780
- Courses = "Courses",
1781
- /** The heading or label for a list of keywords. */
1782
- Keywords = "Keywords"
1783
- }
1409
+ declare const TERMS: readonly ["courses", "keywords", "score"];
1410
+ /** The type of term. */
1411
+ type Term = (typeof TERMS)[number];
1784
1412
  /** The structure for template-specific translations (punctuations and terms) */
1785
1413
  type TemplateTranslationValue = {
1786
1414
  /** Translations for punctuation types defined in `Punctuation`. */
1787
1415
  punctuations: Record<Punctuation, string>;
1788
- /** Translations for template terms defined in `TemplateTerms`. */
1789
- terms: Record<TemplateTerms, string>;
1416
+ /** Translations for template terms defined in `Term`. */
1417
+ terms: Record<Term, string>;
1790
1418
  };
1791
1419
  /**
1792
1420
  * Retrieves template-specific translations (punctuations and terms) for a given
@@ -1846,7 +1474,7 @@ declare function localizeDate(date: string, language: LocaleLanguageOption | str
1846
1474
  * @param language - The language to localize the date string to.
1847
1475
  * @returns The date range.
1848
1476
  */
1849
- declare function getDateRange(startDate: string, endDate: string, language: LocaleLanguageOption | string): string;
1477
+ declare function getDateRange(startDate: string, endDate: string, language: LocaleLanguageOption): string;
1850
1478
  /**
1851
1479
  * The number of seconds in one day
1852
1480
  */
@@ -1943,6 +1571,33 @@ declare function isEmptyValue(value: undefined | null | object | string): boolea
1943
1571
  * @returns The object with the specified keys removed
1944
1572
  */
1945
1573
  declare function removeKeysFromObject<T extends object>(obj: T, keysToRemove: (string | number | symbol)[]): T;
1574
+ /**
1575
+ * Tree walker function to collect all possible keys from an object recursively
1576
+ *
1577
+ * This function traverses an object tree and collects all property keys at any
1578
+ * depth. It handles arrays, nested objects, and prevents infinite loops from
1579
+ * circular references.
1580
+ *
1581
+ * @param obj - The object to walk through
1582
+ * @param keys - Set to collect all keys (optional, used for recursion)
1583
+ * @param visited - Set to track visited objects to prevent circular references
1584
+ * (optional, used for recursion)
1585
+ * @returns Set containing all keys found in the object tree
1586
+ *
1587
+ * @example
1588
+ * ```typescript
1589
+ * const obj = {
1590
+ * a: 1,
1591
+ * b: {
1592
+ * c: 2,
1593
+ * d: [{ e: 3 }]
1594
+ * }
1595
+ * }
1596
+ * const keys = collectAllKeys(obj)
1597
+ * // keys will contain: Set(['a', 'b', 'c', 'd', 'e'])
1598
+ * ```
1599
+ */
1600
+ declare function collectAllKeys(obj: unknown, keys?: Set<string | number | symbol>, visited?: WeakSet<object>): Set<string | number | symbol>;
1946
1601
 
1947
1602
  /**
1948
1603
  * MIT License
@@ -1999,4 +1654,4 @@ declare function joinNonEmptyString(codes: string[], separator?: string): string
1999
1654
  */
2000
1655
  declare function toCodeBlock(code?: string, lang?: string): string;
2001
1656
 
2002
- export { type Awards, type Basics, type BulletListNode, type Certificates, Country, Degree, type DocNode, type Education, ErrorType, FontSpecNumbersStyle, type Interests, Language, LanguageFluency, type LanguageItem, type Languages, LatexCodeGenerator, LocaleLanguageOption, type Location, MarkdownParser, type Node, type OrderedListNode, type ParagraphNode, type Parser, type ProfileItem, type Profiles, type Projects, type Publications, Punctuation, type References, type Resume, type ResumeContent, type ResumeItem, type ResumeLayout, ResumeTerms, SECTION_IDS, type SectionDefaultValues, type SectionID, SkillLevel, type Skills, type SocialNetwork, type SocialNetworkGroup, TemplateOption, TemplateTerms, type TextNode, TiptapParser, type Volunteer, type Work, YAMLResumeError, defaultResume, defaultResumeContent, defaultResumeLayout, degreeOptions, emptyParagraph, englishCountryNames, epochSecondsToLocaleDateString, escapeLatex, filledResume, filledResumeContent, fontSizeOptions, getDateRange, getLocaleLanguageOptionDetail, getResumeRenderer, getTemplateOptionDetail, getTemplateTranslations, getTermsTranslations, isEmptyString, isEmptyValue, joinNonEmptyString, languageFluenciesOptions, languagesOptions, localizeDate, marginOptions, milliSecondsToSeconds, nowInUTCSeconds, oneDay, parseDate, removeKeysFromObject, resumeItems, showIf, simplifiedChineseCountryNames, skillLevelOptions, spanishCountryNames, toCodeBlock, traditionalChineseCountryHKNames, traditionalChineseCountryTWNames, transformResume };
1657
+ export { type Awards, type Basics, type BulletListNode, type Certificates, type Country, DEGREE_OPTIONS, type Degree, type DocNode, type Education, EnglishCountryNames, ErrorType, FONT_SPEC_NUMBERS_STYLE_OPTIONS, type FontSpecNumbersStyle, type Interests, LANGUAGE_FLUENCIE_OPTIONS, LANGUAGE_OPTIONS, LOCALE_LANGUAGE_OPTIONS, type Language, type LanguageFluency, type LanguageItem, type Languages, LatexCodeGenerator, type LocaleLanguageOption, type Location, MarkdownParser, type Node, type OrderedListNode, PUNCTUATIONS, type ParagraphNode, type Parser, type ProfileItem, type Profiles, type Projects, type Publications, type Punctuation, type References, type Resume, type ResumeContent, type ResumeItem, type ResumeLayout, SECTION_IDS, SKILL_LEVEL_OPTIONS, type SectionDefaultValues, type SectionID, SimplifiedChineseCountryNames, type SkillLevel, type Skills, type SocialNetwork, type SocialNetworkGroup, SpanishCountryNames, TEMPLATE_OPTIONS, TERMS, type TemplateOption, type Term, type TextNode, TraditionalChineseCountryHKNames, TraditionalChineseCountryTWNames, type Volunteer, type Work, YAMLResumeError, collectAllKeys, defaultResume, defaultResumeContent, defaultResumeLayout, epochSecondsToLocaleDateString, escapeLatex, filledResume, filledResumeContent, fontSizeOptions, getDateRange, getLocaleLanguageOptionDetail, getOptionTranslation, getResumeRenderer, getTemplateOptionDetail, getTemplateTranslations, isEmptyString, isEmptyValue, joinNonEmptyString, localizeDate, marginOptions, milliSecondsToSeconds, nowInUTCSeconds, oneDay, parseDate, removeKeysFromObject, resumeItems, showIf, toCodeBlock, transformResume };