Skip to content

Commit d486642

Browse files
committed
Require Base URL & handle parser errors
1 parent 716d1c1 commit d486642

File tree

4 files changed

+91
-59
lines changed

4 files changed

+91
-59
lines changed

index.js

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,29 @@ const app = express();
66
const port = process.env.PORT || 9000;
77

88
function getDependencyVersion(dependencyName) {
9-
const fs = require('fs');
10-
const lockfile = require('@yarnpkg/lockfile');
9+
const fs = require("fs");
10+
const lockfile = require("@yarnpkg/lockfile");
1111
const parsed = lockfile.parse(fs.readFileSync("./yarn.lock", "utf-8"));
1212
if (parsed.type !== "success") return "unknown";
13-
const dependency = parsed.object[`${dependencyName}@${pkg.dependencies[dependencyName]}`];
13+
const dependency =
14+
parsed.object[`${dependencyName}@${pkg.dependencies[dependencyName]}`];
1415
if (dependency === undefined) return "unknown";
1516
return dependency.version;
1617
}
1718
const mf2version = getDependencyVersion("microformats-parser");
1819

1920
function htmlToMf2(url, html, res) {
20-
const body = mf2(html, { baseUrl: url });
21-
res
22-
.header("content-type", "application/json; charset=UTF-8")
23-
.send(JSON.stringify(body, null, 2));
21+
try {
22+
const body = mf2(html, { baseUrl: url });
23+
res
24+
.header("content-type", "application/json; charset=UTF-8")
25+
.send(JSON.stringify(body, null, 2));
26+
} catch (err) {
27+
res
28+
.header("content-type", "application/json; charset=UTF-8")
29+
.status(500)
30+
.send(JSON.stringify({ error: err.message }, null, 2));
31+
}
2432
}
2533

2634
app.set("view engine", "ejs");

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"description": "A website written using Node to demonstrate Microformats2 usage",
44
"version": "1.1.0",
55
"engines": {
6-
"node": "17.x",
6+
"node": "18.x",
77
"yarn": "1.x"
88
},
99
"scripts": {
@@ -13,7 +13,7 @@
1313
"@yarnpkg/lockfile": "^1.1.0",
1414
"ejs": "^3.1.8",
1515
"express": "^4.18.1",
16-
"microformats-parser": "^1.4.1",
16+
"microformats-parser": "^1.5.2",
1717
"undici": "^5.6.1"
1818
}
1919
}

views/index.html.ejs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,7 @@
5353

5454
<body>
5555
<main id="mf2" class="container">
56-
<h1 class="mt-5 mb-3">
57-
Microformats Parser (Node) <%- version -%>
58-
</h1>
56+
<h1 class="mt-5 mb-3">Microformats Parser (Node) <%- version -%></h1>
5957

6058
<form action="/" accept-charset="UTF-8" method="get">
6159
<div class="form-group">
@@ -92,20 +90,26 @@
9290
name="url"
9391
type="url"
9492
class="form-control form-control-lg"
93+
required
9594
/>
9695
</div>
9796

9897
<button type="submit" class="btn btn-lg btn-success">Parse</button>
9998
</form>
10099

101-
<hr>
100+
<hr />
102101

103102
<p>
104-
Drag this link to your bookmarks toolbar to parse a page with one click!<br>
103+
Drag this link to your bookmarks toolbar to parse a page with one
104+
click!<br />
105105
</p>
106-
<a class="btn btn-primary btn-sm" href="javascript:(function(){document.location.href='https://node.microformats.io/?url='+encodeURIComponent(document.location.href);}())">mf2 parser</a>
107-
108-
<hr>
106+
<a
107+
class="btn btn-primary btn-sm"
108+
href="javascript:(function(){document.location.href='https://node.microformats.io/?url='+encodeURIComponent(document.location.href);}())"
109+
>mf2 parser</a
110+
>
111+
112+
<hr />
109113

110114
<footer class="my-5">
111115
<ul>

yarn.lock

Lines changed: 62 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,10 @@ balanced-match@^1.0.0:
3737
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
3838
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
3939

