From: Adam Dullage Date: Tue, 23 Apr 2024 07:19:47 +0000 (+0100) Subject: Vue 3 X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=3dbfb306c6272cad5ba6388bdf950aac8d0a031b;p=flatnotes.git Vue 3 --- diff --git a/client/App.vue b/client/App.vue new file mode 100644 index 0000000..dcd008a --- /dev/null +++ b/client/App.vue @@ -0,0 +1,7 @@ + + + diff --git a/client/api.js b/client/api.js deleted file mode 100644 index c9ffba7..0000000 --- a/client/api.js +++ /dev/null @@ -1,44 +0,0 @@ -import * as constants from "./constants.js"; - -import EventBus from "./eventBus.js"; -import axios from "axios"; -import { getToken } from "./tokenStorage.js"; - -const api = axios.create(); - -api.interceptors.request.use( - function (config) { - if (config.url !== "/api/token") { - const token = getToken(); - config.headers.Authorization = `Bearer ${token}`; - } - return config; - }, - function (error) { - return Promise.reject(error); - } -); - -api.interceptors.response.use( - function (response) { - return response; - }, - function (error) { - if ( - typeof error.response !== "undefined" && - error.response.status === 401 && - error.response.config.url !== "/api/token" - ) { - EventBus.$emit( - "navigate", - `${constants.basePaths.login}?${constants.params.redirect}=${encodeURI( - window.location.pathname + window.location.search - )}` - ); - error.handled = true; - } - return Promise.reject(error); - } -); - -export default api; diff --git a/client/assets/apple-touch-icon.png b/client/assets/apple-touch-icon.png deleted file mode 100644 index ca88d02..0000000 Binary files a/client/assets/apple-touch-icon.png and /dev/null differ diff --git a/client/assets/favicon-16x16.png b/client/assets/favicon-16x16.png deleted file mode 100644 index 654c02c..0000000 Binary files a/client/assets/favicon-16x16.png and /dev/null differ diff --git a/client/assets/favicon-32x32.png b/client/assets/favicon-32x32.png deleted file mode 100644 index f4e5ae6..0000000 Binary files a/client/assets/favicon-32x32.png and /dev/null differ diff --git a/client/assets/favicon.ico b/client/assets/favicon.ico deleted file mode 100644 index 675d561..0000000 Binary files a/client/assets/favicon.ico and /dev/null differ diff --git a/client/assets/fonts/Poppins/OFL.txt b/client/assets/fonts/Poppins/OFL.txt deleted file mode 100644 index 76df3b5..0000000 --- a/client/assets/fonts/Poppins/OFL.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins) - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/client/assets/fonts/Poppins/Poppins-Regular.ttf b/client/assets/fonts/Poppins/Poppins-Regular.ttf deleted file mode 100644 index 9f0c71b..0000000 Binary files a/client/assets/fonts/Poppins/Poppins-Regular.ttf and /dev/null differ diff --git a/client/autolinkParsers.js b/client/autolinkParsers.js deleted file mode 100644 index 961926e..0000000 --- a/client/autolinkParsers.js +++ /dev/null @@ -1,98 +0,0 @@ -import { basePaths } from "./constants.js"; - -function parseWikiLink(source) { - const matched = source.matchAll(/\[\[(.*)\]\]/g); - if (matched) { - return Array.from(matched).map((match) => { - const text = match[1]; - return { - text, - url: encodeURI(`${basePaths.note}/${text.trim()}`), - range: [match.index, match.index + match[0].length - 1], - }; - }); - } - - return null; -} - -export function extendedAutolinks(source) { - return [ - ...parseUrlLink(source), - ...parseEmailLink(source), - ...parseWikiLink(source), - ].sort((a, b) => a.range[0] - b.range[0]); -} - -/* - * Sourced from toast-ui. There autolink options are - * either override their built in functionality or - * use their built in functionality. We'd like to have - * both so this is the source of their parsers. - */ -const DOMAIN = '(?:[w-]+.)*[A-Za-z0-9-]+.[A-Za-z0-9-]+'; -const PATH = '[^<\\s]*[^ -
- - -
- -
-
- - - - - - - - -
- - -
- -
-
- - -
- -
- - - -
- - - - - diff --git a/client/components/LoadingIndicator.vue b/client/components/LoadingIndicator.vue deleted file mode 100644 index 6e2d043..0000000 --- a/client/components/LoadingIndicator.vue +++ /dev/null @@ -1,104 +0,0 @@ - - - - - diff --git a/client/components/Login.vue b/client/components/Login.vue deleted file mode 100644 index d94f674..0000000 --- a/client/components/Login.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - diff --git a/client/components/Logo.vue b/client/components/Logo.vue deleted file mode 100644 index 1d0ebf3..0000000 --- a/client/components/Logo.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - diff --git a/client/components/NavBar.vue b/client/components/NavBar.vue deleted file mode 100644 index b46c24d..0000000 --- a/client/components/NavBar.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - - - diff --git a/client/components/NoteViewerEditor.vue b/client/components/NoteViewerEditor.vue deleted file mode 100644 index 3683951..0000000 --- a/client/components/NoteViewerEditor.vue +++ /dev/null @@ -1,662 +0,0 @@ - - - - - diff --git a/client/components/RecentlyModified.vue b/client/components/RecentlyModified.vue deleted file mode 100644 index 7f390fb..0000000 --- a/client/components/RecentlyModified.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - diff --git a/client/components/SearchInput.vue b/client/components/SearchInput.vue deleted file mode 100644 index 2cda8f2..0000000 --- a/client/components/SearchInput.vue +++ /dev/null @@ -1,118 +0,0 @@ - - - - - diff --git a/client/components/SearchResults.vue b/client/components/SearchResults.vue deleted file mode 100644 index b9cc3a6..0000000 --- a/client/components/SearchResults.vue +++ /dev/null @@ -1,341 +0,0 @@ - - - - - - - diff --git a/client/constants.js b/client/constants.js deleted file mode 100644 index ac41d31..0000000 --- a/client/constants.js +++ /dev/null @@ -1,55 +0,0 @@ -// Base Paths -export const basePaths = { - home: "/", - login: "/login", - note: "/note", - search: "/search", - new: "/new", -}; - -// Params -export const params = { - searchTerm: "term", - redirect: "redirect", - showHighlights: "showHighlights", - sortBy: "sortBy", -}; - -// Other -export const alphabet = [ - "A", - "B", - "C", - "D", - "E", - "F", - "G", - "H", - "I", - "J", - "K", - "L", - "M", - "N", - "O", - "P", - "Q", - "R", - "S", - "T", - "U", - "V", - "W", - "X", - "Y", - "Z", -]; - -export const searchSortOptions = { score: 0, title: 1, lastModified: 2 }; - -export const authTypes = { - none: "none", - readOnly: "read_only", - password: "password", - totp: "totp", -}; diff --git a/client/eventBus.js b/client/eventBus.js deleted file mode 100644 index dc7e25b..0000000 --- a/client/eventBus.js +++ /dev/null @@ -1,3 +0,0 @@ -import Vue from "vue"; - -export default new Vue(); diff --git a/client/global.scss b/client/global.scss deleted file mode 100644 index 2cc0569..0000000 --- a/client/global.scss +++ /dev/null @@ -1,73 +0,0 @@ -// Bootstrap -@import "bootstrap/dist/css/bootstrap.css"; -@import "bootstrap-vue/dist/bootstrap-vue.css"; -@import "node_modules/bootstrap/scss/functions"; -@import "node_modules/bootstrap/scss/variables"; -@import "node_modules/bootstrap/scss/mixins"; - -// Colours -@import "./colours.scss"; - -// Fonts -@font-face { - font-family: "Poppins"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url("./assets/fonts/Poppins/Poppins-Regular.ttf"); -} - -// Elements & Classes -body { - background-color: var(--colour-background); - color: var(--colour-text); - font-family: "Poppins", sans-serif; -} - -a { - color: inherit; - &:hover { - text-decoration: none; - color: inherit; - cursor: pointer; - } -} - -.form-control:focus { - box-shadow: none; - border-color: var(--colour-border); -} - -.bttn { - border: 0; - background-color: var(--colour-background); - border-radius: 4px; - padding: 4px 10px; - color: var(--colour-text-muted); - - svg { - margin-right: 6px; - } - - &:hover { - background-color: var(--colour-background-tint); - cursor: pointer; - color: inherit; - } -} -.dark-theme .bttn:hover { - background-color: var(--colour-background-elevated); -} - -.modal-content { - background-color: var(--colour-background); - color: var(--colour-text); -} - -.modal-content { - .modal-header, - .modal-body, - .modal-footer { - border: 0; - } -} diff --git a/client/helpers.js b/client/helpers.js deleted file mode 100644 index 5e45d98..0000000 --- a/client/helpers.js +++ /dev/null @@ -1,45 +0,0 @@ -export function getSearchParam(paramName, defaultValue = null) { - let urlSearchParams = new URLSearchParams(window.location.search); - let paramValue = urlSearchParams.get(paramName); - if (paramValue != null) { - return paramValue; - } else { - return defaultValue; - } -} - -export function getSearchParamBool(paramName, defaultValue = null) { - let paramValue = getSearchParam(paramName) - if (paramValue == null) { - return defaultValue - } - let paramValueLowerCase = paramValue.toLowerCase(); - if (paramValueLowerCase == "true") { - return true; - } else if (paramValueLowerCase == "false") { - return false; - } else { - return defaultValue; - } -} - -export function getSearchParamInt(paramName, defaultValue = null) { - let paramValue = getSearchParam(paramName) - if (paramValue == null) { - return defaultValue - } - let paramValueInt = parseInt(paramValue); - if (!isNaN(paramValueInt)) { - return paramValueInt; - } else { - return defaultValue; - } -} - -export function setSearchParam(paramName, value) { - let url = new URL(window.location.href); - let urlSearchParams = new URLSearchParams(url.search); - urlSearchParams.set(paramName, value); - url.search = urlSearchParams.toString(); - window.history.replaceState({}, "", url.toString()); -} diff --git a/client/index.html b/client/index.html index 853dec5..71cc63a 100644 --- a/client/index.html +++ b/client/index.html @@ -1,40 +1,13 @@ - + - - - - - - - - - - - + + flatnotes - - +
- + diff --git a/client/index.js b/client/index.js index 1c2e1ed..fdfcbae 100644 --- a/client/index.js +++ b/client/index.js @@ -1,14 +1,7 @@ -import "./global.scss" +import App from "/App.vue"; +import { createApp } from "vue"; +import router from "/router.js"; -import { BootstrapVue, IconsPlugin } from "bootstrap-vue"; - -import App from "./components/App.vue"; -import Vue from "vue"; - -Vue.use(BootstrapVue); -Vue.use(IconsPlugin); - -new Vue({ - el: "#app", - render: (h) => h(App), -}); +const app = createApp(App); +app.use(router); +app.mount("#app"); diff --git a/client/public/android-chrome-192x192.png b/client/public/android-chrome-192x192.png deleted file mode 100644 index 892d6fe..0000000 Binary files a/client/public/android-chrome-192x192.png and /dev/null differ diff --git a/client/public/android-chrome-512x512.png b/client/public/android-chrome-512x512.png deleted file mode 100644 index f5f3774..0000000 Binary files a/client/public/android-chrome-512x512.png and /dev/null differ diff --git a/client/public/safari-pinned-tab.svg b/client/public/safari-pinned-tab.svg deleted file mode 100644 index ddfa208..0000000 --- a/client/public/safari-pinned-tab.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - -Created by potrace 1.14, written by Peter Selinger 2001-2017 - - - - - diff --git a/client/router.js b/client/router.js new file mode 100644 index 0000000..4764c50 --- /dev/null +++ b/client/router.js @@ -0,0 +1,16 @@ +import { createRouter, createWebHistory } from 'vue-router' + +import HomeView from '/views/HomeView.vue' + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: '/', + name: 'home', + component: HomeView + } + ] +}) + +export default router diff --git a/client/site.webmanifest b/client/site.webmanifest deleted file mode 100644 index 692075a..0000000 --- a/client/site.webmanifest +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "flatnotes", - "short_name": "flatnotes", - "start_url": "/", - "icons": [ - { - "src": "/android-chrome-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "any maskable" - }, - { - "src": "/android-chrome-512x512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "any maskable" - } - ], - "theme_color": "#F8A66B", - "background_color": "#ffffff", - "display": "standalone" -} diff --git a/client/toastui-editor-overrides.scss b/client/toastui-editor-overrides.scss deleted file mode 100644 index d2a56b9..0000000 --- a/client/toastui-editor-overrides.scss +++ /dev/null @@ -1,294 +0,0 @@ -@import "./colours.scss"; - -// Disable checkboxes in view mode. See https://github.com/nhn/tui.editor/issues/1087. -.note-viewer li.task-list-item { - pointer-events: none; - a { - pointer-events: auto; - } -} - -.ProseMirror, -.toastui-editor-defaultUI .ProseMirror, -.toastui-editor-md-container .toastui-editor-md-preview { - padding: 1rem 0 0 0; -} - -.ProseMirror { - height: 100%; -} - -.toastui-editor-contents ul > li::before { - // Vertically center the bullet point - margin-top: 0.7rem; -} - -// Typography -.ProseMirror, -.toastui-editor-contents { - font-family: "Poppins", sans-serif; - font-size: 1rem; -} - -.toastui-editor-contents, -.ProseMirror { - h1, - .toastui-editor-md-heading1, - h2, - .toastui-editor-md-heading2, - h3, - .toastui-editor-md-heading3, - h4, - .toastui-editor-md-heading4, - h5, - .toastui-editor-md-heading5, - h6, - .toastui-editor-md-heading6 { - font-weight: bold; - line-height: 1.4; - margin: 1em 0 0.5em 0; - padding: 0; - border-bottom: none; - - &:first-of-type { - margin-top: 0; - } - } - - h1, - .toastui-editor-md-heading1 { - font-size: 1.75rem; - } - - h2, - .toastui-editor-md-heading2 { - font-size: 1.6rem; - } - - h3, - .toastui-editor-md-heading3 { - font-size: 1.45rem; - } - - h4, - .toastui-editor-md-heading4 { - font-size: 1.3rem; - } - - h5, - .toastui-editor-md-heading5 { - font-size: 1.15rem; - } - - h6, - .toastui-editor-md-heading6 { - font-size: 1rem; - } - - p { - line-height: 1.6rem; - margin: 0 0 1rem 0; - } -} - -// Override the default font-family for code blocks as some of the fallbacks are not monospace -.toastui-editor-contents code, -.toastui-editor-contents pre, -.toastui-editor-md-code, -.toastui-editor-md-code-block { - font-family: Consolas, "Lucida Console", Monaco, "Andale Mono", monospace; -} - -// Colours -.toastui-editor-defaultUI { - border: none; -} - -.toastui-editor-contents { - h1, - h2, - h3, - h4, - h5, - h6 { - color: var(--colour-text); - } - p { - color: var(--colour-text); - } - pre code { - color: var(--colour-text); - } -} - -.toastui-editor-main { - background-color: var(--colour-background); -} - -.toastui-editor-ww-container { - background-color: var(--colour-background); -} - -.toastui-editor-contents ul, -.toastui-editor-contents menu, -.toastui-editor-contents ol, -.toastui-editor-contents dir { - color: var(--colour-text); -} - -// Code Block -.toastui-editor-contents pre, -.toastui-editor-md-code-block-line-background { - background-color: var(--colour-background-tint); -} - -.dark-theme .toastui-editor-contents pre, -.dark-theme .toastui-editor-md-code-block-line-background { - background-color: var(--colour-background-elevated); -} - -.token.operator, -.token.entity, -.token.url, -.language-css .token.string, -.style .token.string { - background: none; -} - -// Tables -.toastui-editor-contents table th { - color: var(--colour-text); - background-color: var(--colour-background-tint); -} - -.toastui-editor-contents table { - color: var(--colour-text); -} - -.toastui-editor-md-table .toastui-editor-md-table-cell { - color: var(--colour-text); -} - -// Editor -.ProseMirror { - color: var(--colour-text); -} - -// Toolbar -.toastui-editor-defaultUI-toolbar { - background-color: var(--colour-background); - border-bottom-color: var(--colour-border); -} - -.toastui-editor-defaultUI .toastui-editor-md-tab-container { - background-color: var(--colour-background); - border-bottom-color: var(--colour-border); -} - -.toastui-editor-mode-switch { - background-color: var(--colour-background); - border-color: var(--colour-border); -} - -.toastui-editor-defaultUI-toolbar button { - border: 1px solid var(--colour-background); -} - -.toastui-editor-defaultUI .tab-item.active { - background-color: var(--colour-background); - color: var(--colour-text); - border-color: var(--colour-border); -} - -.toastui-editor-defaultUI .tab-item { - background-color: var(--colour-background-tint); - color: var(--colour-text-muted); - border-color: var(--colour-border); -} - -.toastui-editor-md-tab-container .tab-item.active { - border-bottom: none; -} - -.toastui-editor-toolbar-divider { - background-color: var(--colour-text); -} - -.dark-theme .toastui-editor-toolbar-icons { - // Standard dark theme buttons are dark grey, this position change makes them white - background-position-y: -49px; -} - -.toastui-editor-defaultUI-toolbar button:not(:disabled):hover { - background-color: var(--colour-background-tint); - border: 1px solid var(--colour-background); -} - -.toastui-editor-md-block-quote .toastui-editor-md-marked-text { - color: var(--colour-text-muted); -} - -.toastui-editor-md-code, -.toastui-editor-contents code { - background-color: var(--colour-background-tint); -} - -.dark-theme .toastui-editor-md-code, -.dark-theme .toastui-editor-contents code { - background-color: var(--colour-background-elevated); -} - -.toastui-editor-popup { - background-color: var(--colour-background); - border: 1px solid var(--colour-border); -} - -.toastui-editor-popup-body { - label { - color: var(--colour-text); - } - input { - background-color: var(--colour-background); - border: 1px solid var(--colour-border); - } -} - -.toastui-editor-popup-add-table .toastui-editor-table-cell, -.toastui-editor-popup-add-table .toastui-editor-table-cell.header { - background-color: var(--colour-background); - border-color: var(--colour-border); -} - -.toastui-editor-popup-add-heading ul li:hover { - background-color: var(--colour-background-highlight); -} - -.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item { - color: var(--colour-text); - background-color: var(--colour-background); - border-color: var(--colour-border); -} - -.toastui-editor-popup-add-image .toastui-editor-file-name.has-file { - color: var(--colour-text); -} - -.toastui-editor-popup-body input[type="text"] { - color: var(--colour-text); - background-color: var(--colour-background); -} - -.toastui-editor-dropdown-toolbar { - background-color: var(--colour-background); - border-color: var(--colour-border); -} - -// Tables -.toastui-editor-contents table th, -.toastui-editor-contents table td { - border-color: var(--colour-border); -} - -.toastui-editor-contents th p { - color: var(--colour-text); -} diff --git a/client/tokenStorage.js b/client/tokenStorage.js deleted file mode 100644 index dc0fc08..0000000 --- a/client/tokenStorage.js +++ /dev/null @@ -1,31 +0,0 @@ -const tokenStorageKey = "token"; - -function getCookieString(token) { - return `${tokenStorageKey}=${token}; path=/attachments; SameSite=Strict`; -} - -export function setToken(token, persist = false) { - document.cookie = getCookieString(token); - sessionStorage.setItem(tokenStorageKey, token); - if (persist === true) { - localStorage.setItem(tokenStorageKey, token); - } -} - -export function getToken() { - return sessionStorage.getItem(tokenStorageKey); -} - -export function loadToken() { - const token = localStorage.getItem(tokenStorageKey); - if (token != null) { - setToken(token, false); - } -} - -export function clearToken() { - sessionStorage.removeItem(tokenStorageKey); - localStorage.removeItem(tokenStorageKey); - document.cookie = - getCookieString() + "; expires=Thu, 01 Jan 1970 00:00:00 GMT"; -} diff --git a/client/views/HomeView.vue b/client/views/HomeView.vue new file mode 100644 index 0000000..02022f6 --- /dev/null +++ b/client/views/HomeView.vue @@ -0,0 +1 @@ + diff --git a/package-lock.json b/package-lock.json index 33f3fe1..dd50e1f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,22 +8,21 @@ "name": "flatnotes", "version": "4.0.3", "license": "MIT", - "devDependencies": { - "@toast-ui/editor-plugin-code-syntax-highlight": "3.1.0", - "@toast-ui/vue-editor": "3.2.3", - "@vitejs/plugin-vue2": "^2.3.1", + "dependencies": { "axios": "1.6.8", - "bootstrap-vue": "2.23.1", "mousetrap": "1.6.5", + "vue": "^3.4.24", + "vue-router": "^4.3.2" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", "vite": "^5.2.9" } }, "node_modules/@babel/parser": { - "version": "7.20.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.15.tgz", - "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg==", - "dev": true, - "peer": true, + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "bin": { "parser": "bin/babel-parser.js" }, @@ -450,12 +449,9 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true, - "optional": true, - "peer": true + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", @@ -469,24 +465,6 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@nuxt/opencollective": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.3.tgz", - "integrity": "sha512-6IKCd+gP0HliixqZT/p8nW3tucD6Sv/u/eR2A9X4rxT/6hXlMzA4GZQzq4d2qnBAwSwGpmKyzkyTjNjrhaA25A==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "consola": "^2.15.0", - "node-fetch": "^2.6.7" - }, - "bin": { - "opencollective": "bin/opencollective.js" - }, - "engines": { - "node": ">=8.0.0", - "npm": ">=5.0.0" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.14.3", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz", @@ -695,132 +673,129 @@ "win32" ] }, - "node_modules/@toast-ui/editor": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@toast-ui/editor/-/editor-3.2.2.tgz", - "integrity": "sha512-ASX7LFjN2ZYQJrwmkUajPs7DRr9FsM1+RQ82CfTO0Y5ZXorBk1VZS4C2Dpxinx9kl55V4F8/A2h2QF4QMDtRbA==", - "dev": true, - "dependencies": { - "dompurify": "^2.3.3", - "prosemirror-commands": "^1.1.9", - "prosemirror-history": "^1.1.3", - "prosemirror-inputrules": "^1.1.3", - "prosemirror-keymap": "^1.1.4", - "prosemirror-model": "^1.14.1", - "prosemirror-state": "^1.3.4", - "prosemirror-view": "^1.18.7" - } - }, - "node_modules/@toast-ui/editor-plugin-code-syntax-highlight": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@toast-ui/editor-plugin-code-syntax-highlight/-/editor-plugin-code-syntax-highlight-3.1.0.tgz", - "integrity": "sha512-OgX5pZiTnHREoTTXDAFu1k6RzEspGOxeJNRlt/Lnoi1GvLbIpUTTbBcls9becpXT/Qdls++8G3r5C60cVdellA==", - "dev": true, - "dependencies": { - "prismjs": "^1.23.0" - } - }, - "node_modules/@toast-ui/vue-editor": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@toast-ui/vue-editor/-/vue-editor-3.2.3.tgz", - "integrity": "sha512-IjoV5tBh/yesIuqRqmOQx1+F0oeeAbIeBA7edMTawIXHQXBeJ1qzGHLTY5NWrUQ6BBtV8CDBeedjnVsJ+mHjKQ==", - "dev": true, - "dependencies": { - "@toast-ui/editor": "^3.2.2" - }, - "peerDependencies": { - "vue": "^2.5.0" - } - }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, - "node_modules/@vitejs/plugin-vue2": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue2/-/plugin-vue2-2.3.1.tgz", - "integrity": "sha512-/ksaaz2SRLN11JQhLdEUhDzOn909WEk99q9t9w+N12GjQCljzv7GyvAbD/p20aBUjHkvpGOoQ+FCOkG+mjDF4A==", + "node_modules/@vitejs/plugin-vue": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz", + "integrity": "sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ==", "dev": true, "engines": { - "node": "^14.18.0 || >= 16.0.0" + "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0", - "vue": "^2.7.0-0" + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.24.tgz", + "integrity": "sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==", + "dependencies": { + "@babel/parser": "^7.24.4", + "@vue/shared": "3.4.24", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.24.tgz", + "integrity": "sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==", + "dependencies": { + "@vue/compiler-core": "3.4.24", + "@vue/shared": "3.4.24" } }, "node_modules/@vue/compiler-sfc": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz", - "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==", - "dev": true, - "peer": true, + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.24.tgz", + "integrity": "sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==", "dependencies": { - "@babel/parser": "^7.18.4", - "postcss": "^8.4.14", - "source-map": "^0.6.1" + "@babel/parser": "^7.24.4", + "@vue/compiler-core": "3.4.24", + "@vue/compiler-dom": "3.4.24", + "@vue/compiler-ssr": "3.4.24", + "@vue/shared": "3.4.24", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.10", + "postcss": "^8.4.38", + "source-map-js": "^1.2.0" } }, - "node_modules/@vue/compiler-sfc/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true, - "peer": true + "node_modules/@vue/compiler-ssr": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.24.tgz", + "integrity": "sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==", + "dependencies": { + "@vue/compiler-dom": "3.4.24", + "@vue/shared": "3.4.24" + } }, - "node_modules/@vue/compiler-sfc/node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "peer": true, + "node_modules/@vue/devtools-api": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.1.tgz", + "integrity": "sha512-LgPscpE3Vs0x96PzSSB4IGVSZXZBZHpfxs+ZA1d+VEPwHdOXowy/Y2CsvCAIFrf+ssVU1pD1jidj505EpUnfbA==" + }, + "node_modules/@vue/reactivity": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.24.tgz", + "integrity": "sha512-nup3fSYg4i4LtNvu9slF/HF/0dkMQYfepUdORBcMSsankzRPzE7ypAFurpwyRBfU1i7Dn1kcwpYsE1wETSh91g==", "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" + "@vue/shared": "3.4.24" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@vue/runtime-core": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.24.tgz", + "integrity": "sha512-c7iMfj6cJMeAG3s5yOn9Rc5D9e2/wIuaozmGf/ICGCY3KV5H7mbTVdvEkd4ZshTq7RUZqj2k7LMJWVx+EBiY1g==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@vue/reactivity": "3.4.24", + "@vue/shared": "3.4.24" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.24.tgz", + "integrity": "sha512-uXKzuh/Emfad2Y7Qm0ABsLZZV6H3mAJ5ZVqmAOlrNQRf+T5mxpPGZBfec1hkP41t6h6FwF6RSGCs/gd8WbuySQ==", + "dependencies": { + "@vue/runtime-core": "3.4.24", + "@vue/shared": "3.4.24", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.24.tgz", + "integrity": "sha512-H+DLK4sQF6sRgzKyofmlEVBIV/9KrQU6HIV7nt6yIwSGGKvSwlV8pqJlebUKLpbXaNHugdSfAbP6YmXF69lxow==", + "dependencies": { + "@vue/compiler-ssr": "3.4.24", + "@vue/shared": "3.4.24" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "vue": "3.4.24" } }, + "node_modules/@vue/shared": { + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.24.tgz", + "integrity": "sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw==" + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { "version": "1.6.8", "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", - "dev": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -831,7 +806,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -841,40 +815,6 @@ "node": ">= 6" } }, - "node_modules/bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" - } - }, - "node_modules/bootstrap-vue": { - "version": "2.23.1", - "resolved": "https://registry.npmjs.org/bootstrap-vue/-/bootstrap-vue-2.23.1.tgz", - "integrity": "sha512-SEWkG4LzmMuWjQdSYmAQk1G/oOKm37dtNfjB5kxq0YafnL2W6qUAmeDTcIZVbPiQd2OQlIkWOMPBRGySk/zGsg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@nuxt/opencollective": "^0.3.2", - "bootstrap": "^4.6.1", - "popper.js": "^1.16.1", - "portal-vue": "^2.1.7", - "vue-functional-data-merge": "^3.1.0" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -883,45 +823,10 @@ "optional": true, "peer": true }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, "dependencies": { "delayed-stream": "~1.0.0" }, @@ -937,33 +842,29 @@ "optional": true, "peer": true }, - "node_modules/consola": { - "version": "2.15.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", - "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", - "dev": true - }, "node_modules/csstype": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz", - "integrity": "sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==", - "dev": true, - "peer": true + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, "engines": { "node": ">=0.4.0" } }, - "node_modules/dompurify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.0.tgz", - "integrity": "sha512-5RXhAXSCrKTqt9pSbobT9PVRX+oPpENplTZqCiK1l0ya+ZOzwo9kqsGLbYRsAhzIiLCwKEy99XKSSrqnRTLVcw==", - "dev": true + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, "node_modules/esbuild": { "version": "0.20.2", @@ -1003,11 +904,15 @@ "@esbuild/win32-x64": "0.20.2" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "dev": true, "funding": [ { "type": "individual", @@ -1037,15 +942,6 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/immutable": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.4.tgz", @@ -1079,18 +975,18 @@ "node": ">=0.10.0" } }, - "node_modules/jquery": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", - "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==", - "dev": true, - "peer": true + "node_modules/magic-string": { + "version": "0.30.10", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", + "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, "engines": { "node": ">= 0.6" } @@ -1099,7 +995,6 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, "dependencies": { "mime-db": "1.52.0" }, @@ -1110,14 +1005,12 @@ "node_modules/mousetrap": { "version": "1.6.5", "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==", - "dev": true + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, "funding": [ { "type": "github", @@ -1131,26 +1024,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1162,11 +1035,10 @@ "node": ">=0.10.0" } }, - "node_modules/orderedmap": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", - "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", - "dev": true + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -1182,123 +1054,37 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/portal-vue": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/portal-vue/-/portal-vue-2.1.7.tgz", - "integrity": "sha512-+yCno2oB3xA7irTt0EU5Ezw22L2J51uKAacE/6hMPMoO/mx3h4rXFkkBkT4GFsMDv/vEe8TNKC3ujJJ0PTwb6g==", - "dev": true, - "peerDependencies": { - "vue": "^2.5.18" - } - }, - "node_modules/prismjs": { - "version": "1.29.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", - "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/prosemirror-commands": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.5.2.tgz", - "integrity": "sha512-hgLcPaakxH8tu6YvVAaILV2tXYsW3rAdDR8WNkeKGcgeMVQg3/TMhPdVoh7iAmfgVjZGtcOSjKiQaoeKjzd2mQ==", - "dev": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-history": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.0.tgz", - "integrity": "sha512-UUiGzDVcqo1lovOPdi9YxxUps3oBFWAIYkXLu3Ot+JPv1qzVogRbcizxK3LhHmtaUxclohgiOVesRw5QSlMnbQ==", - "dev": true, - "dependencies": { - "prosemirror-state": "^1.2.2", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.31.0", - "rope-sequence": "^1.3.0" - } - }, - "node_modules/prosemirror-inputrules": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.4.0.tgz", - "integrity": "sha512-6ygpPRuTJ2lcOXs9JkefieMst63wVJBgHZGl5QOytN7oSZs3Co/BYbc3Yx9zm9H37Bxw8kVzCnDsihsVsL4yEg==", - "dev": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.0.0" - } - }, - "node_modules/prosemirror-keymap": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.2.tgz", - "integrity": "sha512-EAlXoksqC6Vbocqc0GtzCruZEzYgrn+iiGnNjsJsH4mrnIGex4qbLdWWNza3AW5W36ZRrlBID0eM6bdKH4OStQ==", - "dev": true, - "dependencies": { - "prosemirror-state": "^1.0.0", - "w3c-keyname": "^2.2.0" - } - }, - "node_modules/prosemirror-model": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.20.0.tgz", - "integrity": "sha512-q7AY7vMjKYqDCeoedgUiAgrLabliXxndJuuFmcmc2+YU1SblvnOiG2WEACF2lwAZsMlfLpiAilA3L+TWlDqIsQ==", - "dev": true, - "dependencies": { - "orderedmap": "^2.0.0" - } - }, - "node_modules/prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", - "dev": true, - "dependencies": { - "prosemirror-model": "^1.0.0", - "prosemirror-transform": "^1.0.0", - "prosemirror-view": "^1.27.0" - } - }, - "node_modules/prosemirror-transform": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.8.0.tgz", - "integrity": "sha512-BaSBsIMv52F1BVVMvOmp1yzD3u65uC3HTzCBQV1WDPqJRQ2LuHKcyfn0jwqodo8sR9vVzMzZyI+Dal5W9E6a9A==", - "dev": true, - "dependencies": { - "prosemirror-model": "^1.0.0" - } - }, - "node_modules/prosemirror-view": { - "version": "1.33.4", - "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.33.4.tgz", - "integrity": "sha512-xQqAhH8/HGleVpKDhQsrd+oqdyeKMxFtdCWDxWMmP+n0k27fBpyUqa8pA+RB5cFY8rqDDc1hll69aRZQa7UaAw==", - "dev": true, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "prosemirror-model": "^1.20.0", - "prosemirror-state": "^1.0.0", - "prosemirror-transform": "^1.1.0" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" } }, "node_modules/proxy-from-env": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/rollup": { "version": "4.14.3", @@ -1335,12 +1121,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/rope-sequence": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", - "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", - "dev": true - }, "node_modules/sass": { "version": "1.74.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.74.1.tgz", @@ -1515,6 +1295,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "optional": true, "peer": true, "engines": { "node": ">=0.10.0" @@ -1524,7 +1305,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -1541,18 +1321,6 @@ "source-map": "^0.6.0" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/terser": { "version": "5.30.3", "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.3.tgz", @@ -1587,12 +1355,6 @@ "node": ">=0.4.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, "node_modules/vite": { "version": "5.2.9", "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.9.tgz", @@ -1648,78 +1410,39 @@ } } }, - "node_modules/vite/node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/vite/node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/vue": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.14.tgz", - "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==", - "dev": true, - "peer": true, + "version": "3.4.24", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.24.tgz", + "integrity": "sha512-NPdx7dLGyHmKHGRRU5bMRYVE+rechR+KDU5R2tSTNG36PuMwbfAJ+amEvOAw7BPfZp5sQulNELSLm5YUkau+Sg==", "dependencies": { - "@vue/compiler-sfc": "2.7.14", - "csstype": "^3.1.0" + "@vue/compiler-dom": "3.4.24", + "@vue/compiler-sfc": "3.4.24", + "@vue/runtime-dom": "3.4.24", + "@vue/server-renderer": "3.4.24", + "@vue/shared": "3.4.24" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/vue-functional-data-merge": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vue-functional-data-merge/-/vue-functional-data-merge-3.1.0.tgz", - "integrity": "sha512-leT4kdJVQyeZNY1kmnS1xiUlQ9z1B/kdBFCILIjYYQDqZgLqCLa0UhjSSeRX6c3mUe6U5qYeM8LrEqkHJ1B4LA==", - "dev": true - }, - "node_modules/w3c-keyname": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", - "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, + "node_modules/vue-router": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.2.tgz", + "integrity": "sha512-hKQJ1vDAZ5LVkKEnHhmm1f9pMiWIBNGF5AwU67PdH7TyXCj/a4hTccuUuYCAMgJK6rO/NVYtQIEN3yL8CECa7Q==", "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "@vue/devtools-api": "^6.5.1" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" } - }, - "node_modules/whatwg-url/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true } } } diff --git a/package.json b/package.json index 2db850c..facb972 100644 --- a/package.json +++ b/package.json @@ -10,13 +10,14 @@ }, "author": "Adam Dullage", "license": "MIT", - "devDependencies": { - "@toast-ui/editor-plugin-code-syntax-highlight": "3.1.0", - "@toast-ui/vue-editor": "3.2.3", - "@vitejs/plugin-vue2": "^2.3.1", + "dependencies": { "axios": "1.6.8", - "bootstrap-vue": "2.23.1", "mousetrap": "1.6.5", + "vue": "^3.4.24", + "vue-router": "^4.3.2" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^5.0.4", "vite": "^5.2.9" } } diff --git a/vite.config.js b/vite.config.js index ce4d1d0..150f13e 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,7 +1,10 @@ import { defineConfig } from "vite"; -import vue from "@vitejs/plugin-vue2"; +import vue from "@vitejs/plugin-vue"; export default defineConfig({ plugins: [vue()], root: "client", + server: { + port: 8080, + }, });