From 18fe8514c5d6e66b36275c4c2544df8411aa77e3 Mon Sep 17 00:00:00 2001
From: Shinobu Hayashi
Date: Mon, 15 Jul 2024 01:14:05 +0900
Subject: [PATCH] Remove blog application
---
packages/applications/blog/.gitignore | 2 -
packages/applications/blog/lingui.config.ts | 12 -
packages/applications/blog/package.json | 118 ----
.../applications/blog/scripts/buildRss.ts | 13 -
.../applications/blog/scripts/buildSitemap.ts | 13 -
.../blog/scripts/copyAssetsIntoPublic.ts | 44 --
.../draft/about-new-core-web-vitals.md | 31 -
.../blog/src/articles/draft/about-wasmtime.md | 19 -
.../draft/learn-browser-through-creating.md | 15 -
...lint-plugin-for-orthographical-variants.md | 122 ----
.../src/articles/en/introduction-treeche.md | 163 -----
.../en/m17n-with-cloudflare-workers.md | 77 ---
...m-outdated-command-supports-json-format.md | 80 ---
.../src/articles/public/browser-on-browser.md | 166 ------
...composition-react-app-with-react-router.md | 174 ------
...lint-plugin-for-orthographical-variants.md | 120 ----
...r-with-raw-write-to-node-http-on-stream.md | 155 -----
...make-economic-ssr-with-clourflareworker.md | 246 --------
.../articles/public/introduction-to-AST.md | 560 ------------------
.../articles/public/introduction-treeche.md | 163 -----
.../blog/src/articles/public/log-2020.md | 266 ---------
.../public/log-ca-web-speed-hackathon.md | 115 ----
.../public/m17n-with-cloudflare-workers.md | 86 ---
.../src/articles/public/nice-to-meet-you.md | 12 -
...m-outdated-command-supports-json-format.md | 81 ---
.../public/remake-blog-with-nextjs-nowsh.md | 129 ----
.../public/what-is-TypeScript-s-reversal.md | 101 ----
.../public/without-create-react-app.md | 319 ----------
.../blog/src/articles/third-pirty.json | 82 ---
.../src/assets/browser-on-browser/sys.png | Bin 42068 -> 0 bytes
.../introduction-to-AST/ast-overview.png | Bin 60098 -> 0 bytes
.../assets/introduction-to-AST/ast-tool.png | Bin 135205 -> 0 bytes
.../assets/introduction-to-AST/ast-tree.png | Bin 41112 -> 0 bytes
.../assets/introduction-to-AST/transform.png | Bin 66302 -> 0 bytes
.../blog/src/assets/log-2020/kusa.png | Bin 3495 -> 0 bytes
.../blog/src/assets/log-2020/newkusa.png | Bin 1726 -> 0 bytes
.../hackathon-res.png | Bin 34946 -> 0 bytes
.../webpack-bundle-analyzer.png | Bin 2579760 -> 0 bytes
.../pnpm-outdated-with-list.png | Bin 75862 -> 0 bytes
.../pnpm-outdated.png | Bin 118239 -> 0 bytes
.../tweet.png | Bin 212022 -> 0 bytes
.../remake-blog-with-nextjs-nowsh/27-1.jpeg | Bin 50597 -> 0 bytes
.../remake-blog-with-nextjs-nowsh/27-2.png | Bin 81245 -> 0 bytes
.../remake-blog-with-nextjs-nowsh/27-3.png | Bin 201073 -> 0 bytes
.../blog/src/assets/static/AMP.png | Bin 126971 -> 0 bytes
.../blog/src/assets/static/a11y-dark.min.css | 86 ---
.../blog/src/assets/static/banana.png | Bin 38433 -> 0 bytes
.../blog/src/assets/static/cloudflare.png | Bin 5673 -> 0 bytes
.../blog/src/assets/static/e-mail.png | Bin 11329 -> 0 bytes
.../blog/src/assets/static/earth.png | Bin 10863 -> 0 bytes
.../blog/src/assets/static/earth_africa.png | Bin 42445 -> 0 bytes
.../blog/src/assets/static/fastly.png | Bin 7881 -> 0 bytes
.../blog/src/assets/static/favicon.ico | Bin 15086 -> 0 bytes
.../blog/src/assets/static/fire.png | Bin 19777 -> 0 bytes
.../blog/src/assets/static/gb.png | Bin 21310 -> 0 bytes
.../blog/src/assets/static/github.svg | 1 -
.../blog/src/assets/static/icon.png | Bin 167264 -> 0 bytes
.../blog/src/assets/static/icon_blur.png | Bin 8442 -> 0 bytes
.../blog/src/assets/static/icon_thatsme.png | Bin 21799 -> 0 bytes
.../src/assets/static/icon_transparent.png | Bin 100414 -> 0 bytes
.../assets/static/icon_transparent_header.png | Bin 3700 -> 0 bytes
.../blog/src/assets/static/javascript.png | Bin 55265 -> 0 bytes
.../blog/src/assets/static/jp.png | Bin 6786 -> 0 bytes
.../blog/src/assets/static/linkedin.svg | 1 -
.../blog/src/assets/static/placeholder.png | Bin 9514 -> 0 bytes
.../blog/src/assets/static/react.png | Bin 133543 -> 0 bytes
.../blog/src/assets/static/rust.png | Bin 77676 -> 0 bytes
.../src/assets/static/shinyaigeek_icon.png | Bin 127911 -> 0 bytes
.../blog/src/assets/static/spider_web.png | Bin 29562 -> 0 bytes
.../blog/src/assets/static/twitter.svg | 43 --
.../blog/src/assets/static/typescript.png | Bin 10359 -> 0 bytes
.../blog/src/assets/static/us.png | Bin 24563 -> 0 bytes
.../what-is-TypeScript-s-reversal/25-3.png | Bin 43626 -> 0 bytes
.../what-is-TypeScript-s-reversal/25-4.png | Bin 69452 -> 0 bytes
.../assets/without-create-react-app/21-2.png | Bin 7624 -> 0 bytes
.../assets/without-create-react-app/21-3.png | Bin 22752 -> 0 bytes
.../assets/without-create-react-app/21-4.gif | Bin 124871 -> 0 bytes
.../assets/without-create-react-app/21-5.png | Bin 13478 -> 0 bytes
.../assets/without-create-react-app/21-6.png | Bin 28921 -> 0 bytes
.../assets/without-create-react-app/21-7.png | Bin 17688 -> 0 bytes
.../blog/src/build/babel.config.js | 15 -
packages/applications/blog/src/build/build.ts | 26 -
.../blog/src/build/handlers/index/index.tsx | 38 --
.../handlers/post/getChildren/getChildren.ts | 13 -
.../handlers/post/handlePost/handlePost.tsx | 103 ----
.../build/handlers/profile/handleProfile.tsx | 26 -
.../blog/src/build/router/router.ts | 89 ---
.../blog/src/build/util/addDOCTYPE.ts | 2 -
.../blog/src/build/util/generateHash.ts | 11 -
.../blog/src/build/util/getBlogPost.ts | 14 -
.../blog/src/build/util/getBlogPosts.ts | 72 ---
.../blog/src/build/util/getOmmit.ts | 5 -
.../blog/src/build/util/getRss.ts | 51 --
.../blog/src/build/util/getSitemap.ts | 70 ---
.../blog/src/build/util/getThirdPirty.ts | 31 -
.../blog/src/build/util/helmet.tsx | 144 -----
.../blog/src/build/util/writeFileWithDir.ts | 13 -
.../blog/src/client/Home/Home.tsx | 35 --
.../Home/components/Item/Item.module.css | 44 --
.../src/client/Home/components/Item/Item.tsx | 56 --
.../StartStream/StarStream.module.css | 193 ------
.../components/StartStream/StarStream.tsx | 34 --
.../WelcomePage/WelcomePage.module.css | 28 -
.../components/WelcomePage/WelcomePage.tsx | 20 -
.../blog/src/client/Post/Post.module.css | 91 ---
.../blog/src/client/Post/Post.tsx | 37 --
.../Post/components/Anchor/Anchor.module.css | 40 --
.../client/Post/components/Anchor/Anchor.tsx | 23 -
.../components/MetaInfo/MetaInfo.module.css | 4 -
.../Post/components/MetaInfo/MetaInfo.tsx | 22 -
.../src/client/Profile/Profile.module.css | 17 -
.../blog/src/client/Profile/Profile.tsx | 155 -----
.../BaseProfile/BaseProfile.module.css | 264 ---------
.../components/BaseProfile/BaseProfile.tsx | 85 ---
.../Profile/components/Card/Card.module.css | 34 --
.../client/Profile/components/Card/Card.tsx | 16 -
.../GitHubCalender/GitHubCalendar.module.css | 4 -
.../GitHubCalender/GitHubCalender.tsx | 13 -
.../components/JobItem/JobItem.module.css | 21 -
.../Profile/components/JobItem/JobItem.tsx | 22 -
.../components/Loading/Loading.module.css | 78 ---
.../Profile/components/Loading/Loading.tsx | 14 -
.../applications/blog/src/client/_main.ts | 2 -
.../components/Button/Button.module.css | 19 -
.../src/client/components/Button/Button.tsx | 15 -
.../components/Contact/Contact.module.css | 25 -
.../src/client/components/Contact/Contact.tsx | 51 --
.../DecorationTag/DecorationTag.module.css | 9 -
.../DecorationTag/DecorationTag.tsx | 16 -
.../components/Divider/Divider.module.css | 8 -
.../src/client/components/Divider/Divider.tsx | 6 -
.../components/Footer/Footer.module.css | 8 -
.../src/client/components/Footer/Footer.tsx | 6 -
.../components/Header/Header.module.css | 109 ----
.../src/client/components/Header/Header.tsx | 58 --
.../components/Language/Language.module.css | 7 -
.../client/components/Language/Language.tsx | 75 ---
.../components/Layout/Layout.module.css | 62 --
.../src/client/components/Layout/Layout.tsx | 22 -
.../Shinyaigeek/Shinyaigeek.module.css | 100 ----
.../components/Shinyaigeek/Shinyaigeek.tsx | 36 --
.../ShinyaigeekAnimation.tsx | 9 -
.../src/client/components/Tag/Tag.module.css | 11 -
.../blog/src/client/components/Tag/Tag.tsx | 15 -
.../applications/blog/src/client/index.d.ts | 23 -
.../applications/blog/src/client/main.tsx | 16 -
.../applications/blog/src/client/profile.ts | 6 -
.../blog/src/client/registerGitHubCalendar.ts | 11 -
.../blog/src/client/tsconfig.json | 66 ---
packages/applications/blog/src/consts.ts | 1 -
.../src/contents-handler/contents-reader.ts | 18 -
.../src/contents-handler/contents-writer.ts | 10 -
.../src/contents-handler/get-content-path.ts | 12 -
.../generateOGImage/KosugiMaru-Regular.ttf | Bin 3565692 -> 0 bytes
.../src/generateOGImage/OGImageTemplate.tsx | 89 ---
.../src/generateOGImage/generateOGImage.ts | 80 ---
.../generateOGImageFromBlogPost.tsx | 53 --
.../blog/src/locales/en/messages.d.ts | 3 -
.../blog/src/locales/en/messages.po | 154 -----
.../blog/src/locales/en/messages.ts | 3 -
.../blog/src/locales/ja/messages.d.ts | 3 -
.../blog/src/locales/ja/messages.po | 154 -----
.../blog/src/locales/ja/messages.ts | 3 -
packages/applications/blog/ssg.js | 3 -
.../applications/blog/tools/build-utility.ts | 18 -
packages/applications/blog/tsconfig.json | 3 -
.../blog/webpack.config.client.ts | 32 -
.../blog/webpack.config.server.ts | 57 --
.../src/build/handlers/profile/generate.tsx | 2 +-
.../src/ui/components/Layout/Layout.tsx | 22 +-
170 files changed, 14 insertions(+), 7185 deletions(-)
delete mode 100644 packages/applications/blog/.gitignore
delete mode 100644 packages/applications/blog/lingui.config.ts
delete mode 100644 packages/applications/blog/package.json
delete mode 100644 packages/applications/blog/scripts/buildRss.ts
delete mode 100644 packages/applications/blog/scripts/buildSitemap.ts
delete mode 100644 packages/applications/blog/scripts/copyAssetsIntoPublic.ts
delete mode 100644 packages/applications/blog/src/articles/draft/about-new-core-web-vitals.md
delete mode 100644 packages/applications/blog/src/articles/draft/about-wasmtime.md
delete mode 100644 packages/applications/blog/src/articles/draft/learn-browser-through-creating.md
delete mode 100644 packages/applications/blog/src/articles/en/eslint-plugin-for-orthographical-variants.md
delete mode 100644 packages/applications/blog/src/articles/en/introduction-treeche.md
delete mode 100644 packages/applications/blog/src/articles/en/m17n-with-cloudflare-workers.md
delete mode 100644 packages/applications/blog/src/articles/en/pnpm-outdated-command-supports-json-format.md
delete mode 100644 packages/applications/blog/src/articles/public/browser-on-browser.md
delete mode 100644 packages/applications/blog/src/articles/public/composition-react-app-with-react-router.md
delete mode 100644 packages/applications/blog/src/articles/public/eslint-plugin-for-orthographical-variants.md
delete mode 100644 packages/applications/blog/src/articles/public/fatsify-header-with-raw-write-to-node-http-on-stream.md
delete mode 100644 packages/applications/blog/src/articles/public/how-to-make-economic-ssr-with-clourflareworker.md
delete mode 100644 packages/applications/blog/src/articles/public/introduction-to-AST.md
delete mode 100644 packages/applications/blog/src/articles/public/introduction-treeche.md
delete mode 100644 packages/applications/blog/src/articles/public/log-2020.md
delete mode 100644 packages/applications/blog/src/articles/public/log-ca-web-speed-hackathon.md
delete mode 100644 packages/applications/blog/src/articles/public/m17n-with-cloudflare-workers.md
delete mode 100644 packages/applications/blog/src/articles/public/nice-to-meet-you.md
delete mode 100644 packages/applications/blog/src/articles/public/pnpm-outdated-command-supports-json-format.md
delete mode 100644 packages/applications/blog/src/articles/public/remake-blog-with-nextjs-nowsh.md
delete mode 100644 packages/applications/blog/src/articles/public/what-is-TypeScript-s-reversal.md
delete mode 100644 packages/applications/blog/src/articles/public/without-create-react-app.md
delete mode 100644 packages/applications/blog/src/articles/third-pirty.json
delete mode 100644 packages/applications/blog/src/assets/browser-on-browser/sys.png
delete mode 100644 packages/applications/blog/src/assets/introduction-to-AST/ast-overview.png
delete mode 100644 packages/applications/blog/src/assets/introduction-to-AST/ast-tool.png
delete mode 100644 packages/applications/blog/src/assets/introduction-to-AST/ast-tree.png
delete mode 100644 packages/applications/blog/src/assets/introduction-to-AST/transform.png
delete mode 100644 packages/applications/blog/src/assets/log-2020/kusa.png
delete mode 100644 packages/applications/blog/src/assets/log-2020/newkusa.png
delete mode 100644 packages/applications/blog/src/assets/log-ca-web-speed-hackathon/hackathon-res.png
delete mode 100644 packages/applications/blog/src/assets/log-ca-web-speed-hackathon/webpack-bundle-analyzer.png
delete mode 100644 packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated-with-list.png
delete mode 100644 packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/pnpm-outdated.png
delete mode 100644 packages/applications/blog/src/assets/pnpm-outdated-command-supports-json-format/tweet.png
delete mode 100644 packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-1.jpeg
delete mode 100644 packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-2.png
delete mode 100644 packages/applications/blog/src/assets/remake-blog-with-nextjs-nowsh/27-3.png
delete mode 100644 packages/applications/blog/src/assets/static/AMP.png
delete mode 100644 packages/applications/blog/src/assets/static/a11y-dark.min.css
delete mode 100644 packages/applications/blog/src/assets/static/banana.png
delete mode 100644 packages/applications/blog/src/assets/static/cloudflare.png
delete mode 100644 packages/applications/blog/src/assets/static/e-mail.png
delete mode 100644 packages/applications/blog/src/assets/static/earth.png
delete mode 100644 packages/applications/blog/src/assets/static/earth_africa.png
delete mode 100644 packages/applications/blog/src/assets/static/fastly.png
delete mode 100644 packages/applications/blog/src/assets/static/favicon.ico
delete mode 100644 packages/applications/blog/src/assets/static/fire.png
delete mode 100644 packages/applications/blog/src/assets/static/gb.png
delete mode 100644 packages/applications/blog/src/assets/static/github.svg
delete mode 100644 packages/applications/blog/src/assets/static/icon.png
delete mode 100644 packages/applications/blog/src/assets/static/icon_blur.png
delete mode 100644 packages/applications/blog/src/assets/static/icon_thatsme.png
delete mode 100644 packages/applications/blog/src/assets/static/icon_transparent.png
delete mode 100644 packages/applications/blog/src/assets/static/icon_transparent_header.png
delete mode 100644 packages/applications/blog/src/assets/static/javascript.png
delete mode 100644 packages/applications/blog/src/assets/static/jp.png
delete mode 100644 packages/applications/blog/src/assets/static/linkedin.svg
delete mode 100644 packages/applications/blog/src/assets/static/placeholder.png
delete mode 100644 packages/applications/blog/src/assets/static/react.png
delete mode 100644 packages/applications/blog/src/assets/static/rust.png
delete mode 100644 packages/applications/blog/src/assets/static/shinyaigeek_icon.png
delete mode 100644 packages/applications/blog/src/assets/static/spider_web.png
delete mode 100644 packages/applications/blog/src/assets/static/twitter.svg
delete mode 100644 packages/applications/blog/src/assets/static/typescript.png
delete mode 100644 packages/applications/blog/src/assets/static/us.png
delete mode 100644 packages/applications/blog/src/assets/what-is-TypeScript-s-reversal/25-3.png
delete mode 100644 packages/applications/blog/src/assets/what-is-TypeScript-s-reversal/25-4.png
delete mode 100644 packages/applications/blog/src/assets/without-create-react-app/21-2.png
delete mode 100644 packages/applications/blog/src/assets/without-create-react-app/21-3.png
delete mode 100644 packages/applications/blog/src/assets/without-create-react-app/21-4.gif
delete mode 100644 packages/applications/blog/src/assets/without-create-react-app/21-5.png
delete mode 100644 packages/applications/blog/src/assets/without-create-react-app/21-6.png
delete mode 100644 packages/applications/blog/src/assets/without-create-react-app/21-7.png
delete mode 100644 packages/applications/blog/src/build/babel.config.js
delete mode 100644 packages/applications/blog/src/build/build.ts
delete mode 100644 packages/applications/blog/src/build/handlers/index/index.tsx
delete mode 100644 packages/applications/blog/src/build/handlers/post/getChildren/getChildren.ts
delete mode 100644 packages/applications/blog/src/build/handlers/post/handlePost/handlePost.tsx
delete mode 100644 packages/applications/blog/src/build/handlers/profile/handleProfile.tsx
delete mode 100644 packages/applications/blog/src/build/router/router.ts
delete mode 100644 packages/applications/blog/src/build/util/addDOCTYPE.ts
delete mode 100644 packages/applications/blog/src/build/util/generateHash.ts
delete mode 100644 packages/applications/blog/src/build/util/getBlogPost.ts
delete mode 100644 packages/applications/blog/src/build/util/getBlogPosts.ts
delete mode 100644 packages/applications/blog/src/build/util/getOmmit.ts
delete mode 100644 packages/applications/blog/src/build/util/getRss.ts
delete mode 100644 packages/applications/blog/src/build/util/getSitemap.ts
delete mode 100644 packages/applications/blog/src/build/util/getThirdPirty.ts
delete mode 100644 packages/applications/blog/src/build/util/helmet.tsx
delete mode 100644 packages/applications/blog/src/build/util/writeFileWithDir.ts
delete mode 100644 packages/applications/blog/src/client/Home/Home.tsx
delete mode 100644 packages/applications/blog/src/client/Home/components/Item/Item.module.css
delete mode 100644 packages/applications/blog/src/client/Home/components/Item/Item.tsx
delete mode 100644 packages/applications/blog/src/client/Home/components/StartStream/StarStream.module.css
delete mode 100644 packages/applications/blog/src/client/Home/components/StartStream/StarStream.tsx
delete mode 100644 packages/applications/blog/src/client/Home/components/WelcomePage/WelcomePage.module.css
delete mode 100644 packages/applications/blog/src/client/Home/components/WelcomePage/WelcomePage.tsx
delete mode 100644 packages/applications/blog/src/client/Post/Post.module.css
delete mode 100644 packages/applications/blog/src/client/Post/Post.tsx
delete mode 100644 packages/applications/blog/src/client/Post/components/Anchor/Anchor.module.css
delete mode 100644 packages/applications/blog/src/client/Post/components/Anchor/Anchor.tsx
delete mode 100644 packages/applications/blog/src/client/Post/components/MetaInfo/MetaInfo.module.css
delete mode 100644 packages/applications/blog/src/client/Post/components/MetaInfo/MetaInfo.tsx
delete mode 100644 packages/applications/blog/src/client/Profile/Profile.module.css
delete mode 100644 packages/applications/blog/src/client/Profile/Profile.tsx
delete mode 100644 packages/applications/blog/src/client/Profile/components/BaseProfile/BaseProfile.module.css
delete mode 100644 packages/applications/blog/src/client/Profile/components/BaseProfile/BaseProfile.tsx
delete mode 100644 packages/applications/blog/src/client/Profile/components/Card/Card.module.css
delete mode 100644 packages/applications/blog/src/client/Profile/components/Card/Card.tsx
delete mode 100644 packages/applications/blog/src/client/Profile/components/GitHubCalender/GitHubCalendar.module.css
delete mode 100644 packages/applications/blog/src/client/Profile/components/GitHubCalender/GitHubCalender.tsx
delete mode 100644 packages/applications/blog/src/client/Profile/components/JobItem/JobItem.module.css
delete mode 100644 packages/applications/blog/src/client/Profile/components/JobItem/JobItem.tsx
delete mode 100644 packages/applications/blog/src/client/Profile/components/Loading/Loading.module.css
delete mode 100644 packages/applications/blog/src/client/Profile/components/Loading/Loading.tsx
delete mode 100644 packages/applications/blog/src/client/_main.ts
delete mode 100644 packages/applications/blog/src/client/components/Button/Button.module.css
delete mode 100644 packages/applications/blog/src/client/components/Button/Button.tsx
delete mode 100644 packages/applications/blog/src/client/components/Contact/Contact.module.css
delete mode 100644 packages/applications/blog/src/client/components/Contact/Contact.tsx
delete mode 100644 packages/applications/blog/src/client/components/DecorationTag/DecorationTag.module.css
delete mode 100644 packages/applications/blog/src/client/components/DecorationTag/DecorationTag.tsx
delete mode 100644 packages/applications/blog/src/client/components/Divider/Divider.module.css
delete mode 100644 packages/applications/blog/src/client/components/Divider/Divider.tsx
delete mode 100644 packages/applications/blog/src/client/components/Footer/Footer.module.css
delete mode 100644 packages/applications/blog/src/client/components/Footer/Footer.tsx
delete mode 100644 packages/applications/blog/src/client/components/Header/Header.module.css
delete mode 100644 packages/applications/blog/src/client/components/Header/Header.tsx
delete mode 100644 packages/applications/blog/src/client/components/Language/Language.module.css
delete mode 100644 packages/applications/blog/src/client/components/Language/Language.tsx
delete mode 100644 packages/applications/blog/src/client/components/Layout/Layout.module.css
delete mode 100644 packages/applications/blog/src/client/components/Layout/Layout.tsx
delete mode 100644 packages/applications/blog/src/client/components/Shinyaigeek/Shinyaigeek.module.css
delete mode 100644 packages/applications/blog/src/client/components/Shinyaigeek/Shinyaigeek.tsx
delete mode 100644 packages/applications/blog/src/client/components/ShinyaigeekAnimation/ShinyaigeekAnimation.tsx
delete mode 100644 packages/applications/blog/src/client/components/Tag/Tag.module.css
delete mode 100644 packages/applications/blog/src/client/components/Tag/Tag.tsx
delete mode 100644 packages/applications/blog/src/client/index.d.ts
delete mode 100644 packages/applications/blog/src/client/main.tsx
delete mode 100644 packages/applications/blog/src/client/profile.ts
delete mode 100644 packages/applications/blog/src/client/registerGitHubCalendar.ts
delete mode 100644 packages/applications/blog/src/client/tsconfig.json
delete mode 100644 packages/applications/blog/src/consts.ts
delete mode 100644 packages/applications/blog/src/contents-handler/contents-reader.ts
delete mode 100644 packages/applications/blog/src/contents-handler/contents-writer.ts
delete mode 100644 packages/applications/blog/src/contents-handler/get-content-path.ts
delete mode 100644 packages/applications/blog/src/generateOGImage/KosugiMaru-Regular.ttf
delete mode 100644 packages/applications/blog/src/generateOGImage/OGImageTemplate.tsx
delete mode 100644 packages/applications/blog/src/generateOGImage/generateOGImage.ts
delete mode 100644 packages/applications/blog/src/generateOGImage/generateOGImageFromBlogPost.tsx
delete mode 100644 packages/applications/blog/src/locales/en/messages.d.ts
delete mode 100644 packages/applications/blog/src/locales/en/messages.po
delete mode 100644 packages/applications/blog/src/locales/en/messages.ts
delete mode 100644 packages/applications/blog/src/locales/ja/messages.d.ts
delete mode 100644 packages/applications/blog/src/locales/ja/messages.po
delete mode 100644 packages/applications/blog/src/locales/ja/messages.ts
delete mode 100644 packages/applications/blog/ssg.js
delete mode 100644 packages/applications/blog/tools/build-utility.ts
delete mode 100644 packages/applications/blog/tsconfig.json
delete mode 100644 packages/applications/blog/webpack.config.client.ts
delete mode 100644 packages/applications/blog/webpack.config.server.ts
diff --git a/packages/applications/blog/.gitignore b/packages/applications/blog/.gitignore
deleted file mode 100644
index c257d21f..00000000
--- a/packages/applications/blog/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-public
-dist
\ No newline at end of file
diff --git a/packages/applications/blog/lingui.config.ts b/packages/applications/blog/lingui.config.ts
deleted file mode 100644
index d4eb9e68..00000000
--- a/packages/applications/blog/lingui.config.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { formatter } from "@lingui/format-po";
-
-export default {
- locales: ["en", "ja"],
- catalogs: [
- {
- path: "./src/locales/{locale}/messages",
- include: ["./src"],
- },
- ],
- format: formatter({ explicitIdAsDefault: true }),
-};
diff --git a/packages/applications/blog/package.json b/packages/applications/blog/package.json
deleted file mode 100644
index d74c4de4..00000000
--- a/packages/applications/blog/package.json
+++ /dev/null
@@ -1,118 +0,0 @@
-{
- "name": "blog",
- "version": "1.0.0",
- "description": "",
- "keywords": [],
- "license": "ISC",
- "type": "module",
- "author": "",
- "main": "index.js",
- "scripts": {
- "__webpack": "NODE_OPTIONS=\"--loader ts-node/esm\" webpack",
- "build": "NODE_ENV=production pnpm build:css && pnpm build:rss && pnpm build:sitemap && pnpm mv:assets && pnpm build:og-image",
- "build:css": "pnpm __webpack --config webpack.config.client.ts --mode=production",
- "build:dev": "export NODE_ENV=development && pnpm build:css && pnpm build:ssg && pnpm build:rss && pnpm build:sitemap && pnpm mv:assets",
- "build:server": "pnpm __webpack --config webpack.config.server.ts",
- "build:ssg": "pnpm build:server && node ssg.js",
- "build:rss": "ts-node --esm ./scripts/buildRss.ts",
- "build:sitemap": "ts-node --esm ./scripts/buildSitemap.ts",
- "build:og-image": "ts-node --esm ./src/generateOGImage/generateOGImage.ts",
- "clear": "rimraf ./public",
- "dev": "nodemon --watch src/ --exec pnpm build",
- "i18n:compile": "lingui compile --typescript",
- "i18n:extract": "lingui extract",
- "mv:assets": "ts-node --esm ./scripts/copyAssetsIntoPublic.ts",
- "serve": "miniserve ./public --index index.html"
- },
- "dependencies": {
- "@github/g-emoji-element": "^1.1.5",
- "@lingui/format-po": "^4.6.0",
- "@resvg/resvg-js": "^2.1.0",
- "body-parser": "^1.19.0",
- "build-tool": "workspace:*",
- "emailjs-com": "^2.4.1",
- "front-matter": "^4.0.2",
- "github-calendar": "^2.2.7",
- "github-calendar-element": "^1.0.1",
- "highlight.js": "11.3.1",
- "html-minifier": "^4.0.0",
- "html-react-parser": "^1.3.0",
- "image-to-base64": "^2.2.0",
- "marked": "^4.0.10",
- "nodemon": "^2.0.2",
- "react": "19.0.0-beta-94eed63c49-20240425",
- "react-dom": "19.0.0-beta-94eed63c49-20240425",
- "rehype-highlight": "^6.0.0",
- "remarkable": "^2.0.1",
- "remarkable-plugin-heading-id": "^1.0.0",
- "remarkable-plugin-tweet-share": "^1.0.0",
- "resolve-accept-language": "^1.0.50",
- "resvg": "^1.6.4",
- "universal-router": "^9.0.1"
- },
- "devDependencies": {
- "@babel/cli": "^7.12.1",
- "@babel/core": "^7.12.3",
- "@babel/node": "^7.12.6",
- "@babel/preset-env": "^7.12.1",
- "@babel/preset-react": "^7.12.1",
- "@babel/preset-typescript": "^7.12.1",
- "@babel/register": "^7.12.1",
- "@lingui/cli": "^4.0.0",
- "@lingui/core": "^4.0.0",
- "@lingui/format-json": "^4.0.0",
- "@lingui/macro": "^4.0.0",
- "@lingui/swc-plugin": "^4.0.0",
- "@parcel/css": "^1.7.1",
- "@swc/core": "^1.3.100",
- "@types/highlight.js": "^9.12.3",
- "@types/html-minifier": "^4.0.0",
- "@types/image-to-base64": "^2.1.0",
- "@types/jest": "^26.0.23",
- "@types/jsdom": "^16.2.14",
- "@types/marked": "^0.7.2",
- "@types/node-fetch": "^2.5.5",
- "@types/react": "^16.9.56",
- "@types/react-dom": "^16.9.9",
- "@types/remarkable": "^2.0.0",
- "@types/service-worker-mock": "^2.0.1",
- "@typescript-eslint/eslint-plugin": "^4.16.1",
- "@typescript-eslint/parser": "^4.16.1",
- "babel-loader": "^8.0.6",
- "babel-plugin-macros": "^3.0.1",
- "babel-plugin-transform-inline-environment-variables": "^0.4.3",
- "css-loader": "^6.3.0",
- "css-minimizer-webpack-plugin": "^3.4.1",
- "dotenv": "^8.2.0",
- "eslint": "^7.21.0",
- "eslint-config-prettier": "^8.1.0",
- "eslint-config-typescript": "^3.0.0",
- "hast-util-select": "^5.0.2",
- "jest": "^27.0.1",
- "jsdom": "^19.0.0",
- "mini-css-extract-plugin": "^1.3.1",
- "prettier": "^2.3.0",
- "rehype-raw": "^6.1.1",
- "rehype-stringify": "^9.0.3",
- "remark": "^14.0.2",
- "remark-gfm": "^3.0.1",
- "remark-mdx": "^2.1.3",
- "remark-rehype": "^10.1.0",
- "rimraf": "^4.1.2",
- "sass": "^1.49.7",
- "sass-loader": "^12.6.0",
- "satori": "^0.0.43",
- "serve-static": "^1.14.1",
- "service-worker-mock": "^2.0.5",
- "style-loader": "^1.1.3",
- "swc-loader": "^0.2.3",
- "ts-jest": "^27.0.1",
- "ts-loader": "^9.2.2",
- "ts-node": "^10.2.1",
- "uglify-es": "^3.3.9",
- "webpack": "^5.38.1",
- "webpack-cli": "^4.7.0",
- "webpack-dev-server": "^3.10.3",
- "webpack-merge": "^5.8.0"
- }
-}
diff --git a/packages/applications/blog/scripts/buildRss.ts b/packages/applications/blog/scripts/buildRss.ts
deleted file mode 100644
index 5486f7fa..00000000
--- a/packages/applications/blog/scripts/buildRss.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { getRss } from "../src/build/util/getRss.js";
-import { writeContent } from "../src/contents-handler/contents-writer.js";
-
-export const buildRss = async () => {
- const languages = ["en", "ja"] as const;
- for (const language of languages) {
- const rss = await getRss(language);
-
- await writeContent(`./public/${language}/rss.xml`, rss);
- }
-};
-
-buildRss();
diff --git a/packages/applications/blog/scripts/buildSitemap.ts b/packages/applications/blog/scripts/buildSitemap.ts
deleted file mode 100644
index 7768547e..00000000
--- a/packages/applications/blog/scripts/buildSitemap.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { getSiteMap } from "../src/build/util/getSitemap.js";
-import { writeContent } from "../src/contents-handler/contents-writer.js";
-
-export const buildSitemap = async () => {
- const languages = ["en", "ja"] as const;
- for (const language of languages) {
- const sitemap = await getSiteMap(language);
-
- writeContent(`./public/${language}/sitemap.xml`, sitemap);
- }
-};
-
-buildSitemap();
diff --git a/packages/applications/blog/scripts/copyAssetsIntoPublic.ts b/packages/applications/blog/scripts/copyAssetsIntoPublic.ts
deleted file mode 100644
index 044ccf5e..00000000
--- a/packages/applications/blog/scripts/copyAssetsIntoPublic.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import fs from "node:fs";
-import path from "node:path";
-import { getContentAbsolutePath } from "../src/contents-handler/get-content-path";
-
-function copyFileSync(source: string, target: string) {
- let targetFile = target;
-
- // If target is a directory, a new file with the same name will be created
- if (fs.existsSync(target)) {
- if (fs.lstatSync(target).isDirectory()) {
- targetFile = path.join(target, path.basename(source));
- }
- }
-
- fs.writeFileSync(targetFile, fs.readFileSync(source));
-}
-
-function copyFolderRecursiveSync(source: string, target: string) {
- let files = [];
-
- // Check if folder needs to be created or integrated
- const targetFolder = path.join(target, path.basename(source));
- if (!fs.existsSync(targetFolder)) {
- fs.mkdirSync(targetFolder);
- }
-
- // Copy
- if (fs.lstatSync(source).isDirectory()) {
- files = fs.readdirSync(source);
- for (const file of files) {
- const curSource = path.join(source, file);
- if (fs.lstatSync(curSource).isDirectory()) {
- copyFolderRecursiveSync(curSource, targetFolder);
- } else {
- copyFileSync(curSource, targetFolder);
- }
- }
- }
-}
-
-copyFolderRecursiveSync(
- getContentAbsolutePath("./src/assets"),
- getContentAbsolutePath("./public"),
-);
diff --git a/packages/applications/blog/src/articles/draft/about-new-core-web-vitals.md b/packages/applications/blog/src/articles/draft/about-new-core-web-vitals.md
deleted file mode 100644
index d9fce44a..00000000
--- a/packages/applications/blog/src/articles/draft/about-new-core-web-vitals.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: 読み込み後のパフォーマンス指標, Smoothness と Responsiveness
-tags: [Programming, Web]
-description: |
- この記事は前回の記事の続きという感じです。これまた初学者向け
- [脱 create-react-app、React アプリの小さめ構築](https://www.shinyaigeek.com/p/22)
-
- この記事を読めば create-react-app なしで react アプリを構築できる様になるのですが、その続きとしてこの記事では react-router について扱おうと思います(開発していて思いの外どぶったので)
-
- react-router のエラー、割とありますよね.
- ていうか公式の API なり Document なりがよくわからないって感じはします。
- なんかよくわからないけど 404 エラーが出たり、CANNOT GET URL みたいなエラーが出たり、僕もこれでどぶって、いい感じの日本語記事が見つからなかったのもあってじゃあ紹介しておこうかなという感じです。
-publishedAt: 2019/08/12
-updatedAt: 2019/08/12
----
-
-## TL;DR
-
-## 初めに
-
-みなさんこんにちは. Shinyaigeek です. 唐突ですがみなさん, パフォーマンス好きですか?僕は好きです(唐突).
-
-Web アプリケーション, Web ページのパフォーマンスは昨今存在感を増しています. というのも Web アプリケーション, Web ページの指標(パフォーマンス以外のものも含まれます)のうち, さらに Core Web Vitals と呼ばれるものの指標を上げると SEO 面で有利になるようになりました, しそもそもパフォーマンスの良さはユーザー体験に直結し, より良い体験をユーザーに届けるために必要とされています.
-
-そんなパフォーマンスの新たな指標となりうる, Smoothness と Responsive について本項でまとめようと思います.
-
-## ふたつのパフォーマンス
-
-パフォーマンスというと, 読み込みのためのパフォーマンスが現在重視されている印象を感じます. ここでは I/O コストという言葉でそれを表現しようと思います.
-
-I/O コストが高い(=読み込みパフォーマンスが悪い)と, ページ遷移時に読み込み時間が長く真っ白なページが表示され
diff --git a/packages/applications/blog/src/articles/draft/about-wasmtime.md b/packages/applications/blog/src/articles/draft/about-wasmtime.md
deleted file mode 100644
index 8a71be96..00000000
--- a/packages/applications/blog/src/articles/draft/about-wasmtime.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: Wasmtimeがすごい
-tags: [Programming, WASM]
-description: |
- この記事は前回の記事の続きという感じです。これまた初学者向け
- [脱 create-react-app、React アプリの小さめ構築](https://www.shinyaigeek.com/p/22)
-
- この記事を読めば create-react-app なしで react アプリを構築できる様になるのですが、その続きとしてこの記事では react-router について扱おうと思います(開発していて思いの外どぶったので)
-
- react-router のエラー、割とありますよね.
- ていうか公式の API なり Document なりがよくわからないって感じはします。
- なんかよくわからないけど 404 エラーが出たり、CANNOT GET URL みたいなエラーが出たり、僕もこれでどぶって、いい感じの日本語記事が見つからなかったのもあってじゃあ紹介しておこうかなという感じです。
-publishedAt: 2019/08/12
-updatedAt: 2019/08/12
----
-
-## Wasmtime とは?
-
-wasmtime は sandbox された, wasm の runtime となっています.
diff --git a/packages/applications/blog/src/articles/draft/learn-browser-through-creating.md b/packages/applications/blog/src/articles/draft/learn-browser-through-creating.md
deleted file mode 100644
index dc050881..00000000
--- a/packages/applications/blog/src/articles/draft/learn-browser-through-creating.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: 作って学ぶブラウザ
-tags: [Programming, Web]
-description: |
- この記事は前回の記事の続きという感じです。これまた初学者向け
- [脱 create-react-app、React アプリの小さめ構築](https://www.shinyaigeek.com/p/22)
-
- この記事を読めば create-react-app なしで react アプリを構築できる様になるのですが、その続きとしてこの記事では react-router について扱おうと思います(開発していて思いの外どぶったので)
-
- react-router のエラー、割とありますよね.
- ていうか公式の API なり Document なりがよくわからないって感じはします。
- なんかよくわからないけど 404 エラーが出たり、CANNOT GET URL みたいなエラーが出たり、僕もこれでどぶって、いい感じの日本語記事が見つからなかったのもあってじゃあ紹介しておこうかなという感じです。
-publishedAt: 2019/08/12
-updatedAt: 2019/08/12
----
diff --git a/packages/applications/blog/src/articles/en/eslint-plugin-for-orthographical-variants.md b/packages/applications/blog/src/articles/en/eslint-plugin-for-orthographical-variants.md
deleted file mode 100644
index 7b48215c..00000000
--- a/packages/applications/blog/src/articles/en/eslint-plugin-for-orthographical-variants.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: ESLint plugin to ban orthographical variants in code
-tags: [Programming, JavaScript, DX, Frontend]
-description: I made ESLint plugin to ban orthographical variants in code so introduce it.
-publishedAt: 2022/03/15
-updatedAt: 2022/03/15
----
-
-## What is this
-
-I created an ESLint Plugin to ban orthographical variants in code. I realized that the cost-effectiveness of this plugin was not good when I wrote some tests for this plugin, and I gave birth to a monster that is neither interesting nor technically great nor convenient. This blog post is a grave marker for this monster.
-
-## Summary of this plugin
-
-As mentioned above, this is an ESLint Plugin that binds the orthographical variants in code.
-
-https://github.com/Shinyaigeek/eslint-plugin-ban-orthographical-variant
-
-```json
-{
- "Audio": {
- "synonyms": ["Speech", "Music"]
- },
- "Video": {
- "synonyms": ["Movie", "TV Show", "Game", "Animation", "Documentary"]
- },
- "Image": {
- "synonyms": ["Photo", "Drawing", "Painting", "Photograph", "Illustration"]
- }
-}
-```
-
-if you prepare the dictionary file json such above,
-
-```javascript
-const audioPath = 'hoge'; // ok
-const musicPath = 'hoge'; // warning!
-```
-
-This ESLint Plugin will bind such orthographical variants in JavaScript/TypeScript code. I think this plugin could support almost of the case (but perhaps, there is an omission).
-
-- Variable name
-- Function name
-- Class name
-- Method name
-- Enum name
-- Interface name
-- etc...
-
-I think I've probably covered most of them.
-
-## Motivation
-
-An orthographical variant is not rare, in specially in the codebase made by multiple people, but we are an engineer and intend to find meaning in anything, also in just an orthographical variant, and it also reduces the search-ability. It is also common that a word in a business domain becomes another word in a codebase, which makes it a mystery for newcomers to the project.
-
-In the first place, existing a lot of the term on a business domain brings difficulty, so in some case we have been enforced to manage such terms in a dictionary file. I thought it will be cool to ban bothering orthographical variants via managing such a dictionary file, so I created this plugin.
-
-## How to
-
-It is really easy but...
-
-1. Access a specific Node in AST
-2. get variable name
-3. check it whether it is an orthographical variant.
-
-```typescript
- VariableDeclarator(node) {
- const identifier = node.id;
-
- const variableNames = getVariableNameFromBindingName(identifier);
-
- const dictionaryPath = getDictionaryPath(options[0].dictionaryPath);
- const dictionary = getDictionary(dictionaryPath);
- for (const variableName of variableNames) {
- lintWithVariable(
- variableName,
- dictionary,
- (originWord, synomsysWord) =>
- report({
- node,
- messageId: "banOrthographicalVariant",
- data: {
- originWord,
- synomsysWord,
- },
- })
- );
- }
- },
-```
-
-The above code is just an example. It accesses the node of VariableDeclarator (=variable declaration).
-
-In VariableDeclarator, `node.id` can be the one of
-
-- `Identifier`
-
-```javascript
-const hoge = 'hoge';
-```
-
-- `ArrayPattern`
-
-```javascript
-const [hoge] = ['hoge'];
-```
-
-- `ObjectPattern`
-
-```javascript
-const { hoge } = { hoge: 'hoge' };
-```
-
-Get variable names in each case. (`ObjectPattern` and `ArrayPattern` are sometimes nested, so I needed to get them recursively).
-
-All that is left is to load the dictionary file and judge if it is a orthographical variant or not.
-
-If you want to see how it works, please check out test cases. https://github.com/Shinyaigeek/eslint-plugin-ban-orthographical-variant/blob/main/src/__tests__/ban-orthographical-variant.test.ts
-
-## Why not is this needed?
-
-When I was writing a dictionary file for mock for testing, I realized that I didn't want to write a dictionary file in the first place, so I think I should have hacked here.
diff --git a/packages/applications/blog/src/articles/en/introduction-treeche.md b/packages/applications/blog/src/articles/en/introduction-treeche.md
deleted file mode 100644
index 0089798b..00000000
--- a/packages/applications/blog/src/articles/en/introduction-treeche.md
+++ /dev/null
@@ -1,163 +0,0 @@
----
-title: Treeche, Tree-Shakable Checker for JavaScript/TypeScript Application to reduce bundle size
-tags: [Programming, JavaScript, DX, Frontend]
-description: I introduce treeche, an npm module to check whether or not your JavaScript/TypeScript module is tree-shakable. This is useful to reduce bundle size
-publishedAt: 2022/08/27
-updatedAt: 2022/08/27
----
-
-## What is Treeche?
-
-Treeche stands for **Tree** -Shakable **Che** cker. You can check whether or not your JavaScript/TypeScript Application is tree-shakable with Treeche, and this diagnose will allow you to reduce bundle size and optimize UserExperience!!
-
-[https://github.com/Shinyaigeek/treeche](https://github.com/Shinyaigeek/treeche)
-
-## Example
-
-```typescript
-// this is not tree-shakable because have side-effect
-
-const currentYear = new Date().getFullYear();
-
-export function getCurrentYear() {
- return `Year ${currentYear}`;
-}
-```
-
-The above code is not tree-shakable, because the above typescript module has side-effect.
-
-Treeche show the diagnose like below for the above code:
-
-```shell
-🚨 ~/application/side_effect.ts is not tree-shakable due to the following code:
-
-
-const currentYear = new Date().getFullYear();
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-```
-
-If you fix the module with side-effect to the module which does not have side-effect like below.
-
-```typescript
-export function getCurrentYear(currentDate: Date) {
- return `Year ${currentDate.getFullYear()}`;
-}
-```
-
-and Treeche will show the diagnose like below:
-
-```shell
-Congratulation 🎉 All files are tree-shakeable ✨
-```
-
-## What is side-effect in the context of module bundling?
-
-A side-effect in ECMAScript module context is a code that effects outside the module. For example, it is side-effect to set a variable to `window` object in module top-level like below:
-
-```javascript
-window.m = 1;
-export mod() {
- return 1;
-}
-```
-
-Of course, if this were to happend in `init` module, this will not be invoked on import so this will no longer be a side effect.
-
-## Why does side-effect cause an increase of bundle-size?
-
-You can check bundler's behavior with rollup relp:
-
-URL: [https://rollupjs.org/repl/?version=2.78.1&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QiUyMGhvZ2UlMjAlN0QlMjBmcm9tJTIwJTVDJTIyLiUyRm1vZCU1QyUyMiUzQiU1Q24lNUNuY29uc29sZS5sb2coaG9nZSgpKSUyMiUyQyUyMmlzRW50cnklMjIlM0F0cnVlJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMm1vZC5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJleHBvcnQlMjBmdW5jdGlvbiUyMGhvZ2UoKSUyMCU3QiU1Q24lNUN0cmV0dXJuJTIwMSUzQiU1Q24lN0QlNUNuJTVDbmV4cG9ydCUyMGZ1bmN0aW9uJTIwZnVnYSgpJTIwJTdCJTVDbiU1Q3RyZXR1cm4lMjBuZXclMjBEYXRlKCkuZ2V0RnVsbFllYXIoKSUzQiU1Q24lN0QlMjIlN0QlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZm9ybWF0JTIyJTNBJTIyZXMlMjIlMkMlMjJuYW1lJTIyJTNBJTIybXlCdW5kbGUlMjIlMkMlMjJhbWQlMjIlM0ElN0IlMjJpZCUyMiUzQSUyMiUyMiU3RCUyQyUyMmdsb2JhbHMlMjIlM0ElN0IlN0QlN0QlMkMlMjJleGFtcGxlJTIyJTNBbnVsbCU3RA==](https://rollupjs.org/repl/?version=2.78.1&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QiUyMGhvZ2UlMjAlN0QlMjBmcm9tJTIwJTVDJTIyLiUyRm1vZCU1QyUyMiUzQiU1Q24lNUNuY29uc29sZS5sb2coaG9nZSgpKSUyMiUyQyUyMmlzRW50cnklMjIlM0F0cnVlJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMm1vZC5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJleHBvcnQlMjBmdW5jdGlvbiUyMGhvZ2UoKSUyMCU3QiU1Q24lNUN0cmV0dXJuJTIwMSUzQiU1Q24lN0QlNUNuJTVDbmV4cG9ydCUyMGZ1bmN0aW9uJTIwZnVnYSgpJTIwJTdCJTVDbiU1Q3RyZXR1cm4lMjBuZXclMjBEYXRlKCkuZ2V0RnVsbFllYXIoKSUzQiU1Q24lN0QlMjIlN0QlNUQlMkMlMjJvcHRpb25zJTIyJTNBJTdCJTIyZm9ybWF0JTIyJTNBJTIyZXMlMjIlMkMlMjJuYW1lJTIyJTNBJTIybXlCdW5kbGUlMjIlMkMlMjJhbWQlMjIlM0ElN0IlMjJpZCUyMiUzQSUyMiUyMiU3RCUyQyUyMmdsb2JhbHMlMjIlM0ElN0IlN0QlN0QlMkMlMjJleGFtcGxlJTIyJTNBbnVsbCU3RA==)
-
-**main.js**
-
-```javascript
-import { hoge } from './mod';
-
-console.log(hoge());
-```
-
-**mod.js**
-
-```javascript
-export function hoge() {
- return 1;
-}
-
-export function fuga() {
- return new Date().getFullYear();
-}
-```
-
-and bundled result by rollup is like above:
-
-```javascript
-function hoge() {
- return 1;
-}
-
-console.log(hoge());
-```
-
-You know `fuga` module in `mod.js` is tree-shaken because the bundler know `fuga` module is not imported( and of course not used) and the bundler does not need to include `fuga` module to its bundle output, and this lead a decrease of bundle-size.
-
-However, if your edit `mod.js` like below:
-
-```javascript
-export function hoge() {
- return 1;
-}
-
-const _fuga = new Date().getFullYear();
-
-export function fuga() {
- return _fuga;
-}
-```
-
-the bundled output will be like above:
-
-```javascript
-function hoge() {
- return 1;
-}
-
-new Date().getFullYear();
-
-console.log(hoge());
-```
-
-[https://rollupjs.org/repl/?version=2.78.1&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QiUyMGhvZ2UlMjAlN0QlMjBmcm9tJTIwJTVDJTIyLiUyRm1vZCU1QyUyMiUzQiU1Q24lNUNuY29uc29sZS5sb2coaG9nZSgpKSUyMiUyQyUyMmlzRW50cnklMjIlM0F0cnVlJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMm1vZC5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJleHBvcnQlMjBmdW5jdGlvbiUyMGhvZ2UoKSUyMCU3QiU1Q24lNUN0cmV0dXJuJTIwMSUzQiU1Q24lN0QlNUNuJTVDbmNvbnN0JTIwX2Z1Z2ElMjAlM0QlMjBuZXclMjBEYXRlKCkuZ2V0RnVsbFllYXIoKSUzQiU1Q24lNUNuZXhwb3J0JTIwZnVuY3Rpb24lMjBmdWdhKCklMjAlN0IlNUNuJTVDdHJldHVybiUyMF9mdWdhJTNCJTVDbiU3RCUyMiU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJlcyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJteUJ1bmRsZSUyMiUyQyUyMmFtZCUyMiUzQSU3QiUyMmlkJTIyJTNBJTIyJTIyJTdEJTJDJTIyZ2xvYmFscyUyMiUzQSU3QiU3RCU3RCUyQyUyMmV4YW1wbGUlMjIlM0FudWxsJTdE](https://rollupjs.org/repl/?version=2.78.1&shareable=JTdCJTIybW9kdWxlcyUyMiUzQSU1QiU3QiUyMm5hbWUlMjIlM0ElMjJtYWluLmpzJTIyJTJDJTIyY29kZSUyMiUzQSUyMmltcG9ydCUyMCU3QiUyMGhvZ2UlMjAlN0QlMjBmcm9tJTIwJTVDJTIyLiUyRm1vZCU1QyUyMiUzQiU1Q24lNUNuY29uc29sZS5sb2coaG9nZSgpKSUyMiUyQyUyMmlzRW50cnklMjIlM0F0cnVlJTdEJTJDJTdCJTIybmFtZSUyMiUzQSUyMm1vZC5qcyUyMiUyQyUyMmNvZGUlMjIlM0ElMjJleHBvcnQlMjBmdW5jdGlvbiUyMGhvZ2UoKSUyMCU3QiU1Q24lNUN0cmV0dXJuJTIwMSUzQiU1Q24lN0QlNUNuJTVDbmNvbnN0JTIwX2Z1Z2ElMjAlM0QlMjBuZXclMjBEYXRlKCkuZ2V0RnVsbFllYXIoKSUzQiU1Q24lNUNuZXhwb3J0JTIwZnVuY3Rpb24lMjBmdWdhKCklMjAlN0IlNUNuJTVDdHJldHVybiUyMF9mdWdhJTNCJTVDbiU3RCUyMiU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlMjJmb3JtYXQlMjIlM0ElMjJlcyUyMiUyQyUyMm5hbWUlMjIlM0ElMjJteUJ1bmRsZSUyMiUyQyUyMmFtZCUyMiUzQSU3QiUyMmlkJTIyJTNBJTIyJTIyJTdEJTJDJTIyZ2xvYmFscyUyMiUzQSU3QiU3RCU3RCUyQyUyMmV4YW1wbGUlMjIlM0FudWxsJTdE)
-
-Why is an unnecessary `new Date().getFullYear()` in the bundled output? Because `new Date().getFullYear()` has side-effect. In JavaScript, imported module is executed once on import, so a bundler cannot remove a line which have side-effect like `new Date().getFullYear()`. If you import `fuga` module, it is expected that `new Date().getFullYear()` will be inserted in a bundled output, but if you don't import `fuga` module, it is not expected that `new Date().getFullYear()` will be inserted in a bundled output because the other module, `hoge`, does not need `const _fuga = new Date().getFullYear()` !!
-
-## How to use?
-
-First, global install Treeche.
-
-```shell
-npm install treeche -g
-treeche "**/*.ts" --excludes "node_modules" "**/*.test.ts"
-```
-
-## Options
-
-| kind | name | description | example |
-| :------: | :---------: | :----------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------: |
-| argument | inputs | input files to check tree-shakable. you can use Node glob pattern | treeche "src/\*_/_.ts" |
-| option | excludes | excludes files to filter from inputs. you can use Node glob pattern | treeche "src/\*_/_.ts" --e "node_modules" |
-| option | entry point | the unique entry point to check tree-shakable. if you specify input with this, treeche will bundle so you can check tree-shakable also in node_modules | treeche --entry-point ./src/main.ts |
-
-## How to work?
-
-The principle is really simple. Treeche runs rollup, which is JavaScript module bundler, internally to bundle the virtual entrypoint code which imports the input module like below.
-
-```javascript
-import './your-module';
-```
-
-If there is a side-effect in "./your-module", the output will include the code other than import.
-
-## Feedback
-
-This is experimental project, so your feedback is welcome!!
diff --git a/packages/applications/blog/src/articles/en/m17n-with-cloudflare-workers.md b/packages/applications/blog/src/articles/en/m17n-with-cloudflare-workers.md
deleted file mode 100644
index 38079034..00000000
--- a/packages/applications/blog/src/articles/en/m17n-with-cloudflare-workers.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: m17n with cloudflare workers
-tags: [Programming, CDN, CloudFlare]
-description: I implemented multilingual support on my blog page. I used cloudflare workers for that, and the experience was great, so I will leave it as a note.
-publishedAt: 2022/02/19
-updatedAt: 2022/02/19
----
-
-Hi there! I'm [Shinyaigeek(Shinobu Hayashi)](https://twitter.com/Shinyaigeek). I have been sending Pull Requests for OSS that I am interested in to pass the time, because I have a time till this April. As a result, I have been getting more and more Direct Messages on Twitter from the maintainers or who I have talked on issue or PR or discord, and according to cloudflare's analytics, more HTTP Request was came from foreign countries. Even if I consider about the HTTP Request from crawler bots, I think I should handle these requests. I decided to support English on my blog. I used cloudflare workers for one of the requirements, which is to sort the contents according to the "accept-language" of the HTTP Request Header. I got it right and had a good experience with just few working, so I thought I'd write this article as a note.
-
-## shinyaigeek.dev's architecture
-
-I start to describe shinyaigeek.dev's architecture. In shinyaigeek.dev, the components are written in JSX, and the articles are written in markdown. I used the handmade static site builder to convert JSX and markdown into HTML, and serve the output from h2o server on VPS in Japan. I don't need complex functionalities on my blog and I think there are few page transitions, so I don't use hydration of `react-dom`, so shinyaigeek.dev works without React on client. There are some parts that use JavaScript functionalities, but all of them are encapsulated in customElements.
-
-## where sort according to the "accept-language" of the HTTP Request Header
-
-First of all, I had the two options, to change the HTTP Response contents according to HTTP Request "accept-language" header on the same URL or to send HTTP 301 Response. I chosen the latter, redirect because I think in the former way, the shared-cache will be troublesome. If I rewrite HTTP Request's URL with cloudflare workers, we won't have to worry about it, but since it is a static blog, I did not want to send a different content for requests to the same URL, so I chose the latter. In order to redirect a client which send an HTTP Request, I need to return HTTP 301 Response, which can be returned from the origin server or cloudflare workers. Sending HTTP 301 Response from the origin server will cause delay due to geographic factors, especially I thought many of the user, the target of this multilingual support, send HTTP Request from the countries outside of Japan, so I decided to use cloudflare workers to handle this at the network edge in order to eliminate such delay.
-
-## How to?
-
-It was easy. There is some libraries which parses "accept-language" and determine preferred language, all I have to do is to choose the most appropriate one and use it.
-
-- [accept-language](https://www.npmjs.com/package/accept-language)
-- [accept-language-parser](https://www.npmjs.com/package/accept-language-parser)
-- [resolve-accept-language](https://www.npmjs.com/package/resolve-accept-language)
-
-points to make note of:
-
-- Don't do anything for HTTP Requests for other than HTML file.
-- In this case, I make HTTP Request which URL ends of `.html` or `/` target of this process.
-- Be careful of infinite loop
-- If you redirect to a page for en, and the client sends an HTTP Request in response, the following cloudflare workers will be fired again, and you will be redirected to a page for en again. This can be an infinite loop.
-- In shinyaigeek.dev, pages for "en" and "ja" are on different domains, so cloudflare workers are not fired when HTTP requests are sent to those domains. This is partly to prevent the infinite loop mentioned above, but also because people who access these URLs may want to read them in that language regardless of the accept-language.
-- For example, if you are using a pathname with a prefix such as `/en/` instead of a subdomain, you should be careful.
-
-The following is a simple code:
-
-### コード
-
-```typescript
-import resolveAcceptLanguage from 'resolve-accept-language';
-
-const handler = function (event: FetchEvent) {
- // get URL from HTTP Request
- const { url } = event.request;
- // get pathname and search query from HTTP Request
- const { pathname, search } = new URL(url);
-
- // Don't anything if the HTTP Request is not for HTML file
- if (!pathname.endsWith('.html') && !pathname.endsWith('/')) {
- return fetch(event.request);
- }
-
- // get accept-language from HTTP Request Header
- const acceptLanguage = event.request.headers.get('accept-language');
- if (!acceptLanguage) {
- return fetch(event.request);
- }
- // determine preferred language
- const preferredLanguage = resolveAcceptLanguage(acceptLanguage, ['en-US', 'ja-JP'], 'ja-JP');
-
- // if english is prefered, return HTTP 301 response
- if (preferedLanguage === 'en-US') {
- return Response.redirect(`https://en.shinyaigeek.dev${pathname}${search}`, 301);
- }
-
- return fetch(event.request);
-};
-
-addEventListener('fetch', (event) => {
- event.respondWith(handler(event));
-});
-```
-
-## Impressions
-
-Since I'm making a blog without using any framework, I have to think about this kind of multi-language support by myself, but it's fun to train myself. Also, recently, cloudflare workers and Compute@Edge have made it possible for front-end engineers to quickly control things like reverse proxy using familiar JS, which is a great time. Also, since we are doing this by force without using any frameworks, we would appreciate it if you could tell us if we should actually do this or that.
diff --git a/packages/applications/blog/src/articles/en/pnpm-outdated-command-supports-json-format.md b/packages/applications/blog/src/articles/en/pnpm-outdated-command-supports-json-format.md
deleted file mode 100644
index e5b3f0ed..00000000
--- a/packages/applications/blog/src/articles/en/pnpm-outdated-command-supports-json-format.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: pnpm outdated command supports JSON format output
-tags: [Blog, JavaScript, TypeScript, OSS]
-description: pnpm outdated command, which detects outdated packages in a project, now supports output in JSON format.
-publishedAt: 2022/11/06
-updatedAt: 2018/11/06
----
-
-## TL;DR
-
-- pnpm outdated command supports JSON format output
-- this allows us to make automation process of upgrading dependent packages in a project
-- I implemented this, so I write a blog post about this
-
-## What is pnpm?
-
-[https://pnpm.io/](https://pnpm.io/)
-
-pnpm is one of the package managers used in Node.js environment.
-
-pnpm uses symlink to provide fast and space-saving download of npm modules. Normally, when you install npm modules in a project, themselves, and all their nested dependencies, are downloaded under `node_modules`. In the case of pnpm, pnpm will store those modules in a single disk area across projects, and hard links to them will be placed under the project. In addition, when a project depends on a same modules but with different versions, pnpm saves only the differences of updates for each module, instead of installing each one in its entirety. These methods save space and speed up the installation of modules.
-
-Another feature of pnpm is that it boldly adds utility commands and options not found in other package managers.
-
-[![tweet i have joined pnpm](../../assets/pnpm-outdated-command-supports-json-format/tweet.png)](https://twitter.com/Shinyaigeek/status/1577947254916550656)
-
-As a member of pnpm, I have implemented JSON format output for the `pnpm outdated` command, and I write a blog post about it.
-
-## What is pnpm outdated command
-
-The `pnpm outdated` command is used to identify obsolete modules in your project that have been deprecated or have newer versions published.
-
-For example, when I execute `pnpm outdated` command in shinyaigeek.dev, I get a output like below.
-
-![result of pnpm outdated](../../../assets/pnpm-outdated-command-supports-json-format/pnpm-outdated.png)
-
-It also supports output in list format, so that I get an output like below with `pnpm outdated --table false`.
-
-![result of pnpm outdated --table false](../../../assets/pnpm-outdated-command-supports-json-format/pnpm-outdated-with-list.png)
-
-## Why did we want to support JSON format output in pnpm outdated
-
-the above table and list formats are too human-friendly and it is difficult to automate a process of updating dependent packages with such a formats.
-To facilitate automation, JSON format is now also supported as an output format.
-
-## About `--format` option
-
-The `--format` option was added to support JSON format output, but it slightly overlaps with `--table {boolean}` in terms of responsibilities. Also, since `--table` takes a boolean value, so it should not be possible to specify output in JSON format with `--table`, both in terms of naming and functionality. To solve these issues, `--format {table | list | json}` has been added and `--table` has been removed. ([implementation](https://github.com/pnpm/pnpm/blob/main/packages/plugin-commands-outdated/src/outdated.ts#L43)
-
-## JSON format output example
-
-`pnpm outdated --format json` will produce an output like below.
-
-```json
-{
- "uglify-es": {
- "current": "3.3.9",
- "latest": "3.3.9",
- "wanted": "3.3.9",
- "isDeprecated": true,
- "dependencyType": "dependencies"
- },
- "highlight.js": {
- "current": "11.3.1",
- "latest": "11.6.0",
- "wanted": "11.3.1",
- "isDeprecated": false,
- "dependencyType": "dependencies"
- },
- "@types/highlight.js": {
- "current": "9.12.4",
- "latest": "10.1.0",
- "wanted": "9.12.4",
- "isDeprecated": true,
- "dependencyType": "devDependencies"
- },
- ...
-```
-
-It looks easy to automate update process. As of 2022/11/06, it has not been released yet, but we expect it in the next minor release.
diff --git a/packages/applications/blog/src/articles/public/browser-on-browser.md b/packages/applications/blog/src/articles/public/browser-on-browser.md
deleted file mode 100644
index 8339951a..00000000
--- a/packages/applications/blog/src/articles/public/browser-on-browser.md
+++ /dev/null
@@ -1,166 +0,0 @@
----
-title: ブラウザの上でブラウザを動かす
-tags: [Programming, Rust, JavaScript, Web, Browser]
-description: 自作ブラウザを実装した続きとして, Chrome ブラウザで自作ブラウザを動かす, ということをした際の学習ノートです.
-publishedAt: 2021/12/10
-updatedAt: 2021/12/10
----
-
-## 初めに
-
-こんにちは, [しにゃい/Shinyaigeek](https://twitter.com/Shinyaigeek) です.
-
-
-趣味でちまちまと作っていた自作ブラウザ [Shinyaic](https://github.com/shinyaigeek/shinyaic) を Chrome 上で動かすことができたので, それについて勉強ノートを書こうと思います.
-
-最初に, 実際に Chrome 上でどのように自作ブラウザが動いているかの様子を載せたいと思います.
-
-**`` の値が空の時は paint ボタンを押すとこちらで用意したHTML & CSSで描画される**
-
-![Shinyaic with default html](../../../assets/browser-on-browser/shinyaic.png)
-
-**example.com を入力に入れると, いい感じに描画される**
-
-![shinyaic with example.com](../../../assets/browser-on-browser/example.png)
-
-(実はそもそも自作ブラウザが開発途中で, example.comくらいしかまともに描画できませんがそこはご了承ください...)
-
-[Shinyaic Wasm Playground](https://shinyaic-wasm-playground.vercel.app/) から実際に Chrome ブラウザの上で自作ブラウザを動かすことができます.
-
-playground 自体のリポジトリは [https://github.com/Shinyaigeek/ShinyaicWasmPlayground](https://github.com/Shinyaigeek/ShinyaicWasmPlayground) です.
-
-また補足になるのですが, **ブラウザ** という言葉がどこまでを含むのか, についても先に決めておきたいと思います. 本稿ではブラウザは HTML や CSS を受け取って, それを元に描画するところ, ある種の HTML Rendering Engine とも言える部分をブラウザとして進めていきます. なので, JS Engine や HTTP 通信をする, といった部分は本稿の対象外となります.
-
-本稿ではこの自作ブラウザの実装についての詳細には触れるつもりがありません, 興味がある方は以下のスライドを見てくださると幸いです.
-
-[![](https://files.speakerdeck.com/presentations/f70e84d625ae44949d1a6f6a87909011/slide_0.jpg?19382839)](https://speakerdeck.com/shinyaigeek/burauzazuo-rifalsesu-me)
-
-## ブラウザの仕組み概略図
-
-![browser system](/assets/browser-on-browser/sys.png)
-
-ブラウザの仕組みの概略図をおおまかに書くとこのようになっています. 本当は描画の処理はもう少し細かいんですし, ブラウザ固有の部分もあったりするのですがそこまで突っ込むと本題から外れてしまうため本稿では割愛します.
-
-まず HTML から DOM を構築, CSS から CSSOM を構築して, それらをもとに `RenderTree` を構築します. この `RenderTree` には描画に必要な情報が格納されます. DOM は **Document Object Model** という名の通り, HTML のマークアップの構造に基づいた情報が格納されています. 例えばこのノードはH1要素である...と言ったこと, あるいは `` 要素 や `` 要素など描画されるわけではない要素についてのノードも格納されています. 一方 `RenderTree` は描画に必要な情報のみが格納されるので, `display: none;` が付与されていたりあるいは `