40-
body-parser@1.20.0:
41-
version "1.20.0"
42-
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
43-
integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
40+
body-parser@1.20.1:
41+
version "1.20.1"
42+
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
43+
integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
4444
dependencies:
4545
bytes "3.1.2"
4646
content-type "~1.0.4"
@@ -50,7 +50,7 @@ body-parser@1.20.0:
5050
http-errors "2.0.0"
5151
iconv-lite "0.4.24"
5252
on-finished "2.4.1"
53-
qs "6.10.3"
53+
qs "6.11.0"
5454
raw-body "2.5.1"
5555
type-is "~1.6.18"
5656
unpipe "1.0.0"
@@ -70,6 +70,13 @@ brace-expansion@^2.0.1:
7070
dependencies:
7171
balanced-match "^1.0.0"
7272

73+
busboy@^1.6.0:
74+
version "1.6.0"
75+
resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893"
76+
integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==
77+
dependencies:
78+
streamsearch "^1.1.0"
79+
7380
bytes@3.1.2:
7481
version "3.1.2"
7582
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
@@ -116,9 +123,9 @@ content-disposition@0.5.4:
116123
safe-buffer "5.2.1"
117124

118125
content-type@~1.0.4:
119-
version "1.0.4"
120-
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
121-
integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
126+
version "1.0.5"
127+
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
128+
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
122129

123130
cookie-signature@1.0.6:
124131
version "1.0.6"
@@ -153,9 +160,9 @@ ee-first@1.1.1:
153160
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
154161

155162
ejs@^3.1.8:
156-
version "3.1.8"
157-
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b"
158-
integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==
163+
version "3.1.9"
164+
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361"
165+
integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
159166
dependencies:
160167
jake "^10.8.5"
161168

@@ -175,13 +182,13 @@ etag@~1.8.1:
175182
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
176183

177184
express@^4.18.1:
178-
version "4.18.1"
179-
resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
180-
integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
185+
version "4.18.2"
186+
resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
187+
integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
181188
dependencies:
182189
accepts "~1.3.8"
183190
array-flatten "1.1.1"
184-
body-parser "1.20.0"
191+
body-parser "1.20.1"
185192
content-disposition "0.5.4"
186193
content-type "~1.0.4"
187194
cookie "0.5.0"
@@ -200,7 +207,7 @@ express@^4.18.1:
200207
parseurl "~1.3.3"
201208
path-to-regexp "0.1.7"
202209
proxy-addr "~2.0.7"
203-
qs "6.10.3"
210+
qs "6.11.0"
204211
range-parser "~1.2.1"
205212
safe-buffer "5.2.1"
206213
send "0.18.0"
@@ -211,7 +218,7 @@ express@^4.18.1:
211218
utils-merge "1.0.1"
212219
vary "~1.1.2"
213220

214-
filelist@^1.0.1:
221+
filelist@^1.0.4:
215222
version "1.0.4"
216223
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
217224
integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
@@ -247,19 +254,25 @@ function-bind@^1.1.1:
247254
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
248255

249256
get-intrinsic@^1.0.2:
250-
version "1.1.2"
251-
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598"
252-
integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==
257+
version "1.2.1"
258+
resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
259+
integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
253260
dependencies:
254261
function-bind "^1.1.1"
255262
has "^1.0.3"
263+
has-proto "^1.0.1"
256264
has-symbols "^1.0.3"
257265

258266
has-flag@^4.0.0:
259267
version "4.0.0"
260268
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
261269
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
262270

271+
has-proto@^1.0.1:
272+
version "1.0.1"
273+
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
274+
integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
275+
263276
has-symbols@^1.0.3:
264277
version "1.0.3"
265278
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
@@ -301,14 +314,14 @@ ipaddr.js@1.9.1:
301314
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
302315

