diff options
| author | MohamedBassem <me@mbassem.com> | 2024-03-13 21:43:44 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-03-14 16:40:45 +0000 |
| commit | 04572a8e5081b1e4871e273cde9dbaaa44c52fe0 (patch) | |
| tree | 8e993acb732a50d1306d4d6953df96c165c57f57 | |
| parent | 2df08ed08c065e8b91bc8df0266bd4bcbb062be4 (diff) | |
| download | karakeep-04572a8e5081b1e4871e273cde9dbaaa44c52fe0.tar.zst | |
structure: Create apps dir and copy tooling dir from t3-turbo repo
Diffstat (limited to '')
| -rw-r--r-- | .eslintrc.js | 43 | ||||
| -rw-r--r-- | .github/workflows/ci.yml | 50 | ||||
| -rw-r--r-- | .github/workflows/main.yml | 36 | ||||
| -rw-r--r-- | .gitignore | 3 | ||||
| -rw-r--r-- | apps/browser-extension/.eslintrc.cjs (renamed from packages/browser-extension/.eslintrc.cjs) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/.gitignore (renamed from packages/browser-extension/.gitignore) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/index.html (renamed from packages/browser-extension/index.html) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/manifest.json (renamed from packages/browser-extension/manifest.json) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/package.json (renamed from packages/browser-extension/package.json) | 25 | ||||
| -rw-r--r-- | apps/browser-extension/postcss.config.js (renamed from packages/browser-extension/postcss.config.js) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/public/logo-128.png (renamed from packages/browser-extension/public/logo-128.png) | bin | 2362 -> 2362 bytes | |||
| -rw-r--r-- | apps/browser-extension/public/logo-16.png (renamed from packages/browser-extension/public/logo-16.png) | bin | 287 -> 287 bytes | |||
| -rw-r--r-- | apps/browser-extension/public/logo-48.png (renamed from packages/browser-extension/public/logo-48.png) | bin | 780 -> 780 bytes | |||
| -rw-r--r-- | apps/browser-extension/public/logo.png (renamed from packages/browser-extension/public/logo.png) | bin | 412 -> 412 bytes | |||
| -rw-r--r-- | apps/browser-extension/src/BookmarkDeletedPage.tsx (renamed from packages/browser-extension/src/BookmarkDeletedPage.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/BookmarkSavedPage.tsx (renamed from packages/browser-extension/src/BookmarkSavedPage.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/Layout.tsx (renamed from packages/browser-extension/src/Layout.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/Logo.tsx (renamed from packages/browser-extension/src/Logo.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/NotConfiguredPage.tsx (renamed from packages/browser-extension/src/NotConfiguredPage.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/OptionsPage.tsx (renamed from packages/browser-extension/src/OptionsPage.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/SavePage.tsx (renamed from packages/browser-extension/src/SavePage.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/SignInPage.tsx (renamed from packages/browser-extension/src/SignInPage.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/Spinner.tsx (renamed from packages/browser-extension/src/Spinner.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/assets/react.svg (renamed from packages/browser-extension/src/assets/react.svg) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/index.css (renamed from packages/browser-extension/src/index.css) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/main.tsx (renamed from packages/browser-extension/src/main.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/utils/providers.tsx (renamed from packages/browser-extension/src/utils/providers.tsx) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/utils/settings.ts (renamed from packages/browser-extension/src/utils/settings.ts) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/utils/trpc.ts (renamed from packages/browser-extension/src/utils/trpc.ts) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/src/vite-env.d.ts (renamed from packages/browser-extension/src/vite-env.d.ts) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/tailwind.config.js (renamed from packages/browser-extension/tailwind.config.js) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/tsconfig.json (renamed from packages/browser-extension/tsconfig.json) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/tsconfig.node.json (renamed from packages/browser-extension/tsconfig.node.json) | 0 | ||||
| -rw-r--r-- | apps/browser-extension/vite.config.ts (renamed from packages/browser-extension/vite.config.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/.eslintrc.js (renamed from packages/mobile/.eslintrc.js) | 0 | ||||
| -rw-r--r-- | apps/mobile/.gitignore (renamed from packages/mobile/.gitignore) | 0 | ||||
| -rw-r--r-- | apps/mobile/.npmrc (renamed from packages/mobile/.npmrc) | 0 | ||||
| -rw-r--r-- | apps/mobile/app.json (renamed from packages/mobile/app.json) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/+not-found.tsx (renamed from packages/mobile/app/+not-found.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/_layout.tsx (renamed from packages/mobile/app/_layout.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/(tabs)/_layout.tsx (renamed from packages/mobile/app/dashboard/(tabs)/_layout.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/(tabs)/index.tsx (renamed from packages/mobile/app/dashboard/(tabs)/index.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/(tabs)/lists.tsx (renamed from packages/mobile/app/dashboard/(tabs)/lists.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/(tabs)/search.tsx (renamed from packages/mobile/app/dashboard/(tabs)/search.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/(tabs)/settings.tsx (renamed from packages/mobile/app/dashboard/(tabs)/settings.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/_layout.tsx (renamed from packages/mobile/app/dashboard/_layout.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/add-link.tsx (renamed from packages/mobile/app/dashboard/add-link.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/add-note.tsx (renamed from packages/mobile/app/dashboard/add-note.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/archive.tsx (renamed from packages/mobile/app/dashboard/archive.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/favourites.tsx (renamed from packages/mobile/app/dashboard/favourites.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/dashboard/lists/[slug].tsx (renamed from packages/mobile/app/dashboard/lists/[slug].tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/error.tsx (renamed from packages/mobile/app/error.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/index.tsx (renamed from packages/mobile/app/index.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/sharing.tsx (renamed from packages/mobile/app/sharing.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/app/signin.tsx (renamed from packages/mobile/app/signin.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/assets/blur.jpeg (renamed from packages/mobile/assets/blur.jpeg) | bin | 178818 -> 178818 bytes | |||
| -rw-r--r-- | apps/mobile/assets/icon.png (renamed from packages/mobile/assets/icon.png) | bin | 2362 -> 2362 bytes | |||
| -rw-r--r-- | apps/mobile/assets/splash.png (renamed from packages/mobile/assets/splash.png) | bin | 117993 -> 117993 bytes | |||
| -rw-r--r-- | apps/mobile/babel.config.js (renamed from packages/mobile/babel.config.js) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/Logo.tsx (renamed from packages/mobile/components/Logo.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/bookmarks/BookmarkCard.tsx (renamed from packages/mobile/components/bookmarks/BookmarkCard.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/bookmarks/BookmarkList.tsx (renamed from packages/mobile/components/bookmarks/BookmarkList.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/ui/ActionButton.tsx (renamed from packages/mobile/components/ui/ActionButton.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/ui/Button.tsx (renamed from packages/mobile/components/ui/Button.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/ui/Divider.tsx (renamed from packages/mobile/components/ui/Divider.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/ui/FullPageSpinner.tsx (renamed from packages/mobile/components/ui/FullPageSpinner.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/ui/Input.tsx (renamed from packages/mobile/components/ui/Input.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/ui/Skeleton.tsx (renamed from packages/mobile/components/ui/Skeleton.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/components/ui/Toast.tsx (renamed from packages/mobile/components/ui/Toast.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/eas.json (renamed from packages/mobile/eas.json) | 0 | ||||
| -rw-r--r-- | apps/mobile/globals.css (renamed from packages/mobile/globals.css) | 0 | ||||
| -rw-r--r-- | apps/mobile/lib/last-shared-intent.ts (renamed from packages/mobile/lib/last-shared-intent.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/lib/providers.tsx (renamed from packages/mobile/lib/providers.tsx) | 0 | ||||
| -rw-r--r-- | apps/mobile/lib/session.ts (renamed from packages/mobile/lib/session.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/lib/settings.ts (renamed from packages/mobile/lib/settings.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/lib/storage-state.ts (renamed from packages/mobile/lib/storage-state.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/lib/trpc.ts (renamed from packages/mobile/lib/trpc.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/lib/utils.ts (renamed from packages/mobile/lib/utils.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/metro.config.js | 58 | ||||
| -rw-r--r-- | apps/mobile/nativewind-env.d.ts (renamed from packages/mobile/nativewind-env.d.ts) | 0 | ||||
| -rw-r--r-- | apps/mobile/package.json (renamed from packages/mobile/package.json) | 32 | ||||
| -rw-r--r-- | apps/mobile/tailwind.config.ts (renamed from packages/mobile/tailwind.config.js) | 10 | ||||
| -rw-r--r-- | apps/mobile/tsconfig.json | 14 | ||||
| -rw-r--r-- | apps/web/README.md (renamed from packages/web/README.md) | 0 | ||||
| -rw-r--r-- | apps/web/app/api/auth/[...nextauth]/route.tsx (renamed from packages/web/app/api/auth/[...nextauth]/route.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/api/trpc/[trpc]/route.ts (renamed from packages/web/app/api/trpc/[trpc]/route.ts) | 2 | ||||
| -rw-r--r-- | apps/web/app/dashboard/admin/page.tsx (renamed from packages/web/app/dashboard/admin/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/archive/page.tsx (renamed from packages/web/app/dashboard/archive/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/bookmarks/layout.tsx (renamed from packages/web/app/dashboard/bookmarks/layout.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/bookmarks/loading.tsx (renamed from packages/web/app/dashboard/bookmarks/loading.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/bookmarks/page.tsx (renamed from packages/web/app/dashboard/bookmarks/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/error.tsx (renamed from packages/web/app/dashboard/error.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/favourites/page.tsx (renamed from packages/web/app/dashboard/favourites/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/layout.tsx (renamed from packages/web/app/dashboard/layout.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/lists/[listId]/page.tsx (renamed from packages/web/app/dashboard/lists/[listId]/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/lists/page.tsx (renamed from packages/web/app/dashboard/lists/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/not-found.tsx (renamed from packages/web/app/dashboard/not-found.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/preview/[bookmarkId]/page.tsx (renamed from packages/web/app/dashboard/preview/[bookmarkId]/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/search/page.tsx (renamed from packages/web/app/dashboard/search/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/settings/page.tsx (renamed from packages/web/app/dashboard/settings/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/tags/[tagName]/page.tsx (renamed from packages/web/app/dashboard/tags/[tagName]/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/dashboard/tags/page.tsx (renamed from packages/web/app/dashboard/tags/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/favicon.ico (renamed from packages/web/app/favicon.ico) | bin | 15406 -> 15406 bytes | |||
| -rw-r--r-- | apps/web/app/globals.css (renamed from packages/web/app/globals.css) | 0 | ||||
| -rw-r--r-- | apps/web/app/layout.tsx (renamed from packages/web/app/layout.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/page.tsx (renamed from packages/web/app/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/app/signin/page.tsx (renamed from packages/web/app/signin/page.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components.json (renamed from packages/web/components.json) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/AddLinkButton.tsx (renamed from packages/web/components/dashboard/bookmarks/AddLinkButton.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/AddToListModal.tsx (renamed from packages/web/components/dashboard/bookmarks/AddToListModal.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx (renamed from packages/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx (renamed from packages/web/components/dashboard/bookmarks/BookmarkOptions.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx (renamed from packages/web/components/dashboard/bookmarks/BookmarkPreview.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx (renamed from packages/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/BookmarkedTextViewer.tsx (renamed from packages/web/components/dashboard/bookmarks/BookmarkedTextViewer.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/Bookmarks.tsx (renamed from packages/web/components/dashboard/bookmarks/Bookmarks.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx (renamed from packages/web/components/dashboard/bookmarks/BookmarksGrid.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/LinkCard.tsx (renamed from packages/web/components/dashboard/bookmarks/LinkCard.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/TagList.tsx (renamed from packages/web/components/dashboard/bookmarks/TagList.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/TagModal.tsx (renamed from packages/web/components/dashboard/bookmarks/TagModal.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/TextCard.tsx (renamed from packages/web/components/dashboard/bookmarks/TextCard.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/bookmarks/TopNav.tsx (renamed from packages/web/components/dashboard/bookmarks/TopNav.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/lists/AllListsView.tsx (renamed from packages/web/components/dashboard/lists/AllListsView.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/lists/DeleteListButton.tsx (renamed from packages/web/components/dashboard/lists/DeleteListButton.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/lists/ListView.tsx (renamed from packages/web/components/dashboard/lists/ListView.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/search/SearchInput.tsx (renamed from packages/web/components/dashboard/search/SearchInput.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/settings/AddApiKey.tsx (renamed from packages/web/components/dashboard/settings/AddApiKey.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/settings/ApiKeySettings.tsx (renamed from packages/web/components/dashboard/settings/ApiKeySettings.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/settings/DeleteApiKey.tsx (renamed from packages/web/components/dashboard/settings/DeleteApiKey.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/sidebar/AllLists.tsx (renamed from packages/web/components/dashboard/sidebar/AllLists.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/sidebar/ModileSidebar.tsx (renamed from packages/web/components/dashboard/sidebar/ModileSidebar.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx (renamed from packages/web/components/dashboard/sidebar/ModileSidebarItem.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/sidebar/NewListModal.tsx (renamed from packages/web/components/dashboard/sidebar/NewListModal.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/sidebar/Sidebar.tsx (renamed from packages/web/components/dashboard/sidebar/Sidebar.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/sidebar/SidebarItem.tsx (renamed from packages/web/components/dashboard/sidebar/SidebarItem.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/dashboard/sidebar/SidebarProfileOptions.tsx (renamed from packages/web/components/dashboard/sidebar/SidebarProfileOptions.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/signin/CredentialsForm.tsx (renamed from packages/web/components/signin/CredentialsForm.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/signin/SignInForm.tsx (renamed from packages/web/components/signin/SignInForm.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/signin/SignInProviderButton.tsx (renamed from packages/web/components/signin/SignInProviderButton.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/action-button.tsx (renamed from packages/web/components/ui/action-button.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/back-button.tsx (renamed from packages/web/components/ui/back-button.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/badge.tsx (renamed from packages/web/components/ui/badge.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/button.tsx (renamed from packages/web/components/ui/button.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/card.tsx (renamed from packages/web/components/ui/card.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/dialog.tsx (renamed from packages/web/components/ui/dialog.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/dropdown-menu.tsx (renamed from packages/web/components/ui/dropdown-menu.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/form.tsx (renamed from packages/web/components/ui/form.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/imageCard.tsx (renamed from packages/web/components/ui/imageCard.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/input.tsx (renamed from packages/web/components/ui/input.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/label.tsx (renamed from packages/web/components/ui/label.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/popover.tsx (renamed from packages/web/components/ui/popover.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/scroll-area.tsx (renamed from packages/web/components/ui/scroll-area.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/select.tsx (renamed from packages/web/components/ui/select.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/separator.tsx (renamed from packages/web/components/ui/separator.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/skeleton.tsx (renamed from packages/web/components/ui/skeleton.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/spinner.tsx (renamed from packages/web/components/ui/spinner.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/table.tsx (renamed from packages/web/components/ui/table.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/tabs.tsx (renamed from packages/web/components/ui/tabs.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/textarea.tsx (renamed from packages/web/components/ui/textarea.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/toast.tsx (renamed from packages/web/components/ui/toast.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/toaster.tsx (renamed from packages/web/components/ui/toaster.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/components/ui/use-toast.ts (renamed from packages/web/components/ui/use-toast.ts) | 0 | ||||
| -rw-r--r-- | apps/web/lib/bookmarkUtils.tsx (renamed from packages/web/lib/bookmarkUtils.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/lib/hooks/bookmark-search.ts (renamed from packages/web/lib/hooks/bookmark-search.ts) | 0 | ||||
| -rw-r--r-- | apps/web/lib/providers.tsx (renamed from packages/web/lib/providers.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/lib/trpc.tsx (renamed from packages/web/lib/trpc.tsx) | 0 | ||||
| -rw-r--r-- | apps/web/lib/utils.ts (renamed from packages/web/lib/utils.ts) | 0 | ||||
| -rw-r--r-- | apps/web/next.config.mjs (renamed from packages/web/next.config.mjs) | 10 | ||||
| -rw-r--r-- | apps/web/package.json (renamed from packages/web/package.json) | 53 | ||||
| -rw-r--r-- | apps/web/postcss.config.cjs (renamed from packages/web/postcss.config.js) | 0 | ||||
| -rw-r--r-- | apps/web/public/blur.avif (renamed from packages/web/public/blur.avif) | bin | 52746 -> 52746 bytes | |||
| -rw-r--r-- | apps/web/public/icons/logo-128.png (renamed from packages/web/public/icons/logo-128.png) | bin | 2362 -> 2362 bytes | |||
| -rw-r--r-- | apps/web/public/icons/logo-16.png (renamed from packages/web/public/icons/logo-16.png) | bin | 287 -> 287 bytes | |||
| -rw-r--r-- | apps/web/public/icons/logo-48.png (renamed from packages/web/public/icons/logo-48.png) | bin | 780 -> 780 bytes | |||
| -rw-r--r-- | apps/web/public/manifest.json (renamed from packages/web/public/manifest.json) | 0 | ||||
| -rw-r--r-- | apps/web/server/api/client.ts (renamed from packages/web/server/api/client.ts) | 0 | ||||
| -rw-r--r-- | apps/web/server/auth.ts (renamed from packages/web/server/auth.ts) | 0 | ||||
| -rw-r--r-- | apps/web/tailwind.config.ts (renamed from packages/web/tailwind.config.ts) | 0 | ||||
| -rw-r--r-- | apps/web/tsconfig.json | 17 | ||||
| -rw-r--r-- | apps/web/vitest.config.ts (renamed from packages/web/vitest.config.ts) | 0 | ||||
| -rw-r--r-- | apps/workers/crawlerWorker.ts (renamed from packages/workers/crawler.ts) | 0 | ||||
| -rw-r--r-- | apps/workers/index.ts (renamed from packages/workers/index.ts) | 6 | ||||
| -rw-r--r-- | apps/workers/openaiWorker.ts (renamed from packages/workers/openai.ts) | 0 | ||||
| -rw-r--r-- | apps/workers/package.json (renamed from packages/workers/package.json) | 17 | ||||
| -rw-r--r-- | apps/workers/searchWorker.ts (renamed from packages/workers/search.ts) | 0 | ||||
| -rw-r--r-- | apps/workers/tsconfig.json | 10 | ||||
| -rw-r--r-- | package.json | 34 | ||||
| -rw-r--r-- | packages/db/package.json | 13 | ||||
| -rw-r--r-- | packages/db/tsconfig.json | 7 | ||||
| -rw-r--r-- | packages/mobile/metro.config.js | 8 | ||||
| -rw-r--r-- | packages/mobile/tsconfig.json | 10 | ||||
| -rw-r--r-- | packages/shared/package.json | 15 | ||||
| -rw-r--r-- | packages/shared/tsconfig.json | 9 | ||||
| -rw-r--r-- | packages/trpc/package.json | 19 | ||||
| -rw-r--r-- | packages/trpc/tsconfig.json | 9 | ||||
| -rw-r--r-- | pnpm-lock.yaml | 1296 | ||||
| -rw-r--r-- | pnpm-workspace.yaml | 2 | ||||
| -rw-r--r-- | tooling/eslint/base.js | 43 | ||||
| -rw-r--r-- | tooling/eslint/nextjs.js | 10 | ||||
| -rw-r--r-- | tooling/eslint/package.json | 42 | ||||
| -rw-r--r-- | tooling/eslint/react.js | 24 | ||||
| -rw-r--r-- | tooling/eslint/tsconfig.json | 8 | ||||
| -rw-r--r-- | tooling/github/package.json | 3 | ||||
| -rw-r--r-- | tooling/github/setup/action.yml | 19 | ||||
| -rw-r--r-- | tooling/prettier/index.js | 36 | ||||
| -rw-r--r-- | tooling/prettier/package.json | 24 | ||||
| -rw-r--r-- | tooling/prettier/tsconfig.json | 8 | ||||
| -rw-r--r-- | tooling/tailwind/base.ts | 48 | ||||
| -rw-r--r-- | tooling/tailwind/native.ts | 9 | ||||
| -rw-r--r-- | tooling/tailwind/package.json | 37 | ||||
| -rw-r--r-- | tooling/tailwind/tsconfig.json | 8 | ||||
| -rw-r--r-- | tooling/tailwind/web.ts | 40 | ||||
| -rw-r--r-- | tooling/typescript/base.json (renamed from packages/web/tsconfig.json) | 19 | ||||
| -rw-r--r-- | tooling/typescript/node.json (renamed from packages/workers/tsconfig.json) | 5 | ||||
| -rw-r--r-- | tooling/typescript/package.json | 9 | ||||
| -rw-r--r-- | turbo.json | 49 |
216 files changed, 1544 insertions, 705 deletions
diff --git a/.eslintrc.js b/.eslintrc.js deleted file mode 100644 index eccbab28..00000000 --- a/.eslintrc.js +++ /dev/null @@ -1,43 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - es2021: true, - }, - extends: [ - "next/core-web-vitals", - "eslint:recommended", - "plugin:react/recommended", - "plugin:@next/next/recommended", - "plugin:tailwindcss/recommended", - "plugin:@typescript-eslint/recommended", - "next", - "prettier", - "plugin:@tanstack/eslint-plugin-query/recommended", - ], - plugins: ["tailwindcss", "@typescript-eslint", "@tanstack/query"], - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - }, - ignorePatterns: ["postcss.config.js"], - rules: { - "@next/next/no-html-link-for-pages": "off", - "tailwindcss/no-custom-classname": "off", - "tailwindcss/migration-from-tailwind-2": "off", - - "@typescript-eslint/no-unused-vars": [ - "off", - { - varsIgnorePattern: "^_", - argsIgnorePattern: "^_", - }, - ], - }, - overrides: [ - { - files: ["*.ts", "*.tsx"], - parser: "@typescript-eslint/parser", - }, - ], -}; diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..fca0e286 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,50 @@ +name: CI + +on: + pull_request: + branches: ["*"] + push: + branches: ["main"] + merge_group: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + +# You can leverage Vercel Remote Caching with Turbo to speed up your builds +env: + FORCE_COLOR: 3 + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup + uses: ./tooling/github/setup + + - name: Lint + run: pnpm lint && pnpm lint:ws + + format: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup + uses: ./tooling/github/setup + + - name: Format + run: pnpm format + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup + uses: ./tooling/github/setup + + - name: Typecheck + run: pnpm typecheck diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 1662bbe9..00000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Build and lint -on: - push: - branches: - - main - pull_request: -jobs: - build-lint: - name: Build and Lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - # This is a workaround for: https://github.com/actions/setup-node/issues/899 - - name: Enable Corepack before setting up Node - run: corepack enable - - uses: actions/setup-node@v4 - with: - node-version: 21 - cache: "pnpm" - - name: Install deps - env: - PUPPETEER_SKIP_DOWNLOAD: true - run: pnpm install - - name: Format - run: pnpm format:check - - name: Lint - run: pnpm lint - - name: Build the workers package - working-directory: packages/workers - run: pnpm typecheck - - name: Build web app - working-directory: packages/web - run: pnpm run build - - name: Build the browser extension - working-directory: packages/browser-extension - run: pnpm build @@ -46,3 +46,6 @@ next-env.d.ts **/public/sw.js.map **/public/workbox-*.js.map **/public/worker-*.js.map + +# Turbo +.turbo diff --git a/packages/browser-extension/.eslintrc.cjs b/apps/browser-extension/.eslintrc.cjs index 450106a4..450106a4 100644 --- a/packages/browser-extension/.eslintrc.cjs +++ b/apps/browser-extension/.eslintrc.cjs diff --git a/packages/browser-extension/.gitignore b/apps/browser-extension/.gitignore index a547bf36..a547bf36 100644 --- a/packages/browser-extension/.gitignore +++ b/apps/browser-extension/.gitignore diff --git a/packages/browser-extension/index.html b/apps/browser-extension/index.html index e4b78eae..e4b78eae 100644 --- a/packages/browser-extension/index.html +++ b/apps/browser-extension/index.html diff --git a/packages/browser-extension/manifest.json b/apps/browser-extension/manifest.json index d3a27e7b..d3a27e7b 100644 --- a/packages/browser-extension/manifest.json +++ b/apps/browser-extension/manifest.json diff --git a/packages/browser-extension/package.json b/apps/browser-extension/package.json index b205a257..21cffb50 100644 --- a/packages/browser-extension/package.json +++ b/apps/browser-extension/package.json @@ -7,7 +7,8 @@ "dev": "vite", "build": "tsc && vite build", "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "preview": "vite preview" + "preview": "vite preview", + "typecheck": "tsc --noEmit" }, "dependencies": { "@hoarder/trpc": "0.1.0", @@ -16,7 +17,6 @@ "@trpc/next": "11.0.0-next-beta.308", "@trpc/react-query": "11.0.0-next-beta.308", "@trpc/server": "11.0.0-next-beta.308", - "@types/chrome": "^0.0.260", "lucide-react": "^0.330.0", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -26,19 +26,30 @@ "zod": "^3.22.4" }, "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tailwind-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", "@crxjs/vite-plugin": "^1.0.14", "@types/react": "^18.2.55", "@types/react-dom": "^18.2.19", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", + "@types/chrome": "^0.0.260", "@vitejs/plugin-react-swc": "^3.5.0", "autoprefixer": "^10.4.17", - "eslint": "^8.56.0", + "eslint": "^8.57.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.5", "postcss": "^8.4.35", "tailwindcss": "^3.4.1", - "typescript": "^5.2.2", + "typescript": "^5.3.3", "vite": "^5.1.0" - } + }, + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base", + "@hoarder/eslint-config/react" + ] + }, + "prettier": "@hoarder/prettier-config" } diff --git a/packages/browser-extension/postcss.config.js b/apps/browser-extension/postcss.config.js index 2aa7205d..2aa7205d 100644 --- a/packages/browser-extension/postcss.config.js +++ b/apps/browser-extension/postcss.config.js diff --git a/packages/browser-extension/public/logo-128.png b/apps/browser-extension/public/logo-128.png Binary files differindex 71ead90c..71ead90c 100644 --- a/packages/browser-extension/public/logo-128.png +++ b/apps/browser-extension/public/logo-128.png diff --git a/packages/browser-extension/public/logo-16.png b/apps/browser-extension/public/logo-16.png Binary files differindex dd864d44..dd864d44 100644 --- a/packages/browser-extension/public/logo-16.png +++ b/apps/browser-extension/public/logo-16.png diff --git a/packages/browser-extension/public/logo-48.png b/apps/browser-extension/public/logo-48.png Binary files differindex 7ba1cd49..7ba1cd49 100644 --- a/packages/browser-extension/public/logo-48.png +++ b/apps/browser-extension/public/logo-48.png diff --git a/packages/browser-extension/public/logo.png b/apps/browser-extension/public/logo.png Binary files differindex ebe0a6a3..ebe0a6a3 100644 --- a/packages/browser-extension/public/logo.png +++ b/apps/browser-extension/public/logo.png diff --git a/packages/browser-extension/src/BookmarkDeletedPage.tsx b/apps/browser-extension/src/BookmarkDeletedPage.tsx index 23e1d9da..23e1d9da 100644 --- a/packages/browser-extension/src/BookmarkDeletedPage.tsx +++ b/apps/browser-extension/src/BookmarkDeletedPage.tsx diff --git a/packages/browser-extension/src/BookmarkSavedPage.tsx b/apps/browser-extension/src/BookmarkSavedPage.tsx index f25a83ba..f25a83ba 100644 --- a/packages/browser-extension/src/BookmarkSavedPage.tsx +++ b/apps/browser-extension/src/BookmarkSavedPage.tsx diff --git a/packages/browser-extension/src/Layout.tsx b/apps/browser-extension/src/Layout.tsx index f8279a18..f8279a18 100644 --- a/packages/browser-extension/src/Layout.tsx +++ b/apps/browser-extension/src/Layout.tsx diff --git a/packages/browser-extension/src/Logo.tsx b/apps/browser-extension/src/Logo.tsx index 6b29e68c..6b29e68c 100644 --- a/packages/browser-extension/src/Logo.tsx +++ b/apps/browser-extension/src/Logo.tsx diff --git a/packages/browser-extension/src/NotConfiguredPage.tsx b/apps/browser-extension/src/NotConfiguredPage.tsx index fc5c8f47..fc5c8f47 100644 --- a/packages/browser-extension/src/NotConfiguredPage.tsx +++ b/apps/browser-extension/src/NotConfiguredPage.tsx diff --git a/packages/browser-extension/src/OptionsPage.tsx b/apps/browser-extension/src/OptionsPage.tsx index 6407b3cc..6407b3cc 100644 --- a/packages/browser-extension/src/OptionsPage.tsx +++ b/apps/browser-extension/src/OptionsPage.tsx diff --git a/packages/browser-extension/src/SavePage.tsx b/apps/browser-extension/src/SavePage.tsx index 638af149..638af149 100644 --- a/packages/browser-extension/src/SavePage.tsx +++ b/apps/browser-extension/src/SavePage.tsx diff --git a/packages/browser-extension/src/SignInPage.tsx b/apps/browser-extension/src/SignInPage.tsx index 6db7c348..6db7c348 100644 --- a/packages/browser-extension/src/SignInPage.tsx +++ b/apps/browser-extension/src/SignInPage.tsx diff --git a/packages/browser-extension/src/Spinner.tsx b/apps/browser-extension/src/Spinner.tsx index 9fd8839b..9fd8839b 100644 --- a/packages/browser-extension/src/Spinner.tsx +++ b/apps/browser-extension/src/Spinner.tsx diff --git a/packages/browser-extension/src/assets/react.svg b/apps/browser-extension/src/assets/react.svg index 6c87de9b..6c87de9b 100644 --- a/packages/browser-extension/src/assets/react.svg +++ b/apps/browser-extension/src/assets/react.svg diff --git a/packages/browser-extension/src/index.css b/apps/browser-extension/src/index.css index e7d4bb2f..e7d4bb2f 100644 --- a/packages/browser-extension/src/index.css +++ b/apps/browser-extension/src/index.css diff --git a/packages/browser-extension/src/main.tsx b/apps/browser-extension/src/main.tsx index 085a5a69..085a5a69 100644 --- a/packages/browser-extension/src/main.tsx +++ b/apps/browser-extension/src/main.tsx diff --git a/packages/browser-extension/src/utils/providers.tsx b/apps/browser-extension/src/utils/providers.tsx index d20f2512..d20f2512 100644 --- a/packages/browser-extension/src/utils/providers.tsx +++ b/apps/browser-extension/src/utils/providers.tsx diff --git a/packages/browser-extension/src/utils/settings.ts b/apps/browser-extension/src/utils/settings.ts index 37f474c0..37f474c0 100644 --- a/packages/browser-extension/src/utils/settings.ts +++ b/apps/browser-extension/src/utils/settings.ts diff --git a/packages/browser-extension/src/utils/trpc.ts b/apps/browser-extension/src/utils/trpc.ts index da21a55a..da21a55a 100644 --- a/packages/browser-extension/src/utils/trpc.ts +++ b/apps/browser-extension/src/utils/trpc.ts diff --git a/packages/browser-extension/src/vite-env.d.ts b/apps/browser-extension/src/vite-env.d.ts index 11f02fe2..11f02fe2 100644 --- a/packages/browser-extension/src/vite-env.d.ts +++ b/apps/browser-extension/src/vite-env.d.ts diff --git a/packages/browser-extension/tailwind.config.js b/apps/browser-extension/tailwind.config.js index 1c0c7c87..1c0c7c87 100644 --- a/packages/browser-extension/tailwind.config.js +++ b/apps/browser-extension/tailwind.config.js diff --git a/packages/browser-extension/tsconfig.json b/apps/browser-extension/tsconfig.json index a7fc6fbf..a7fc6fbf 100644 --- a/packages/browser-extension/tsconfig.json +++ b/apps/browser-extension/tsconfig.json diff --git a/packages/browser-extension/tsconfig.node.json b/apps/browser-extension/tsconfig.node.json index 97ede7ee..97ede7ee 100644 --- a/packages/browser-extension/tsconfig.node.json +++ b/apps/browser-extension/tsconfig.node.json diff --git a/packages/browser-extension/vite.config.ts b/apps/browser-extension/vite.config.ts index 29c6bc6e..29c6bc6e 100644 --- a/packages/browser-extension/vite.config.ts +++ b/apps/browser-extension/vite.config.ts diff --git a/packages/mobile/.eslintrc.js b/apps/mobile/.eslintrc.js index 53beac49..53beac49 100644 --- a/packages/mobile/.eslintrc.js +++ b/apps/mobile/.eslintrc.js diff --git a/packages/mobile/.gitignore b/apps/mobile/.gitignore index 2920e5a8..2920e5a8 100644 --- a/packages/mobile/.gitignore +++ b/apps/mobile/.gitignore diff --git a/packages/mobile/.npmrc b/apps/mobile/.npmrc index d67f3748..d67f3748 100644 --- a/packages/mobile/.npmrc +++ b/apps/mobile/.npmrc diff --git a/packages/mobile/app.json b/apps/mobile/app.json index e16baa37..e16baa37 100644 --- a/packages/mobile/app.json +++ b/apps/mobile/app.json diff --git a/packages/mobile/app/+not-found.tsx b/apps/mobile/app/+not-found.tsx index 466505b6..466505b6 100644 --- a/packages/mobile/app/+not-found.tsx +++ b/apps/mobile/app/+not-found.tsx diff --git a/packages/mobile/app/_layout.tsx b/apps/mobile/app/_layout.tsx index 6304ced5..6304ced5 100644 --- a/packages/mobile/app/_layout.tsx +++ b/apps/mobile/app/_layout.tsx diff --git a/packages/mobile/app/dashboard/(tabs)/_layout.tsx b/apps/mobile/app/dashboard/(tabs)/_layout.tsx index 5b2d810a..5b2d810a 100644 --- a/packages/mobile/app/dashboard/(tabs)/_layout.tsx +++ b/apps/mobile/app/dashboard/(tabs)/_layout.tsx diff --git a/packages/mobile/app/dashboard/(tabs)/index.tsx b/apps/mobile/app/dashboard/(tabs)/index.tsx index b2349525..b2349525 100644 --- a/packages/mobile/app/dashboard/(tabs)/index.tsx +++ b/apps/mobile/app/dashboard/(tabs)/index.tsx diff --git a/packages/mobile/app/dashboard/(tabs)/lists.tsx b/apps/mobile/app/dashboard/(tabs)/lists.tsx index b534ddda..b534ddda 100644 --- a/packages/mobile/app/dashboard/(tabs)/lists.tsx +++ b/apps/mobile/app/dashboard/(tabs)/lists.tsx diff --git a/packages/mobile/app/dashboard/(tabs)/search.tsx b/apps/mobile/app/dashboard/(tabs)/search.tsx index 980cab36..980cab36 100644 --- a/packages/mobile/app/dashboard/(tabs)/search.tsx +++ b/apps/mobile/app/dashboard/(tabs)/search.tsx diff --git a/packages/mobile/app/dashboard/(tabs)/settings.tsx b/apps/mobile/app/dashboard/(tabs)/settings.tsx index 9f86d5ec..9f86d5ec 100644 --- a/packages/mobile/app/dashboard/(tabs)/settings.tsx +++ b/apps/mobile/app/dashboard/(tabs)/settings.tsx diff --git a/packages/mobile/app/dashboard/_layout.tsx b/apps/mobile/app/dashboard/_layout.tsx index ff2384d2..ff2384d2 100644 --- a/packages/mobile/app/dashboard/_layout.tsx +++ b/apps/mobile/app/dashboard/_layout.tsx diff --git a/packages/mobile/app/dashboard/add-link.tsx b/apps/mobile/app/dashboard/add-link.tsx index 69a9c7a2..69a9c7a2 100644 --- a/packages/mobile/app/dashboard/add-link.tsx +++ b/apps/mobile/app/dashboard/add-link.tsx diff --git a/packages/mobile/app/dashboard/add-note.tsx b/apps/mobile/app/dashboard/add-note.tsx index cf775a15..cf775a15 100644 --- a/packages/mobile/app/dashboard/add-note.tsx +++ b/apps/mobile/app/dashboard/add-note.tsx diff --git a/packages/mobile/app/dashboard/archive.tsx b/apps/mobile/app/dashboard/archive.tsx index d75cfe22..d75cfe22 100644 --- a/packages/mobile/app/dashboard/archive.tsx +++ b/apps/mobile/app/dashboard/archive.tsx diff --git a/packages/mobile/app/dashboard/favourites.tsx b/apps/mobile/app/dashboard/favourites.tsx index 90374f18..90374f18 100644 --- a/packages/mobile/app/dashboard/favourites.tsx +++ b/apps/mobile/app/dashboard/favourites.tsx diff --git a/packages/mobile/app/dashboard/lists/[slug].tsx b/apps/mobile/app/dashboard/lists/[slug].tsx index 54744874..54744874 100644 --- a/packages/mobile/app/dashboard/lists/[slug].tsx +++ b/apps/mobile/app/dashboard/lists/[slug].tsx diff --git a/packages/mobile/app/error.tsx b/apps/mobile/app/error.tsx index 2ca227a4..2ca227a4 100644 --- a/packages/mobile/app/error.tsx +++ b/apps/mobile/app/error.tsx diff --git a/packages/mobile/app/index.tsx b/apps/mobile/app/index.tsx index 5ce20cda..5ce20cda 100644 --- a/packages/mobile/app/index.tsx +++ b/apps/mobile/app/index.tsx diff --git a/packages/mobile/app/sharing.tsx b/apps/mobile/app/sharing.tsx index 64bbd933..64bbd933 100644 --- a/packages/mobile/app/sharing.tsx +++ b/apps/mobile/app/sharing.tsx diff --git a/packages/mobile/app/signin.tsx b/apps/mobile/app/signin.tsx index a89b0087..a89b0087 100644 --- a/packages/mobile/app/signin.tsx +++ b/apps/mobile/app/signin.tsx diff --git a/packages/mobile/assets/blur.jpeg b/apps/mobile/assets/blur.jpeg Binary files differindex 387ce697..387ce697 100644 --- a/packages/mobile/assets/blur.jpeg +++ b/apps/mobile/assets/blur.jpeg diff --git a/packages/mobile/assets/icon.png b/apps/mobile/assets/icon.png Binary files differindex 71ead90c..71ead90c 100644 --- a/packages/mobile/assets/icon.png +++ b/apps/mobile/assets/icon.png diff --git a/packages/mobile/assets/splash.png b/apps/mobile/assets/splash.png Binary files differindex 3759c518..3759c518 100644 --- a/packages/mobile/assets/splash.png +++ b/apps/mobile/assets/splash.png diff --git a/packages/mobile/babel.config.js b/apps/mobile/babel.config.js index f3c649bb..f3c649bb 100644 --- a/packages/mobile/babel.config.js +++ b/apps/mobile/babel.config.js diff --git a/packages/mobile/components/Logo.tsx b/apps/mobile/components/Logo.tsx index 57f7a5c3..57f7a5c3 100644 --- a/packages/mobile/components/Logo.tsx +++ b/apps/mobile/components/Logo.tsx diff --git a/packages/mobile/components/bookmarks/BookmarkCard.tsx b/apps/mobile/components/bookmarks/BookmarkCard.tsx index 25947790..25947790 100644 --- a/packages/mobile/components/bookmarks/BookmarkCard.tsx +++ b/apps/mobile/components/bookmarks/BookmarkCard.tsx diff --git a/packages/mobile/components/bookmarks/BookmarkList.tsx b/apps/mobile/components/bookmarks/BookmarkList.tsx index 8e408709..8e408709 100644 --- a/packages/mobile/components/bookmarks/BookmarkList.tsx +++ b/apps/mobile/components/bookmarks/BookmarkList.tsx diff --git a/packages/mobile/components/ui/ActionButton.tsx b/apps/mobile/components/ui/ActionButton.tsx index c51eb332..c51eb332 100644 --- a/packages/mobile/components/ui/ActionButton.tsx +++ b/apps/mobile/components/ui/ActionButton.tsx diff --git a/packages/mobile/components/ui/Button.tsx b/apps/mobile/components/ui/Button.tsx index 4c3cbc69..4c3cbc69 100644 --- a/packages/mobile/components/ui/Button.tsx +++ b/apps/mobile/components/ui/Button.tsx diff --git a/packages/mobile/components/ui/Divider.tsx b/apps/mobile/components/ui/Divider.tsx index 1da0a71e..1da0a71e 100644 --- a/packages/mobile/components/ui/Divider.tsx +++ b/apps/mobile/components/ui/Divider.tsx diff --git a/packages/mobile/components/ui/FullPageSpinner.tsx b/apps/mobile/components/ui/FullPageSpinner.tsx index 01187f11..01187f11 100644 --- a/packages/mobile/components/ui/FullPageSpinner.tsx +++ b/apps/mobile/components/ui/FullPageSpinner.tsx diff --git a/packages/mobile/components/ui/Input.tsx b/apps/mobile/components/ui/Input.tsx index 2fcb2764..2fcb2764 100644 --- a/packages/mobile/components/ui/Input.tsx +++ b/apps/mobile/components/ui/Input.tsx diff --git a/packages/mobile/components/ui/Skeleton.tsx b/apps/mobile/components/ui/Skeleton.tsx index 68b22e1e..68b22e1e 100644 --- a/packages/mobile/components/ui/Skeleton.tsx +++ b/apps/mobile/components/ui/Skeleton.tsx diff --git a/packages/mobile/components/ui/Toast.tsx b/apps/mobile/components/ui/Toast.tsx index fb319f84..fb319f84 100644 --- a/packages/mobile/components/ui/Toast.tsx +++ b/apps/mobile/components/ui/Toast.tsx diff --git a/packages/mobile/eas.json b/apps/mobile/eas.json index 0897755d..0897755d 100644 --- a/packages/mobile/eas.json +++ b/apps/mobile/eas.json diff --git a/packages/mobile/globals.css b/apps/mobile/globals.css index de1cf559..de1cf559 100644 --- a/packages/mobile/globals.css +++ b/apps/mobile/globals.css diff --git a/packages/mobile/lib/last-shared-intent.ts b/apps/mobile/lib/last-shared-intent.ts index 951bcf74..951bcf74 100644 --- a/packages/mobile/lib/last-shared-intent.ts +++ b/apps/mobile/lib/last-shared-intent.ts diff --git a/packages/mobile/lib/providers.tsx b/apps/mobile/lib/providers.tsx index 1717afb2..1717afb2 100644 --- a/packages/mobile/lib/providers.tsx +++ b/apps/mobile/lib/providers.tsx diff --git a/packages/mobile/lib/session.ts b/apps/mobile/lib/session.ts index e2ab245b..e2ab245b 100644 --- a/packages/mobile/lib/session.ts +++ b/apps/mobile/lib/session.ts diff --git a/packages/mobile/lib/settings.ts b/apps/mobile/lib/settings.ts index 21f40528..21f40528 100644 --- a/packages/mobile/lib/settings.ts +++ b/apps/mobile/lib/settings.ts diff --git a/packages/mobile/lib/storage-state.ts b/apps/mobile/lib/storage-state.ts index 4988f0e0..4988f0e0 100644 --- a/packages/mobile/lib/storage-state.ts +++ b/apps/mobile/lib/storage-state.ts diff --git a/packages/mobile/lib/trpc.ts b/apps/mobile/lib/trpc.ts index 6b428bd9..6b428bd9 100644 --- a/packages/mobile/lib/trpc.ts +++ b/apps/mobile/lib/trpc.ts diff --git a/packages/mobile/lib/utils.ts b/apps/mobile/lib/utils.ts index 365058ce..365058ce 100644 --- a/packages/mobile/lib/utils.ts +++ b/apps/mobile/lib/utils.ts diff --git a/apps/mobile/metro.config.js b/apps/mobile/metro.config.js new file mode 100644 index 00000000..c5630a83 --- /dev/null +++ b/apps/mobile/metro.config.js @@ -0,0 +1,58 @@ +// Learn more: https://docs.expo.dev/guides/monorepos/ +const { getDefaultConfig } = require("expo/metro-config"); +const { FileStore } = require("metro-cache"); +const { withNativeWind } = require("nativewind/metro"); + +const path = require("path"); + +module.exports = withTurborepoManagedCache( + withMonorepoPaths( + withNativeWind(getDefaultConfig(__dirname), { + input: "./globals.css", + configPath: "./tailwind.config.ts", + }), + ), +); + +/** + * Add the monorepo paths to the Metro config. + * This allows Metro to resolve modules from the monorepo. + * + * @see https://docs.expo.dev/guides/monorepos/#modify-the-metro-config + * @param {import('expo/metro-config').MetroConfig} config + * @returns {import('expo/metro-config').MetroConfig} + */ +function withMonorepoPaths(config) { + const projectRoot = __dirname; + const workspaceRoot = path.resolve(projectRoot, "../.."); + + // #1 - Watch all files in the monorepo + config.watchFolders = [workspaceRoot]; + + // #2 - Resolve modules within the project's `node_modules` first, then all monorepo modules + config.resolver.nodeModulesPaths = [ + path.resolve(projectRoot, "node_modules"), + path.resolve(workspaceRoot, "node_modules"), + ]; + + return config; +} + +/** + * Move the Metro cache to the `node_modules/.cache/metro` folder. + * This repository configured Turborepo to use this cache location as well. + * If you have any environment variables, you can configure Turborepo to invalidate it when needed. + * + * @see https://turbo.build/repo/docs/reference/configuration#env + * @param {import('expo/metro-config').MetroConfig} config + * @returns {import('expo/metro-config').MetroConfig} + */ +function withTurborepoManagedCache(config) { + config.cacheStores = [ + new FileStore({ root: path.join(__dirname, "node_modules/.cache/metro") }), + ]; + return config; +} + + + diff --git a/packages/mobile/nativewind-env.d.ts b/apps/mobile/nativewind-env.d.ts index a13e3136..a13e3136 100644 --- a/packages/mobile/nativewind-env.d.ts +++ b/apps/mobile/nativewind-env.d.ts diff --git a/packages/mobile/package.json b/apps/mobile/package.json index 1298b8db..80036724 100644 --- a/packages/mobile/package.json +++ b/apps/mobile/package.json @@ -1,13 +1,16 @@ { - "name": "hoarder-mobile", + "name": "@hoarder/mobile", "version": "1.0.0", "main": "expo-router/entry", "scripts": { + "clean": "git clean -xdf .expo .turbo node_modules", "start": "expo start", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web", - "lint": "eslint ." + "lint": "eslint .", + "format": "prettier --check . --ignore-path .gitignore", + "typecheck": "tsc --noEmit" }, "dependencies": { "@hoarder/trpc": "0.1.0", @@ -27,7 +30,7 @@ "expo-web-browser": "^12.8.2", "lucide-react-native": "^0.354.0", "nativewind": "^4.0.1", - "react": "18.2.0", + "react": "^18.2.0", "react-native": "0.73.4", "react-native-markdown-display": "^7.0.2", "react-native-reanimated": "^3.8.0", @@ -40,14 +43,29 @@ "zustand": "^4.5.1" }, "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tailwind-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", "@babel/core": "^7.20.0", - "@types/react": "~18.2.45", + "@types/react": "^18.2.55", "ajv": "latest", "eslint": "^8.57.0", "eslint-config-universe": "^12.0.0", "prettier": "^3.2.5", - "tailwindcss": "3.3.2", - "typescript": "^5.1.3" + "tailwindcss": "^3.4.1", + "typescript": "^5.3.3" }, - "private": true + "private": true, + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base", + "@hoarder/eslint-config/react" + ], + "ignorePatterns": [ + "expo-plugins/**" + ] + }, + "prettier": "@hoarder/prettier-config" } diff --git a/packages/mobile/tailwind.config.js b/apps/mobile/tailwind.config.ts index b49f9598..ce0059d4 100644 --- a/packages/mobile/tailwind.config.js +++ b/apps/mobile/tailwind.config.ts @@ -1,7 +1,7 @@ -const { hairlineWidth } = require("nativewind/theme"); +import type { Config } from "tailwindcss"; +import { hairlineWidth } from "nativewind/theme"; -/** @type {import('tailwindcss').Config} */ -module.exports = { +const config = { content: ["./app/**/*.{js,jsx,ts,tsx}", "./components/**/*.{js,jsx,ts,tsx}"], plugins: [], presets: [require("nativewind/preset")], @@ -68,4 +68,6 @@ module.exports = { }, }, }, -}; +} satisfies Config; + +export default config; diff --git a/apps/mobile/tsconfig.json b/apps/mobile/tsconfig.json new file mode 100644 index 00000000..3bcf5741 --- /dev/null +++ b/apps/mobile/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "expo/tsconfig.base", + "compilerOptions": { + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json", + "types": ["nativewind/types"], + "incremental": true, + "strict": true, + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + } + }, + "exclude": ["node_modules"] +} diff --git a/packages/web/README.md b/apps/web/README.md index c4033664..c4033664 100644 --- a/packages/web/README.md +++ b/apps/web/README.md diff --git a/packages/web/app/api/auth/[...nextauth]/route.tsx b/apps/web/app/api/auth/[...nextauth]/route.tsx index 2f7f1cb0..2f7f1cb0 100644 --- a/packages/web/app/api/auth/[...nextauth]/route.tsx +++ b/apps/web/app/api/auth/[...nextauth]/route.tsx diff --git a/packages/web/app/api/trpc/[trpc]/route.ts b/apps/web/app/api/trpc/[trpc]/route.ts index b6753101..02ca966d 100644 --- a/packages/web/app/api/trpc/[trpc]/route.ts +++ b/apps/web/app/api/trpc/[trpc]/route.ts @@ -21,7 +21,7 @@ const handler = (req: Request) => // Check if the request has an Authorization token, if it does, assume that API key authentication is requested. const authorizationHeader = opts.req.headers.get("Authorization"); if (authorizationHeader && authorizationHeader.startsWith("Bearer ")) { - const token = authorizationHeader.split(" ")[1]; + const token = authorizationHeader.split(" ")[1]!; try { const user = await authenticateApiKey(token); return { user, db }; diff --git a/packages/web/app/dashboard/admin/page.tsx b/apps/web/app/dashboard/admin/page.tsx index 6babdd79..6babdd79 100644 --- a/packages/web/app/dashboard/admin/page.tsx +++ b/apps/web/app/dashboard/admin/page.tsx diff --git a/packages/web/app/dashboard/archive/page.tsx b/apps/web/app/dashboard/archive/page.tsx index 69559185..69559185 100644 --- a/packages/web/app/dashboard/archive/page.tsx +++ b/apps/web/app/dashboard/archive/page.tsx diff --git a/packages/web/app/dashboard/bookmarks/layout.tsx b/apps/web/app/dashboard/bookmarks/layout.tsx index 71ee143b..71ee143b 100644 --- a/packages/web/app/dashboard/bookmarks/layout.tsx +++ b/apps/web/app/dashboard/bookmarks/layout.tsx diff --git a/packages/web/app/dashboard/bookmarks/loading.tsx b/apps/web/app/dashboard/bookmarks/loading.tsx index 4e56c3c4..4e56c3c4 100644 --- a/packages/web/app/dashboard/bookmarks/loading.tsx +++ b/apps/web/app/dashboard/bookmarks/loading.tsx diff --git a/packages/web/app/dashboard/bookmarks/page.tsx b/apps/web/app/dashboard/bookmarks/page.tsx index c9391d85..c9391d85 100644 --- a/packages/web/app/dashboard/bookmarks/page.tsx +++ b/apps/web/app/dashboard/bookmarks/page.tsx diff --git a/packages/web/app/dashboard/error.tsx b/apps/web/app/dashboard/error.tsx index 556e59a3..556e59a3 100644 --- a/packages/web/app/dashboard/error.tsx +++ b/apps/web/app/dashboard/error.tsx diff --git a/packages/web/app/dashboard/favourites/page.tsx b/apps/web/app/dashboard/favourites/page.tsx index de17461d..de17461d 100644 --- a/packages/web/app/dashboard/favourites/page.tsx +++ b/apps/web/app/dashboard/favourites/page.tsx diff --git a/packages/web/app/dashboard/layout.tsx b/apps/web/app/dashboard/layout.tsx index 31d592fb..31d592fb 100644 --- a/packages/web/app/dashboard/layout.tsx +++ b/apps/web/app/dashboard/layout.tsx diff --git a/packages/web/app/dashboard/lists/[listId]/page.tsx b/apps/web/app/dashboard/lists/[listId]/page.tsx index 006fd3ad..006fd3ad 100644 --- a/packages/web/app/dashboard/lists/[listId]/page.tsx +++ b/apps/web/app/dashboard/lists/[listId]/page.tsx diff --git a/packages/web/app/dashboard/lists/page.tsx b/apps/web/app/dashboard/lists/page.tsx index 88eeda47..88eeda47 100644 --- a/packages/web/app/dashboard/lists/page.tsx +++ b/apps/web/app/dashboard/lists/page.tsx diff --git a/packages/web/app/dashboard/not-found.tsx b/apps/web/app/dashboard/not-found.tsx index 64df220c..64df220c 100644 --- a/packages/web/app/dashboard/not-found.tsx +++ b/apps/web/app/dashboard/not-found.tsx diff --git a/packages/web/app/dashboard/preview/[bookmarkId]/page.tsx b/apps/web/app/dashboard/preview/[bookmarkId]/page.tsx index 707d2b69..707d2b69 100644 --- a/packages/web/app/dashboard/preview/[bookmarkId]/page.tsx +++ b/apps/web/app/dashboard/preview/[bookmarkId]/page.tsx diff --git a/packages/web/app/dashboard/search/page.tsx b/apps/web/app/dashboard/search/page.tsx index 602f6aa0..602f6aa0 100644 --- a/packages/web/app/dashboard/search/page.tsx +++ b/apps/web/app/dashboard/search/page.tsx diff --git a/packages/web/app/dashboard/settings/page.tsx b/apps/web/app/dashboard/settings/page.tsx index 38091e6c..38091e6c 100644 --- a/packages/web/app/dashboard/settings/page.tsx +++ b/apps/web/app/dashboard/settings/page.tsx diff --git a/packages/web/app/dashboard/tags/[tagName]/page.tsx b/apps/web/app/dashboard/tags/[tagName]/page.tsx index c978b86a..c978b86a 100644 --- a/packages/web/app/dashboard/tags/[tagName]/page.tsx +++ b/apps/web/app/dashboard/tags/[tagName]/page.tsx diff --git a/packages/web/app/dashboard/tags/page.tsx b/apps/web/app/dashboard/tags/page.tsx index 44c164e1..44c164e1 100644 --- a/packages/web/app/dashboard/tags/page.tsx +++ b/apps/web/app/dashboard/tags/page.tsx diff --git a/packages/web/app/favicon.ico b/apps/web/app/favicon.ico Binary files differindex 750e3c04..750e3c04 100644 --- a/packages/web/app/favicon.ico +++ b/apps/web/app/favicon.ico diff --git a/packages/web/app/globals.css b/apps/web/app/globals.css index 8abdb15c..8abdb15c 100644 --- a/packages/web/app/globals.css +++ b/apps/web/app/globals.css diff --git a/packages/web/app/layout.tsx b/apps/web/app/layout.tsx index b1790a1f..b1790a1f 100644 --- a/packages/web/app/layout.tsx +++ b/apps/web/app/layout.tsx diff --git a/packages/web/app/page.tsx b/apps/web/app/page.tsx index f467b64b..f467b64b 100644 --- a/packages/web/app/page.tsx +++ b/apps/web/app/page.tsx diff --git a/packages/web/app/signin/page.tsx b/apps/web/app/signin/page.tsx index fed71b62..fed71b62 100644 --- a/packages/web/app/signin/page.tsx +++ b/apps/web/app/signin/page.tsx diff --git a/packages/web/components.json b/apps/web/components.json index fa674c93..fa674c93 100644 --- a/packages/web/components.json +++ b/apps/web/components.json diff --git a/packages/web/components/dashboard/bookmarks/AddLinkButton.tsx b/apps/web/components/dashboard/bookmarks/AddLinkButton.tsx index 5973f909..5973f909 100644 --- a/packages/web/components/dashboard/bookmarks/AddLinkButton.tsx +++ b/apps/web/components/dashboard/bookmarks/AddLinkButton.tsx diff --git a/packages/web/components/dashboard/bookmarks/AddToListModal.tsx b/apps/web/components/dashboard/bookmarks/AddToListModal.tsx index c9fd5da0..c9fd5da0 100644 --- a/packages/web/components/dashboard/bookmarks/AddToListModal.tsx +++ b/apps/web/components/dashboard/bookmarks/AddToListModal.tsx diff --git a/packages/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx b/apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx index 1f5fa433..1f5fa433 100644 --- a/packages/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx +++ b/apps/web/components/dashboard/bookmarks/BookmarkCardSkeleton.tsx diff --git a/packages/web/components/dashboard/bookmarks/BookmarkOptions.tsx b/apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx index 4f08ebee..4f08ebee 100644 --- a/packages/web/components/dashboard/bookmarks/BookmarkOptions.tsx +++ b/apps/web/components/dashboard/bookmarks/BookmarkOptions.tsx diff --git a/packages/web/components/dashboard/bookmarks/BookmarkPreview.tsx b/apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx index 2a8ae1b1..2a8ae1b1 100644 --- a/packages/web/components/dashboard/bookmarks/BookmarkPreview.tsx +++ b/apps/web/components/dashboard/bookmarks/BookmarkPreview.tsx diff --git a/packages/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx b/apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx index a5b58f1a..a5b58f1a 100644 --- a/packages/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx +++ b/apps/web/components/dashboard/bookmarks/BookmarkedTextEditor.tsx diff --git a/packages/web/components/dashboard/bookmarks/BookmarkedTextViewer.tsx b/apps/web/components/dashboard/bookmarks/BookmarkedTextViewer.tsx index 8a620341..8a620341 100644 --- a/packages/web/components/dashboard/bookmarks/BookmarkedTextViewer.tsx +++ b/apps/web/components/dashboard/bookmarks/BookmarkedTextViewer.tsx diff --git a/packages/web/components/dashboard/bookmarks/Bookmarks.tsx b/apps/web/components/dashboard/bookmarks/Bookmarks.tsx index 1ad3670c..1ad3670c 100644 --- a/packages/web/components/dashboard/bookmarks/Bookmarks.tsx +++ b/apps/web/components/dashboard/bookmarks/Bookmarks.tsx diff --git a/packages/web/components/dashboard/bookmarks/BookmarksGrid.tsx b/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx index 4d5b6b0a..4d5b6b0a 100644 --- a/packages/web/components/dashboard/bookmarks/BookmarksGrid.tsx +++ b/apps/web/components/dashboard/bookmarks/BookmarksGrid.tsx diff --git a/packages/web/components/dashboard/bookmarks/LinkCard.tsx b/apps/web/components/dashboard/bookmarks/LinkCard.tsx index 50f30e47..50f30e47 100644 --- a/packages/web/components/dashboard/bookmarks/LinkCard.tsx +++ b/apps/web/components/dashboard/bookmarks/LinkCard.tsx diff --git a/packages/web/components/dashboard/bookmarks/TagList.tsx b/apps/web/components/dashboard/bookmarks/TagList.tsx index 6c9d2d22..6c9d2d22 100644 --- a/packages/web/components/dashboard/bookmarks/TagList.tsx +++ b/apps/web/components/dashboard/bookmarks/TagList.tsx diff --git a/packages/web/components/dashboard/bookmarks/TagModal.tsx b/apps/web/components/dashboard/bookmarks/TagModal.tsx index 8c09d00e..8c09d00e 100644 --- a/packages/web/components/dashboard/bookmarks/TagModal.tsx +++ b/apps/web/components/dashboard/bookmarks/TagModal.tsx diff --git a/packages/web/components/dashboard/bookmarks/TextCard.tsx b/apps/web/components/dashboard/bookmarks/TextCard.tsx index 2565e69d..2565e69d 100644 --- a/packages/web/components/dashboard/bookmarks/TextCard.tsx +++ b/apps/web/components/dashboard/bookmarks/TextCard.tsx diff --git a/packages/web/components/dashboard/bookmarks/TopNav.tsx b/apps/web/components/dashboard/bookmarks/TopNav.tsx index 6c0f18e5..6c0f18e5 100644 --- a/packages/web/components/dashboard/bookmarks/TopNav.tsx +++ b/apps/web/components/dashboard/bookmarks/TopNav.tsx diff --git a/packages/web/components/dashboard/lists/AllListsView.tsx b/apps/web/components/dashboard/lists/AllListsView.tsx index 81f31cde..81f31cde 100644 --- a/packages/web/components/dashboard/lists/AllListsView.tsx +++ b/apps/web/components/dashboard/lists/AllListsView.tsx diff --git a/packages/web/components/dashboard/lists/DeleteListButton.tsx b/apps/web/components/dashboard/lists/DeleteListButton.tsx index 5303b217..5303b217 100644 --- a/packages/web/components/dashboard/lists/DeleteListButton.tsx +++ b/apps/web/components/dashboard/lists/DeleteListButton.tsx diff --git a/packages/web/components/dashboard/lists/ListView.tsx b/apps/web/components/dashboard/lists/ListView.tsx index 2d48d9e3..2d48d9e3 100644 --- a/packages/web/components/dashboard/lists/ListView.tsx +++ b/apps/web/components/dashboard/lists/ListView.tsx diff --git a/packages/web/components/dashboard/search/SearchInput.tsx b/apps/web/components/dashboard/search/SearchInput.tsx index 73d14c90..73d14c90 100644 --- a/packages/web/components/dashboard/search/SearchInput.tsx +++ b/apps/web/components/dashboard/search/SearchInput.tsx diff --git a/packages/web/components/dashboard/settings/AddApiKey.tsx b/apps/web/components/dashboard/settings/AddApiKey.tsx index a4fd9c25..a4fd9c25 100644 --- a/packages/web/components/dashboard/settings/AddApiKey.tsx +++ b/apps/web/components/dashboard/settings/AddApiKey.tsx diff --git a/packages/web/components/dashboard/settings/ApiKeySettings.tsx b/apps/web/components/dashboard/settings/ApiKeySettings.tsx index 1598f25f..1598f25f 100644 --- a/packages/web/components/dashboard/settings/ApiKeySettings.tsx +++ b/apps/web/components/dashboard/settings/ApiKeySettings.tsx diff --git a/packages/web/components/dashboard/settings/DeleteApiKey.tsx b/apps/web/components/dashboard/settings/DeleteApiKey.tsx index 566136af..566136af 100644 --- a/packages/web/components/dashboard/settings/DeleteApiKey.tsx +++ b/apps/web/components/dashboard/settings/DeleteApiKey.tsx diff --git a/packages/web/components/dashboard/sidebar/AllLists.tsx b/apps/web/components/dashboard/sidebar/AllLists.tsx index a77252d0..a77252d0 100644 --- a/packages/web/components/dashboard/sidebar/AllLists.tsx +++ b/apps/web/components/dashboard/sidebar/AllLists.tsx diff --git a/packages/web/components/dashboard/sidebar/ModileSidebar.tsx b/apps/web/components/dashboard/sidebar/ModileSidebar.tsx index 4bd6a347..4bd6a347 100644 --- a/packages/web/components/dashboard/sidebar/ModileSidebar.tsx +++ b/apps/web/components/dashboard/sidebar/ModileSidebar.tsx diff --git a/packages/web/components/dashboard/sidebar/ModileSidebarItem.tsx b/apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx index 9389d2e4..9389d2e4 100644 --- a/packages/web/components/dashboard/sidebar/ModileSidebarItem.tsx +++ b/apps/web/components/dashboard/sidebar/ModileSidebarItem.tsx diff --git a/packages/web/components/dashboard/sidebar/NewListModal.tsx b/apps/web/components/dashboard/sidebar/NewListModal.tsx index f51616ed..f51616ed 100644 --- a/packages/web/components/dashboard/sidebar/NewListModal.tsx +++ b/apps/web/components/dashboard/sidebar/NewListModal.tsx diff --git a/packages/web/components/dashboard/sidebar/Sidebar.tsx b/apps/web/components/dashboard/sidebar/Sidebar.tsx index a5c1d7a5..a5c1d7a5 100644 --- a/packages/web/components/dashboard/sidebar/Sidebar.tsx +++ b/apps/web/components/dashboard/sidebar/Sidebar.tsx diff --git a/packages/web/components/dashboard/sidebar/SidebarItem.tsx b/apps/web/components/dashboard/sidebar/SidebarItem.tsx index 856bdffd..856bdffd 100644 --- a/packages/web/components/dashboard/sidebar/SidebarItem.tsx +++ b/apps/web/components/dashboard/sidebar/SidebarItem.tsx diff --git a/packages/web/components/dashboard/sidebar/SidebarProfileOptions.tsx b/apps/web/components/dashboard/sidebar/SidebarProfileOptions.tsx index f931b63e..f931b63e 100644 --- a/packages/web/components/dashboard/sidebar/SidebarProfileOptions.tsx +++ b/apps/web/components/dashboard/sidebar/SidebarProfileOptions.tsx diff --git a/packages/web/components/signin/CredentialsForm.tsx b/apps/web/components/signin/CredentialsForm.tsx index 5296e163..5296e163 100644 --- a/packages/web/components/signin/CredentialsForm.tsx +++ b/apps/web/components/signin/CredentialsForm.tsx diff --git a/packages/web/components/signin/SignInForm.tsx b/apps/web/components/signin/SignInForm.tsx index 7c8f8936..7c8f8936 100644 --- a/packages/web/components/signin/SignInForm.tsx +++ b/apps/web/components/signin/SignInForm.tsx diff --git a/packages/web/components/signin/SignInProviderButton.tsx b/apps/web/components/signin/SignInProviderButton.tsx index 0831236c..0831236c 100644 --- a/packages/web/components/signin/SignInProviderButton.tsx +++ b/apps/web/components/signin/SignInProviderButton.tsx diff --git a/packages/web/components/ui/action-button.tsx b/apps/web/components/ui/action-button.tsx index 42e16f65..42e16f65 100644 --- a/packages/web/components/ui/action-button.tsx +++ b/apps/web/components/ui/action-button.tsx diff --git a/packages/web/components/ui/back-button.tsx b/apps/web/components/ui/back-button.tsx index 685930df..685930df 100644 --- a/packages/web/components/ui/back-button.tsx +++ b/apps/web/components/ui/back-button.tsx diff --git a/packages/web/components/ui/badge.tsx b/apps/web/components/ui/badge.tsx index c30daca1..c30daca1 100644 --- a/packages/web/components/ui/badge.tsx +++ b/apps/web/components/ui/badge.tsx diff --git a/packages/web/components/ui/button.tsx b/apps/web/components/ui/button.tsx index 79b45fa0..79b45fa0 100644 --- a/packages/web/components/ui/button.tsx +++ b/apps/web/components/ui/button.tsx diff --git a/packages/web/components/ui/card.tsx b/apps/web/components/ui/card.tsx index f4e57996..f4e57996 100644 --- a/packages/web/components/ui/card.tsx +++ b/apps/web/components/ui/card.tsx diff --git a/packages/web/components/ui/dialog.tsx b/apps/web/components/ui/dialog.tsx index 8fe3fe35..8fe3fe35 100644 --- a/packages/web/components/ui/dialog.tsx +++ b/apps/web/components/ui/dialog.tsx diff --git a/packages/web/components/ui/dropdown-menu.tsx b/apps/web/components/ui/dropdown-menu.tsx index 3a9a2ff7..3a9a2ff7 100644 --- a/packages/web/components/ui/dropdown-menu.tsx +++ b/apps/web/components/ui/dropdown-menu.tsx diff --git a/packages/web/components/ui/form.tsx b/apps/web/components/ui/form.tsx index e62e10e9..e62e10e9 100644 --- a/packages/web/components/ui/form.tsx +++ b/apps/web/components/ui/form.tsx diff --git a/packages/web/components/ui/imageCard.tsx b/apps/web/components/ui/imageCard.tsx index f10ebdb5..f10ebdb5 100644 --- a/packages/web/components/ui/imageCard.tsx +++ b/apps/web/components/ui/imageCard.tsx diff --git a/packages/web/components/ui/input.tsx b/apps/web/components/ui/input.tsx index 21aac7ad..21aac7ad 100644 --- a/packages/web/components/ui/input.tsx +++ b/apps/web/components/ui/input.tsx diff --git a/packages/web/components/ui/label.tsx b/apps/web/components/ui/label.tsx index 84f8b0c7..84f8b0c7 100644 --- a/packages/web/components/ui/label.tsx +++ b/apps/web/components/ui/label.tsx diff --git a/packages/web/components/ui/popover.tsx b/apps/web/components/ui/popover.tsx index a361ba7d..a361ba7d 100644 --- a/packages/web/components/ui/popover.tsx +++ b/apps/web/components/ui/popover.tsx diff --git a/packages/web/components/ui/scroll-area.tsx b/apps/web/components/ui/scroll-area.tsx index 32cb6022..32cb6022 100644 --- a/packages/web/components/ui/scroll-area.tsx +++ b/apps/web/components/ui/scroll-area.tsx diff --git a/packages/web/components/ui/select.tsx b/apps/web/components/ui/select.tsx index efd4ff1e..efd4ff1e 100644 --- a/packages/web/components/ui/select.tsx +++ b/apps/web/components/ui/select.tsx diff --git a/packages/web/components/ui/separator.tsx b/apps/web/components/ui/separator.tsx index 3b9f2b84..3b9f2b84 100644 --- a/packages/web/components/ui/separator.tsx +++ b/apps/web/components/ui/separator.tsx diff --git a/packages/web/components/ui/skeleton.tsx b/apps/web/components/ui/skeleton.tsx index 5fab2023..5fab2023 100644 --- a/packages/web/components/ui/skeleton.tsx +++ b/apps/web/components/ui/skeleton.tsx diff --git a/packages/web/components/ui/spinner.tsx b/apps/web/components/ui/spinner.tsx index adcd2807..adcd2807 100644 --- a/packages/web/components/ui/spinner.tsx +++ b/apps/web/components/ui/spinner.tsx diff --git a/packages/web/components/ui/table.tsx b/apps/web/components/ui/table.tsx index 0fa9288e..0fa9288e 100644 --- a/packages/web/components/ui/table.tsx +++ b/apps/web/components/ui/table.tsx diff --git a/packages/web/components/ui/tabs.tsx b/apps/web/components/ui/tabs.tsx index 990017db..990017db 100644 --- a/packages/web/components/ui/tabs.tsx +++ b/apps/web/components/ui/tabs.tsx diff --git a/packages/web/components/ui/textarea.tsx b/apps/web/components/ui/textarea.tsx index a0de3371..a0de3371 100644 --- a/packages/web/components/ui/textarea.tsx +++ b/apps/web/components/ui/textarea.tsx diff --git a/packages/web/components/ui/toast.tsx b/apps/web/components/ui/toast.tsx index 0d162dca..0d162dca 100644 --- a/packages/web/components/ui/toast.tsx +++ b/apps/web/components/ui/toast.tsx diff --git a/packages/web/components/ui/toaster.tsx b/apps/web/components/ui/toaster.tsx index 7d82ed55..7d82ed55 100644 --- a/packages/web/components/ui/toaster.tsx +++ b/apps/web/components/ui/toaster.tsx diff --git a/packages/web/components/ui/use-toast.ts b/apps/web/components/ui/use-toast.ts index 5491e140..5491e140 100644 --- a/packages/web/components/ui/use-toast.ts +++ b/apps/web/components/ui/use-toast.ts diff --git a/packages/web/lib/bookmarkUtils.tsx b/apps/web/lib/bookmarkUtils.tsx index a2828c29..a2828c29 100644 --- a/packages/web/lib/bookmarkUtils.tsx +++ b/apps/web/lib/bookmarkUtils.tsx diff --git a/packages/web/lib/hooks/bookmark-search.ts b/apps/web/lib/hooks/bookmark-search.ts index 738e1bd8..738e1bd8 100644 --- a/packages/web/lib/hooks/bookmark-search.ts +++ b/apps/web/lib/hooks/bookmark-search.ts diff --git a/packages/web/lib/providers.tsx b/apps/web/lib/providers.tsx index 5c4649b5..5c4649b5 100644 --- a/packages/web/lib/providers.tsx +++ b/apps/web/lib/providers.tsx diff --git a/packages/web/lib/trpc.tsx b/apps/web/lib/trpc.tsx index 79a2a9fe..79a2a9fe 100644 --- a/packages/web/lib/trpc.tsx +++ b/apps/web/lib/trpc.tsx diff --git a/packages/web/lib/utils.ts b/apps/web/lib/utils.ts index 365058ce..365058ce 100644 --- a/packages/web/lib/utils.ts +++ b/apps/web/lib/utils.ts diff --git a/packages/web/next.config.mjs b/apps/web/next.config.mjs index bda43a58..fa0757dd 100644 --- a/packages/web/next.config.mjs +++ b/apps/web/next.config.mjs @@ -38,6 +38,16 @@ const nextConfig = withPWA({ }, ]; }, + + transpilePackages: [ + "@hoarder/shared", + "@hoarder/db", + "@hoarder/trpc", + ], + + /** We already do linting and typechecking as separate tasks in CI */ + eslint: { ignoreDuringBuilds: true }, + typescript: { ignoreBuildErrors: true }, }); export default nextConfig; diff --git a/packages/web/package.json b/apps/web/package.json index e0c9d407..28708c6c 100644 --- a/packages/web/package.json +++ b/apps/web/package.json @@ -3,23 +3,25 @@ "name": "@hoarder/web", "version": "0.1.0", "private": true, + "type": "module", "scripts": { "dev": "next dev", + "clean": "git clean -xdf .next .turbo node_modules", "build": "next build", "start": "next start", "lint": "next lint", "test": "vitest", - "typecheck": "tsc --noEmit" + "typecheck": "tsc --noEmit", + "format": "prettier --check . --ignore-path ../../.gitignore" }, "dependencies": { "@auth/drizzle-adapter": "^0.8.0", "@emoji-mart/data": "^1.1.2", "@emoji-mart/react": "^1.1.1", - "@hoarder/db": "0.1.0", - "@hoarder/shared": "0.1.0", - "@hoarder/trpc": "0.1.0", + "@hoarder/db": "workspace:^0.1.0", + "@hoarder/shared": "workspace:^0.1.0", + "@hoarder/trpc": "workspace:^0.1.0", "@hookform/resolvers": "^3.3.4", - "@next/eslint-plugin-next": "^14.1.1", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-label": "^2.0.2", @@ -30,25 +32,25 @@ "@radix-ui/react-slot": "^1.0.2", "@radix-ui/react-tabs": "^1.0.4", "@radix-ui/react-toast": "^1.1.5", - "@tanstack/react-query": "^5.24.6", + "@tanstack/react-query": "^5.24.8", "@tanstack/react-query-devtools": "^5.21.0", - "@trpc/client": "11.0.0-next-beta.304", - "@trpc/next": "11.0.0-next-beta.304", - "@trpc/react-query": "^11.0.0-next-beta.304", - "@trpc/server": "11.0.0-next-beta.304", + "@trpc/client": "11.0.0-next-beta.308", + "@trpc/next": "11.0.0-next-beta.308", + "@trpc/react-query": "11.0.0-next-beta.308", + "@trpc/server": "11.0.0-next-beta.308", "better-sqlite3": "^9.4.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "drizzle-orm": "^0.29.4", "install": "^0.13.0", - "lucide-react": "^0.322.0", + "lucide-react": "^0.330.0", "meilisearch": "^0.37.0", "next": "14.1.1", "next-auth": "^4.24.5", "next-pwa": "^5.6.0", "prettier": "^3.2.5", - "react": "^18", - "react-dom": "^18", + "react": "^18.2.0", + "react-dom": "^18.2.0", "react-hook-form": "^7.50.1", "react-markdown": "^9.0.1", "react-masonry-css": "^1.0.16", @@ -60,15 +62,28 @@ "zustand": "^4.5.1" }, "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tailwind-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", "@tailwindcss/typography": "^0.5.10", "@types/emoji-mart": "^3.0.14", - "@types/react": "^18", - "@types/react-dom": "^18", - "autoprefixer": "^10.0.1", - "postcss": "^8", - "tailwindcss": "^3.3.0", + "@types/react": "^18.2.55", + "@types/react-dom": "^18.2.19", + "autoprefixer": "^10.4.17", + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", "ts-node": "^10.9.2", "vite-tsconfig-paths": "^4.3.1", "vitest": "^1.3.1" - } + }, + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base", + "@hoarder/eslint-config/nextjs", + "@hoarder/eslint-config/react" + ] + }, + "prettier": "@hoarder/prettier-config" } diff --git a/packages/web/postcss.config.js b/apps/web/postcss.config.cjs index 12a703d9..12a703d9 100644 --- a/packages/web/postcss.config.js +++ b/apps/web/postcss.config.cjs diff --git a/packages/web/public/blur.avif b/apps/web/public/blur.avif Binary files differindex cbc6cd37..cbc6cd37 100644 --- a/packages/web/public/blur.avif +++ b/apps/web/public/blur.avif diff --git a/packages/web/public/icons/logo-128.png b/apps/web/public/icons/logo-128.png Binary files differindex 71ead90c..71ead90c 100644 --- a/packages/web/public/icons/logo-128.png +++ b/apps/web/public/icons/logo-128.png diff --git a/packages/web/public/icons/logo-16.png b/apps/web/public/icons/logo-16.png Binary files differindex dd864d44..dd864d44 100644 --- a/packages/web/public/icons/logo-16.png +++ b/apps/web/public/icons/logo-16.png diff --git a/packages/web/public/icons/logo-48.png b/apps/web/public/icons/logo-48.png Binary files differindex 7ba1cd49..7ba1cd49 100644 --- a/packages/web/public/icons/logo-48.png +++ b/apps/web/public/icons/logo-48.png diff --git a/packages/web/public/manifest.json b/apps/web/public/manifest.json index b42343f6..b42343f6 100644 --- a/packages/web/public/manifest.json +++ b/apps/web/public/manifest.json diff --git a/packages/web/server/api/client.ts b/apps/web/server/api/client.ts index 88ea7a0e..88ea7a0e 100644 --- a/packages/web/server/api/client.ts +++ b/apps/web/server/api/client.ts diff --git a/packages/web/server/auth.ts b/apps/web/server/auth.ts index 950443b9..950443b9 100644 --- a/packages/web/server/auth.ts +++ b/apps/web/server/auth.ts diff --git a/packages/web/tailwind.config.ts b/apps/web/tailwind.config.ts index 521ba51c..521ba51c 100644 --- a/packages/web/tailwind.config.ts +++ b/apps/web/tailwind.config.ts diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json new file mode 100644 index 00000000..db90cf17 --- /dev/null +++ b/apps/web/tsconfig.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@hoarder/tsconfig/base.json", + "compilerOptions": { + "baseUrl": ".", + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/packages/web/vitest.config.ts b/apps/web/vitest.config.ts index c3d02f71..c3d02f71 100644 --- a/packages/web/vitest.config.ts +++ b/apps/web/vitest.config.ts diff --git a/packages/workers/crawler.ts b/apps/workers/crawlerWorker.ts index 5db2da7b..5db2da7b 100644 --- a/packages/workers/crawler.ts +++ b/apps/workers/crawlerWorker.ts diff --git a/packages/workers/index.ts b/apps/workers/index.ts index 295eeaef..5b6b62d5 100644 --- a/packages/workers/index.ts +++ b/apps/workers/index.ts @@ -1,7 +1,7 @@ import "dotenv/config"; -import { CrawlerWorker } from "./crawler"; -import { OpenAiWorker } from "./openai"; -import { SearchIndexingWorker } from "./search"; +import { CrawlerWorker } from "./crawlerWorker"; +import { OpenAiWorker } from "./openaiWorker"; +import { SearchIndexingWorker } from "./searchWorker"; async function main() { const [crawler, openai, search] = [ diff --git a/packages/workers/openai.ts b/apps/workers/openaiWorker.ts index 1ec22d32..1ec22d32 100644 --- a/packages/workers/openai.ts +++ b/apps/workers/openaiWorker.ts diff --git a/packages/workers/package.json b/apps/workers/package.json index f2fc164c..8446a54d 100644 --- a/packages/workers/package.json +++ b/apps/workers/package.json @@ -3,6 +3,7 @@ "name": "@hoarder/workers", "version": "0.1.0", "private": true, + "type": "module", "dependencies": { "@hoarder/db": "workspace:*", "@hoarder/shared": "workspace:*", @@ -23,16 +24,19 @@ "metascraper-title": "^5.43.4", "metascraper-twitter": "^5.43.4", "metascraper-url": "^5.43.4", - "openai": "^4.26.1", + "openai": "^4.29.0", "puppeteer": "^22.0.0", "puppeteer-extra": "^3.3.6", "puppeteer-extra-plugin-adblocker": "^2.13.6", "puppeteer-extra-plugin-stealth": "^2.11.2", "tsx": "^4.7.1", - "typescript": "^5", + "typescript": "^5.3.3", "zod": "^3.22.4" }, "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", "@types/dompurify": "^3.0.5", "@types/jsdom": "^21.1.6", "@types/metascraper": "^5.14.3" @@ -41,5 +45,12 @@ "start": "tsx watch index.ts", "start:prod": "tsx index.ts", "typecheck": "tsc --noEmit" - } + }, + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base" + ] + }, + "prettier": "@hoarder/prettier-config" } diff --git a/packages/workers/search.ts b/apps/workers/searchWorker.ts index 618e7c89..618e7c89 100644 --- a/packages/workers/search.ts +++ b/apps/workers/searchWorker.ts diff --git a/apps/workers/tsconfig.json b/apps/workers/tsconfig.json new file mode 100644 index 00000000..24b9a10d --- /dev/null +++ b/apps/workers/tsconfig.json @@ -0,0 +1,10 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@hoarder/tsconfig/node.json", + "include": ["**/*.ts"], + "exclude": ["node_modules"], + "compilerOptions": { + "baseUrl": ".", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + } +} diff --git a/package.json b/package.json index 708e5ad4..74028b20 100644 --- a/package.json +++ b/package.json @@ -4,38 +4,36 @@ "version": "0.1.0", "private": true, "scripts": { - "format": "prettier 'packages/**/*.{js,ts,tsx,mjs,cjs}' --write", + "build": "turbo build", + "dev": "turbo dev --parallel", + "clean": "git clean -xdf node_modules", + "clean:workspaces": "turbo clean", "format:check": "prettier 'packages/**/*.{js,ts,tsx,mjs,cjs}' --check", - "lint": "eslint . --ignore-path .gitignore", "db:migrate": "pnpm --filter @hoarder/db run migrate", "db:studio": "pnpm --filter @hoarder/db studio", "workers": "pnpm --filter @hoarder/workers run start", "web": "pnpm --filter @hoarder/web run dev", - "prepare": "husky" - }, - "dependencies": { - "@next/eslint-plugin-next": "^14.1.0", - "@typescript-eslint/eslint-plugin": "^6.21.0", - "@typescript-eslint/parser": "^6.21.0", - "bullmq": "^5.1.9", - "class-variance-authority": "^0.7.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "typescript": "^5" + "prepare": "husky", + "format": "turbo format --continue -- --cache --cache-location node_modules/.cache/.prettiercache", + "format:fix": "turbo format --continue -- --write --cache --cache-location node_modules/.cache/.prettiercache", + "lint": "turbo lint --continue -- --cache --cache-location node_modules/.cache/.eslintcache", + "lint:fix": "turbo lint --continue -- --fix --cache --cache-location node_modules/.cache/.eslintcache", + "lint:ws": "pnpm dlx sherif@latest", + "postinstall": "pnpm lint:ws", + "typecheck": "turbo typecheck" }, "devDependencies": { + "@hoarder/prettier-config": "workspace:^0.1.0", "@tanstack/eslint-plugin-query": "^5.20.1", "@types/node": "^20", "es-errors": "^1.3.0", - "eslint": "^8.56.0", - "eslint-config-next": "14.1.0", - "eslint-plugin-tailwindcss": "^3.14.2", + "eslint": "^8.57.0", "husky": "^9.0.11", "install": "^0.13.0", "prettier": "3.2.5", - "prettier-plugin-tailwindcss": "^0.5.11" + "turbo": "^1.12.4" }, + "prettier": "@hoarder/prettier-config", "packageManager": "pnpm@8.15.4+sha256.cea6d0bdf2de3a0549582da3983c70c92ffc577ff4410cbf190817ddc35137c2", "pnpm": { "patchedDependencies": { diff --git a/packages/db/package.json b/packages/db/package.json index 20dee1e9..aebbf8fe 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -4,6 +4,7 @@ "version": "0.1.0", "private": true, "main": "index.ts", + "type": "module", "scripts": { "typecheck": "tsc --noEmit", "migrate": "tsx migrate.ts", @@ -18,8 +19,18 @@ "tsx": "^4.7.1" }, "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", "@tsconfig/node21": "^21.0.1", "@types/better-sqlite3": "^7.6.9", "drizzle-kit": "^0.20.14" - } + }, + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base" + ] + }, + "prettier": "@hoarder/prettier-config" } diff --git a/packages/db/tsconfig.json b/packages/db/tsconfig.json index cf49c407..59982ea1 100644 --- a/packages/db/tsconfig.json +++ b/packages/db/tsconfig.json @@ -1,11 +1,10 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@tsconfig/node21/tsconfig.json", + "extends": "@hoarder/tsconfig/node.json", "include": ["**/*.ts"], "exclude": ["node_modules"], "compilerOptions": { - "module": "ESNext", - "moduleResolution": "node", - "esModuleInterop": true + "baseUrl" : ".", + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" } } diff --git a/packages/mobile/metro.config.js b/packages/mobile/metro.config.js deleted file mode 100644 index 6b2b0477..00000000 --- a/packages/mobile/metro.config.js +++ /dev/null @@ -1,8 +0,0 @@ -const { getDefaultConfig } = require("expo/metro-config"); -const { withNativeWind } = require("nativewind/metro"); - -/** @type {import('expo/metro-config').MetroConfig} */ -// eslint-disable-next-line no-undef -const config = getDefaultConfig(__dirname); - -module.exports = withNativeWind(config, { input: "./globals.css" }); diff --git a/packages/mobile/tsconfig.json b/packages/mobile/tsconfig.json deleted file mode 100644 index 84d97cb0..00000000 --- a/packages/mobile/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "expo/tsconfig.base", - "compilerOptions": { - "strict": true, - "baseUrl": ".", - "paths": { - "@/*": ["./*"] - } - } -} diff --git a/packages/shared/package.json b/packages/shared/package.json index 0b3a8078..dca8925c 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -3,10 +3,23 @@ "name": "@hoarder/shared", "version": "0.1.0", "private": true, + "type": "module", "dependencies": { "meilisearch": "^0.37.0", "winston": "^3.11.0", "zod": "^3.22.4" }, - "main": "index.ts" + "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0" + }, + "main": "index.ts", + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base" + ] + }, + "prettier": "@hoarder/prettier-config" } diff --git a/packages/shared/tsconfig.json b/packages/shared/tsconfig.json new file mode 100644 index 00000000..71bf61e7 --- /dev/null +++ b/packages/shared/tsconfig.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@hoarder/tsconfig/node.json", + "include": ["**/*.ts"], + "exclude": ["node_modules"], + "compilerOptions": { + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + }, +} diff --git a/packages/trpc/package.json b/packages/trpc/package.json index ac4fb6fe..631f6ece 100644 --- a/packages/trpc/package.json +++ b/packages/trpc/package.json @@ -3,6 +3,7 @@ "name": "@hoarder/trpc", "version": "0.1.0", "private": true, + "type": "module", "scripts": { "typecheck": "tsc --noEmit", "test": "vitest" @@ -10,20 +11,28 @@ "dependencies": { "@hoarder/db": "workspace:*", "@hoarder/shared": "workspace:*", - "@trpc/server": "11.0.0-next-beta.304", + "@trpc/server": "11.0.0-next-beta.308", "bcryptjs": "^2.4.3", "drizzle-orm": "^0.29.4", "superjson": "^2.2.1", "zod": "^3.22.4" }, "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", "@types/bcryptjs": "^2.4.6", "@tsconfig/node21": "^21.0.1", "@types/bcrypt": "^5.0.2", - "aws-sdk": "^2.1570.0", - "mock-aws-s3": "^4.0.2", "nock": "^13.5.4", "vite-tsconfig-paths": "^4.3.1", "vitest": "^1.3.1" - } -} + }, + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base" + ] + }, + "prettier": "@hoarder/prettier-config" +}
\ No newline at end of file diff --git a/packages/trpc/tsconfig.json b/packages/trpc/tsconfig.json index bf020b01..80329662 100644 --- a/packages/trpc/tsconfig.json +++ b/packages/trpc/tsconfig.json @@ -1,13 +1,10 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@tsconfig/node21/tsconfig.json", + "extends": "@hoarder/tsconfig/node.json", "include": ["**/*.ts"], "exclude": ["node_modules"], "compilerOptions": { - "module": "ESNext", - "moduleResolution": "node", - "baseUrl": "./", - "esModuleInterop": true - } + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + }, } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b80328c..4a6c1415 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,35 +12,10 @@ patchedDependencies: importers: .: - dependencies: - '@next/eslint-plugin-next': - specifier: ^14.1.0 - version: 14.1.0 - '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.3.3) - bullmq: - specifier: ^5.1.9 - version: 5.3.3 - class-variance-authority: - specifier: ^0.7.0 - version: 0.7.0 - eslint-config-prettier: - specifier: ^9.1.0 - version: 9.1.0(eslint@8.57.0) - eslint-plugin-react: - specifier: ^7.33.2 - version: 7.33.2(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.0(eslint@8.57.0) - typescript: - specifier: ^5 - version: 5.3.3 devDependencies: + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:tooling/prettier '@tanstack/eslint-plugin-query': specifier: ^5.20.1 version: 5.20.1(eslint@8.57.0)(typescript@5.3.3) @@ -51,14 +26,8 @@ importers: specifier: ^1.3.0 version: 1.3.0 eslint: - specifier: ^8.56.0 + specifier: ^8.57.0 version: 8.57.0 - eslint-config-next: - specifier: 14.1.0 - version: 14.1.0(eslint@8.57.0)(typescript@5.3.3) - eslint-plugin-tailwindcss: - specifier: ^3.14.2 - version: 3.14.3(tailwindcss@3.4.1) husky: specifier: ^9.0.11 version: 9.0.11 @@ -68,15 +37,15 @@ importers: prettier: specifier: 3.2.5 version: 3.2.5 - prettier-plugin-tailwindcss: - specifier: ^0.5.11 - version: 0.5.11(prettier@3.2.5) + turbo: + specifier: ^1.12.4 + version: 1.12.5 - packages/browser-extension: + apps/browser-extension: dependencies: '@hoarder/trpc': specifier: 0.1.0 - version: link:../trpc + version: link:../../packages/trpc '@tanstack/react-query': specifier: ^5.24.8 version: 5.24.8(react@18.2.0) @@ -92,9 +61,6 @@ importers: '@trpc/server': specifier: 11.0.0-next-beta.308 version: 11.0.0-next-beta.308 - '@types/chrome': - specifier: ^0.0.260 - version: 0.0.260 lucide-react: specifier: ^0.330.0 version: 0.330.0(react@18.2.0) @@ -120,18 +86,27 @@ importers: '@crxjs/vite-plugin': specifier: ^1.0.14 version: 1.0.14(vite@5.1.4) + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@hoarder/tailwind-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/tailwind + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + '@types/chrome': + specifier: ^0.0.260 + version: 0.0.260 '@types/react': specifier: ^18.2.55 version: 18.2.58 '@types/react-dom': specifier: ^18.2.19 version: 18.2.19 - '@typescript-eslint/eslint-plugin': - specifier: ^6.21.0 - version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.57.0)(typescript@5.3.3) - '@typescript-eslint/parser': - specifier: ^6.21.0 - version: 6.21.0(eslint@8.57.0)(typescript@5.3.3) '@vitejs/plugin-react-swc': specifier: ^3.5.0 version: 3.6.0(vite@5.1.4) @@ -139,7 +114,7 @@ importers: specifier: ^10.4.17 version: 10.4.17(postcss@8.4.35) eslint: - specifier: ^8.56.0 + specifier: ^8.57.0 version: 8.57.0 eslint-plugin-react-hooks: specifier: ^4.6.0 @@ -154,48 +129,17 @@ importers: specifier: ^3.4.1 version: 3.4.1(ts-node@10.9.2) typescript: - specifier: ^5.2.2 + specifier: ^5.3.3 version: 5.3.3 vite: specifier: ^5.1.0 version: 5.1.4(@types/node@20.11.20) - packages/db: - dependencies: - '@auth/core': - specifier: ^0.27.0 - version: 0.27.0 - '@paralleldrive/cuid2': - specifier: ^2.2.2 - version: 2.2.2 - better-sqlite3: - specifier: ^9.4.3 - version: 9.4.3 - dotenv: - specifier: ^16.4.1 - version: 16.4.5 - drizzle-orm: - specifier: ^0.29.4 - version: 0.29.4(@types/better-sqlite3@7.6.9)(better-sqlite3@9.4.3) - tsx: - specifier: ^4.7.1 - version: 4.7.1 - devDependencies: - '@tsconfig/node21': - specifier: ^21.0.1 - version: 21.0.1 - '@types/better-sqlite3': - specifier: ^7.6.9 - version: 7.6.9 - drizzle-kit: - specifier: ^0.20.14 - version: 0.20.14 - - packages/mobile: + apps/mobile: dependencies: '@hoarder/trpc': specifier: 0.1.0 - version: link:../trpc + version: link:../../packages/trpc '@tanstack/react-query': specifier: ^5.24.8 version: 5.24.8(react@18.2.0) @@ -243,9 +187,9 @@ importers: version: 0.354.0(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0) nativewind: specifier: ^4.0.1 - version: 4.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.3.2) + version: 4.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.4.1) react: - specifier: 18.2.0 + specifier: ^18.2.0 version: 18.2.0 react-native: specifier: 0.73.4 @@ -281,8 +225,20 @@ importers: '@babel/core': specifier: ^7.20.0 version: 7.23.9 + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@hoarder/tailwind-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/tailwind + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript '@types/react': - specifier: ~18.2.45 + specifier: ^18.2.55 version: 18.2.58 ajv: specifier: latest @@ -297,74 +253,13 @@ importers: specifier: ^3.2.5 version: 3.2.5 tailwindcss: - specifier: 3.3.2 - version: 3.3.2 + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.2) typescript: - specifier: ^5.1.3 + specifier: ^5.3.3 version: 5.3.3 - packages/shared: - dependencies: - meilisearch: - specifier: ^0.37.0 - version: 0.37.0 - winston: - specifier: ^3.11.0 - version: 3.11.0 - zod: - specifier: ^3.22.4 - version: 3.22.4 - - packages/trpc: - dependencies: - '@hoarder/db': - specifier: workspace:* - version: link:../db - '@hoarder/shared': - specifier: workspace:* - version: link:../shared - '@trpc/server': - specifier: 11.0.0-next-beta.304 - version: 11.0.0-next-beta.304 - bcryptjs: - specifier: ^2.4.3 - version: 2.4.3 - drizzle-orm: - specifier: ^0.29.4 - version: 0.29.4(@types/react@18.2.58)(better-sqlite3@9.4.3)(react@18.2.0) - superjson: - specifier: ^2.2.1 - version: 2.2.1 - zod: - specifier: ^3.22.4 - version: 3.22.4 - devDependencies: - '@tsconfig/node21': - specifier: ^21.0.1 - version: 21.0.1 - '@types/bcrypt': - specifier: ^5.0.2 - version: 5.0.2 - '@types/bcryptjs': - specifier: ^2.4.6 - version: 2.4.6 - aws-sdk: - specifier: ^2.1570.0 - version: 2.1570.0 - mock-aws-s3: - specifier: ^4.0.2 - version: 4.0.2 - nock: - specifier: ^13.5.4 - version: 13.5.4 - vite-tsconfig-paths: - specifier: ^4.3.1 - version: 4.3.1(typescript@5.3.3) - vitest: - specifier: ^1.3.1 - version: 1.3.1(@types/node@20.11.20) - - packages/web: + apps/web: dependencies: '@auth/drizzle-adapter': specifier: ^0.8.0 @@ -376,20 +271,17 @@ importers: specifier: ^1.1.1 version: 1.1.1(emoji-mart@5.5.2)(react@18.2.0) '@hoarder/db': - specifier: 0.1.0 - version: link:../db + specifier: workspace:^0.1.0 + version: link:../../packages/db '@hoarder/shared': - specifier: 0.1.0 - version: link:../shared + specifier: workspace:^0.1.0 + version: link:../../packages/shared '@hoarder/trpc': - specifier: 0.1.0 - version: link:../trpc + specifier: workspace:^0.1.0 + version: link:../../packages/trpc '@hookform/resolvers': specifier: ^3.3.4 version: 3.3.4(react-hook-form@7.50.1) - '@next/eslint-plugin-next': - specifier: ^14.1.1 - version: 14.1.1 '@radix-ui/react-dialog': specifier: ^1.0.5 version: 1.0.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) @@ -421,23 +313,23 @@ importers: specifier: ^1.1.5 version: 1.1.5(@types/react-dom@18.2.19)(@types/react@18.2.58)(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query': - specifier: ^5.24.6 - version: 5.24.6(react@18.2.0) + specifier: ^5.24.8 + version: 5.24.8(react@18.2.0) '@tanstack/react-query-devtools': specifier: ^5.21.0 - version: 5.24.1(@tanstack/react-query@5.24.6)(react@18.2.0) + version: 5.24.1(@tanstack/react-query@5.24.8)(react@18.2.0) '@trpc/client': - specifier: 11.0.0-next-beta.304 - version: 11.0.0-next-beta.304(@trpc/server@11.0.0-next-beta.304) + specifier: 11.0.0-next-beta.308 + version: 11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308) '@trpc/next': - specifier: 11.0.0-next-beta.304 - version: 11.0.0-next-beta.304(@tanstack/react-query@5.24.6)(@trpc/client@11.0.0-next-beta.304)(@trpc/react-query@11.0.0-next-beta.304)(@trpc/server@11.0.0-next-beta.304)(next@14.1.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 11.0.0-next-beta.308 + version: 11.0.0-next-beta.308(@tanstack/react-query@5.24.8)(@trpc/client@11.0.0-next-beta.308)(@trpc/react-query@11.0.0-next-beta.308)(@trpc/server@11.0.0-next-beta.308)(next@14.1.1)(react-dom@18.2.0)(react@18.2.0) '@trpc/react-query': - specifier: ^11.0.0-next-beta.304 - version: 11.0.0-next-beta.304(@tanstack/react-query@5.24.6)(@trpc/client@11.0.0-next-beta.304)(@trpc/server@11.0.0-next-beta.304)(react-dom@18.2.0)(react@18.2.0) + specifier: 11.0.0-next-beta.308 + version: 11.0.0-next-beta.308(@tanstack/react-query@5.24.8)(@trpc/client@11.0.0-next-beta.308)(@trpc/server@11.0.0-next-beta.308)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': - specifier: 11.0.0-next-beta.304 - version: 11.0.0-next-beta.304 + specifier: 11.0.0-next-beta.308 + version: 11.0.0-next-beta.308 better-sqlite3: specifier: ^9.4.3 version: 9.4.3 @@ -454,28 +346,28 @@ importers: specifier: ^0.13.0 version: 0.13.0 lucide-react: - specifier: ^0.322.0 - version: 0.322.0(react@18.2.0) + specifier: ^0.330.0 + version: 0.330.0(react@18.2.0) meilisearch: specifier: ^0.37.0 version: 0.37.0 next: specifier: 14.1.1 - version: 14.1.1(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + version: 14.1.1(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0) next-auth: specifier: ^4.24.5 version: 4.24.6(next@14.1.1)(react-dom@18.2.0)(react@18.2.0) next-pwa: specifier: ^5.6.0 - version: 5.6.0(@babel/core@7.23.9)(next@14.1.1)(webpack@5.90.3) + version: 5.6.0(@babel/core@7.24.0)(next@14.1.1)(webpack@5.90.3) prettier: specifier: ^3.2.5 version: 3.2.5 react: - specifier: ^18 + specifier: ^18.2.0 version: 18.2.0 react-dom: - specifier: ^18 + specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-hook-form: specifier: ^7.50.1 @@ -505,6 +397,18 @@ importers: specifier: ^4.5.1 version: 4.5.1(@types/react@18.2.58)(react@18.2.0) devDependencies: + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@hoarder/tailwind-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/tailwind + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript '@tailwindcss/typography': specifier: ^0.5.10 version: 0.5.10(tailwindcss@3.4.1) @@ -512,19 +416,19 @@ importers: specifier: ^3.0.14 version: 3.0.14 '@types/react': - specifier: ^18 + specifier: ^18.2.55 version: 18.2.58 '@types/react-dom': - specifier: ^18 + specifier: ^18.2.19 version: 18.2.19 autoprefixer: - specifier: ^10.0.1 + specifier: ^10.4.17 version: 10.4.17(postcss@8.4.35) postcss: - specifier: ^8 + specifier: ^8.4.35 version: 8.4.35 tailwindcss: - specifier: ^3.3.0 + specifier: ^3.4.1 version: 3.4.1(ts-node@10.9.2) ts-node: specifier: ^10.9.2 @@ -536,14 +440,14 @@ importers: specifier: ^1.3.1 version: 1.3.1(@types/node@20.11.20) - packages/workers: + apps/workers: dependencies: '@hoarder/db': specifier: workspace:* - version: link:../db + version: link:../../packages/db '@hoarder/shared': specifier: workspace:* - version: link:../shared + version: link:../../packages/shared '@mozilla/readability': specifier: ^0.5.0 version: 0.5.0 @@ -596,8 +500,8 @@ importers: specifier: ^5.43.4 version: 5.45.0 openai: - specifier: ^4.26.1 - version: 4.28.0 + specifier: ^4.29.0 + version: 4.29.0 puppeteer: specifier: ^22.0.0 version: 22.3.0(typescript@5.3.3) @@ -614,12 +518,21 @@ importers: specifier: ^4.7.1 version: 4.7.1 typescript: - specifier: ^5 + specifier: ^5.3.3 version: 5.3.3 zod: specifier: ^3.22.4 version: 3.22.4 devDependencies: + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript '@types/dompurify': specifier: ^3.0.5 version: 3.0.5 @@ -630,6 +543,220 @@ importers: specifier: ^5.14.3 version: 5.14.3 + packages/db: + dependencies: + '@auth/core': + specifier: ^0.27.0 + version: 0.27.0 + '@paralleldrive/cuid2': + specifier: ^2.2.2 + version: 2.2.2 + better-sqlite3: + specifier: ^9.4.3 + version: 9.4.3 + dotenv: + specifier: ^16.4.1 + version: 16.4.5 + drizzle-orm: + specifier: ^0.29.4 + version: 0.29.4(@types/better-sqlite3@7.6.9)(better-sqlite3@9.4.3) + tsx: + specifier: ^4.7.1 + version: 4.7.1 + devDependencies: + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + '@tsconfig/node21': + specifier: ^21.0.1 + version: 21.0.1 + '@types/better-sqlite3': + specifier: ^7.6.9 + version: 7.6.9 + drizzle-kit: + specifier: ^0.20.14 + version: 0.20.14 + + packages/shared: + dependencies: + meilisearch: + specifier: ^0.37.0 + version: 0.37.0 + winston: + specifier: ^3.11.0 + version: 3.11.0 + zod: + specifier: ^3.22.4 + version: 3.22.4 + devDependencies: + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + + packages/trpc: + dependencies: + '@hoarder/db': + specifier: workspace:* + version: link:../db + '@hoarder/shared': + specifier: workspace:* + version: link:../shared + '@trpc/server': + specifier: 11.0.0-next-beta.308 + version: 11.0.0-next-beta.308 + bcryptjs: + specifier: ^2.4.3 + version: 2.4.3 + drizzle-orm: + specifier: ^0.29.4 + version: 0.29.4(@types/react@18.2.58)(better-sqlite3@9.4.3)(react@18.2.0) + superjson: + specifier: ^2.2.1 + version: 2.2.1 + zod: + specifier: ^3.22.4 + version: 3.22.4 + devDependencies: + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../../tooling/eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../../tooling/prettier + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../../tooling/typescript + '@tsconfig/node21': + specifier: ^21.0.1 + version: 21.0.1 + '@types/bcrypt': + specifier: ^5.0.2 + version: 5.0.2 + '@types/bcryptjs': + specifier: ^2.4.6 + version: 2.4.6 + nock: + specifier: ^13.5.4 + version: 13.5.4 + vite-tsconfig-paths: + specifier: ^4.3.1 + version: 4.3.1(typescript@5.3.3) + vitest: + specifier: ^1.3.1 + version: 1.3.1(@types/node@20.11.20) + + tooling/eslint: + dependencies: + '@next/eslint-plugin-next': + specifier: ^14.1.1 + version: 14.1.1 + '@typescript-eslint/eslint-plugin': + specifier: ^7.2.0 + version: 7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': + specifier: ^7.2.0 + version: 7.2.0(eslint@8.57.0)(typescript@5.3.3) + eslint-config-turbo: + specifier: ^1.12.4 + version: 1.12.5(eslint@8.57.0) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0) + eslint-plugin-jsx-a11y: + specifier: ^6.8.0 + version: 6.8.0(eslint@8.57.0) + eslint-plugin-react: + specifier: ^7.33.2 + version: 7.33.2(eslint@8.57.0) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.0(eslint@8.57.0) + devDependencies: + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../prettier + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../typescript + '@types/eslint': + specifier: ^8.56.5 + version: 8.56.5 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.2.5 + version: 3.2.5 + typescript: + specifier: ^5.3.3 + version: 5.3.3 + + tooling/github: {} + + tooling/prettier: + dependencies: + '@ianvs/prettier-plugin-sort-imports': + specifier: ^4.1.1 + version: 4.2.0(prettier@3.2.5) + prettier: + specifier: ^3.2.5 + version: 3.2.5 + prettier-plugin-tailwindcss: + specifier: ^0.5.11 + version: 0.5.11(@ianvs/prettier-plugin-sort-imports@4.2.0)(prettier@3.2.5) + devDependencies: + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../typescript + typescript: + specifier: ^5.3.3 + version: 5.3.3 + + tooling/tailwind: + dependencies: + postcss: + specifier: ^8.4.35 + version: 8.4.35 + tailwindcss: + specifier: ^3.4.1 + version: 3.4.1(ts-node@10.9.2) + tailwindcss-animate: + specifier: ^1.0.7 + version: 1.0.7(tailwindcss@3.4.1) + devDependencies: + '@hoarder/eslint-config': + specifier: workspace:^0.2.0 + version: link:../eslint + '@hoarder/prettier-config': + specifier: workspace:^0.1.0 + version: link:../prettier + '@hoarder/tsconfig': + specifier: workspace:^0.1.0 + version: link:../typescript + eslint: + specifier: ^8.57.0 + version: 8.57.0 + prettier: + specifier: ^3.2.5 + version: 3.2.5 + typescript: + specifier: ^5.3.3 + version: 5.3.3 + + tooling/typescript: {} + packages: /@aashutoshrathi/word-wrap@1.2.6: @@ -757,12 +884,34 @@ packages: transitivePeerDependencies: - supports-color + /@babel/core@7.24.0: + resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0) + '@babel/helpers': 7.24.0 + '@babel/parser': 7.24.0 + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + convert-source-map: 2.0.0 + debug: 4.3.4 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} engines: {node: '>=6.9.0'} requiresBuild: true dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 '@jridgewell/gen-mapping': 0.3.4 '@jridgewell/trace-mapping': 0.3.23 jsesc: 2.5.2 @@ -885,6 +1034,20 @@ packages: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} + engines: {node: '>=6.9.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/helper-validator-identifier': 7.22.20 + /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} engines: {node: '>=6.9.0'} @@ -939,7 +1102,7 @@ packages: engines: {node: '>=6.9.0'} requiresBuild: true dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -975,6 +1138,16 @@ packages: transitivePeerDependencies: - supports-color + /@babel/helpers@7.24.0: + resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + transitivePeerDependencies: + - supports-color + /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} engines: {node: '>=6.9.0'} @@ -991,6 +1164,13 @@ packages: dependencies: '@babel/types': 7.23.9 + /@babel/parser@7.24.0: + resolution: {integrity: sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.24.0 + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} @@ -1822,6 +2002,19 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.24.0 + dev: false + + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} + engines: {node: '>=6.9.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + optional: true /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} @@ -1832,6 +2025,19 @@ packages: dependencies: '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.24.0 + dev: false + + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.24.0): + resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} + engines: {node: '>=6.9.0'} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.24.0 + '@babel/helper-plugin-utils': 7.24.0 + dev: true + optional: true /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} @@ -2169,6 +2375,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 + dev: false /@babel/template@7.23.9: resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} @@ -2179,6 +2386,14 @@ packages: '@babel/parser': 7.23.9 '@babel/types': 7.23.9 + /@babel/template@7.24.0: + resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + /@babel/traverse@7.23.9: resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} @@ -2197,6 +2412,23 @@ packages: transitivePeerDependencies: - supports-color + /@babel/traverse@7.24.0: + resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types@7.23.9: resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} engines: {node: '>=6.9.0'} @@ -2206,6 +2438,14 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.24.0: + resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + /@cliqz/adblocker-content@1.26.16: resolution: {integrity: sha512-N1pKg1gxfpnz47w2Sjs2sg3fxFZb113ClUhitgAFSVXeIhZ+S+bCaQtvwtP0mJT+SDfUx2NsPiLwZoPjVRI3wQ==} dependencies: @@ -3036,7 +3276,7 @@ packages: resolution: {integrity: sha512-bOhuFnlRaS7CU33+rFFIWdcET/Vkyn1vsN8BYFwCDEF5P1fVVvYN7bFOsQLTMD3nvi35C1AGmtqUr/Wfv8Xaow==} engines: {node: '>=12'} dependencies: - '@expo/spawn-async': 1.5.0 + '@expo/spawn-async': 1.7.2 exec-async: 2.2.0 dev: false @@ -3044,7 +3284,7 @@ packages: resolution: {integrity: sha512-LKdo/6y4W7llZ6ghsg1kdx2CeH/qR/c6QI/JI8oPUvppsZoeIYjSkdflce978fAMfR8IXoi0wt0jA2w0kWpwbg==} dependencies: '@expo/json-file': 8.3.0 - '@expo/spawn-async': 1.5.0 + '@expo/spawn-async': 1.7.2 ansi-regex: 5.0.1 chalk: 4.1.2 find-up: 5.0.0 @@ -3227,6 +3467,26 @@ packages: /@humanwhocodes/object-schema@2.0.2: resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} + /@ianvs/prettier-plugin-sort-imports@4.2.0(prettier@3.2.5): + resolution: {integrity: sha512-WemEN61+hI4sQs+Ndp7TJAG5pMl7pY+tVAw+kt+Lj8vbgxRZaFQ8bU9nhjH2C45G9AABqFOQnY6j9drFGMmkyA==} + peerDependencies: + '@vue/compiler-sfc': 2.7.x || 3.x + prettier: 2 || 3 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/core': 7.24.0 + '@babel/generator': 7.23.6 + '@babel/parser': 7.24.0 + '@babel/traverse': 7.24.0 + '@babel/types': 7.24.0 + prettier: 3.2.5 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + dev: false + /@ioredis/commands@1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} dev: false @@ -3449,11 +3709,6 @@ packages: resolution: {integrity: sha512-7CnQyD5G8shHxQIIg3c7/pSeYFeMhsNbpU/bmvH7ZnDql7mNRgg8O2JZrhrc/soFnfBnKP4/xXNiiSIPn2w8gA==} dev: false - /@next/eslint-plugin-next@14.1.0: - resolution: {integrity: sha512-x4FavbNEeXx/baD/zC/SdrvkjSby8nBn8KcCREqk6UuwvwoAPZmaV8TFCAuo/cpovBRTIY67mHhe86MQQm/68Q==} - dependencies: - glob: 10.3.10 - /@next/eslint-plugin-next@14.1.1: resolution: {integrity: sha512-NP1WoGFnFLpqqCWgGFjnn/sTwUExdPyjeFKRdQP1X/bL/tjAQ/TXDmYqw6vzGaP5NaZ2u6xzg+N/0nd7fOPOGQ==} dependencies: @@ -5131,10 +5386,6 @@ packages: dev: true optional: true - /@rushstack/eslint-patch@1.7.2: - resolution: {integrity: sha512-RbhOOTCNoCrbfkRyoXODZp75MlpiHMgbE5MEBZAnnnLyQNgrigEj4p0lzsMDyc1zVsJDLrivB58tgg3emX0eEA==} - dev: true - /@segment/loosely-validate-event@2.0.0: resolution: {integrity: sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==} dependencies: @@ -5345,10 +5596,6 @@ packages: - typescript dev: true - /@tanstack/query-core@5.24.6: - resolution: {integrity: sha512-xYhxiMUPh1JzamVK8VwwkBpIBXVYRyIBW9gjSN+/BB4kL1nS86gnRWeW8L+sacCj1RiyEsysJe3GSvtbIpHdWw==} - dev: false - /@tanstack/query-core@5.24.8: resolution: {integrity: sha512-yH7KnfXMf10p1U5GffTQzFi2Miiw6WJZImGYGdV7eqa5ZbKO8qVx9lOA9SfhIaJXomrMp1Yz5w/CBhVM3yWeTA==} dev: false @@ -5357,23 +5604,14 @@ packages: resolution: {integrity: sha512-pThim455t69zrZaQKa7IRkEIK8UBTS+gHVAdNfhO72Xh4rWpMc63ovRje5/n6iw63+d6QiJzVadsJVdPoodSeQ==} dev: false - /@tanstack/react-query-devtools@5.24.1(@tanstack/react-query@5.24.6)(react@18.2.0): + /@tanstack/react-query-devtools@5.24.1(@tanstack/react-query@5.24.8)(react@18.2.0): resolution: {integrity: sha512-qa4SEugN+EF8JJXcpsM9Lu05HfUv5cvHvLuB0uw/81eJZyNHFdtHFBi5RLCgpBrOyVMDfH8UQ3VBMqXzFKV68A==} peerDependencies: '@tanstack/react-query': ^5.24.1 react: ^18.0.0 dependencies: '@tanstack/query-devtools': 5.24.0 - '@tanstack/react-query': 5.24.6(react@18.2.0) - react: 18.2.0 - dev: false - - /@tanstack/react-query@5.24.6(react@18.2.0): - resolution: {integrity: sha512-eyIWwHiO1ZirYGzqs0kfRMkf8icuXroFunjnsgntk9YgGFbGoPs3Hxy9/OushNvpnkHT9RwPZb8UfEKzMzzEaQ==} - peerDependencies: - react: ^18.0.0 - dependencies: - '@tanstack/query-core': 5.24.6 + '@tanstack/react-query': 5.24.8(react@18.2.0) react: 18.2.0 dev: false @@ -5390,14 +5628,6 @@ packages: resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} dev: false - /@trpc/client@11.0.0-next-beta.304(@trpc/server@11.0.0-next-beta.304): - resolution: {integrity: sha512-NOTaKb9F3KWMruxdrU9TBIY45rGnnn4ImqmMoxW1CJO4SGL8XRqL/5xC8XcNTc3cXXv6eFOt8rNwQM9hCN2G2A==} - peerDependencies: - '@trpc/server': 11.0.0-next-beta.304+1724978f1 - dependencies: - '@trpc/server': 11.0.0-next-beta.304 - dev: false - /@trpc/client@11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308): resolution: {integrity: sha512-bg8EV6qVZZl6/v9HhfmntEbPcjtzi3MFhdHUv9l24HLkLAJPvBCMMsjjFZG6PX+jwyXTFjSBGzaXwpnNtdE1tQ==} peerDependencies: @@ -5406,31 +5636,6 @@ packages: '@trpc/server': 11.0.0-next-beta.308 dev: false - /@trpc/next@11.0.0-next-beta.304(@tanstack/react-query@5.24.6)(@trpc/client@11.0.0-next-beta.304)(@trpc/react-query@11.0.0-next-beta.304)(@trpc/server@11.0.0-next-beta.304)(next@14.1.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-bCCnkzqEpl6Z3R11fzPHxNxdgvoCZ2yDWxQZQlFPANSJVihjzLCMCK60AjXawDXdVUEqbA/OXP6htZeozjmWZg==} - peerDependencies: - '@tanstack/react-query': ^5.0.0 - '@trpc/client': 11.0.0-next-beta.304+1724978f1 - '@trpc/react-query': 11.0.0-next-beta.304+1724978f1 - '@trpc/server': 11.0.0-next-beta.304+1724978f1 - next: '*' - react: '>=16.8.0' - react-dom: '>=16.8.0' - peerDependenciesMeta: - '@tanstack/react-query': - optional: true - '@trpc/react-query': - optional: true - dependencies: - '@tanstack/react-query': 5.24.6(react@18.2.0) - '@trpc/client': 11.0.0-next-beta.304(@trpc/server@11.0.0-next-beta.304) - '@trpc/react-query': 11.0.0-next-beta.304(@tanstack/react-query@5.24.6)(@trpc/client@11.0.0-next-beta.304)(@trpc/server@11.0.0-next-beta.304)(react-dom@18.2.0)(react@18.2.0) - '@trpc/server': 11.0.0-next-beta.304 - next: 14.1.1(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - /@trpc/next@11.0.0-next-beta.308(@tanstack/react-query@5.24.8)(@trpc/client@11.0.0-next-beta.308)(@trpc/react-query@11.0.0-next-beta.308)(@trpc/server@11.0.0-next-beta.308)(next@14.1.1)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-zur2BkpI4NzKlg5P0RxGwk9yzYMuaKlXrS4vgwEsnr8CrVTqgClnStLsQOD14gwWRilp5QaJcFiPE2607OzQAg==} peerDependencies: @@ -5451,23 +5656,7 @@ packages: '@trpc/client': 11.0.0-next-beta.308(@trpc/server@11.0.0-next-beta.308) '@trpc/react-query': 11.0.0-next-beta.308(@tanstack/react-query@5.24.8)(@trpc/client@11.0.0-next-beta.308)(@trpc/server@11.0.0-next-beta.308)(react-dom@18.2.0)(react@18.2.0) '@trpc/server': 11.0.0-next-beta.308 - next: 14.1.1(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: false - - /@trpc/react-query@11.0.0-next-beta.304(@tanstack/react-query@5.24.6)(@trpc/client@11.0.0-next-beta.304)(@trpc/server@11.0.0-next-beta.304)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-DkfNUVxxEgKtel5Z9DUaw815oy8VGK7i626FrUs7PRQ7PEcQ5WDBXbYXsukOqx+qEpx09dgiWBBG6LGQf6U9Dg==} - peerDependencies: - '@tanstack/react-query': ^5.0.0 - '@trpc/client': 11.0.0-next-beta.304+1724978f1 - '@trpc/server': 11.0.0-next-beta.304+1724978f1 - react: '>=18.2.0' - react-dom: '>=18.2.0' - dependencies: - '@tanstack/react-query': 5.24.6(react@18.2.0) - '@trpc/client': 11.0.0-next-beta.304(@trpc/server@11.0.0-next-beta.304) - '@trpc/server': 11.0.0-next-beta.304 + next: 14.1.1(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: false @@ -5488,10 +5677,6 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@trpc/server@11.0.0-next-beta.304: - resolution: {integrity: sha512-vviyE80LZ8LFML/w0usDjcUbduhsBtLBO+MKXhAtRfo25FxajhDFWvuvdqglAlTxFmCuH7oX+GxfCTjcsnnHyQ==} - dev: false - /@trpc/server@11.0.0-next-beta.308: resolution: {integrity: sha512-GdYgcbecAafHQszqMVeHrX45c0hhAISvB+w9Ja40nZcb4kgaNvhflSVIn8XbHKUG8urmYI9kTL2k8hD/59/LMA==} dev: false @@ -5515,8 +5700,8 @@ packages: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} requiresBuild: true dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 @@ -5527,7 +5712,7 @@ packages: resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} requiresBuild: true dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true optional: true @@ -5535,8 +5720,8 @@ packages: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} requiresBuild: true dependencies: - '@babel/parser': 7.23.9 - '@babel/types': 7.23.9 + '@babel/parser': 7.24.0 + '@babel/types': 7.24.0 dev: true optional: true @@ -5544,7 +5729,7 @@ packages: resolution: {integrity: sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==} requiresBuild: true dependencies: - '@babel/types': 7.23.9 + '@babel/types': 7.24.0 dev: true optional: true @@ -5577,7 +5762,6 @@ packages: dependencies: '@types/filesystem': 0.0.35 '@types/har-format': 1.2.15 - dev: false /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -5617,7 +5801,6 @@ packages: dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 - dev: false /@types/estree-jsx@1.0.5: resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -5636,11 +5819,9 @@ packages: resolution: {integrity: sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ==} dependencies: '@types/filewriter': 0.0.33 - dev: false /@types/filewriter@0.0.33: resolution: {integrity: sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==} - dev: false /@types/firefox-webext-browser@120.0.1: resolution: {integrity: sha512-IR+NpPC+/o9TSTelcvT/w3fXTanX3LrpVxC5EQrlQyTjyWOKFz8O2mCJQ9VuejBz4NtovCGGKacXQ/VyY63L0A==} @@ -5655,7 +5836,6 @@ packages: /@types/har-format@1.2.15: resolution: {integrity: sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA==} - dev: false /@types/hast@3.0.4: resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -5696,7 +5876,6 @@ packages: /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} @@ -5847,6 +6026,36 @@ packages: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true + + /@typescript-eslint/eslint-plugin@7.2.0(@typescript-eslint/parser@7.2.0)(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-mdekAHOqS9UjlmyF/LSs6AIEvfceV749GFxoBAjwAv0nkevfKHWQFDMcBZWUiIC5ft6ePWivXoS36aKQ0Cy3sw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/type-utils': 7.2.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.4 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false /@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} @@ -5867,6 +6076,28 @@ packages: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true + + /@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-5FKsVcHTk6TafQKQbuIVkXq58Fnbkd2wDL4LB7AURN7RUOu1utVP+G8+6u3ZhEroW3DF6hyo3ZEXxgKgp4KeCg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.4 + eslint: 8.57.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false /@typescript-eslint/scope-manager@6.21.0: resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} @@ -5874,6 +6105,15 @@ packages: dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 + dev: true + + /@typescript-eslint/scope-manager@7.2.0: + resolution: {integrity: sha512-Qh976RbQM/fYtjx9hs4XkayYujB/aPwglw2choHmf3zBjB4qOywWSdt9+KLRdHubGcoSwBnXUH2sR3hkyaERRg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + dev: false /@typescript-eslint/type-utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} @@ -5893,10 +6133,37 @@ packages: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true + + /@typescript-eslint/type-utils@7.2.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-xHi51adBHo9O9330J8GQYQwrKBqbIPJGZZVQTHHmy200hvkLZFWJIFtAG/7IYTWUyun6DE6w5InDReePJYJlJA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.3.3) + '@typescript-eslint/utils': 7.2.0(eslint@8.57.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.57.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false /@typescript-eslint/types@6.21.0: resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/types@7.2.0: + resolution: {integrity: sha512-XFtUHPI/abFhm4cbCDc5Ykc8npOKBSJePY3a3s+lwumt7XWJuzP5cZcfZ610MIPHjQjNsOLlYK8ASPaNG8UiyA==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: false /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} @@ -5918,6 +6185,29 @@ packages: typescript: 5.3.3 transitivePeerDependencies: - supports-color + dev: true + + /@typescript-eslint/typescript-estree@7.2.0(typescript@5.3.3): + resolution: {integrity: sha512-cyxS5WQQCoBwSakpMrvMXuMDEbhOo9bNHHrNcEWis6XHx6KF518tkF1wBvKIn/tpq5ZpUYK7Bdklu8qY0MsFIA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/visitor-keys': 7.2.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.2.1(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: false /@typescript-eslint/utils@6.21.0(eslint@8.57.0)(typescript@5.3.3): resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} @@ -5936,6 +6226,26 @@ packages: transitivePeerDependencies: - supports-color - typescript + dev: true + + /@typescript-eslint/utils@7.2.0(eslint@8.57.0)(typescript@5.3.3): + resolution: {integrity: sha512-YfHpnMAGb1Eekpm3XRK8hcMwGLGsnT6L+7b2XyRv6ouDuJU1tZir1GS2i0+VXRatMwSI1/UfcyPe53ADkU+IuA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^8.56.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 7.2.0 + '@typescript-eslint/types': 7.2.0 + '@typescript-eslint/typescript-estree': 7.2.0(typescript@5.3.3) + eslint: 8.57.0 + semver: 7.6.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: false /@typescript-eslint/visitor-keys@6.21.0: resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} @@ -5943,6 +6253,15 @@ packages: dependencies: '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 + dev: true + + /@typescript-eslint/visitor-keys@7.2.0: + resolution: {integrity: sha512-c6EIQRHhcpl6+tO8EMR+kjkkV+ugUNXOmeASA1rlzkd8EPIriavpWoiEz1HR/VLhbVIdhqnV6E7JZm00cBDx2A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 7.2.0 + eslint-visitor-keys: 3.4.3 + dev: false /@ungap/structured-clone@1.2.0: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -5985,9 +6304,9 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@babel/core': 7.24.0 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.24.0) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.24.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 vite: 5.1.4(@types/node@20.11.20) @@ -6399,7 +6718,7 @@ packages: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 - dev: true + dev: false /arr-union@3.1.0: resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} @@ -6448,7 +6767,6 @@ packages: es-abstract: 1.22.4 es-array-method-boxes-properly: 1.0.0 is-string: 1.0.7 - dev: true /array.prototype.findlastindex@1.2.4: resolution: {integrity: sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==} @@ -6459,7 +6777,6 @@ packages: es-abstract: 1.22.4 es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - dev: true /array.prototype.flat@1.3.2: resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} @@ -6511,7 +6828,7 @@ packages: /ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true + dev: false /ast-types@0.13.4: resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} @@ -6587,32 +6904,16 @@ packages: dependencies: possible-typed-array-names: 1.0.0 - /aws-sdk@2.1570.0: - resolution: {integrity: sha512-WySdibC3YOPCFcXNSevX7cGp6Nc0Ksv7m6aaz6YoqSrmSn7mZhkWaVXqfd14nsjJuyEbEgX+gAiZaahyvkUYJw==} - engines: {node: '>= 10.0.0'} - dependencies: - buffer: 4.9.2 - events: 1.1.1 - ieee754: 1.1.13 - jmespath: 0.16.0 - querystring: 0.2.0 - sax: 1.2.1 - url: 0.10.3 - util: 0.12.5 - uuid: 8.0.0 - xml2js: 0.6.2 - dev: true - /axe-core@4.7.0: resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} engines: {node: '>=4'} - dev: true + dev: false /axobject-query@3.2.1: resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} dependencies: dequal: 2.0.3 - dev: true + dev: false /b4a@1.6.6: resolution: {integrity: sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==} @@ -6626,14 +6927,14 @@ packages: '@babel/core': 7.23.9 dev: false - /babel-loader@8.3.0(@babel/core@7.23.9)(webpack@5.90.3): + /babel-loader@8.3.0(@babel/core@7.24.0)(webpack@5.90.3): resolution: {integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 @@ -6805,6 +7106,7 @@ packages: /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + dev: false /basic-ftp@5.0.4: resolution: {integrity: sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==} @@ -6857,10 +7159,6 @@ packages: readable-stream: 3.6.2 dev: false - /bluebird@3.7.2: - resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - dev: true - /blueimp-md5@2.19.0: resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==} dev: false @@ -6943,14 +7241,6 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - /buffer@4.9.2: - resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - isarray: 1.0.0 - dev: true - /buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} dependencies: @@ -7765,7 +8055,7 @@ packages: /damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true + dev: false /data-uri-to-buffer@3.0.1: resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} @@ -7986,6 +8276,7 @@ packages: /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + dev: false /destroy@1.2.0: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} @@ -8347,6 +8638,7 @@ packages: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + dev: false /entities@2.0.3: resolution: {integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==} @@ -8453,7 +8745,6 @@ packages: /es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} - dev: true /es-define-property@1.0.0: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} @@ -8653,31 +8944,6 @@ packages: source-map: 0.6.1 dev: false - /eslint-config-next@14.1.0(eslint@8.57.0)(typescript@5.3.3): - resolution: {integrity: sha512-SBX2ed7DoRFXC6CQSLc/SbLY9Ut6HxNB2wPTcoIWjUMd7aF7O/SIE7111L8FdZ9TXsNV4pulUDnfthpyPtbFUg==} - peerDependencies: - eslint: ^7.23.0 || ^8.0.0 - typescript: '>=3.3.1' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - '@next/eslint-plugin-next': 14.1.0 - '@rushstack/eslint-patch': 1.7.2 - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.33.2(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) - typescript: 5.3.3 - transitivePeerDependencies: - - eslint-import-resolver-webpack - - supports-color - dev: true - /eslint-config-prettier@8.10.0(eslint@8.57.0): resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} hasBin: true @@ -8687,13 +8953,13 @@ packages: eslint: 8.57.0 dev: true - /eslint-config-prettier@9.1.0(eslint@8.57.0): - resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} - hasBin: true + /eslint-config-turbo@1.12.5(eslint@8.57.0): + resolution: {integrity: sha512-wXytbX+vTzQ6rwgM6sIr447tjYJBlRj5V/eBFNGNXw5Xs1R715ppPYhbmxaFbkrWNQSGJsWRrYGAlyq0sT/OsQ==} peerDependencies: - eslint: '>=7.0.0' + eslint: '>6.6.0' dependencies: eslint: 8.57.0 + eslint-plugin-turbo: 1.12.5(eslint@8.57.0) dev: false /eslint-config-universe@12.0.0(eslint@8.57.0)(prettier@3.2.5)(typescript@5.3.3): @@ -8709,7 +8975,7 @@ packages: '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) eslint: 8.57.0 eslint-config-prettier: 8.10.0(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0) eslint-plugin-node: 11.1.0(eslint@8.57.0) eslint-plugin-prettier: 5.1.3(eslint-config-prettier@8.10.0)(eslint@8.57.0)(prettier@3.2.5) eslint-plugin-react: 7.33.2(eslint@8.57.0) @@ -8731,32 +8997,37 @@ packages: resolve: 1.22.8 transitivePeerDependencies: - supports-color - dev: true - /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} - engines: {node: ^14.18.0 || >=16.0.0} + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} peerDependencies: + '@typescript-eslint/parser': '*' eslint: '*' - eslint-plugin-import: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true dependencies: - debug: 4.3.4 - enhanced-resolve: 5.15.0 + '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + debug: 3.2.7 eslint: 8.57.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - fast-glob: 3.3.2 - get-tsconfig: 4.7.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 + eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - - '@typescript-eslint/parser' - - eslint-import-resolver-node - - eslint-import-resolver-webpack - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -8777,14 +9048,13 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.21.0(eslint@8.57.0)(typescript@5.3.3) + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.3.3) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color - dev: true + dev: false /eslint-plugin-es@3.0.1(eslint@8.57.0): resolution: {integrity: sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==} @@ -8797,7 +9067,7 @@ packages: regexpp: 3.2.0 dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -8816,7 +9086,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.21.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.1 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -8832,6 +9102,41 @@ packages: - supports-color dev: true + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.2.0)(eslint@8.57.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 7.2.0(eslint@8.57.0)(typescript@5.3.3) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.4 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.57.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.2.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + hasown: 2.0.1 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.2 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.15.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} @@ -8855,7 +9160,7 @@ packages: minimatch: 3.1.2 object.entries: 1.1.7 object.fromentries: 2.0.7 - dev: true + dev: false /eslint-plugin-node@11.1.0(eslint@8.57.0): resolution: {integrity: sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==} @@ -8933,16 +9238,14 @@ packages: semver: 6.3.1 string.prototype.matchall: 4.0.10 - /eslint-plugin-tailwindcss@3.14.3(tailwindcss@3.4.1): - resolution: {integrity: sha512-1MKT8CrVuqVJleHxb7ICHsF2QwO0G+VJ28athTtlcOkccp0qmwK7nCUa1C9paCZ+VVgQU4fonsjLz/wUxoMHJQ==} - engines: {node: '>=12.13.0'} + /eslint-plugin-turbo@1.12.5(eslint@8.57.0): + resolution: {integrity: sha512-cXy7mCzAdngBTJIWH4DASXHy0vQpujWDBqRTu0YYqCN/QEGsi3HWM+STZEbPYELdjtm5EsN2HshOSSqWnjdRHg==} peerDependencies: - tailwindcss: ^3.4.0 + eslint: '>6.6.0' dependencies: - fast-glob: 3.3.2 - postcss: 8.4.35 - tailwindcss: 3.4.1(ts-node@10.9.2) - dev: true + dotenv: 16.0.3 + eslint: 8.57.0 + dev: false /eslint-scope@5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} @@ -9105,11 +9408,6 @@ packages: engines: {node: '>=6'} dev: false - /events@1.1.1: - resolution: {integrity: sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==} - engines: {node: '>=0.4.x'} - dev: true - /events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -9796,15 +10094,6 @@ packages: universalify: 2.0.1 dev: false - /fs-extra@7.0.1: - resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - /fs-extra@8.1.0: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} @@ -10347,12 +10636,9 @@ packages: resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} dev: false - /ieee754@1.1.13: - resolution: {integrity: sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==} - dev: true - /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + dev: false /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} @@ -10513,6 +10799,7 @@ packages: dependencies: call-bind: 1.0.7 has-tostringtag: 1.0.2 + dev: false /is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} @@ -10841,6 +11128,7 @@ packages: /isarray@1.0.0: resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + dev: false /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -10995,11 +11283,6 @@ packages: resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} hasBin: true - /jmespath@0.16.0: - resolution: {integrity: sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==} - engines: {node: '>= 0.6.0'} - dev: true - /joi@17.12.2: resolution: {integrity: sha512-RonXAIzCiHLc8ss3Ibuz45u28GOsWE1UpfDXLbN/9NKbL4tCJf8TWYVKsoYuuh+sAUt7fsSNpA+r2+TBA6Wjmw==} dependencies: @@ -11209,6 +11492,7 @@ packages: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: graceful-fs: 4.2.11 + dev: false /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} @@ -11266,14 +11550,14 @@ packages: /language-subtag-registry@0.3.22: resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: true + dev: false /language-tags@1.0.9: resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} engines: {node: '>=0.10'} dependencies: language-subtag-registry: 0.3.22 - dev: true + dev: false /lazy-cache@0.2.7: resolution: {integrity: sha512-gkX52wvU/R8DVMMt78ATVPFMJqfW8FPz1GZ1sVHBVQHmu/WvhIWE4cE1GBzhJNFicDeYhnwp6Rl35BcAIM3YOQ==} @@ -11686,14 +11970,6 @@ packages: react-native-svg: 15.1.0(react-native@0.73.4)(react@18.2.0) dev: false - /lucide-react@0.322.0(react@18.2.0): - resolution: {integrity: sha512-7knx2HzI/J7wCVaAzbO4y622PYjBqy4w03DvXKri0EBxg1s3ogPHkLXvFoNVS6WTXgxLsIZDdvgY3AWQmc4JXA==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 - dependencies: - react: 18.2.0 - dev: false - /lucide-react@0.330.0(react@18.2.0): resolution: {integrity: sha512-CQwY+Fpbt2kxCoVhuN0RCZDCYlbYnqB870Bl/vIQf3ER/cnDDQ6moLmEkguRyruAUGd4j3Lc4mtnJosXnqHheA==} peerDependencies: @@ -12096,7 +12372,7 @@ packages: resolution: {integrity: sha512-ssuoVC4OzqaOt3LpwfUbDfBlFGRu9v1Yf2JJnKPz0ROYHNjSBws4aUesqQQ/Ea8DbiH7TK4j4cJmm+XjdHmgqA==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 hermes-parser: 0.19.1 nullthrows: 1.1.1 transitivePeerDependencies: @@ -12216,7 +12492,7 @@ packages: resolution: {integrity: sha512-e04tdTC5Fy1vOQrTTXb5biao0t7nR/h+b1IaBTlM5UaHaAJZr658uVOoZhkRxKjbhF2mIwJ/8DdorD2CA15BCg==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/generator': 7.23.6 '@babel/template': 7.23.9 '@babel/traverse': 7.23.9 @@ -12229,7 +12505,7 @@ packages: resolution: {integrity: sha512-jV+VgCLiCj5jQadW/h09qJaqDreL6XcBRY52STCoz2xWn6WWLLMB5nXzQtvFNPmnIOps+Xu8+d5hiPcBNOhYmA==} engines: {node: '>=18'} dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 '@babel/generator': 7.23.6 '@babel/parser': 7.23.9 '@babel/types': 7.23.9 @@ -12695,15 +12971,6 @@ packages: ufo: 1.4.0 dev: true - /mock-aws-s3@4.0.2: - resolution: {integrity: sha512-J6g3MMCuKHeuqVEOgvQfRGIfVmg6KKrED48Bux/L9rTY3NPK9TFRh/9bCf5AuzjJm9PIlwhDEO99tD8+smnTyQ==} - engines: {node: '>=10.0.0'} - dependencies: - bluebird: 3.7.2 - fs-extra: 7.0.1 - underscore: 1.12.1 - dev: true - /mrmime@1.0.1: resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} @@ -12771,14 +13038,14 @@ packages: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} dev: false - /nativewind@4.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.3.2): + /nativewind@4.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.4.1): resolution: {integrity: sha512-nd0Xgjzaq0ISvUAjibZXcuSvvpX1BGX2mfOGBPZpjGfHL3By6fwLGsNhrKU6mi2FF30c+kdok3e2I4k/O0UO1Q==} engines: {node: '>=16'} peerDependencies: tailwindcss: '>3.3.0' dependencies: - react-native-css-interop: 0.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.3.2) - tailwindcss: 3.3.2 + react-native-css-interop: 0.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.4.1) + tailwindcss: 3.4.1(ts-node@10.9.2) transitivePeerDependencies: - '@babel/core' - react @@ -12832,7 +13099,7 @@ packages: '@panva/hkdf': 1.1.1 cookie: 0.5.0 jose: 4.15.4 - next: 14.1.1(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.1(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0) oauth: 0.9.15 openid-client: 5.6.4 preact: 10.19.6 @@ -12842,15 +13109,15 @@ packages: uuid: 8.3.2 dev: false - /next-pwa@5.6.0(@babel/core@7.23.9)(next@14.1.1)(webpack@5.90.3): + /next-pwa@5.6.0(@babel/core@7.24.0)(next@14.1.1)(webpack@5.90.3): resolution: {integrity: sha512-XV8g8C6B7UmViXU8askMEYhWwQ4qc/XqJGnexbLV68hzKaGHZDMtHsm2TNxFcbR7+ypVuth/wwpiIlMwpRJJ5A==} peerDependencies: next: '>=9.0.0' dependencies: - babel-loader: 8.3.0(@babel/core@7.23.9)(webpack@5.90.3) + babel-loader: 8.3.0(@babel/core@7.24.0)(webpack@5.90.3) clean-webpack-plugin: 4.0.0(webpack@5.90.3) globby: 11.1.0 - next: 14.1.1(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0) + next: 14.1.1(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0) terser-webpack-plugin: 5.3.10(webpack@5.90.3) workbox-webpack-plugin: 6.6.0(webpack@5.90.3) workbox-window: 6.6.0 @@ -12868,7 +13135,7 @@ packages: resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} dev: true - /next@14.1.1(@babel/core@7.23.9)(react-dom@18.2.0)(react@18.2.0): + /next@14.1.1(@babel/core@7.24.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-McrGJqlGSHeaz2yTRPkEucxQKe5Zq7uPwyeHNmJaZNY4wx9E9QdxmTp310agFRoMuIYgQrCrT3petg13fSVOww==} engines: {node: '>=18.17.0'} hasBin: true @@ -12891,7 +13158,7 @@ packages: postcss: 8.4.31 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - styled-jsx: 5.1.1(@babel/core@7.23.9)(react@18.2.0) + styled-jsx: 5.1.1(@babel/core@7.24.0)(react@18.2.0) optionalDependencies: '@next/swc-darwin-arm64': 14.1.1 '@next/swc-darwin-x64': 14.1.1 @@ -13145,7 +13412,6 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.4 es-errors: 1.3.0 - dev: true /object.hasown@1.1.3: resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} @@ -13241,8 +13507,8 @@ packages: is-wsl: 2.2.0 dev: false - /openai@4.28.0: - resolution: {integrity: sha512-JM8fhcpmpGN0vrUwGquYIzdcEQHtFuom6sRCbbCM6CfzZXNuRk33G7KfeRAIfnaCxSpzrP5iHtwJzIm6biUZ2Q==} + /openai@4.29.0: + resolution: {integrity: sha512-ic6C681bSow1XQdKhADthM/OOKqNL05M1gCFLx1mRqLJ+yH49v6qnvaWQ76kwqI/IieCuVTXfRfTk3sz4cB45w==} hasBin: true dependencies: '@types/node': 18.19.18 @@ -13766,7 +14032,7 @@ packages: fast-diff: 1.3.0 dev: true - /prettier-plugin-tailwindcss@0.5.11(prettier@3.2.5): + /prettier-plugin-tailwindcss@0.5.11(@ianvs/prettier-plugin-sort-imports@4.2.0)(prettier@3.2.5): resolution: {integrity: sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==} engines: {node: '>=14.21.3'} peerDependencies: @@ -13815,8 +14081,9 @@ packages: prettier-plugin-twig-melody: optional: true dependencies: + '@ianvs/prettier-plugin-sort-imports': 4.2.0(prettier@3.2.5) prettier: 3.2.5 - dev: true + dev: false /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} @@ -13959,10 +14226,6 @@ packages: engines: {node: '>=0.10'} dev: false - /punycode@1.3.2: - resolution: {integrity: sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==} - dev: true - /punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} dev: false @@ -14173,12 +14436,6 @@ packages: strict-uri-encode: 2.0.0 dev: false - /querystring@0.2.0: - resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - dev: true - /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} dev: false @@ -14339,7 +14596,7 @@ packages: react: 18.2.0 dev: false - /react-native-css-interop@0.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.3.2): + /react-native-css-interop@0.0.36(@babel/core@7.23.9)(react-native-reanimated@3.8.0)(react-native-safe-area-context@4.8.2)(react-native-svg@15.1.0)(react-native@0.73.4)(react@18.2.0)(tailwindcss@3.4.1): resolution: {integrity: sha512-ZWoKQlq6XrI5DB4BdPk5ABvJQsX7zls1SQYWuYXOQB8u5QE0KH3OfOGAGRZPekTjgkhjqGO4Bf8G2JTSWAYMSg==} engines: {node: '>=18'} peerDependencies: @@ -14365,7 +14622,7 @@ packages: react-native-reanimated: 3.8.0(@babel/core@7.23.9)(react-native@0.73.4)(react@18.2.0) react-native-safe-area-context: 4.8.2(react-native@0.73.4)(react@18.2.0) react-native-svg: 15.1.0(react-native@0.73.4)(react@18.2.0) - tailwindcss: 3.3.2 + tailwindcss: 3.4.1(ts-node@10.9.2) transitivePeerDependencies: - '@babel/core' - supports-color @@ -14689,6 +14946,7 @@ packages: /regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} @@ -14983,6 +15241,7 @@ packages: /sax@1.2.1: resolution: {integrity: sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==} + dev: false /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} @@ -15571,7 +15830,6 @@ packages: /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} - dev: true /strip-comments@2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} @@ -15629,7 +15887,7 @@ packages: inline-style-parser: 0.2.2 dev: false - /styled-jsx@5.1.1(@babel/core@7.23.9)(react@18.2.0): + /styled-jsx@5.1.1(@babel/core@7.24.0)(react@18.2.0): resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} peerDependencies: @@ -15642,7 +15900,7 @@ packages: babel-plugin-macros: optional: true dependencies: - '@babel/core': 7.23.9 + '@babel/core': 7.24.0 client-only: 0.0.1 react: 18.2.0 dev: false @@ -15749,37 +16007,6 @@ packages: tailwindcss: 3.4.1(ts-node@10.9.2) dev: false - /tailwindcss@3.3.2: - resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} - engines: {node: '>=14.0.0'} - hasBin: true - dependencies: - '@alloc/quick-lru': 5.2.0 - arg: 5.0.2 - chokidar: 3.6.0 - didyoumean: 1.2.2 - dlv: 1.1.3 - fast-glob: 3.3.2 - glob-parent: 6.0.2 - is-glob: 4.0.3 - jiti: 1.21.0 - lilconfig: 2.1.0 - micromatch: 4.0.5 - normalize-path: 3.0.0 - object-hash: 3.0.0 - picocolors: 1.0.0 - postcss: 8.4.35 - postcss-import: 15.1.0(postcss@8.4.35) - postcss-js: 4.0.1(postcss@8.4.35) - postcss-load-config: 4.0.2(postcss@8.4.35)(ts-node@10.9.2) - postcss-nested: 6.0.1(postcss@8.4.35) - postcss-selector-parser: 6.0.15 - postcss-value-parser: 4.2.0 - resolve: 1.22.8 - sucrase: 3.35.0 - transitivePeerDependencies: - - ts-node - /tailwindcss@3.4.1(ts-node@10.9.2): resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} engines: {node: '>=14.0.0'} @@ -15813,6 +16040,7 @@ packages: /tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + dev: false /tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -16173,7 +16401,6 @@ packages: json5: 1.0.2 minimist: 1.2.8 strip-bom: 3.0.0 - dev: true /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -16195,6 +16422,66 @@ packages: safe-buffer: 5.2.1 dev: false + /turbo-darwin-64@1.12.5: + resolution: {integrity: sha512-0GZ8reftwNQgIQLHkHjHEXTc/Z1NJm+YjsrBP+qhM/7yIZ3TEy9gJhuogDt2U0xIWwFgisTyzbtU7xNaQydtoA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /turbo-darwin-arm64@1.12.5: + resolution: {integrity: sha512-8WpOLNNzvH6kohQOjihD+gaWL+ZFNfjvBwhOF0rjEzvW+YR3Pa7KjhulrjWyeN2yMFqAPubTbZIGOz1EVXLuQA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-64@1.12.5: + resolution: {integrity: sha512-INit73+bNUpwqGZCxgXCR3I+cQsdkQ3/LkfkgSOibkpg+oGqxJRzeXw3sp990d7SCoE8QOcs3iw+PtiFX/LDAA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-linux-arm64@1.12.5: + resolution: {integrity: sha512-6lkRBvxtI/GQdGtaAec9LvVQUoRw6nXFp0kM+Eu+5PbZqq7yn6cMkgDJLI08zdeui36yXhone8XGI8pHg8bpUQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-64@1.12.5: + resolution: {integrity: sha512-gQYbOhZg5Ww0bQ/bC0w/4W6yQRwBumUUnkB+QPo15VznwxZe2a7bo6JM+9Xy9dKLa/kn+p7zTqme4OEp6M3/Yg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo-windows-arm64@1.12.5: + resolution: {integrity: sha512-auvhZ9FrhnvQ4mgBlY9O68MT4dIfprYGvd2uPICba/mHUZZvVy5SGgbHJ0KbMwaJfnnFoPgLJO6M+3N2gDprKw==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /turbo@1.12.5: + resolution: {integrity: sha512-FATU5EnhrYG8RvQJYFJnDd18DpccDjyvd53hggw9T9JEg9BhWtIEoeaKtBjYbpXwOVrJQMDdXcIB4f2nD3QPPg==} + hasBin: true + optionalDependencies: + turbo-darwin-64: 1.12.5 + turbo-darwin-arm64: 1.12.5 + turbo-linux-64: 1.12.5 + turbo-linux-arm64: 1.12.5 + turbo-windows-64: 1.12.5 + turbo-windows-arm64: 1.12.5 + dev: true + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -16313,10 +16600,6 @@ packages: through: 2.3.8 dev: false - /underscore@1.12.1: - resolution: {integrity: sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==} - dev: true - /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -16438,6 +16721,7 @@ packages: /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} + dev: false /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} @@ -16503,13 +16787,6 @@ packages: tlds: 1.250.0 dev: false - /url@0.10.3: - resolution: {integrity: sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==} - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - dev: true - /url@0.11.3: resolution: {integrity: sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==} dependencies: @@ -16596,6 +16873,7 @@ packages: is-generator-function: 1.0.10 is-typed-array: 1.1.13 which-typed-array: 1.1.14 + dev: false /utils-merge@1.0.1: resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} @@ -16607,11 +16885,6 @@ packages: hasBin: true dev: false - /uuid@8.0.0: - resolution: {integrity: sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==} - hasBin: true - dev: true - /uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true @@ -17352,17 +17625,10 @@ packages: xmlbuilder: 11.0.1 dev: false - /xml2js@0.6.2: - resolution: {integrity: sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==} - engines: {node: '>=4.0.0'} - dependencies: - sax: 1.2.1 - xmlbuilder: 11.0.1 - dev: true - /xmlbuilder@11.0.1: resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} engines: {node: '>=4.0'} + dev: false /xmlbuilder@14.0.0: resolution: {integrity: sha512-ts+B2rSe4fIckR6iquDjsKbQFK2NlUk6iG5nf14mDEyldgoc2nEKZ3jZWMPTxGQwVgToSjt6VGIho1H8/fNFTg==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index dee51e92..af315f4a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,4 @@ packages: - "packages/*" + - "apps/*" + - "tooling/*" diff --git a/tooling/eslint/base.js b/tooling/eslint/base.js new file mode 100644 index 00000000..d1f6296c --- /dev/null +++ b/tooling/eslint/base.js @@ -0,0 +1,43 @@ +/** @type {import("eslint").Linter.Config} */ +const config = { + extends: [ + "turbo", + "eslint:recommended", + "plugin:@typescript-eslint/recommended-type-checked", + "plugin:@typescript-eslint/stylistic-type-checked", + ], + env: { + es2022: true, + node: true, + }, + parser: "@typescript-eslint/parser", + parserOptions: { project: true }, + plugins: ["@typescript-eslint", "import"], + rules: { + "turbo/no-undeclared-env-vars": "off", + "@typescript-eslint/no-unused-vars": [ + "error", + { argsIgnorePattern: "^_", varsIgnorePattern: "^_" }, + ], + "@typescript-eslint/consistent-type-imports": [ + "warn", + { prefer: "type-imports", fixStyle: "separate-type-imports" }, + ], + "@typescript-eslint/no-misused-promises": [ + 2, + { checksVoidReturn: { attributes: false } }, + ], + "import/consistent-type-specifier-style": ["error", "prefer-top-level"], + }, + ignorePatterns: [ + "**/*.config.js", + "**/*.config.cjs", + "**/.eslintrc.cjs", + ".next", + "dist", + "pnpm-lock.yaml", + ], + reportUnusedDisableDirectives: true, +}; + +module.exports = config; diff --git a/tooling/eslint/nextjs.js b/tooling/eslint/nextjs.js new file mode 100644 index 00000000..169993e3 --- /dev/null +++ b/tooling/eslint/nextjs.js @@ -0,0 +1,10 @@ +/** @type {import('eslint').Linter.Config} */ +const config = { + extends: ["plugin:@next/next/core-web-vitals"], + rules: { + "@next/next/no-html-link-for-pages": "off", + "@typescript-eslint/require-await": "off", + }, +}; + +module.exports = config; diff --git a/tooling/eslint/package.json b/tooling/eslint/package.json new file mode 100644 index 00000000..5329f6d2 --- /dev/null +++ b/tooling/eslint/package.json @@ -0,0 +1,42 @@ +{ + "name": "@hoarder/eslint-config", + "version": "0.2.0", + "private": true, + "license": "MIT", + "files": [ + "./base.js", + "./nextjs.js", + "./react.js" + ], + "scripts": { + "clean": "rm -rf .turbo node_modules", + "format": "prettier --check . --ignore-path ../../.gitignore", + "lint": "eslint .", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@next/eslint-plugin-next": "^14.1.1", + "@typescript-eslint/eslint-plugin": "^7.2.0", + "@typescript-eslint/parser": "^7.2.0", + "eslint-config-turbo": "^1.12.4", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0" + }, + "devDependencies": { + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", + "@types/eslint": "^8.56.5", + "eslint": "^8.57.0", + "prettier": "^3.2.5", + "typescript": "^5.3.3" + }, + "eslintConfig": { + "root": true, + "extends": [ + "./base.js" + ] + }, + "prettier": "@hoarder/prettier-config" +}
\ No newline at end of file diff --git a/tooling/eslint/react.js b/tooling/eslint/react.js new file mode 100644 index 00000000..618e1816 --- /dev/null +++ b/tooling/eslint/react.js @@ -0,0 +1,24 @@ +/** @type {import('eslint').Linter.Config} */ +const config = { + extends: [ + "plugin:react/recommended", + "plugin:react-hooks/recommended", + "plugin:jsx-a11y/recommended", + ], + rules: { + "react/prop-types": "off", + }, + globals: { + React: "writable", + }, + settings: { + react: { + version: "detect", + }, + }, + env: { + browser: true, + }, +}; + +module.exports = config; diff --git a/tooling/eslint/tsconfig.json b/tooling/eslint/tsconfig.json new file mode 100644 index 00000000..dcbd7d30 --- /dev/null +++ b/tooling/eslint/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@hoarder/tsconfig/base.json", + "compilerOptions": { + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + }, + "include": ["."], + "exclude": ["node_modules"] +} diff --git a/tooling/github/package.json b/tooling/github/package.json new file mode 100644 index 00000000..42e5fc74 --- /dev/null +++ b/tooling/github/package.json @@ -0,0 +1,3 @@ +{ + "name": "@hoarder/github" +} diff --git a/tooling/github/setup/action.yml b/tooling/github/setup/action.yml new file mode 100644 index 00000000..9a8ff513 --- /dev/null +++ b/tooling/github/setup/action.yml @@ -0,0 +1,19 @@ +name: "Setup and install" +description: "Common setup steps for Actions" + +runs: + using: composite + steps: + - uses: pnpm/action-setup@v2 + - uses: actions/setup-node@v4 + with: + node-version: 21 + cache: "pnpm" + + - shell: bash + run: pnpm add -g turbo + + - shell: bash + run: pnpm install + env: + PUPPETEER_SKIP_DOWNLOAD: "true" diff --git a/tooling/prettier/index.js b/tooling/prettier/index.js new file mode 100644 index 00000000..08618ae6 --- /dev/null +++ b/tooling/prettier/index.js @@ -0,0 +1,36 @@ +import { fileURLToPath } from "url"; + +/** @typedef {import("prettier").Config} PrettierConfig */ +/** @typedef {import("prettier-plugin-tailwindcss").PluginOptions} TailwindConfig */ +/** @typedef {import("@ianvs/prettier-plugin-sort-imports").PluginConfig} SortImportsConfig */ + +/** @type { PrettierConfig | SortImportsConfig | TailwindConfig } */ +const config = { + plugins: [ + "@ianvs/prettier-plugin-sort-imports", + "prettier-plugin-tailwindcss", + ], + tailwindConfig: fileURLToPath( + new URL("../../tooling/tailwind/web.ts", import.meta.url), + ), + tailwindFunctions: ["cn", "cva"], + importOrder: [ + "<TYPES>", + "^(react/(.*)$)|^(react$)|^(react-native(.*)$)", + "^(next/(.*)$)|^(next$)", + "^(expo(.*)$)|^(expo$)", + "<THIRD_PARTY_MODULES>", + "", + "<TYPES>^@hoarder", + "^@hoarder/(.*)$", + "", + "<TYPES>^[.|..|~]", + "^~/", + "^[../]", + "^[./]", + ], + importOrderParserPlugins: ["typescript", "jsx", "decorators-legacy"], + importOrderTypeScriptVersion: "4.4.0", +}; + +export default config; diff --git a/tooling/prettier/package.json b/tooling/prettier/package.json new file mode 100644 index 00000000..e16a183d --- /dev/null +++ b/tooling/prettier/package.json @@ -0,0 +1,24 @@ +{ + "name": "@hoarder/prettier-config", + "private": true, + "version": "0.1.0", + "type": "module", + "exports": { + ".": "./index.js" + }, + "scripts": { + "clean": "rm -rf .turbo node_modules", + "format": "prettier --check . --ignore-path ../../.gitignore", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "@ianvs/prettier-plugin-sort-imports": "^4.1.1", + "prettier": "^3.2.5", + "prettier-plugin-tailwindcss": "^0.5.11" + }, + "devDependencies": { + "@hoarder/tsconfig": "workspace:^0.1.0", + "typescript": "^5.3.3" + }, + "prettier": "@hoarder/prettier-config" +} diff --git a/tooling/prettier/tsconfig.json b/tooling/prettier/tsconfig.json new file mode 100644 index 00000000..dcbd7d30 --- /dev/null +++ b/tooling/prettier/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@hoarder/tsconfig/base.json", + "compilerOptions": { + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + }, + "include": ["."], + "exclude": ["node_modules"] +} diff --git a/tooling/tailwind/base.ts b/tooling/tailwind/base.ts new file mode 100644 index 00000000..15fd759a --- /dev/null +++ b/tooling/tailwind/base.ts @@ -0,0 +1,48 @@ +import type { Config } from "tailwindcss"; + +export default { + darkMode: ["class"], + content: ["src/**/*.{ts,tsx}"], + theme: { + extend: { + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderColor: { + DEFAULT: "hsl(var(--border))", + }, + }, + }, +} satisfies Config; diff --git a/tooling/tailwind/native.ts b/tooling/tailwind/native.ts new file mode 100644 index 00000000..7441221e --- /dev/null +++ b/tooling/tailwind/native.ts @@ -0,0 +1,9 @@ +import type { Config } from "tailwindcss"; + +import base from "./base"; + +export default { + content: base.content, + presets: [base], + theme: {}, +} satisfies Config; diff --git a/tooling/tailwind/package.json b/tooling/tailwind/package.json new file mode 100644 index 00000000..9ee573a5 --- /dev/null +++ b/tooling/tailwind/package.json @@ -0,0 +1,37 @@ +{ + "name": "@hoarder/tailwind-config", + "version": "0.1.0", + "private": true, + "type": "module", + "exports": { + "./native": "./native.ts", + "./web": "./web.ts" + }, + "license": "MIT", + "scripts": { + "clean": "rm -rf .turbo node_modules", + "format": "prettier --check . --ignore-path ../../.gitignore", + "lint": "eslint .", + "typecheck": "tsc --noEmit" + }, + "dependencies": { + "postcss": "^8.4.35", + "tailwindcss": "^3.4.1", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@hoarder/eslint-config": "workspace:^0.2.0", + "@hoarder/prettier-config": "workspace:^0.1.0", + "@hoarder/tsconfig": "workspace:^0.1.0", + "eslint": "^8.57.0", + "prettier": "^3.2.5", + "typescript": "^5.3.3" + }, + "eslintConfig": { + "root": true, + "extends": [ + "@hoarder/eslint-config/base" + ] + }, + "prettier": "@hoarder/prettier-config" +} diff --git a/tooling/tailwind/tsconfig.json b/tooling/tailwind/tsconfig.json new file mode 100644 index 00000000..dcbd7d30 --- /dev/null +++ b/tooling/tailwind/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "@hoarder/tsconfig/base.json", + "compilerOptions": { + "tsBuildInfoFile": "node_modules/.cache/tsbuildinfo.json" + }, + "include": ["."], + "exclude": ["node_modules"] +} diff --git a/tooling/tailwind/web.ts b/tooling/tailwind/web.ts new file mode 100644 index 00000000..0729477a --- /dev/null +++ b/tooling/tailwind/web.ts @@ -0,0 +1,40 @@ +import type { Config } from "tailwindcss"; +import animate from "tailwindcss-animate"; + +import base from "./base"; + +export default { + content: base.content, + presets: [base], + theme: { + container: { + center: true, + padding: "2rem", + screens: { + "2xl": "1400px", + }, + }, + extend: { + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [animate], +} satisfies Config; diff --git a/packages/web/tsconfig.json b/tooling/typescript/base.json index ecbd5643..2708b280 100644 --- a/packages/web/tsconfig.json +++ b/tooling/typescript/base.json @@ -1,28 +1,21 @@ { "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "lib": ["dom", "dom.iterable", "esnext"], + "target": "ES2022", + "lib": ["dom", "dom.iterable", "ES2022"], "allowJs": true, "skipLibCheck": true, "strict": true, "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "bundler", + "moduleResolution": "Bundler", "resolveJsonModule": true, "isolatedModules": true, + "moduleDetection": "force", "jsx": "preserve", "incremental": true, - "target": "ES6", - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./*"] - } + "noUncheckedIndexedAccess": false }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] + "exclude": ["node_modules", "build", "dist", ".next", ".expo"] } diff --git a/packages/workers/tsconfig.json b/tooling/typescript/node.json index cf49c407..aeda1ffd 100644 --- a/packages/workers/tsconfig.json +++ b/tooling/typescript/node.json @@ -2,10 +2,13 @@ "$schema": "https://json.schemastore.org/tsconfig", "extends": "@tsconfig/node21/tsconfig.json", "include": ["**/*.ts"], - "exclude": ["node_modules"], + "exclude": ["node_modules", "build", "dist", ".next", ".expo"], "compilerOptions": { "module": "ESNext", "moduleResolution": "node", + "incremental": true, + "isolatedModules": true, + "strict": true, "esModuleInterop": true } } diff --git a/tooling/typescript/package.json b/tooling/typescript/package.json new file mode 100644 index 00000000..e2961b9f --- /dev/null +++ b/tooling/typescript/package.json @@ -0,0 +1,9 @@ +{ + "name": "@hoarder/tsconfig", + "private": true, + "version": "0.1.0", + "files": [ + "base.json", + "node.json" + ] +} diff --git a/turbo.json b/turbo.json new file mode 100644 index 00000000..92c6720a --- /dev/null +++ b/turbo.json @@ -0,0 +1,49 @@ +{ + "$schema": "https://turborepo.org/schema.json", + "globalDependencies": ["**/.env"], + "pipeline": { + "topo": { + "dependsOn": ["^topo"] + }, + "build": { + "dependsOn": ["^build"], + "outputs": [ + ".next/**", + "!.next/cache/**", + "next-env.d.ts", + ".expo/**", + ".output/**", + ".vercel/output/**" + ] + }, + "dev": { + "persistent": true, + "cache": false + }, + "format": { + "outputs": ["node_modules/.cache/.prettiercache"], + "outputMode": "new-only" + }, + "lint": { + "dependsOn": ["^topo"], + "outputs": ["node_modules/.cache/.eslintcache"] + }, + "typecheck": { + "dependsOn": ["^topo"], + "outputs": ["node_modules/.cache/tsbuildinfo.json"] + }, + "clean": { + "cache": false + }, + "//#clean": { + "cache": false + } + }, + "globalEnv": [ + "DATABASE_URL", + "AUTH_DISCORD_ID", + "AUTH_DISCORD_SECRET", + "AUTH_REDIRECT_PROXY_URL", + "AUTH_SECRET" + ] +} |
