@dytsou/resume-converter 2.0.4 → 2.1.1

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.
@@ -0,0 +1,14 @@
1
+ ## Type of changes
2
+
3
+ - Feature/Fix/Docs/Refactor/CI/Test/Chore
4
+
5
+ ## Purpose
6
+
7
+ - Add XXX
8
+ - Resolve issue #XXX
9
+
10
+ <!-- Provide a brief description of the changes made in this pull request. -->
11
+
12
+ ## Additional Information
13
+
14
+ <!-- Optional: Add any other information that would be helpful for the reviewer. Like detail spec, decisions, trade-offs, links, etc. -->
@@ -0,0 +1,57 @@
1
+ name: Update Year in LICENSE and Footer
2
+
3
+ on:
4
+ schedule:
5
+ # Run on January 1st at 00:00 UTC each year
6
+ - cron: "0 0 1 1 *"
7
+ workflow_dispatch: # Allow manual trigger
8
+ push:
9
+ branches: [main]
10
+ paths:
11
+ - "LICENSE"
12
+ - "scripts/html-template.mjs"
13
+
14
+ permissions:
15
+ contents: write
16
+
17
+ jobs:
18
+ update-year:
19
+ name: Update Year
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - name: Checkout repository
23
+ uses: actions/checkout@v6
24
+ with:
25
+ fetch-depth: 0
26
+
27
+ - name: Get current year
28
+ id: get_year
29
+ run: echo "year=$(date +%Y)" >> $GITHUB_OUTPUT
30
+
31
+ - name: Update LICENSE year
32
+ run: |
33
+ CURRENT_YEAR="${{ steps.get_year.outputs.year }}"
34
+ # Update the year in LICENSE file (format: Copyright (c) YYYY)
35
+ # Use sed to replace the 4-digit year while preserving the rest of the line
36
+ sed -i "s/Copyright (c) [0-9]\{4\}/Copyright (c) ${CURRENT_YEAR}/" LICENSE
37
+ echo "Updated LICENSE year to ${CURRENT_YEAR}"
38
+
39
+ - name: Check for changes
40
+ id: git_check
41
+ run: |
42
+ if git diff --quiet LICENSE; then
43
+ echo "changed=false" >> $GITHUB_OUTPUT
44
+ else
45
+ echo "changed=true" >> $GITHUB_OUTPUT
46
+ echo "Changes detected in LICENSE"
47
+ git diff LICENSE
48
+ fi
49
+
50
+ - name: Commit and push changes
51
+ if: steps.git_check.outputs.changed == 'true'
52
+ run: |
53
+ git config --local user.email "action@github.com"
54
+ git config --local user.name "GitHub Action"
55
+ git add LICENSE
56
+ git commit -m "chore: update copyright year to ${{ steps.get_year.outputs.year }}"
57
+ git push
@@ -0,0 +1,3 @@
1
+ pnpm run lint
2
+ pnpm run format:check
3
+ pnpm run typecheck
@@ -0,0 +1,18 @@
1
+ # Dependencies
2
+ node_modules
3
+ pnpm-lock.yaml
4
+
5
+ # Build outputs
6
+ dist
7
+ build
8
+
9
+ # Generated files
10
+ *.min.js
11
+ *.min.css
12
+
13
+ # Logs
14
+ *.log
15
+
16
+ # OS files
17
+ .DS_Store
18
+ Thumbs.db
package/.prettierrc ADDED
@@ -0,0 +1,10 @@
1
+ {
2
+ "semi": true,
3
+ "trailingComma": "es5",
4
+ "singleQuote": true,
5
+ "printWidth": 80,
6
+ "tabWidth": 2,
7
+ "useTabs": false,
8
+ "arrowParens": "always",
9
+ "endOfLine": "lf"
10
+ }
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Tsou, Dong-You
3
+ Copyright (c) 2026 Tsou, Dong-You
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -39,6 +39,7 @@ resume/
39
39
  Place your `.tex` files in the `latex/` directory. The converter will automatically process all files with a `.tex` extension.
