@dytsou/resume-converter 2.0.3 → 2.1.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/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/.husky/pre-commit +3 -0
- package/.prettierignore +18 -0
- package/.prettierrc +10 -0
- package/README.md +7 -1
- package/eslint.config.js +3 -1
- package/latex/resume.tex +3 -3
- package/package.json +18 -11
- package/scripts/config.mjs +22 -0
- package/scripts/convert-latex.mjs +32 -713
- package/scripts/converter.mjs +76 -0
- package/scripts/html-helpers.mjs +64 -0
- package/scripts/html-template.mjs +166 -0
- package/scripts/html-transformers.mjs +366 -0
- package/scripts/latex-parser.mjs +74 -0
- package/scripts/utils.mjs +29 -0
- package/src/App.tsx +3 -1
- package/src/components/DownloadFromDriveButton.tsx +6 -4
- package/src/index.css +9 -3
- package/src/utils/googleDriveUtils.ts +1 -1
- package/src/utils/resumeUtils.ts +1 -1
- package/vite.config.ts +1 -2
|
@@ -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. -->
|
package/.prettierignore
ADDED
package/.prettierrc
ADDED
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,
|
|
201
|
-
\resumeSectionType{Frameworks \& Libraries}{}{React.js, Node.js, Flutter,
|
|
202
|
-
\resumeSectionType{Tools \& Technologies}{}{Git, PostgreSQL,
|
|
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
|
|
3
|
+
"version": "2.1.0",
|
|
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.
|
|
11
|
-
"react-dom": "^19.2.
|
|
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.
|
|
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.
|
|
20
|
-
"eslint": "^9.39.
|
|
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.
|
|
23
|
-
"globals": "^
|
|
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.
|
|
26
|
-
"vite": "^7.
|
|
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,8 +37,11 @@
|
|
|
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
|
-
"release": "pnpm run convert && pnpm run build && pnpm run publish"
|
|
44
|
+
"release": "pnpm run convert && pnpm run build && pnpm run publish",
|
|
45
|
+
"publish:npmjs": "pnpm publish --access public --registry https://registry.npmjs.org"
|
|
39
46
|
}
|
|
40
47
|
}
|
|
@@ -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
|
+
};
|