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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "resuml",
3
- "version": "1.4.4",
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",
@@ -83,9 +83,10 @@ async function discoverThemes() {
83
83
 
84
84
  async function bundleTheme(shortName, packageName) {
85
85
  const entryContent = `
86
- import theme from '${packageName}';
87
- export const render = theme.render || theme.default?.render;
88
- export const pdfRenderOptions = theme.pdfRenderOptions || theme.default?.pdfRenderOptions;
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
  });