40
40
 
41
41
  Example structure:
42
+
42
43
  ```
43
44
  latex/
44
45
  ├── my-research-paper.tex
@@ -80,6 +81,7 @@ git push origin main
80
81
  ```
81
82
 
82
83
  The GitHub Actions workflow will:
84
+
83
85
  1. Install dependencies
84
86
  2. Convert all LaTeX files
85
87
  3. Validate conversion success
@@ -137,6 +139,7 @@ Modify the CSS in `scripts/convert-latex.mjs` to customize the HTML output appea
137
139
  ### Document Metadata
138
140
 
139
141
  The converter extracts metadata from LaTeX commands:
142
+
140
143
  - `\title{...}` - Document title
141
144
  - `\author{...}` - Author names
142
145
  - `\date{...}` - Publication date
@@ -144,6 +147,7 @@ The converter extracts metadata from LaTeX commands:
144
147
  ## Deployment
145
148
 
146
149
  Your site will be available at:
150
+
147
151
  ```
148
152
  https://<username>.github.io/<repository-name>/
149
153
  ```
@@ -153,6 +157,7 @@ https://<username>.github.io/<repository-name>/
153
157
  ### Conversion Fails
154
158
 
155
159
  Check the GitHub Actions logs to see which LaTeX file failed and why. Common issues:
160
+
156
161
  - Unsupported LaTeX packages
157
162
  - Syntax errors in LaTeX source
158
163
  - Missing closing braces
@@ -164,6 +169,7 @@ If deployment is blocked, the CI/CD pipeline detected conversion failures. Fix t
164
169
  ### Local Testing
165
170
 
166
171
  Run the conversion locally to debug issues:
172
+
167
173
  ```bash
168
174
  pnpm run convert
169
175
  ```
