hiroppy 1.0.21 → 1.0.23
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/README.md +4 -9
- package/generated/articles.json +3 -6
- package/generated/images.tar.gz +0 -0
- package/generated/jobs.json +19 -19
- package/generated/meta.json +59 -10
- package/generated/podcasts.json +14 -2
- package/generated/talks.json +19 -3
- package/lib/hatena.mjs +19 -0
- package/lib/index.mjs +1 -0
- package/package.json +6 -4
package/README.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<samp>
|
|
3
3
|
<a href="https://hiroppy.me/">me</a> |
|
|
4
|
-
<a href="https://hiroppy.me/blog">blog</a> |
|
|
5
|
-
<a href="https://
|
|
4
|
+
<a href="https://hiroppy.me/blog/">blog</a> |
|
|
5
|
+
<a href="https://x.com/about_hiroppy/">tweets</a>
|
|
6
6
|
</samp>
|
|
7
7
|
</p>
|
|
8
8
|
|
|
@@ -16,7 +16,7 @@ I am a JS engineer living in Japan, and I love creating OSS and web services.
|
|
|
16
16
|
## Active Repositories
|
|
17
17
|
|
|
18
18
|
- [web-app-template](https://github.com/hiroppy/web-app-template)
|
|
19
|
-
- A minimal web service template 🎃
|
|
19
|
+
- A minimal web service template 🎃 "npx create-app-foundation@latest" !
|
|
20
20
|
- [nextjs-app-router-training](https://github.com/hiroppy/nextjs-app-router-training)
|
|
21
21
|
- Introducing various basic patterns of app router with simplified code.
|
|
22
22
|
|
|
@@ -141,11 +141,6 @@ $ npm i hiroppy
|
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
```ts
|
|
144
|
-
import jobs
|
|
144
|
+
import jobs from "hiroppy/jobs" with { type: "json" };
|
|
145
145
|
import media from "hiroppy/media" with { type: "json" };
|
|
146
146
|
```
|
|
147
|
-
|
|
148
|
-
<br />
|
|
149
|
-
<br />
|
|
150
|
-
|
|
151
|
-
last auto-updated time: 2025/6/1 22:50:53
|
package/generated/articles.json
CHANGED
|
@@ -157,8 +157,7 @@
|
|
|
157
157
|
"title": "module bundlerの作り方(準備編)",
|
|
158
158
|
"image": "https://cdn.image.st-hatena.com/image/scale/aed8f13afa077875ee6844191ce355b38c9fb44e/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fa%2Fabout_hiroppy%2F20200519%2F20200519095516.png",
|
|
159
159
|
"description": "",
|
|
160
|
-
"publishedAt": "2020-05-19"
|
|
161
|
-
"bookmark": 52
|
|
160
|
+
"publishedAt": "2020-05-19"
|
|
162
161
|
},
|
|
163
162
|
{
|
|
164
163
|
"siteName": "技術探し",
|
|
@@ -388,8 +387,7 @@
|
|
|
388
387
|
"title": "webpackの仕組みを簡潔に説明する",
|
|
389
388
|
"image": "https://cdn.image.st-hatena.com/image/scale/117aec1de94f8e31c2cc0f6e532f7c489a8bd471/backend=imagemagick;version=1;width=1300/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F2105791%3Fs%3D200%26v%3D4",
|
|
390
389
|
"description": "",
|
|
391
|
-
"publishedAt": "2018-12-25"
|
|
392
|
-
"bookmark": 411
|
|
390
|
+
"publishedAt": "2018-12-25"
|
|
393
391
|
},
|
|
394
392
|
{
|
|
395
393
|
"siteName": "技術探し",
|
|
@@ -429,8 +427,7 @@
|
|
|
429
427
|
"title": "Node.jsでのイベントループの仕組みとタイマーについて",
|
|
430
428
|
"image": "https://cdn.image.st-hatena.com/image/scale/27946a3b0b593e0ac9e22d91d8e21d7d937ae3c9/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fa%2Fabout_hiroppy%2F20180925%2F20180925083813.png",
|
|
431
429
|
"description": "",
|
|
432
|
-
"publishedAt": "2018-09-26"
|
|
433
|
-
"bookmark": 340
|
|
430
|
+
"publishedAt": "2018-09-26"
|
|
434
431
|
},
|
|
435
432
|
{
|
|
436
433
|
"siteName": "技術探し",
|
package/generated/images.tar.gz
CHANGED
|
Binary file
|
package/generated/jobs.json
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
1
|
{
|
|
2
2
|
"meta": {
|
|
3
3
|
"coderPenguin": {
|
|
4
|
-
"image": "/images/
|
|
4
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9jb2RlclBlbmd1aW4ucG5n.webp",
|
|
5
5
|
"url": "https://coder-penguin.com/"
|
|
6
6
|
},
|
|
7
7
|
"layerX": {
|
|
8
|
-
"image": "/images/
|
|
8
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9sYXllcngucG5n.webp",
|
|
9
9
|
"url": "https://layerx.co.jp/"
|
|
10
10
|
},
|
|
11
11
|
"ship": {
|
|
12
|
-
"image": "/images/
|
|
12
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9zaGlwLnBuZw==.webp",
|
|
13
13
|
"url": "https://www.shipinc.jp/"
|
|
14
14
|
},
|
|
15
15
|
"stract": {
|
|
16
|
-
"image": "/images/
|
|
16
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9zdHJhY3QucG5n.webp",
|
|
17
17
|
"url": "https://stract.co.jp/"
|
|
18
18
|
},
|
|
19
19
|
"aidemy": {
|
|
20
|
-
"image": "/images/
|
|
20
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9haWRlbXkucG5n.webp",
|
|
21
21
|
"url": "https://aidemy.net/"
|
|
22
22
|
},
|
|
23
23
|
"mercari": {
|
|
24
|
-
"image": "/images/
|
|
24
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9tZXJjYXJpLnBuZw==.webp",
|
|
25
25
|
"url": "https://about.mercari.com/"
|
|
26
26
|
},
|
|
27
27
|
"yuimedi": {
|
|
28
|
-
"image": "/images/
|
|
28
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy95dWltZWRpLmpwZWc=.webp",
|
|
29
29
|
"url": "https://yuimedi.com/"
|
|
30
30
|
},
|
|
31
31
|
"dwango": {
|
|
32
|
-
"image": "/images/
|
|
32
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9kd2FuZ28uanBlZw==.webp",
|
|
33
33
|
"url": "https://dwango.co.jp/"
|
|
34
34
|
},
|
|
35
35
|
"estie": {
|
|
36
|
-
"image": "/images/
|
|
36
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9lc3RpZS5wbmc=.webp",
|
|
37
37
|
"url": "https://www.estie.jp/"
|
|
38
38
|
},
|
|
39
39
|
"runpeace": {
|
|
40
|
-
"image": "/images/
|
|
40
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9ydW5wZWFjZS5qcGc=.webp",
|
|
41
41
|
"url": "https://www.runpeace.biz/"
|
|
42
42
|
},
|
|
43
43
|
"rebase": {
|
|
44
|
-
"image": "/images/
|
|
44
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9yZWJhc2UucG5n.webp",
|
|
45
45
|
"url": "https://rebase.co.jp/"
|
|
46
46
|
},
|
|
47
47
|
"route06": {
|
|
48
|
-
"image": "/images/
|
|
48
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9yb3V0ZTA2LmpwZw==.webp",
|
|
49
49
|
"url": "https://route06.co.jp/"
|
|
50
50
|
},
|
|
51
51
|
"anotherworks": {
|
|
52
|
-
"image": "/images/
|
|
52
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9hbm90aGVyd29ya3Mud2VicA==.webp",
|
|
53
53
|
"url": "https://anotherworks.co.jp/"
|
|
54
54
|
},
|
|
55
55
|
"alpaca": {
|
|
56
|
-
"image": "/images/
|
|
56
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9hbHBhY2EuanBn.webp",
|
|
57
57
|
"url": "https://alpc.tokyo/"
|
|
58
58
|
},
|
|
59
59
|
"black": {
|
|
60
|
-
"image": "/images/
|
|
60
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9ibGFjay5qcGc=.webp",
|
|
61
61
|
"url": "https://by.black/"
|
|
62
62
|
},
|
|
63
63
|
"kakakucom": {
|
|
64
|
-
"image": "/images/
|
|
64
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy90YWJlbG9nLmpwZw==.webp",
|
|
65
65
|
"url": "https://corporate.kakaku.com/"
|
|
66
66
|
},
|
|
67
67
|
"bizreach": {
|
|
68
|
-
"image": "/images/
|
|
68
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9iaXpyZWFjaC5qcGVn.webp",
|
|
69
69
|
"url": "https://www.bizreach.co.jp/"
|
|
70
70
|
},
|
|
71
71
|
"eyesjapan": {
|
|
72
|
-
"image": "/images/
|
|
72
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9leWVzamFwYW4uanBn.webp",
|
|
73
73
|
"url": "https://www.nowhere.co.jp/"
|
|
74
74
|
},
|
|
75
75
|
"cyberagent": {
|
|
76
|
-
"image": "/images/
|
|
76
|
+
"image": "/images/cHVibGljL2NvbXBhbmllcy9jeWJlcmFnZW50LnBuZw==.webp",
|
|
77
77
|
"url": "https://www.cyberagent.co.jp/"
|
|
78
78
|
}
|
|
79
79
|
},
|
package/generated/meta.json
CHANGED
|
@@ -20,9 +20,24 @@
|
|
|
20
20
|
"start": "2016",
|
|
21
21
|
"end": "2018",
|
|
22
22
|
"links": [
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
{
|
|
24
|
+
"title": "東京Node学園祭 コアメンバー",
|
|
25
|
+
"description": "Node.js日本ユーザグループは、ECMAScriptの仕様化団体の一人であり、JSONの開発者でもある Douglas Crockford 氏、WhatWG Social Activity WG の仕様化を進める一人であり、 Node.js core committer でもある James Snell 氏、 ECMAScript 仕様化団体の一人であり、 Node のモジュールエコシステムの今後の鍵を握る Bradley Meck 氏、デスクトップアプリ開発が可能な Electron の作者である Cheng Zhao 氏、 React/Redux をベースに次世代の フロントエンド開発フレームワークである choo の開発を進める Yoshua Wuyts 氏を迎えて2016年のNode学園祭を開催いたします",
|
|
26
|
+
"image": "/images/bm9kZWZlc3QuanAvMjAxNi9pbWcvb2dpbWFnZS5wbmc=.webp",
|
|
27
|
+
"siteUrl": "https://nodefest.jp/2016/"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"title": "東京Node学園祭2017 | 11月25日,26日開催予定!",
|
|
31
|
+
"description": "2017年の東京Node学園祭は「Be More Global, Be More Interactive」というスローガンの元、普段日本では出会えないような国際的に活躍しているゲストを迎えて開催します。ただ聴講するだけではなく、双方向にコミュニケーションし合える場を提供します!",
|
|
32
|
+
"image": "/images/bm9kZWZlc3QuanAvMjAxNy9pbWcvb2dpbWFnZS5wbmc=.webp",
|
|
33
|
+
"siteUrl": "https://nodefest.jp/2017/"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"title": "東京Node学園祭2018 | 11月23日,24日開催予定!",
|
|
37
|
+
"description": "2018年の東京Node学園祭は「Be More Global, Be More Interactive」というスローガンの元、普段日本では出会えないような国際的に活躍しているゲストを迎えて開催します。ただ聴講するだけではなく、双方向にコミュニケーションし合える場を提供します!",
|
|
38
|
+
"image": "/images/bm9kZWZlc3QuanAvMjAxOC9pbWcvb2dpbWFnZS5wbmc=.webp",
|
|
39
|
+
"siteUrl": "https://nodefest.jp/2018/"
|
|
40
|
+
}
|
|
26
41
|
]
|
|
27
42
|
},
|
|
28
43
|
"jsconfJp": {
|
|
@@ -30,9 +45,21 @@
|
|
|
30
45
|
"start": "2021",
|
|
31
46
|
"end": null,
|
|
32
47
|
"links": [
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
48
|
+
{
|
|
49
|
+
"title": "JSConf JP コアメンバー",
|
|
50
|
+
"description": "jsconf.jp is a JavaScript festival in Japan powered by Japan Node.js Association. This is the first event of jsconf in Japan. We would love to become a bridge between Japanese Web Developers and International Web Developers.",
|
|
51
|
+
"image": "/images/anNjb25mLmpwLzIwMjEvc3RhdGljL2ZlYzkzNDkzNWE4Yjg0YjI0YWRlYWQ2ZTlmZWFlYTA5L2xvZ28ucG5n.webp",
|
|
52
|
+
"siteUrl": "https://jsconf.jp/2021/"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"title": "JSConf JP",
|
|
56
|
+
"description": "jsconf.jp is a JavaScript festival in Japan powered by Japan Node.js Association. This is the first event of jsconf in Japan. We would love to become a bridge between Japanese Web Developers and International Web Developers.",
|
|
57
|
+
"image": "/images/anNjb25mLmpwLzIwMjIvc3RhdGljL2ZlYzkzNDkzNWE4Yjg0YjI0YWRlYWQ2ZTlmZWFlYTA5L2xvZ28ucG5n.webp",
|
|
58
|
+
"siteUrl": "https://jsconf.jp/2022/"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"siteUrl": "https://jsconf.jp/2024/"
|
|
62
|
+
}
|
|
36
63
|
]
|
|
37
64
|
},
|
|
38
65
|
"tsKaigi": {
|
|
@@ -40,8 +67,18 @@
|
|
|
40
67
|
"start": "2024",
|
|
41
68
|
"end": null,
|
|
42
69
|
"links": [
|
|
43
|
-
|
|
44
|
-
|
|
70
|
+
{
|
|
71
|
+
"title": "TSKaigi プロポーザル審査委員",
|
|
72
|
+
"description": "TSKaigi 2024は、日本最大級のTypeScriptカンファレンスを開催します。",
|
|
73
|
+
"image": "",
|
|
74
|
+
"siteUrl": "https://2024.tskaigi.org/"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"title": "TSKaigi 2025",
|
|
78
|
+
"description": "TSKaigiは日本最大級のTypeScriptをテーマとした技術カンファレンスです。2025/5/23 (金) - 24 (土) の日程で開催します。",
|
|
79
|
+
"image": "/images/MjAyNS50c2thaWdpLm9yZy9iYW5uZXIuanBn.webp",
|
|
80
|
+
"siteUrl": "https://2025.tskaigi.org/"
|
|
81
|
+
}
|
|
45
82
|
]
|
|
46
83
|
},
|
|
47
84
|
"reactjs": {
|
|
@@ -49,7 +86,13 @@
|
|
|
49
86
|
"start": "2017",
|
|
50
87
|
"end": "2019",
|
|
51
88
|
"links": [
|
|
52
|
-
|
|
89
|
+
{
|
|
90
|
+
"title": "React.js meetup コアメンバー",
|
|
91
|
+
"description": "React.js meetup",
|
|
92
|
+
"image": "/images/bWVkaWEuY29ubnBhc3MuY29tL3RodW1icy9lYS9lNy9lYWU3YjBkMmZjOGYzMGYwZTQ0MzA5ZjM5OGYyM2E5MS5wbm.webp",
|
|
93
|
+
"siteName": "connpass",
|
|
94
|
+
"siteUrl": "https://reactjs-meetup.connpass.com/"
|
|
95
|
+
}
|
|
53
96
|
]
|
|
54
97
|
},
|
|
55
98
|
"techfeed": {
|
|
@@ -57,7 +100,13 @@
|
|
|
57
100
|
"start": "2020",
|
|
58
101
|
"end": null,
|
|
59
102
|
"links": [
|
|
60
|
-
|
|
103
|
+
{
|
|
104
|
+
"title": "TechFeed 公認エキスパート",
|
|
105
|
+
"description": "OSS engineer. Core committer of @nodejs and @webpack.",
|
|
106
|
+
"image": "/images/cmVzLmNsb3VkaW5hcnkuY29tL3RlY2hmZWVkL2ltYWdlL3VwbG9hZC93XzI4MCxoXzI4MC92MTU4NzcyNjUyMS91c2.webp",
|
|
107
|
+
"siteName": "TechFeed",
|
|
108
|
+
"siteUrl": "https://techfeed.io/people/@hiroppy/"
|
|
109
|
+
}
|
|
61
110
|
]
|
|
62
111
|
}
|
|
63
112
|
},
|
package/generated/podcasts.json
CHANGED
|
@@ -358,7 +358,13 @@
|
|
|
358
358
|
"url": "https://open.spotify.com/episode/4lExWWHOz4AGxrikd8w99A",
|
|
359
359
|
"publishedAt": "2021-09-10",
|
|
360
360
|
"links": [
|
|
361
|
-
|
|
361
|
+
{
|
|
362
|
+
"title": "Souzoh Tech Talk #03: Frontend",
|
|
363
|
+
"description": "9/1(水)に行ったSouzoh Tech Talk #03: Frontendの様子です!ぜひご覧ください。",
|
|
364
|
+
"image": "/images/aS55dGltZy5jb20vdmkvWU5MdklrcVJDLWcvaHFkZWZhdWx0LmpwZw==.webp",
|
|
365
|
+
"siteName": "【増枠】Souzoh Tech Talk #03: Frontend (2021/09/01 19:30〜)",
|
|
366
|
+
"siteUrl": "https://mercari.connpass.com/event/221978/"
|
|
367
|
+
}
|
|
362
368
|
]
|
|
363
369
|
},
|
|
364
370
|
{
|
|
@@ -370,7 +376,13 @@
|
|
|
370
376
|
"url": "https://uit-inside.linecorp.com/episode/93",
|
|
371
377
|
"publishedAt": "2021-07-30",
|
|
372
378
|
"links": [
|
|
373
|
-
|
|
379
|
+
{
|
|
380
|
+
"title": "UIT Meetup vol. 13『知っておきたい Front-end Tooling の今』を開催しました",
|
|
381
|
+
"description": " \n7 月 7 日、LINE のフロントエンドコミュニティ UIT が主催するミートアップイベント UIT Meetup vol. 13『知っておきたい Front-end Tooling の今』を開催しました。この記事では、イベントの内容について振り返っていきます。\n\nUIT ...",
|
|
382
|
+
"image": "/images/dm9zLmxpbmUtc2Nkbi5uZXQvbGFuZHByZXNzLWNvbnRlbnQtdjJfMTc2MS8xNjY2ODU0MTIwMjA0LnBuZz91cGRhdG.webp",
|
|
383
|
+
"siteName": "LINE ENGINEERING",
|
|
384
|
+
"siteUrl": "https://engineering.linecorp.com/ja/blog/uit-meetup-vol-13"
|
|
385
|
+
}
|
|
374
386
|
]
|
|
375
387
|
}
|
|
376
388
|
]
|
package/generated/talks.json
CHANGED
|
@@ -58,7 +58,12 @@
|
|
|
58
58
|
"url": "https://www.youtube.com/watch?v=1uCWzfaIedE",
|
|
59
59
|
"publishedAt": "2021-09-15",
|
|
60
60
|
"links": [
|
|
61
|
-
|
|
61
|
+
{
|
|
62
|
+
"title": "メルカリShops の CI/CD と Pull Request 環境 | メルカリエンジニアリング",
|
|
63
|
+
"description": "こんにちは!ソウゾウの Software Engineer の @dragon3 です。連載:「メルカリShops」プレオープンまでの開発の裏側の8日目を担当させていただきます。この記事では、メルカリShops 開発において、日々バリバリに",
|
|
64
|
+
"image": "/images/ZW5naW5lZXJpbmcubWVyY2FyaS5jb20vL2ltZy9vZ3Avb2dwX2EuanBn.webp",
|
|
65
|
+
"siteUrl": "https://engineering.mercari.com/blog/entry/20210817-mercari-shops-ci-cd-pr-env/"
|
|
66
|
+
}
|
|
62
67
|
]
|
|
63
68
|
},
|
|
64
69
|
{
|
|
@@ -70,7 +75,12 @@
|
|
|
70
75
|
"url": "https://www.youtube.com/watch?v=YNLvIkqRC-g",
|
|
71
76
|
"publishedAt": "2021-09-01",
|
|
72
77
|
"links": [
|
|
73
|
-
|
|
78
|
+
{
|
|
79
|
+
"title": "メルカリShops のフロントエンド | メルカリエンジニアリング",
|
|
80
|
+
"description": "こんにちは。ソウゾウの Software Engineer の hiroppy です。「連載:「メルカリ Shops」プレオープンまでの開発の裏側」 の最後は、Web フロントエンドの紹介をしたいと思います。メルカリ Shops は既存のメ",
|
|
81
|
+
"image": "/images/ZW5naW5lZXJpbmcubWVyY2FyaS5jb20vL2ltZy9vZ3Avb2dwX2EuanBn.webp",
|
|
82
|
+
"siteUrl": "https://engineering.mercari.com/blog/entry/20210823-a57631d32e/"
|
|
83
|
+
}
|
|
74
84
|
]
|
|
75
85
|
},
|
|
76
86
|
{
|
|
@@ -92,7 +102,13 @@
|
|
|
92
102
|
"url": "https://www.youtube.com/watch?v=XyoeJ1TRaMk",
|
|
93
103
|
"publishedAt": "2021-07-15",
|
|
94
104
|
"links": [
|
|
95
|
-
|
|
105
|
+
{
|
|
106
|
+
"title": "UIT Meetup vol. 13『知っておきたい Front-end Tooling の今』を開催しました",
|
|
107
|
+
"description": " \n7 月 7 日、LINE のフロントエンドコミュニティ UIT が主催するミートアップイベント UIT Meetup vol. 13『知っておきたい Front-end Tooling の今』を開催しました。この記事では、イベントの内容について振り返っていきます。\n\nUIT ...",
|
|
108
|
+
"image": "/images/dm9zLmxpbmUtc2Nkbi5uZXQvbGFuZHByZXNzLWNvbnRlbnQtdjJfMTc2MS8xNjY2ODU0MTIwMjA0LnBuZz91cGRhdG.webp",
|
|
109
|
+
"siteName": "LINE ENGINEERING",
|
|
110
|
+
"siteUrl": "https://engineering.linecorp.com/ja/blog/uit-meetup-vol-13/"
|
|
111
|
+
}
|
|
96
112
|
]
|
|
97
113
|
},
|
|
98
114
|
{
|
package/lib/hatena.mjs
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get bookmark count from Hatena Bookmark
|
|
3
|
+
* @param {string} entry - URL to get bookmark count for
|
|
4
|
+
* @returns {Promise<number>} Bookmark count
|
|
5
|
+
*/
|
|
6
|
+
export async function getBookmark(entry) {
|
|
7
|
+
try {
|
|
8
|
+
const url = `https://b.hatena.ne.jp/entry/json/${entry}`;
|
|
9
|
+
const res = await fetch(url);
|
|
10
|
+
if (!res.ok) {
|
|
11
|
+
throw new Error(`HTTP error! status: ${res.status}`);
|
|
12
|
+
}
|
|
13
|
+
const data = await res.json();
|
|
14
|
+
return data.count || 0;
|
|
15
|
+
} catch (error) {
|
|
16
|
+
console.error(`Failed to fetch bookmark for ${entry}:`, error);
|
|
17
|
+
return 0;
|
|
18
|
+
}
|
|
19
|
+
}
|
package/lib/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hiroppy",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.23",
|
|
4
4
|
"packageManager": "pnpm@10.11.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"setup": "corepack enable pnpm",
|
|
24
|
-
"build": "node scripts/index.ts",
|
|
25
|
-
"build:readme": "node scripts/readme.ts",
|
|
26
|
-
"lint": "biome check . --fix",
|
|
24
|
+
"build": "node scripts/index.ts && pnpm lint",
|
|
25
|
+
"build:readme": "node scripts/readme.ts && pnpm lint",
|
|
26
|
+
"lint": "prettier -w './**/*.{md,yml}' && biome check . --fix",
|
|
27
27
|
"reset": "rm -rf generated && mkdir generated && mkdir generated/images",
|
|
28
28
|
"cleanup": "node scripts/cleanup-unused-images.ts",
|
|
29
29
|
"compress:images": "node scripts/compress-images.ts",
|
|
@@ -57,6 +57,8 @@
|
|
|
57
57
|
"@types/node": "22.15.29",
|
|
58
58
|
"cheerio": "1.0.0",
|
|
59
59
|
"emoji-js": "3.8.1",
|
|
60
|
+
"lefthook": "1.11.13",
|
|
61
|
+
"prettier": "3.5.3",
|
|
60
62
|
"sharp": "0.34.2"
|
|
61
63
|
}
|
|
62
64
|
}
|