resuml 1.4.4 → 1.5.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/package.json +9 -2
- package/scripts/bundle-themes.js +40 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "resuml",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Generate JSON resumes from YAML with theme support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/api.js",
|
|
@@ -23,9 +23,10 @@
|
|
|
23
23
|
],
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "tsup && npm run build:builder",
|
|
26
|
+
"build:lib": "tsup",
|
|
26
27
|
"build:builder": "node scripts/build-builder.js",
|
|
27
28
|
"dev:builder": "node scripts/dev-server.js",
|
|
28
|
-
"prepublishOnly": "npm run generate:types && npm run build",
|
|
29
|
+
"prepublishOnly": "npm run generate:types && npm run build:lib",
|
|
29
30
|
"generate:types": "node scripts/generate-types.cjs",
|
|
30
31
|
"test": "vitest run",
|
|
31
32
|
"test:watch": "vitest",
|
|
@@ -43,6 +44,12 @@
|
|
|
43
44
|
"chalk": "^5.3.0",
|
|
44
45
|
"commander": "^11.1.0",
|
|
45
46
|
"js-yaml": "^4.1.0",
|
|
47
|
+
"jsonresume-theme-actual": "^0.2.2",
|
|
48
|
+
"jsonresume-theme-elegant": "^1.16.1",
|
|
49
|
+
"jsonresume-theme-even": "^0.26.1",
|
|
50
|
+
"jsonresume-theme-kendall": "^0.2.0",
|
|
51
|
+
"jsonresume-theme-paper": "^0.5.0",
|
|
52
|
+
"jsonresume-theme-react": "^1.0.4",
|
|
46
53
|
"jsonresume-theme-stackoverflow": "^2.1.0",
|
|
47
54
|
"lodash.merge": "^4.6.2",
|
|
48
55
|
"lucide-react": "^1.7.0",
|
package/scripts/bundle-themes.js
CHANGED
|
@@ -83,9 +83,10 @@ async function discoverThemes() {
|
|
|
83
83
|
|
|
84
84
|
async function bundleTheme(shortName, packageName) {
|
|
85
85
|
const entryContent = `
|
|
86
|
-
import
|
|
87
|
-
|
|
88
|
-
export const
|
|
86
|
+
import * as themeNs from '${packageName}';
|
|
87
|
+
const _t = themeNs.default ?? themeNs;
|
|
88
|
+
export const render = _t.render ?? themeNs.render;
|
|
89
|
+
export const pdfRenderOptions = _t.pdfRenderOptions ?? themeNs.pdfRenderOptions;
|
|
89
90
|
`;
|
|
90
91
|
|
|
91
92
|
const entryFile = resolve(THEMES_DIR, `_entry_${shortName}.js`);
|
|
@@ -103,11 +104,20 @@ async function bundleTheme(shortName, packageName) {
|
|
|
103
104
|
define: {
|
|
104
105
|
'process.env.NODE_ENV': '"production"',
|
|
105
106
|
'global': 'globalThis',
|
|
107
|
+
'__dirname': '"/"',
|
|
108
|
+
'__filename': '"/index.js"',
|
|
109
|
+
'process.browser': 'true',
|
|
110
|
+
'process.platform': '"browser"',
|
|
111
|
+
'process.version': '"v18.0.0"',
|
|
106
112
|
},
|
|
107
113
|
// Polyfill Node.js built-ins as no-ops for browser
|
|
108
114
|
alias: {
|
|
109
115
|
'path': resolve(__dirname, 'shims/path.js'),
|
|
110
116
|
'fs': resolve(__dirname, 'shims/fs.js'),
|
|
117
|
+
'url': resolve(__dirname, 'shims/url.js'),
|
|
118
|
+
'node:url': resolve(__dirname, 'shims/url.js'),
|
|
119
|
+
'node:crypto': resolve(__dirname, 'shims/crypto.js'),
|
|
120
|
+
'assert': resolve(__dirname, 'shims/assert.js'),
|
|
111
121
|
},
|
|
112
122
|
logLevel: 'silent',
|
|
113
123
|
});
|
|
@@ -145,6 +155,31 @@ async function main() {
|
|
|
145
155
|
export const existsSync = () => false;
|
|
146
156
|
export default { readFileSync, existsSync };
|
|
147
157
|
`);
|
|
158
|
+
writeFileSync(resolve(shimsDir, 'url.js'), `
|
|
159
|
+
export const URL = globalThis.URL;
|
|
160
|
+
export const URLSearchParams = globalThis.URLSearchParams;
|
|
161
|
+
export const fileURLToPath = (u) => u.replace(/^file:\\/\\//, '');
|
|
162
|
+
export const pathToFileURL = (p) => new globalThis.URL('file://' + p);
|
|
163
|
+
export const format = (u) => (typeof u === 'string' ? u : u.href);
|
|
164
|
+
export const parse = (u) => new globalThis.URL(u);
|
|
165
|
+
export default { URL, URLSearchParams, fileURLToPath, pathToFileURL, format, parse };
|
|
166
|
+
`);
|
|
167
|
+
writeFileSync(resolve(shimsDir, 'crypto.js'), `
|
|
168
|
+
export const createHash = () => ({ update: function() { return this; }, digest: () => '' });
|
|
169
|
+
export const randomBytes = (n) => new Uint8Array(n);
|
|
170
|
+
export const createHmac = () => ({ update: function() { return this; }, digest: () => '' });
|
|
171
|
+
export default { createHash, randomBytes, createHmac };
|
|
172
|
+
`);
|
|
173
|
+
writeFileSync(resolve(shimsDir, 'assert.js'), `
|
|
174
|
+
const assert = (v, msg) => { if (!v) throw new Error(msg || 'Assertion failed'); };
|
|
175
|
+
assert.ok = assert;
|
|
176
|
+
assert.strictEqual = (a, b) => { if (a !== b) throw new Error('Not equal'); };
|
|
177
|
+
assert.deepStrictEqual = () => {};
|
|
178
|
+
assert.fail = (msg) => { throw new Error(msg); };
|
|
179
|
+
export default assert;
|
|
180
|
+
export const ok = assert;
|
|
181
|
+
export const strictEqual = assert.strictEqual;
|
|
182
|
+
`);
|
|
148
183
|
|
|
149
184
|
let themes;
|
|
150
185
|
if (specificThemes) {
|
|
@@ -203,6 +238,7 @@ async function main() {
|
|
|
203
238
|
name: theme.name,
|
|
204
239
|
displayName: theme.name.charAt(0).toUpperCase() + theme.name.slice(1).replace(/-/g, ' '),
|
|
205
240
|
description: theme.description,
|
|
241
|
+
version: theme.version || '',
|
|
206
242
|
browserCompatible: true,
|
|
207
243
|
fileSize: stat,
|
|
208
244
|
});
|
|
@@ -212,6 +248,7 @@ async function main() {
|
|
|
212
248
|
name: theme.name,
|
|
213
249
|
displayName: theme.name.charAt(0).toUpperCase() + theme.name.slice(1).replace(/-/g, ' '),
|
|
214
250
|
description: theme.description,
|
|
251
|
+
version: theme.version || '',
|
|
215
252
|
browserCompatible: false,
|
|
216
253
|
fileSize: 0,
|
|
217
254
|
});
|