@@ -183,4 +189,4 @@ Check the generated files in `public/converted-docs/` and review `public/documen
183
189
 
184
190
  ## License
185
191
 
186
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
192
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
package/eslint.config.js CHANGED
@@ -3,6 +3,7 @@ import globals from 'globals';
3
3
  import reactHooks from 'eslint-plugin-react-hooks';
4
4
  import reactRefresh from 'eslint-plugin-react-refresh';
5
5
  import tseslint from 'typescript-eslint';
6
+ import prettier from 'eslint-config-prettier';
6
7
 
7
8
  export default tseslint.config(
8
9
  { ignores: ['dist'] },
@@ -24,5 +25,6 @@ export default tseslint.config(
24
25
  { allowConstantExport: true },
25
26
  ],
26
27
  },
27
- }
28
+ },
29
+ prettier
28
30
  );
package/latex/resume.tex CHANGED
@@ -197,9 +197,9 @@
197
197
 
198
198
  \section{Technical Skills}
199
199
  \resumeHeadingListStart{}
200
- \resumeSectionType{Languages}{}{ Python, C++, Go, HTML, CSS, JavaScript, Dart, PHP, Verilog, LabVIEW}
201
- \resumeSectionType{Frameworks \& Libraries}{}{React.js, Node.js, Flutter, Flask, FastAPI, OpenGL}
202
- \resumeSectionType{Tools \& Technologies}{}{Git, PostgreSQL, Arduino, Docker, Linux, API Development, RESTful Services}
200
+ \resumeSectionType{Languages}{}{ Python, C++, Go, JavaScript, TypeScript, Dart, HTML, CSS, Verilog, LabVIEW}
201
+ \resumeSectionType{Frameworks \& Libraries}{}{React.js (Vite), Node.js, React Native (Expo), Tailwind CSS, Flutter, Flask, FastAPI, OpenGL}
202
+ \resumeSectionType{Tools \& Technologies}{}{Git, PostgreSQL, Docker, Linux, Postman, Playwright, Vitest, Grafana}
203
203
  \resumeSectionType{Specialized Skills}{}{Web Development: Full-stack development with React frontend and backend APIs}
204
204
  \resumeSectionType{}{}{Game Development: OpenGL-based 3D graphics and LabVIEW multiplayer systems}
205
205
  % \resumeSectionType{}{}{Bot Development: LINE bot applications with Python}
package/package.json CHANGED
@@ -1,30 +1,34 @@
1
1
  {
2
2
  "name": "@dytsou/resume-converter",
3
- "version": "2.0.4",
3
+ "version": "2.1.1",
4
4
  "type": "module",
5
5
  "dependencies": {
6
6
  "@unified-latex/unified-latex-to-hast": "^1.8.3",
7
7
  "@unified-latex/unified-latex-util-parse": "^1.8.3",
8
8
  "hast-util-to-html": "^9.0.5",
9
9
  "mathjax-full": "^3.2.2",
10
- "react": "^19.2.0",
11
- "react-dom": "^19.2.0",
10
+ "react": "^19.2.3",
11
+ "react-dom": "^19.2.3",
12
12
  "rehype-stringify": "^10.0.1",
13
13
  "unified": "^11.0.5"
14
14
  },
15
15
  "devDependencies": {
16
- "@eslint/js": "^9.39.1",
16
+ "@eslint/js": "^9.39.2",
17
17
  "@types/react": "^19.2.7",
18
18
  "@types/react-dom": "^19.2.3",
19
- "@vitejs/plugin-react": "^5.1.1",
20
- "eslint": "^9.39.1",
19
+ "@vitejs/plugin-react": "^5.1.2",
20
+ "eslint": "^9.39.2",
21
+ "eslint-config-prettier": "^10.1.8",
21
22
  "eslint-plugin-react-hooks": "^7.0.1",
22
- "eslint-plugin-react-refresh": "^0.4.11",
23
- "globals": "^16.5.0",
23
+ "eslint-plugin-react-refresh": "^0.4.26",
24
+ "globals": "^17.0.0",
25
+ "husky": "^9.1.7",
26
+ "prettier": "^3.7.4",
24
27
  "typescript": "^5.5.3",
25
- "typescript-eslint": "^8.48.0",
26
- "vite": "^7.2.4"
28
+ "typescript-eslint": "^8.52.0",
29
+ "vite": "^7.3.1"
27
30
  },
31
+ "license": "MIT",
28
32
  "publishConfig": {
29
33
  "access": "public"
30
34
  },
@@ -33,6 +37,8 @@
33
37
  "build": "pnpm run convert && vite build",
34
38
  "convert": "node scripts/convert-latex.mjs",
35
39
  "lint": "eslint .",
40
+ "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,css,md}\"",
41
+ "format:check": "prettier --check \"**/*.{ts,tsx,js,jsx,json,css,md}\"",
36
42
  "preview": "vite preview",
37
43
  "typecheck": "tsc --noEmit -p tsconfig.app.json",
38
44
  "release": "pnpm run convert && pnpm run build && pnpm run publish",
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Configuration constants for LaTeX to HTML conversion
3
+ */
4
+
5
+ export const CONFIG = {
6
+ latexDir: './latex',
7
+ outputDir: './public/converted-docs',
8
+ manifestFile: './public/documents-manifest.json',
9
+ };
10
+
11
+ export const ICON_MAP = {
12
+ faLinkedin: 'fab fa-linkedin',
13
+ faGithub: 'fab fa-github',
14
+ faEnvelope: 'fas fa-envelope',
15
+ faMobile: 'fas fa-mobile',
16
+ };
17
+
18
+ export const LIST_MARKERS = {
19
+ start: '<span class="macro macro-resumeItemListStart"></span>',
20
+ end: '<span class="macro macro-resumeItemListEnd"></span>',
21
+ item: '<span class="macro macro-resumeItem"></span>',
22
+ };