├── .githooks └── pre-commit ├── .github ├── release.yml └── workflows │ └── test.yml ├── .gitignore ├── LICENSE ├── README.md ├── index.html ├── package.json ├── public ├── _redirects ├── favicon.ico ├── img │ └── hatenabookmark │ │ ├── favicon-114-precomposed.png │ │ ├── favicon-120-precomposed.png │ │ ├── favicon-144.png │ │ ├── favicon-152-precomposed.png │ │ ├── favicon-180-precomposed.png │ │ ├── favicon-192.png │ │ ├── favicon-32.png │ │ ├── favicon-36.png │ │ ├── favicon-48.png │ │ ├── favicon-57.png │ │ ├── favicon-60.png │ │ ├── favicon-72-precomposed.png │ │ ├── favicon-72.png │ │ ├── favicon-76.png │ │ ├── favicon-96.png │ │ ├── favicon.icns │ │ ├── favicon.ico │ │ ├── favicon.svg │ │ ├── hatenabookmark-logomark.png │ │ └── manifest.json └── manifest.json ├── server.js ├── src ├── Context.ts ├── component │ ├── FocusMatcher │ │ └── FocusMatcher.tsx │ ├── HatebuSearchList │ │ ├── HatebuSearchList.css │ │ └── HatebuSearchList.tsx │ ├── PageVisibility │ │ └── PageVisibility.tsx │ ├── README.md │ └── UserForm │ │ ├── UserForm.css │ │ └── UserForm.tsx ├── container │ ├── App.css │ ├── App.tsx │ ├── AppStore.ts │ ├── README.md │ ├── SearchContainer │ │ ├── SearchContainer.css │ │ ├── SearchContainer.tsx │ │ └── SearchContainerStore.ts │ └── UserFormContainer │ │ ├── UserFormContainer.css │ │ ├── UserFormContainer.tsx │ │ └── UserFormContainerStore.ts ├── domain │ ├── AppSession │ │ ├── AppSession.ts │ │ └── AppSessionFactory.ts │ └── Hatebu │ │ ├── Bookmark.ts │ │ ├── BookmarkDate.ts │ │ ├── BookmarkItem.ts │ │ ├── BookmarkItemFactory.ts │ │ ├── BookmarkSearch.ts │ │ ├── Hatebu.ts │ │ ├── HatebuFactory.ts │ │ └── __tests__ │ │ └── BookmarkSearch.test.ts ├── index.css ├── index.tsx ├── infra │ ├── API │ │ └── HatenaBookmarkFetcher.ts │ ├── browser │ │ └── browserHistory.ts │ └── repository │ │ ├── AppSessionRepository.ts │ │ ├── HatebuRepository.ts │ │ └── StorageManger.ts ├── react-app-env.d.ts ├── setupProxy.js └── use-case │ ├── CreateHatebuUserUseCase.ts │ ├── InitializeSystemUseCase.ts │ ├── RestoreLastSessionUseCase.ts │ ├── SwitchCurrentHatebuUserUseCase.ts │ └── hatebu-api │ ├── FetchHatenaBookmarkPayload.ts │ ├── InitializeWithNewHatenaBookmarkUseCase.ts │ └── RefreshHatenaBookmarkUseCase.ts ├── tools └── package-app.js ├── tsconfig.json ├── tsconfig.test.json ├── vite.config.ts ├── workbox-config.js ├── workers └── filter.ts └── yarn.lock /.githooks/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | npx --no-install lint-staged 3 | -------------------------------------------------------------------------------- /.github/release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/.github/release.yml -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/README.md -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/index.html -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/package.json -------------------------------------------------------------------------------- /public/_redirects: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/_redirects -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-114-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-114-precomposed.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-120-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-120-precomposed.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-144.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-152-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-152-precomposed.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-180-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-180-precomposed.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-192.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-32.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-36.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-48.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-57.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-60.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-72-precomposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-72-precomposed.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-72.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-76.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon-96.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon.icns -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon.ico -------------------------------------------------------------------------------- /public/img/hatenabookmark/favicon.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/favicon.svg -------------------------------------------------------------------------------- /public/img/hatenabookmark/hatenabookmark-logomark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/hatenabookmark-logomark.png -------------------------------------------------------------------------------- /public/img/hatenabookmark/manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/img/hatenabookmark/manifest.json -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/public/manifest.json -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/server.js -------------------------------------------------------------------------------- /src/Context.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/Context.ts -------------------------------------------------------------------------------- /src/component/FocusMatcher/FocusMatcher.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/component/FocusMatcher/FocusMatcher.tsx -------------------------------------------------------------------------------- /src/component/HatebuSearchList/HatebuSearchList.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/component/HatebuSearchList/HatebuSearchList.css -------------------------------------------------------------------------------- /src/component/HatebuSearchList/HatebuSearchList.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/component/HatebuSearchList/HatebuSearchList.tsx -------------------------------------------------------------------------------- /src/component/PageVisibility/PageVisibility.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/component/PageVisibility/PageVisibility.tsx -------------------------------------------------------------------------------- /src/component/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/component/README.md -------------------------------------------------------------------------------- /src/component/UserForm/UserForm.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/component/UserForm/UserForm.css -------------------------------------------------------------------------------- /src/component/UserForm/UserForm.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/component/UserForm/UserForm.tsx -------------------------------------------------------------------------------- /src/container/App.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/App.css -------------------------------------------------------------------------------- /src/container/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/App.tsx -------------------------------------------------------------------------------- /src/container/AppStore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/AppStore.ts -------------------------------------------------------------------------------- /src/container/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/README.md -------------------------------------------------------------------------------- /src/container/SearchContainer/SearchContainer.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/SearchContainer/SearchContainer.css -------------------------------------------------------------------------------- /src/container/SearchContainer/SearchContainer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/SearchContainer/SearchContainer.tsx -------------------------------------------------------------------------------- /src/container/SearchContainer/SearchContainerStore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/SearchContainer/SearchContainerStore.ts -------------------------------------------------------------------------------- /src/container/UserFormContainer/UserFormContainer.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/UserFormContainer/UserFormContainer.css -------------------------------------------------------------------------------- /src/container/UserFormContainer/UserFormContainer.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/UserFormContainer/UserFormContainer.tsx -------------------------------------------------------------------------------- /src/container/UserFormContainer/UserFormContainerStore.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/container/UserFormContainer/UserFormContainerStore.ts -------------------------------------------------------------------------------- /src/domain/AppSession/AppSession.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/AppSession/AppSession.ts -------------------------------------------------------------------------------- /src/domain/AppSession/AppSessionFactory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/AppSession/AppSessionFactory.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/Bookmark.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/Bookmark.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/BookmarkDate.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/BookmarkDate.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/BookmarkItem.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/BookmarkItem.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/BookmarkItemFactory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/BookmarkItemFactory.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/BookmarkSearch.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/BookmarkSearch.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/Hatebu.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/Hatebu.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/HatebuFactory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/HatebuFactory.ts -------------------------------------------------------------------------------- /src/domain/Hatebu/__tests__/BookmarkSearch.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/domain/Hatebu/__tests__/BookmarkSearch.test.ts -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/index.css -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/index.tsx -------------------------------------------------------------------------------- /src/infra/API/HatenaBookmarkFetcher.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/infra/API/HatenaBookmarkFetcher.ts -------------------------------------------------------------------------------- /src/infra/browser/browserHistory.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/infra/browser/browserHistory.ts -------------------------------------------------------------------------------- /src/infra/repository/AppSessionRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/infra/repository/AppSessionRepository.ts -------------------------------------------------------------------------------- /src/infra/repository/HatebuRepository.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/infra/repository/HatebuRepository.ts -------------------------------------------------------------------------------- /src/infra/repository/StorageManger.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/infra/repository/StorageManger.ts -------------------------------------------------------------------------------- /src/react-app-env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/react-app-env.d.ts -------------------------------------------------------------------------------- /src/setupProxy.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/setupProxy.js -------------------------------------------------------------------------------- /src/use-case/CreateHatebuUserUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/use-case/CreateHatebuUserUseCase.ts -------------------------------------------------------------------------------- /src/use-case/InitializeSystemUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/use-case/InitializeSystemUseCase.ts -------------------------------------------------------------------------------- /src/use-case/RestoreLastSessionUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/use-case/RestoreLastSessionUseCase.ts -------------------------------------------------------------------------------- /src/use-case/SwitchCurrentHatebuUserUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/use-case/SwitchCurrentHatebuUserUseCase.ts -------------------------------------------------------------------------------- /src/use-case/hatebu-api/FetchHatenaBookmarkPayload.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/use-case/hatebu-api/FetchHatenaBookmarkPayload.ts -------------------------------------------------------------------------------- /src/use-case/hatebu-api/InitializeWithNewHatenaBookmarkUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/use-case/hatebu-api/InitializeWithNewHatenaBookmarkUseCase.ts -------------------------------------------------------------------------------- /src/use-case/hatebu-api/RefreshHatenaBookmarkUseCase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/src/use-case/hatebu-api/RefreshHatenaBookmarkUseCase.ts -------------------------------------------------------------------------------- /tools/package-app.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/tools/package-app.js -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.test.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/tsconfig.test.json -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/vite.config.ts -------------------------------------------------------------------------------- /workbox-config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/workbox-config.js -------------------------------------------------------------------------------- /workers/filter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/workers/filter.ts -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/azu/hatebupwa/HEAD/yarn.lock --------------------------------------------------------------------------------