303316
jake@^10.8.5:
304-
version "10.8.5"
305-
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
306-
integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==
317+
version "10.8.7"
318+
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.7.tgz#63a32821177940c33f356e0ba44ff9d34e1c7d8f"
319+
integrity sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==
307320
dependencies:
308321
async "^3.2.3"
309322
chalk "^4.0.2"
310-
filelist "^1.0.1"
311-
minimatch "^3.0.4"
323+
filelist "^1.0.4"
324+
minimatch "^3.1.2"
312325

313326
media-typer@0.3.0:
314327
version "0.3.0"
@@ -326,9 +339,9 @@ methods@~1.1.2:
326339
integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
327340

328341
microformats-parser@^1.4.1:
329-
version "1.4.1"
330-
resolved "https://registry.yarnpkg.com/microformats-parser/-/microformats-parser-1.4.1.tgz#bba1cfe761f29112d4bcde4b4347d80c1c92ab59"
331-
integrity sha512-BSg9Y/Aik8hvvme/fkxnXMRvTKuVwOeTapeZdaPQ+92DEubyM31iMtwbgFZ1383om643UvfYY5G23E9s1FY2KQ==
342+
version "1.5.2"
343+
resolved "https://registry.yarnpkg.com/microformats-parser/-/microformats-parser-1.5.2.tgz#61464b11761915daf9b4078f573d5888b11bbaf8"
344+
integrity sha512-EcHm8zxEm3CggOLgILfxCo2wDiJEOnACzpV/FXWGLaRk24ECei+JkoWNdKdo2vzo/Pww9EvrQNeQsdv4JuHy7Q==
332345
dependencies:
333346
parse5 "^6.0.0"
334347

@@ -349,17 +362,17 @@ mime@1.6.0:
349362
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
350363
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
351364

352-
minimatch@^3.0.4:
365+
minimatch@^3.1.2:
353366
version "3.1.2"
354367
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
355368
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
356369
dependencies:
357370
brace-expansion "^1.1.7"
358371

359372
minimatch@^5.0.1:
360-
version "5.1.0"
361-
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
362-
integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
373+
version "5.1.6"
374+
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
375+
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
363376
dependencies:
364377
brace-expansion "^2.0.1"
365378

@@ -379,9 +392,9 @@ negotiator@0.6.3:
379392
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
380393

381394
object-inspect@^1.9.0:
382-
version "1.12.2"
383-
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
384-
integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
395+
version "1.12.3"
396+
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
397+
integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
385398

386399
on-finished@2.4.1:
387400
version "2.4.1"
@@ -413,10 +426,10 @@ proxy-addr@~2.0.7:
413426
forwarded "0.2.0"
414427
ipaddr.js "1.9.1"
415428

416-
qs@6.10.3:
417-
version "6.10.3"
418-
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
419-
integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
429+
qs@6.11.0:
430+
version "6.11.0"
431+
resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
432+
integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
420433
dependencies:
421434
side-channel "^1.0.4"
422435

@@ -493,6 +506,11 @@ statuses@2.0.1:
493506
resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
494507
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
495508

509+
streamsearch@^1.1.0:
510+
version "1.1.0"
511+
resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764"
512+
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
513+
496514
supports-color@^7.1.0:
497515
version "7.2.0"
498516
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
@@ -514,9 +532,11 @@ type-is@~1.6.18:
514532
mime-types "~2.1.24"
515533

516534
undici@^5.6.1:
517-
version "5.6.1"
518-
resolved "https://registry.yarnpkg.com/undici/-/undici-5.6.1.tgz#7e5c56d15032d06738358dea433f98130e2a0561"
519-
integrity sha512-yYVqywdCbNb99f/w045wqmv++WExXDjY0FEvLSB7QUZZH6izxrVkF4dJn1aimcvN0+WAhv75Gg7v6VJoqmRtJQ==
535+
version "5.24.0"
536+
resolved "https://registry.yarnpkg.com/undici/-/undici-5.24.0.tgz#6133630372894cfeb3c3dab13b4c23866bd344b5"
537+
integrity sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ==
538+
dependencies:
539+
busboy "^1.6.0"
520540

521541
unpipe@1.0.0, unpipe@~1.0.0:
522542
version "1.0.0"

0 commit comments

Comments
 (0)