autoimport with eslint now

This commit is contained in:
Julien Calixte
2023-08-14 18:04:27 +02:00
parent c0182c7f57
commit 2cab8c8e3f
51 changed files with 2121 additions and 4246 deletions

View File

@@ -17,6 +17,7 @@ module.exports = {
'@vue/eslint-config-typescript', '@vue/eslint-config-typescript',
'plugin:prettier-vue/recommended' 'plugin:prettier-vue/recommended'
], ],
plugins: ['simple-import-sort'],
rules: { rules: {
'no-console': DEV_TOOL_ACTIVATED, 'no-console': DEV_TOOL_ACTIVATED,
'no-debugger': DEV_TOOL_ACTIVATED, 'no-debugger': DEV_TOOL_ACTIVATED,
@@ -43,7 +44,9 @@ module.exports = {
} }
] ]
} }
] ],
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error'
}, },
overrides: [ overrides: [
{ {

View File

@@ -53,6 +53,7 @@
"eslint": "^8.46.0", "eslint": "^8.46.0",
"eslint-config-prettier": "^9.0.0", "eslint-config-prettier": "^9.0.0",
"eslint-plugin-prettier-vue": "^4.2.0", "eslint-plugin-prettier-vue": "^4.2.0",
"eslint-plugin-simple-import-sort": "^10.0.0",
"eslint-plugin-vue": "^9.16.1", "eslint-plugin-vue": "^9.16.1",
"prettier": "^3.0.1", "prettier": "^3.0.1",
"sass": "^1.64.2", "sass": "^1.64.2",

6144
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-wifi-off" width="30" height="30" viewBox="0 0 24 24" stroke-width="1.5" stroke="#2c3a47" fill="none" stroke-linecap="round" stroke-linejoin="round"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-cloud-off" width="30" height="30" viewBox="0 0 24 24" stroke-width="1.5" stroke="#2c3a47" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/> <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 18l.01 0" /> <path d="M9.58 5.548c.24 -.11 .492 -.207 .752 -.286c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.913 0 3.464 1.56 3.464 3.486c0 .957 -.383 1.824 -1.003 2.454m-2.997 1.033h-11.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.13 -.582 .37 -1.128 .7 -1.62" />
<path d="M9.172 15.172a4 4 0 0 1 5.656 0" />
<path d="M6.343 12.343a7.963 7.963 0 0 1 3.864 -2.14m4.163 .155a7.965 7.965 0 0 1 3.287 2" />
<path d="M3.515 9.515a12 12 0 0 1 3.544 -2.455m3.101 -.92a12 12 0 0 1 10.325 3.374" />
<path d="M3 3l18 18" /> <path d="M3 3l18 18" />
</svg> </svg>

Before

Width:  |  Height:  |  Size: 571 B

After

Width:  |  Height:  |  Size: 629 B

View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-brand-onedrive" width="30" height="30" viewBox="0 0 24 24" stroke-width="1.5" stroke="#2c3a47" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M18.456 10.45a6.45 6.45 0 0 0 -12 -2.151a4.857 4.857 0 0 0 -4.44 5.241a4.856 4.856 0 0 0 5.236 4.444h10.751a3.771 3.771 0 0 0 3.99 -3.54a3.772 3.772 0 0 0 -3.538 -3.992z" />
</svg>

After

Width:  |  Height:  |  Size: 476 B

View File

@@ -1,9 +1,10 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
import { signIn } from '@/modules/user/service/signIn'
import { onBeforeMount, ref } from 'vue' import { onBeforeMount, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
import { signIn } from '@/modules/user/service/signIn'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const { saveCredentials } = useGitHubLogin() const { saveCredentials } = useGitHubLogin()

View File

@@ -1,12 +1,4 @@
<script lang="ts" setup> <script lang="ts" setup>
import LiteLoading from '@/components/LiteLoading.vue'
import { useLinks } from '@/hooks/useLinks.hook'
import { useMarkdown } from '@/hooks/useMarkdown.hook'
import { useNote } from '@/hooks/useNote.hook'
import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { useVisitRepo } from '@/modules/history/hooks/useVisitRepo.hook'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { useUserSettings } from '@/modules/user/hooks/useUserSettings.hook'
import { import {
computed, computed,
defineAsyncComponent, defineAsyncComponent,
@@ -17,6 +9,15 @@ import {
watch watch
} from 'vue' } from 'vue'
import LiteLoading from '@/components/LiteLoading.vue'
import { useLinks } from '@/hooks/useLinks.hook'
import { useMarkdown } from '@/hooks/useMarkdown.hook'
import { useNote } from '@/hooks/useNote.hook'
import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { useVisitRepo } from '@/modules/history/hooks/useVisitRepo.hook'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { useUserSettings } from '@/modules/user/hooks/useUserSettings.hook'
const HeaderNote = defineAsyncComponent( const HeaderNote = defineAsyncComponent(
() => import('@/components/HeaderNote.vue') () => import('@/components/HeaderNote.vue')
) )
@@ -109,14 +110,19 @@ const focus = () => scrollToFocusedNote(undefined, true)
> >
{{ repo }} </router-link {{ repo }} </router-link
>] >]
</h1>
<h4 class="subtitle is-4">
<em>{{ user }}</em> -
<img <img
v-if="store.isReadmeOffline" v-show="store.isReadmeOffline"
src="@/assets/icons/offline.svg" src="@/assets/icons/offline.svg"
alt="ofline" alt="ofline"
/> />
</h1> <img
<h4 class="subtitle is-4"> v-show="!store.isReadmeOffline"
<em>{{ user }}</em> src="@/assets/icons/online.svg"
alt="ofline"
/>
</h4> </h4>
</div> </div>
<slot /> <slot />
@@ -194,11 +200,8 @@ $header-height: 40px;
text-align: center; text-align: center;
} }
.title { img {
img { vertical-align: middle;
position: absolute;
right: 0;
}
} }
} }
} }

View File

@@ -8,9 +8,10 @@
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
import { locales } from '@/locales/message'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { locales } from '@/locales/message'
export default defineComponent({ export default defineComponent({
name: 'FooterTranslation', name: 'FooterTranslation',
setup() { setup() {

View File

@@ -1,7 +1,8 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed } from 'vue'
import { useBacklinks } from '@/hooks/useBacklinks.hook' import { useBacklinks } from '@/hooks/useBacklinks.hook'
import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook' import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { computed } from 'vue'
const props = defineProps<{ const props = defineProps<{
sha: string sha: string

View File

@@ -1,8 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import LiteLoading from '@/components/LiteLoading.vue'
import { useRegisterSW } from 'virtual:pwa-register/vue' import { useRegisterSW } from 'virtual:pwa-register/vue'
import { ref } from 'vue' import { ref } from 'vue'
import LiteLoading from '@/components/LiteLoading.vue'
const devMode = ref(import.meta.env.DEV) const devMode = ref(import.meta.env.DEV)
const isLoading = ref(false) const isLoading = ref(false)
const { offlineReady, needRefresh, updateServiceWorker } = useRegisterSW() const { offlineReady, needRefresh, updateServiceWorker } = useRegisterSW()

View File

@@ -1,4 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed, defineAsyncComponent, nextTick, watch } from 'vue'
import { useFile } from '@/hooks/useFile.hook' import { useFile } from '@/hooks/useFile.hook'
import { useImages } from '@/hooks/useImages.hook' import { useImages } from '@/hooks/useImages.hook'
import { useLinks } from '@/hooks/useLinks.hook' import { useLinks } from '@/hooks/useLinks.hook'
@@ -8,7 +10,6 @@ import { useTitleNotes } from '@/hooks/useTitleNotes.hook'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { filenameToNoteTitle } from '@/utils/noteTitle' import { filenameToNoteTitle } from '@/utils/noteTitle'
import { generateTweets } from '@/utils/twitter' import { generateTweets } from '@/utils/twitter'
import { computed, defineAsyncComponent, nextTick, watch } from 'vue'
const LinkedNotes = defineAsyncComponent( const LinkedNotes = defineAsyncComponent(
() => import('@/components/LinkedNotes.vue') () => import('@/components/LinkedNotes.vue')

View File

@@ -102,12 +102,13 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'
import SignInGithub from '@/components/SignInGithub.vue' import SignInGithub from '@/components/SignInGithub.vue'
import { useForm } from '@/hooks/useForm.hook' import { useForm } from '@/hooks/useForm.hook'
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook' import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
import LastVisited from '@/modules/history/components/LastVisited.vue' import LastVisited from '@/modules/history/components/LastVisited.vue'
import { useFavoriteRepos } from '@/modules/repo/hooks/useFavoriteRepos.hook' import { useFavoriteRepos } from '@/modules/repo/hooks/useFavoriteRepos.hook'
import { defineComponent } from 'vue'
export default defineComponent({ export default defineComponent({
name: 'WelcomeWorld', name: 'WelcomeWorld',

View File

@@ -1,6 +1,7 @@
import { nanoid } from 'nanoid' import { nanoid } from 'nanoid'
import indexedDb from 'pouchdb-adapter-indexeddb' import indexedDb from 'pouchdb-adapter-indexeddb'
import PouchDb from 'pouchdb-browser' import PouchDb from 'pouchdb-browser'
import { DataType } from './DataType.enum' import { DataType } from './DataType.enum'
import { Model } from './models/Model' import { Model } from './models/Model'

View File

@@ -1,9 +1,10 @@
import { useAsyncState } from '@vueuse/core'
import { ComputedRef, onUnmounted, toValue } from 'vue'
import { backlinkEventBus } from '@/bus/backlinkEventBus' import { backlinkEventBus } from '@/bus/backlinkEventBus'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { BacklinkNote } from '@/modules/note/models/BacklinkNote' import { BacklinkNote } from '@/modules/note/models/BacklinkNote'
import { useAsyncState } from '@vueuse/core'
import { ComputedRef, onUnmounted, toValue } from 'vue'
export const useBacklinks = (sha: string | ComputedRef<string>) => { export const useBacklinks = (sha: string | ComputedRef<string>) => {
sha = toValue(sha) sha = toValue(sha)

View File

@@ -1,3 +1,5 @@
import { watch } from 'vue'
import { backlinkEventBus } from '@/bus/backlinkEventBus' import { backlinkEventBus } from '@/bus/backlinkEventBus'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
@@ -9,7 +11,6 @@ import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { isExternalLink } from '@/utils/link' import { isExternalLink } from '@/utils/link'
import { filenameToNoteTitle } from '@/utils/noteTitle' import { filenameToNoteTitle } from '@/utils/noteTitle'
import { confirmMessage } from '@/utils/notif' import { confirmMessage } from '@/utils/notif'
import { watch } from 'vue'
const isMarkdown = (filename?: string) => filename?.endsWith('.md') ?? false const isMarkdown = (filename?: string) => filename?.endsWith('.md') ?? false

View File

@@ -1,8 +1,9 @@
import { Ref, ref, toValue } from 'vue'
import { useMarkdown } from '@/hooks/useMarkdown.hook' import { useMarkdown } from '@/hooks/useMarkdown.hook'
import { prepareNoteCache } from '@/modules/note/cache/prepareNoteCache' import { prepareNoteCache } from '@/modules/note/cache/prepareNoteCache'
import { getFileContent } from '@/modules/repo/services/repo' import { getFileContent } from '@/modules/repo/services/repo'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { Ref, ref, toValue } from 'vue'
export const useFile = (sha: Ref<string> | string, retrieveContent = true) => { export const useFile = (sha: Ref<string> | string, retrieveContent = true) => {
const { render } = useMarkdown(toValue(sha)) const { render } = useMarkdown(toValue(sha))

View File

@@ -1,8 +1,8 @@
import { computed, ref } from 'vue' import { computed, ref } from 'vue'
import { confirmMessage } from '@/utils/notif'
import { getAccessToken, saveAccessToken } from '@/modules/user/service/signIn'
import { GithubToken } from '@/modules/user/interfaces/GithubToken' import { GithubToken } from '@/modules/user/interfaces/GithubToken'
import { getAccessToken, saveAccessToken } from '@/modules/user/service/signIn'
import { confirmMessage } from '@/utils/notif'
const username = ref<string | null>(null) const username = ref<string | null>(null)
const accessToken = ref<string | null>(null) const accessToken = ref<string | null>(null)

View File

@@ -1,7 +1,8 @@
import { computed, watch } from 'vue'
import { useFile } from '@/hooks/useFile.hook' import { useFile } from '@/hooks/useFile.hook'
import { resolvePath } from '@/modules/repo/services/resolvePath' import { resolvePath } from '@/modules/repo/services/resolvePath'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { computed, watch } from 'vue'
const SRC_PREFIX = 'data:image/jpeg;charset=utf-8;base64,' const SRC_PREFIX = 'data:image/jpeg;charset=utf-8;base64,'

View File

@@ -1,7 +1,8 @@
import { ComputedRef, onUnmounted, Ref, toValue } from 'vue'
import { noteEventBus } from '@/bus/noteEventBus' import { noteEventBus } from '@/bus/noteEventBus'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { isExternalLink } from '@/utils/link' import { isExternalLink } from '@/utils/link'
import { ComputedRef, onUnmounted, Ref, toValue } from 'vue'
export const useLinks = ( export const useLinks = (
className: ComputedRef<string> | string, className: ComputedRef<string> | string,

View File

@@ -1,6 +1,3 @@
import { decodeBase64ToUTF8 } from '@/utils/decodeBase64ToUTF8'
import { html5Media } from '@/utils/markdown/markdown-html5-media'
import { twitterPlugin } from '@/utils/markdown/markdown-it-twitter'
import markdownItClass from '@toycode/markdown-it-class' import markdownItClass from '@toycode/markdown-it-class'
import MarkdownIt from 'markdown-it' import MarkdownIt from 'markdown-it'
import blockEmbedPlugin from 'markdown-it-block-embed' import blockEmbedPlugin from 'markdown-it-block-embed'
@@ -10,6 +7,10 @@ import markdownItIframe from 'markdown-it-iframe'
import markdownItLatex from 'markdown-it-latex' import markdownItLatex from 'markdown-it-latex'
import { Ref, toValue } from 'vue' import { Ref, toValue } from 'vue'
import { decodeBase64ToUTF8 } from '@/utils/decodeBase64ToUTF8'
import { html5Media } from '@/utils/markdown/markdown-html5-media'
import { twitterPlugin } from '@/utils/markdown/markdown-it-twitter'
const md = new MarkdownIt({ const md = new MarkdownIt({
typographer: true, typographer: true,
quotes: ['«\xA0', '\xA0»', '\xA0', '\xA0'] quotes: ['«\xA0', '\xA0»', '\xA0', '\xA0']

View File

@@ -1,3 +1,5 @@
import { computed, onMounted, onUnmounted, watch } from 'vue'
import { noteEventBus } from '@/bus/noteEventBus' import { noteEventBus } from '@/bus/noteEventBus'
import { NOTE_WIDTH } from '@/constants/note-width' import { NOTE_WIDTH } from '@/constants/note-width'
import { useOverlay } from '@/hooks/useOverlay.hook' import { useOverlay } from '@/hooks/useOverlay.hook'
@@ -5,7 +7,6 @@ import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { resolvePath } from '@/modules/repo/services/resolvePath' import { resolvePath } from '@/modules/repo/services/resolvePath'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { pathToNotePathTitle } from '@/utils/noteTitle' import { pathToNotePathTitle } from '@/utils/noteTitle'
import { computed, onMounted, onUnmounted, watch } from 'vue'
export const useNote = (containerClass: string) => { export const useNote = (containerClass: string) => {
const store = useUserRepoStore() const store = useUserRepoStore()

View File

@@ -1,7 +1,8 @@
import { computed, onMounted, Ref, ref, toValue } from 'vue'
import { NOTE_WIDTH } from '@/constants/note-width' import { NOTE_WIDTH } from '@/constants/note-width'
import { useOverlay } from '@/hooks/useOverlay.hook' import { useOverlay } from '@/hooks/useOverlay.hook'
import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook' import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { computed, onMounted, Ref, ref, toValue } from 'vue'
const BOOKMARK_WIDTH = 2 const BOOKMARK_WIDTH = 2

View File

@@ -1,5 +1,6 @@
import { computed, ref } from 'vue'
import { useEventListener, useWindowSize } from '@vueuse/core' import { useEventListener, useWindowSize } from '@vueuse/core'
import { computed, ref } from 'vue'
import { MOBILE_BREAKPOINT } from '@/constants/mobile' import { MOBILE_BREAKPOINT } from '@/constants/mobile'
export const useOverlay = (listen = true) => { export const useOverlay = (listen = true) => {

View File

@@ -1,10 +1,11 @@
import { NOTE_WIDTH } from '@/constants/note-width'
import { useOverlay } from '@/hooks/useOverlay.hook'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { useWindowSize } from '@vueuse/core' import { useWindowSize } from '@vueuse/core'
import { nextTick, readonly, ref } from 'vue' import { nextTick, readonly, ref } from 'vue'
import { useRoute, useRouter } from 'vue-router' import { useRoute, useRouter } from 'vue-router'
import { NOTE_WIDTH } from '@/constants/note-width'
import { useOverlay } from '@/hooks/useOverlay.hook'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
const stackedNotes = ref<string[]>([]) const stackedNotes = ref<string[]>([])
let initial = true let initial = true

View File

@@ -1,6 +1,7 @@
import { RepoBase } from '@/modules/repo/interfaces/RepoBase'
import { useAsyncState } from '@vueuse/core' import { useAsyncState } from '@vueuse/core'
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook' import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
import { RepoBase } from '@/modules/repo/interfaces/RepoBase'
import { getOctokit } from '@/modules/repo/services/octo' import { getOctokit } from '@/modules/repo/services/octo'
export const useRepos = () => { export const useRepos = () => {

View File

@@ -1,8 +1,9 @@
import { useTitle } from '@vueuse/core'
import { computed, Ref, toValue, watch } from 'vue'
import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook' import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { useNotes } from '@/modules/note/hooks/useNotes' import { useNotes } from '@/modules/note/hooks/useNotes'
import { pathToNoteTitle } from '@/utils/noteTitle' import { pathToNoteTitle } from '@/utils/noteTitle'
import { useTitle } from '@vueuse/core'
import { computed, Ref, toValue, watch } from 'vue'
export const generateTitle = (titles: string[]) => titles.join(' | ') export const generateTitle = (titles: string[]) => titles.join(' | ')

View File

@@ -1,10 +1,13 @@
import { messages } from '@/locales/message'
import { router } from '@/router/router'
import 'markdown-it-latex/dist/index.css' import 'markdown-it-latex/dist/index.css'
import 'notyf/notyf.min.css' import 'notyf/notyf.min.css'
import { createPinia } from 'pinia' import { createPinia } from 'pinia'
import { createApp } from 'vue' import { createApp } from 'vue'
import { createI18n } from 'vue-i18n' import { createI18n } from 'vue-i18n'
import { messages } from '@/locales/message'
import { router } from '@/router/router'
import App from './App.vue' import App from './App.vue'
const i18n = createI18n({ const i18n = createI18n({

View File

@@ -1,5 +1,6 @@
<script lang="ts" setup> <script lang="ts" setup>
import { ref } from 'vue' import { ref } from 'vue'
import { Card } from '../models/Card' import { Card } from '../models/Card'
defineProps<{ card: Card }>() defineProps<{ card: Card }>()

View File

@@ -1,7 +1,8 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed, ref } from 'vue'
import FlipCard from '@/modules/card/components/FlipCard.vue' import FlipCard from '@/modules/card/components/FlipCard.vue'
import { Repetition } from '@/modules/card/hooks/useSpacedRepetitionCards' import { Repetition } from '@/modules/card/hooks/useSpacedRepetitionCards'
import { computed, ref } from 'vue'
const props = defineProps<{ cards: Repetition[] }>() const props = defineProps<{ cards: Repetition[] }>()
const emits = defineEmits<{ const emits = defineEmits<{

View File

@@ -1,7 +1,8 @@
import { useAsyncState } from '@vueuse/core'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { RepetitionCard } from '@/modules/card/models/RepetitionCard' import { RepetitionCard } from '@/modules/card/models/RepetitionCard'
import { useAsyncState } from '@vueuse/core'
export const useNeedReviewCards = () => { export const useNeedReviewCards = () => {
const { state: cardsToReview, isReady } = useAsyncState(async () => { const { state: cardsToReview, isReady } = useAsyncState(async () => {

View File

@@ -1,5 +1,9 @@
// https://npm.io/package/supermemo // https://npm.io/package/supermemo
import { useAsyncState } from '@vueuse/core'
import { addDays, isAfter } from 'date-fns'
import { computed, nextTick, watch } from 'vue'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { useFile } from '@/hooks/useFile.hook' import { useFile } from '@/hooks/useFile.hook'
@@ -9,9 +13,6 @@ import { Card } from '@/modules/card/models/Card'
import { RepetitionCard } from '@/modules/card/models/RepetitionCard' import { RepetitionCard } from '@/modules/card/models/RepetitionCard'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store' import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { decodeBase64ToUTF8 } from '@/utils/decodeBase64ToUTF8' import { decodeBase64ToUTF8 } from '@/utils/decodeBase64ToUTF8'
import { useAsyncState } from '@vueuse/core'
import { addDays, isAfter } from 'date-fns'
import { computed, nextTick, watch } from 'vue'
const MAX_LEVEL = 8 const MAX_LEVEL = 8

View File

@@ -24,9 +24,10 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { useLastVisitedRepos } from '@/modules/history/hooks/useLastVisitedRepos.hook'
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
import { useLastVisitedRepos } from '@/modules/history/hooks/useLastVisitedRepos.hook'
export default defineComponent({ export default defineComponent({
name: 'LastVisited', name: 'LastVisited',
setup() { setup() {

View File

@@ -1,8 +1,9 @@
import { useAsyncState } from '@vueuse/core'
import { computed } from 'vue'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { History } from '@/data/models/History' import { History } from '@/data/models/History'
import { useAsyncState } from '@vueuse/core'
import { computed } from 'vue'
const HISTORY_ID = data.generateId(DataType.History, 'history') const HISTORY_ID = data.generateId(DataType.History, 'history')

View File

@@ -1,7 +1,8 @@
import { Ref, toValue } from 'vue'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { History } from '@/data/models/History' import { History } from '@/data/models/History'
import { Ref, toValue } from 'vue'
const HISTORY_ID = data.generateId(DataType.History, 'history') const HISTORY_ID = data.generateId(DataType.History, 'history')
const MAX_REPO_HISTORY = 10 const MAX_REPO_HISTORY = 10

View File

@@ -1,6 +1,7 @@
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { computed } from 'vue' import { computed } from 'vue'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
export const useFolderNotes = (folders: string[]) => { export const useFolderNotes = (folders: string[]) => {
const store = useUserRepoStore() const store = useUserRepoStore()

View File

@@ -1,6 +1,7 @@
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { computed } from 'vue' import { computed } from 'vue'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
export const useNotes = () => { export const useNotes = () => {
const store = useUserRepoStore() const store = useUserRepoStore()

View File

@@ -1,10 +1,10 @@
import { computed, onMounted, ref } from 'vue' import { computed, onMounted, ref } from 'vue'
import { DataType } from '@/data/DataType.enum'
import { FavoriteRepo } from '@/modules/repo/models/FavoriteRepo'
import { RepoBase } from '@/modules/repo/interfaces/RepoBase'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum'
import { useRepos } from '@/hooks/useRepos.hook' import { useRepos } from '@/hooks/useRepos.hook'
import { RepoBase } from '@/modules/repo/interfaces/RepoBase'
import { FavoriteRepo } from '@/modules/repo/models/FavoriteRepo'
export const useFavoriteRepos = () => { export const useFavoriteRepos = () => {
const { repos } = useRepos() const { repos } = useRepos()

View File

@@ -1,7 +1,8 @@
import { RepoBase } from '@/modules/repo/interfaces/RepoBase'
import { computed } from 'vue' import { computed } from 'vue'
import { useFavoriteRepos } from '@/modules/repo/hooks/useFavoriteRepos.hook'
import { useRepos } from '@/hooks/useRepos.hook' import { useRepos } from '@/hooks/useRepos.hook'
import { useFavoriteRepos } from '@/modules/repo/hooks/useFavoriteRepos.hook'
import { RepoBase } from '@/modules/repo/interfaces/RepoBase'
export const useRepoList = () => { export const useRepoList = () => {
const { savedFavoriteRepos, addFavorite, removeFavorite } = useFavoriteRepos() const { savedFavoriteRepos, addFavorite, removeFavorite } = useFavoriteRepos()

View File

@@ -1,6 +1,7 @@
import { getAccessToken } from '@/modules/user/service/signIn'
import { Octokit } from '@octokit/rest' import { Octokit } from '@octokit/rest'
import { getAccessToken } from '@/modules/user/service/signIn'
export const getOctokit = async (): Promise<Octokit> => { export const getOctokit = async (): Promise<Octokit> => {
const response = await getAccessToken() const response = await getAccessToken()

View File

@@ -1,4 +1,5 @@
import { describe, expect, it } from 'vitest' import { describe, expect, it } from 'vitest'
import { resolvePath } from './resolvePath' import { resolvePath } from './resolvePath'
describe('resolve path service', () => { describe('resolve path service', () => {

View File

@@ -1,3 +1,5 @@
import { defineStore } from 'pinia'
import { RepoFile } from '@/modules/repo/interfaces/RepoFile' import { RepoFile } from '@/modules/repo/interfaces/RepoFile'
import { UserSettings } from '@/modules/repo/interfaces/UserSettings' import { UserSettings } from '@/modules/repo/interfaces/UserSettings'
import { import {
@@ -7,7 +9,6 @@ import {
getUserSettingsContent getUserSettingsContent
} from '@/modules/repo/services/repo' } from '@/modules/repo/services/repo'
import { refreshToken } from '@/modules/user/service/signIn' import { refreshToken } from '@/modules/user/service/signIn'
import { defineStore } from 'pinia'
interface State { interface State {
user: string user: string
@@ -48,9 +49,15 @@ export const useUserRepoStore = defineStore({
getFiles(newUser, newRepo) getFiles(newUser, newRepo)
]) ])
this.readme = readme this.readme = readme
this.isReadmeOffline = false
this.files = files this.files = files
// if the offline state is too quick,
// it gives more the impression of
// glitch.
setTimeout(() => {
this.isReadmeOffline = false
}, 500)
this.userSettings = await getUserSettingsContent(newUser, newRepo, files) this.userSettings = await getUserSettingsContent(newUser, newRepo, files)
}, },
resetUserRepo() { resetUserRepo() {

View File

@@ -1,6 +1,7 @@
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
import { watchEffect } from 'vue' import { watchEffect } from 'vue'
import { useUserRepoStore } from '@/modules/repo/store/userRepo.store'
const DEFAULT_FONT_POLICY = "'Courier Prime', monospace" const DEFAULT_FONT_POLICY = "'Courier Prime', monospace"
const LIGHT_FONT_COLOR = '#4a4a4a' const LIGHT_FONT_COLOR = '#4a4a4a'

View File

@@ -1,10 +1,11 @@
import { Octokit } from '@octokit/rest'
import { addMinutes, addSeconds, isBefore } from 'date-fns'
import { data } from '@/data/data' import { data } from '@/data/data'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { GithubAccessToken } from '@/data/models/GithubAccessToken' import { GithubAccessToken } from '@/data/models/GithubAccessToken'
import { GithubToken } from '@/modules/user/interfaces/GithubToken' import { GithubToken } from '@/modules/user/interfaces/GithubToken'
import { GithubTokenError } from '@/modules/user/interfaces/GithubTokenError' import { GithubTokenError } from '@/modules/user/interfaces/GithubTokenError'
import { Octokit } from '@octokit/rest'
import { addMinutes, addSeconds, isBefore } from 'date-fns'
const AUTHENTICATION_SERVER = 'https://litenote.li212.fr' const AUTHENTICATION_SERVER = 'https://litenote.li212.fr'
const personalTokenId = 'token' const personalTokenId = 'token'

View File

@@ -1,6 +1,7 @@
import Home from '@/views/HomeApp.vue'
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router' import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import Home from '@/views/HomeApp.vue'
const routes: Array<RouteRecordRaw> = [ const routes: Array<RouteRecordRaw> = [
{ {
path: '/repo-list', path: '/repo-list',

View File

@@ -23,9 +23,10 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import GoBack from '@/components/GoBack.vue'
import { defineComponent } from 'vue' import { defineComponent } from 'vue'
import GoBack from '@/components/GoBack.vue'
export default defineComponent({ export default defineComponent({
components: { GoBack } components: { GoBack }
}) })

View File

@@ -7,9 +7,10 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { useFolderNotes } from '@/modules/note/hooks/useFolderNotes'
import { defineAsyncComponent, defineComponent } from 'vue' import { defineAsyncComponent, defineComponent } from 'vue'
import { useFolderNotes } from '@/modules/note/hooks/useFolderNotes'
const FluxNote = defineAsyncComponent(() => import('@/components/FluxNote.vue')) const FluxNote = defineAsyncComponent(() => import('@/components/FluxNote.vue'))
const DRAFT_FOLDER = ['drafts', '_drafts'] const DRAFT_FOLDER = ['drafts', '_drafts']

View File

@@ -1,8 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from 'vue'
import FluxNote from '@/components/FluxNote.vue' import FluxNote from '@/components/FluxNote.vue'
import { useComputeBacklinks } from '@/hooks/useComputeBacklinks.hook' import { useComputeBacklinks } from '@/hooks/useComputeBacklinks.hook'
import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook' import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { computed } from 'vue'
useQueryStackedNotes() useQueryStackedNotes()
useComputeBacklinks() useComputeBacklinks()

View File

@@ -1,7 +1,8 @@
<script lang="ts" setup> <script lang="ts" setup>
import { useNotes } from '@/modules/note/hooks/useNotes'
import { defineAsyncComponent, ref } from 'vue' import { defineAsyncComponent, ref } from 'vue'
import { useNotes } from '@/modules/note/hooks/useNotes'
const devMode = ref(import.meta.env.DEV) const devMode = ref(import.meta.env.DEV)
const FluxNote = defineAsyncComponent(() => import('@/components/FluxNote.vue')) const FluxNote = defineAsyncComponent(() => import('@/components/FluxNote.vue'))

View File

@@ -1,8 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed } from 'vue'
import FluxNote from '@/components/FluxNote.vue' import FluxNote from '@/components/FluxNote.vue'
import { DataType } from '@/data/DataType.enum' import { DataType } from '@/data/DataType.enum'
import { useNeedReviewCards } from '@/modules/card/hooks/useNeedReviewCards' import { useNeedReviewCards } from '@/modules/card/hooks/useNeedReviewCards'
import { computed } from 'vue'
defineProps<{ defineProps<{
user: string user: string

View File

@@ -77,11 +77,12 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import { defineComponent } from 'vue'
import GoBack from '@/components/GoBack.vue' import GoBack from '@/components/GoBack.vue'
import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook' import { useGitHubLogin } from '@/hooks/useGitHubLogin.hook'
import { useRepos } from '@/hooks/useRepos.hook' import { useRepos } from '@/hooks/useRepos.hook'
import { useRepoList } from '@/modules/repo/hooks/useRepoList.hook' import { useRepoList } from '@/modules/repo/hooks/useRepoList.hook'
import { defineComponent } from 'vue'
export default defineComponent({ export default defineComponent({
name: 'RepoList', name: 'RepoList',

View File

@@ -1,7 +1,8 @@
<script lang="ts" setup> <script lang="ts" setup>
import { computed, defineAsyncComponent, onMounted } from 'vue'
import { useFile } from '@/hooks/useFile.hook' import { useFile } from '@/hooks/useFile.hook'
import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook' import { useQueryStackedNotes } from '@/hooks/useQueryStackedNotes.hook'
import { computed, defineAsyncComponent, onMounted } from 'vue'
const FluxNote = defineAsyncComponent(() => import('@/components/FluxNote.vue')) const FluxNote = defineAsyncComponent(() => import('@/components/FluxNote.vue'))