From 28fd8482ce20b66239121c32aad7c32ed5f01d34 Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Fri, 29 Sep 2023 19:36:46 +0200 Subject: [PATCH 01/16] fix character folder name --- src-tauri/tauri.conf.json | 2 +- src/stores/characterStore.ts | 12 +++++++++--- src/utils/tools.ts | 4 ++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index eb9eea8..c5341a7 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -8,7 +8,7 @@ }, "package": { "productName": "pamyu", - "version": "0.0.7" + "version": "0.0.8" }, "tauri": { "allowlist": { diff --git a/src/stores/characterStore.ts b/src/stores/characterStore.ts index ab0142c..cd53bb8 100644 --- a/src/stores/characterStore.ts +++ b/src/stores/characterStore.ts @@ -1,6 +1,12 @@ import {defineStore} from 'pinia'; -import {capitalize, getCleanName, getRandomToken, getUndefinedIfEmptyString} from '../utils/tools.ts'; +import { + capitalize, + getCleanName, + getCleanNameWithSpaces, + getRandomToken, + getUndefinedIfEmptyString +} from '../utils/tools.ts'; import {Character} from '../types/character.ts'; @@ -26,7 +32,7 @@ export const useCharacterStore = defineStore({ }, actions: { createFolder(name: string): void { - const cleanName = getCleanName(name); + const cleanName = getCleanNameWithSpaces(name); if (!this.folders) this.folders = {}; if (!this.folders[cleanName]) this.folders[cleanName] = []; }, @@ -40,7 +46,7 @@ export const useCharacterStore = defineStore({ } }, moveCharacter(character: Character, folder: string | undefined): void { - const cleanFolder = folder ? getCleanName(folder) : undefined; + const cleanFolder = folder ?? undefined; if (!this.isFolderValid(cleanFolder)) { return; diff --git a/src/utils/tools.ts b/src/utils/tools.ts index 891dc63..21bae73 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -84,6 +84,10 @@ export function getCleanName(name: string): string { return name.replace(/[^a-zA-Z0-9]/g, '').toLowerCase(); } +export function getCleanNameWithSpaces(name: string): string { + return name.replace(/[^a-zA-Z0-9 ]/g, '').toLowerCase(); +} + export function truncatePath(path: string, maxLength: number): string { const ellipsis = '.../'; const parts = path.split('/'); From 043cdb0b53faf9cf2c2abcf48af88d0c21d9deb2 Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Fri, 29 Sep 2023 19:37:59 +0200 Subject: [PATCH 02/16] upgrade dependencies --- package.json | 2 +- pnpm-lock.yaml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 9c3faef..eb3ae60 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@faker-js/faker": "^8.1.0", "@tauri-apps/cli": "^1.5.0", - "@types/node": "^20.7.1", + "@types/node": "^20.7.2", "@typescript-eslint/eslint-plugin": "^6.7.3", "@typescript-eslint/parser": "^6.7.3", "@vitejs/plugin-vue": "^4.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 72766c7..b3da209 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,8 +35,8 @@ devDependencies: specifier: ^1.5.0 version: 1.5.0 '@types/node': - specifier: ^20.7.1 - version: 20.7.1 + specifier: ^20.7.2 + version: 20.7.2 '@typescript-eslint/eslint-plugin': specifier: ^6.7.3 version: 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) @@ -63,7 +63,7 @@ devDependencies: version: 5.2.2 vite: specifier: ^4.4.9 - version: 4.4.9(@types/node@20.7.1)(sass@1.68.0) + version: 4.4.9(@types/node@20.7.2)(sass@1.68.0) vue-tsc: specifier: ^1.8.15 version: 1.8.15(typescript@5.2.2) @@ -584,8 +584,8 @@ packages: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true - /@types/node@20.7.1: - resolution: {integrity: sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==} + /@types/node@20.7.2: + resolution: {integrity: sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==} dev: true /@types/semver@7.5.3: @@ -730,7 +730,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.7.1)(sass@1.68.0) + vite: 4.4.9(@types/node@20.7.2)(sass@1.68.0) vue: 3.3.4 dev: true @@ -1767,7 +1767,7 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite@4.4.9(@types/node@20.7.1)(sass@1.68.0): + /vite@4.4.9(@types/node@20.7.2)(sass@1.68.0): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -1795,7 +1795,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.7.1 + '@types/node': 20.7.2 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 From 89fb8aac317c96983a9436ba9da8ed2f1aedf2d6 Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Sat, 30 Sep 2023 02:36:17 +0200 Subject: [PATCH 03/16] add qodana --- .github/workflows/qodana_code_quality.yml | 19 +++++++++++++++ qodana.yaml | 29 +++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 .github/workflows/qodana_code_quality.yml create mode 100644 qodana.yaml diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml new file mode 100644 index 0000000..e09334a --- /dev/null +++ b/.github/workflows/qodana_code_quality.yml @@ -0,0 +1,19 @@ +name: Qodana +on: + workflow_dispatch: + pull_request: + push: + branches: + - alpha-8 + +jobs: + qodana: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: 'Qodana Scan' + uses: JetBrains/qodana-action@v2023.3 + env: + QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} \ No newline at end of file diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 0000000..29f8f8c --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,29 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# +version: "1.0" + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +#Specify Qodana linter for analysis (Applied in CI/CD pipeline) +linter: jetbrains/qodana-js:latest From 6dbffe4886110ca4214b69fdd72d987fd4611e3d Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Sat, 30 Sep 2023 02:41:17 +0200 Subject: [PATCH 04/16] add qodana --- .github/workflows/qodana_code_quality.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml index e09334a..051d356 100644 --- a/.github/workflows/qodana_code_quality.yml +++ b/.github/workflows/qodana_code_quality.yml @@ -14,6 +14,6 @@ jobs: with: fetch-depth: 0 - name: 'Qodana Scan' - uses: JetBrains/qodana-action@v2023.3 + uses: JetBrains/qodana-action@v2023.2 env: QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} \ No newline at end of file From 9cb05c8e267662368e428b4f6222bf15072e9f8a Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Sat, 30 Sep 2023 03:40:28 +0200 Subject: [PATCH 05/16] fix qodana errors --- qodana.yaml | 37 +++++++++++++++++++++---- src/components/inputs/InputBase.vue | 2 +- src/components/inputs/InputCheckbox.vue | 2 +- src/components/inputs/InputColor.vue | 8 +++--- src/components/inputs/InputPath.vue | 2 +- src/components/inputs/InputSelect.vue | 2 +- src/components/inputs/InputText.vue | 2 +- src/main.ts | 12 ++++---- src/pages/character/delete.vue | 5 +++- src/pages/characters.vue | 4 +-- src/pages/projects/create.vue | 2 +- src/stores/useProjectStore.ts | 2 +- src/utils/data.ts | 32 ++++++++++----------- src/utils/pamyu.ts | 2 +- src/utils/path.ts | 7 +---- src/utils/rpy.ts | 6 ++-- src/utils/script.ts | 2 +- src/utils/tools.ts | 6 ++-- 18 files changed, 79 insertions(+), 56 deletions(-) diff --git a/qodana.yaml b/qodana.yaml index 29f8f8c..db3e4c7 100644 --- a/qodana.yaml +++ b/qodana.yaml @@ -3,27 +3,52 @@ # https://www.jetbrains.com/help/qodana/qodana-yaml.html # #-------------------------------------------------------------------------------# version: "1.0" - #Specify inspection profile for code analysis profile: name: qodana.starter - #Enable inspections #include: # - name: - #Disable inspections #exclude: # - name: # paths: # - - #Execute shell command before Qodana execution (Applied in CI/CD pipeline) #bootstrap: sh ./prepare-qodana.sh - #Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) #plugins: # - id: #(plugin id can be found at https://plugins.jetbrains.com) - #Specify Qodana linter for analysis (Applied in CI/CD pipeline) linter: jetbrains/qodana-js:latest +include: + - name: DivideByZeroJS + - name: JSConstructorReturnsPrimitive + - name: CssNoGenericFontName + - name: CssNonIntegerLengthInPixels + - name: JSClassNamingConvention + - name: FunctionNamingConventionJS + - name: ParameterNamingConventionJS + - name: LocalVariableNamingConventionJS + - name: ConfusingPlusesOrMinusesJS + - name: NestedFunctionJS + - name: EmptyStatementBodyJS + - name: BlockStatementJS + - name: UpdateDependencyToLatestVersion + - name: EmptyDirectory + - name: DuplicatedCode + - name: JSAnnotator + - name: JSMethodCanBeStatic + - name: JSNonStrictModeUsed + - name: ProblematicWhitespace + - name: TodoComment + - name: JSJoinVariableDeclarationAndAssignment +exclude: + - name: Eslint + - name: TypeScriptCheckImport + - name: TypeScriptUnresolvedReference + - name: All + paths: + - src/utils/data.ts + - src/vite-env.d.ts + - src/utils/config.ts diff --git a/src/components/inputs/InputBase.vue b/src/components/inputs/InputBase.vue index 12ca982..69db031 100644 --- a/src/components/inputs/InputBase.vue +++ b/src/components/inputs/InputBase.vue @@ -14,7 +14,7 @@ const props = withDefaults(defineProps<{ message: '', }); -const uniqueId = `input-${Math.random().toString(36).substr(2, 9)}`; +const uniqueId = `input-${Math.random().toString(36).substring(2, 11)}`; const usableWidth = props.width ? props.width : '100%'; diff --git a/src/components/inputs/InputCheckbox.vue b/src/components/inputs/InputCheckbox.vue index fd950bf..6c086ae 100644 --- a/src/components/inputs/InputCheckbox.vue +++ b/src/components/inputs/InputCheckbox.vue @@ -28,7 +28,7 @@ const value = computed({ } }); -const uniqueId = `input-${Math.random().toString(36).substr(2, 9)}`; +const uniqueId = `input-${Math.random().toString(36).substring(2, 11)}`; const usableWidth = props.width ? props.width : '100%'; diff --git a/src/components/inputs/InputColor.vue b/src/components/inputs/InputColor.vue index 566d0eb..673cd25 100644 --- a/src/components/inputs/InputColor.vue +++ b/src/components/inputs/InputColor.vue @@ -27,16 +27,16 @@ const value = computed({ } }); -const uniqueId = `input-${Math.random().toString(36).substr(2, 9)}`; +const uniqueId = `input-${Math.random().toString(36).substring(2, 11)}`; const usableWidth = props.width ? props.width : '100%'; const isLightColor = computed(() => { const color = value.value?.toString(); if (color === undefined) return false; if (color.length === 0) return false; - const r = parseInt(color.substr(1, 2), 16); - const g = parseInt(color.substr(3, 2), 16); - const b = parseInt(color.substr(5, 2), 16); + const r = parseInt(color.substring(5, 7), 16); + const g = parseInt(color.substring(5, 7), 16); + const b = parseInt(color.substring(5, 7), 16); const brightness = (r * 299 + g * 587 + b * 114) / 1000; return brightness > 155; }); diff --git a/src/components/inputs/InputPath.vue b/src/components/inputs/InputPath.vue index 006a677..4468a51 100644 --- a/src/components/inputs/InputPath.vue +++ b/src/components/inputs/InputPath.vue @@ -29,7 +29,7 @@ const value = computed({ } }); -const uniqueId = `input-${Math.random().toString(36).substr(2, 9)}`; +const uniqueId = `input-${Math.random().toString(36).substring(2, 11)}`; const usableWidth = props.width ? props.width : '100%'; async function importFolder(): Promise { diff --git a/src/components/inputs/InputSelect.vue b/src/components/inputs/InputSelect.vue index aa0a047..de47451 100644 --- a/src/components/inputs/InputSelect.vue +++ b/src/components/inputs/InputSelect.vue @@ -31,7 +31,7 @@ const value = computed({ } }); -const uniqueId = `input-${Math.random().toString(36).substr(2, 9)}`; +const uniqueId = `input-${Math.random().toString(36).substring(2, 11)}`; const usableWidth = props.width ? props.width : '100%'; diff --git a/src/components/inputs/InputText.vue b/src/components/inputs/InputText.vue index 1b87e43..83415dd 100644 --- a/src/components/inputs/InputText.vue +++ b/src/components/inputs/InputText.vue @@ -37,7 +37,7 @@ const value = computed({ } }); -const uniqueId = `input-${Math.random().toString(36).substr(2, 9)}`; +const uniqueId = `input-${Math.random().toString(36).substring(2, 11)}`; const usableWidth = props.width ? props.width : '100%'; diff --git a/src/main.ts b/src/main.ts index 5b86a4b..03bd6da 100644 --- a/src/main.ts +++ b/src/main.ts @@ -4,10 +4,10 @@ import {createRouter, createWebHistory, RouterOptions} from 'vue-router'; import {useProjectStore} from './stores/useProjectStore.ts'; -import {load_data, save_data} from './utils/data'; +import {loadData, saveData} from './utils/data'; import i18n from './utils/i18n'; import {PathManager} from './utils/path.ts'; -import {update_characters} from './utils/rpy.ts'; +import {updateCharacters} from './utils/rpy.ts'; import {capitalize, deepAssign} from './utils/tools.ts'; import {routes, routesFallback} from './routes/main'; @@ -32,17 +32,17 @@ export const path = PathManager.last?.path ?? ''; const pinia = createPinia(); -const baseData = await load_data(); +const baseData = await loadData(); if (baseData) { if (typeof baseData === 'object') { const completeData = deepAssign(defaultStores, baseData); pinia.state.value = completeData; - void save_data(completeData); + void saveData(completeData); } } -watch(pinia.state, (state) => save_data(state), {deep: true}); +watch(pinia.state, (state) => saveData(state), {deep: true}); const app = createApp(App); @@ -73,5 +73,5 @@ app.use(router); app.use(i18n); app.mount('#app'); -update_characters(); +updateCharacters(); useProjectStore().init(); \ No newline at end of file diff --git a/src/pages/character/delete.vue b/src/pages/character/delete.vue index b6a157e..593ee64 100644 --- a/src/pages/character/delete.vue +++ b/src/pages/character/delete.vue @@ -19,7 +19,10 @@ function deleteCharacter(): void { if (character.value) { useCharacterStore().deleteCharacter(character.value); } - router.push({name: 'character.edit', params: {id: useCharacterStore().getCharacters[0]._id}}); + const characters: Character[] = useCharacterStore().getCharacters; + if (characters.length > 0) { + router.push({name: 'character.edit', params: {id: characters[0]._id}}); + } } function back(): void { diff --git a/src/pages/characters.vue b/src/pages/characters.vue index b2a7055..11ca6d7 100644 --- a/src/pages/characters.vue +++ b/src/pages/characters.vue @@ -13,7 +13,7 @@ import PageLayout from '../layout/PageLayout.vue'; const characters = computed(() => useCharacterStore().getCharacters); const folders = computed(() => useCharacterStore().getCharactersFolders); -function delete_folder(name: string): void { +function deleteFolder(name: string): void { useCharacterStore().deleteFolder(name); } @@ -55,7 +55,7 @@ function delete_folder(name: string): void {
diff --git a/src/pages/projects/create.vue b/src/pages/projects/create.vue index f1ca402..264cb1d 100644 --- a/src/pages/projects/create.vue +++ b/src/pages/projects/create.vue @@ -20,7 +20,7 @@ function createPath(): void { isValid.value = false; // Avoid spamming the button - PathManager.add(path.value); + PathManager.addNewPath(path.value); } const isValid = ref(false); diff --git a/src/stores/useProjectStore.ts b/src/stores/useProjectStore.ts index 304d07c..697a527 100644 --- a/src/stores/useProjectStore.ts +++ b/src/stores/useProjectStore.ts @@ -66,7 +66,7 @@ export const useProjectStore = defineStore('Game', { async initScript(): Promise { const res: string = await invoke('load_script', {path: PathManager.last?.path, file: 'options.rpy'}); if (!res) return; - Script.set(res); + Script.setCurrentScript(res); } } }); \ No newline at end of file diff --git a/src/utils/data.ts b/src/utils/data.ts index 6ea55c1..1c82422 100644 --- a/src/utils/data.ts +++ b/src/utils/data.ts @@ -14,16 +14,16 @@ const isSaving = ref(false); * * @param {object} state - The current application state. */ -export async function save_data(state: object): Promise { +export async function saveData(state: object): Promise { if (isSaving.value) return; isSaving.value = true; - update_version(state); + updateVersion(state); // noinspection JSIgnoredPromiseFromCall await invoke('save_data', {path, data: JSON.stringify(state, null, 2)}); isSaving.value = false; } -export async function load_data(): Promise { +export async function loadData(): Promise { console.log('📂 Loading data from', path); const baseData = await invoke('load_data', {path}) as string | null; if (baseData) { @@ -38,14 +38,14 @@ export async function load_data(): Promise { } /** - * The `get_version` function converts a string representation of a software version into an ordered tuple. + * The `getVersion` function converts a string representation of a software version into an ordered tuple. * * @param {string} stringVersion - A string representation of a version, such as "1.2.3". * * @returns {[number, number, number]} The returned array contains three elements: the major version number, * the minor version number, and the patch version number. */ -function get_version(stringVersion: string): [number, number, number] { +function getVersion(stringVersion: string): [number, number, number] { return stringVersion.split('.').map((v: string) => parseInt(v)) as [number, number, number]; } @@ -56,14 +56,14 @@ function get_version(stringVersion: string): [number, number, number] { * are equal, it proceeds to compare the minor version numbers. Finally, if the minor version numbers are also the same, it * compares the patch version numbers. * - * @param {string} version_checked - The first version string to compare, such as "1.2.3". - * @param {string} version_to_have - The second version string to compare, such as "4.5.6". + * @param {string} versionChecked - The first version string to compare, such as "1.2.3". + * @param {string} versionToHave - The second version string to compare, such as "4.5.6". * - * @returns {boolean} - Returns true if `version_checked` is greater than `version_to_have`, otherwise false. + * @returns {boolean} - Returns true if `versionChecked` is greater than `versionToHave`, otherwise false. */ -function is_version_lower(version_checked: string, version_to_have: string): boolean { - const [aMajor, aMinor, aPatch] = get_version(version_to_have); - const [bMajor, bMinor, bPatch] = get_version(version_checked); +function isVersionLower(versionChecked: string, versionToHave: string): boolean { + const [aMajor, aMinor, aPatch] = getVersion(versionToHave); + const [bMajor, bMinor, bPatch] = getVersion(versionChecked); if (aMajor > bMajor) { return true; @@ -79,7 +79,7 @@ function is_version_lower(version_checked: string, version_to_have: string): boo } /** - * `update_version` updates the version for the provided state object. It first retrieves the current software version from + * `updateVersion` updates the version for the provided state object. It first retrieves the current software version from * the state. If the recently accessed version of the software is greater than the current one, it logs a message indicating * that the data needs to be updated. * @@ -89,10 +89,10 @@ function is_version_lower(version_checked: string, version_to_have: string): boo * * @param {any} state - The state object for the application, which may or may not contain a 'Pamyu' object with a 'version' attribute. */ -function update_version(state: State): void { +function updateVersion(state: State): void { const stateVersion = state?.Pamyu?.version ?? '0.0.0'; - if (is_version_lower(stateVersion, version)) { + if (isVersionLower(stateVersion, version)) { console.log(`⚡️ Updating data to new version, ${stateVersion} -> ${version}`); upgrade(stateVersion, state); } else if (version !== stateVersion) { @@ -103,10 +103,10 @@ function update_version(state: State): void { } function upgrade(oldVersion: string, state: State): void { - if (is_version_lower(oldVersion, '0.0.8')) upgrade_to_0_0_8(state); + if (isVersionLower(oldVersion, '0.0.8')) upgradeTo_0_0_8(state); } -function upgrade_to_0_0_8(state: State): void { +function upgradeTo_0_0_8(state: State): void { console.log('🚨 Updating to 0.0.8'); if (state?.CharactersData) { if(!state?.CharactersData?.folders) state.CharactersData.folders = {}; diff --git a/src/utils/pamyu.ts b/src/utils/pamyu.ts index 0270d3e..ed711d6 100644 --- a/src/utils/pamyu.ts +++ b/src/utils/pamyu.ts @@ -15,7 +15,7 @@ function getOptions(character: Character): string { return options; } -export function get_characters_script(): string { +export function getCharactersScript(): string { const charactersStrings: string[] = []; useCharacterStore().getCharacters.forEach((character) => { diff --git a/src/utils/path.ts b/src/utils/path.ts index 1415f13..5841792 100644 --- a/src/utils/path.ts +++ b/src/utils/path.ts @@ -24,12 +24,7 @@ export class PathManager { return returnPath; } - static get(id: string): Path | null { - const paths = this.getAll(); - return paths.find(p => p._id === id) || null; - } - - static add(path: string): void { + static addNewPath(path: string): void { const paths = this.getAll(); const existingPath = paths.find(p => p.path === path); diff --git a/src/utils/rpy.ts b/src/utils/rpy.ts index 88011b6..816c35c 100644 --- a/src/utils/rpy.ts +++ b/src/utils/rpy.ts @@ -5,15 +5,15 @@ import {useCharacterStore} from '../stores/characterStore.ts'; import {path} from '../main.ts'; -import {get_characters_script} from './pamyu.ts'; +import {getCharactersScript} from './pamyu.ts'; -export function update_characters(): void { +export function updateCharacters(): void { watch(useCharacterStore().getCharacters, () => { console.log('📂 Updating', `${path}/game/characters.rpy`); invoke('update_script', { path, file: 'characters.rpy', - data: get_characters_script() + data: getCharactersScript() }) .then(r => console.log(r)) .catch(e => console.error(e)); diff --git a/src/utils/script.ts b/src/utils/script.ts index b18eb6a..dc70d0c 100644 --- a/src/utils/script.ts +++ b/src/utils/script.ts @@ -5,7 +5,7 @@ import {Config} from './config.ts'; export class Script { private static lines: string[] = []; - static set(script: string): void { + static setCurrentScript(script: string): void { this.lines = script.split('\n'); } diff --git a/src/utils/tools.ts b/src/utils/tools.ts index 21bae73..0fd30c3 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -102,16 +102,16 @@ export function truncatePath(path: string, maxLength: number): string { function handleShortPaths(parts: string[], maxLength: number, ellipsis: string): string { const diff = maxLength - parts[parts.length - 1].length; if (diff > 0) { - return parts[0].substr(0, diff) + '/' + parts[parts.length - 1]; + return parts[0].substring(0, diff) + '/' + parts[parts.length - 1]; } - return ellipsis + parts[parts.length - 1].substr(0, maxLength - ellipsis.length); + return ellipsis + parts[parts.length - 1].substring(0, maxLength - ellipsis.length); } function handleLongerPaths(parts: string[], maxLength: number, ellipsis: string): string { const truncatedPath = parts[0] + '/' + ellipsis + parts[parts.length - 1]; if (truncatedPath.length > maxLength) { - return ellipsis + parts[parts.length - 1].substr(0, maxLength - ellipsis.length); + return ellipsis + parts[parts.length - 1].substring(0, maxLength - ellipsis.length); } return tryInsertingMiddleParts(parts, truncatedPath, maxLength, ellipsis); From bda3ddcf1eff341c282c26d8cf5afab71b1d9691 Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Sat, 30 Sep 2023 13:00:09 +0200 Subject: [PATCH 06/16] fix some eslint problems --- .eslintrc.cjs | 7 ++++++- package.json | 6 +++--- pnpm-lock.yaml | 16 ++++++++-------- src/stores/characterStore.ts | 23 ++++++++++++++++------- src/utils/characters.ts | 2 +- src/utils/config.ts | 4 +++- src/utils/data.ts | 1 + 7 files changed, 38 insertions(+), 21 deletions(-) diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 61d967e..1399b01 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -34,6 +34,11 @@ module.exports = { "simple-import-sort/exports": "error", "simple-import-sort/imports": ["error", { "groups": [["^\\u0000"], ["^@?\\w"], ["^/"], ["/stores/"], ["/utils/"], ["/routes/"], ["/types/"], ["/layouts/"], ["/components/"], ["^\\.\\.(?!/?$)", "^\\.\\./?$"], ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"], ["^.+\\.s?css$"],] - }] + }], + "camelcase": ["error", {"properties": "never"}], + "no-unused-vars": ["error", { "argsIgnorePattern": "^_" }], + "vue/no-unused-components": ["error", { "ignoreWhenBindingPresent": true }], + "vue/no-unused-vars": ["error", { "ignorePattern": "^_" }], + "vue/no-v-html": ["error"], } } diff --git a/package.json b/package.json index eb3ae60..c5d2428 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,8 @@ "build": "vite build", "preview": "vite preview", "tauri": "tauri", - "lint": "eslint --ext .js,.vue,.ts src/", - "lint:fix": "eslint --ext .js,.vue,.ts src/ --fix" + "check:js": "eslint --ext .js,.vue,.ts src/ --fix", + "check:q": "qodana scan --show-report" }, "dependencies": { "@intlify/unplugin-vue-i18n": "^1.4.0", @@ -23,7 +23,7 @@ "devDependencies": { "@faker-js/faker": "^8.1.0", "@tauri-apps/cli": "^1.5.0", - "@types/node": "^20.7.2", + "@types/node": "^20.8.0", "@typescript-eslint/eslint-plugin": "^6.7.3", "@typescript-eslint/parser": "^6.7.3", "@vitejs/plugin-vue": "^4.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3da209..468943e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,8 +35,8 @@ devDependencies: specifier: ^1.5.0 version: 1.5.0 '@types/node': - specifier: ^20.7.2 - version: 20.7.2 + specifier: ^20.8.0 + version: 20.8.0 '@typescript-eslint/eslint-plugin': specifier: ^6.7.3 version: 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) @@ -63,7 +63,7 @@ devDependencies: version: 5.2.2 vite: specifier: ^4.4.9 - version: 4.4.9(@types/node@20.7.2)(sass@1.68.0) + version: 4.4.9(@types/node@20.8.0)(sass@1.68.0) vue-tsc: specifier: ^1.8.15 version: 1.8.15(typescript@5.2.2) @@ -584,8 +584,8 @@ packages: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true - /@types/node@20.7.2: - resolution: {integrity: sha512-RcdC3hOBOauLP+r/kRt27NrByYtDjsXyAuSbR87O6xpsvi763WI+5fbSIvYJrXnt9w4RuxhV6eAXfIs7aaf/FQ==} + /@types/node@20.8.0: + resolution: {integrity: sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==} dev: true /@types/semver@7.5.3: @@ -730,7 +730,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.7.2)(sass@1.68.0) + vite: 4.4.9(@types/node@20.8.0)(sass@1.68.0) vue: 3.3.4 dev: true @@ -1767,7 +1767,7 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite@4.4.9(@types/node@20.7.2)(sass@1.68.0): + /vite@4.4.9(@types/node@20.8.0)(sass@1.68.0): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -1795,7 +1795,7 @@ packages: terser: optional: true dependencies: - '@types/node': 20.7.2 + '@types/node': 20.8.0 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 diff --git a/src/stores/characterStore.ts b/src/stores/characterStore.ts index cd53bb8..daddfcc 100644 --- a/src/stores/characterStore.ts +++ b/src/stores/characterStore.ts @@ -53,17 +53,26 @@ export const useCharacterStore = defineStore({ } const char = this.getCharacterById(character._id); - const oldFolder = char?.folder; - if (char) { - char.folder = cleanFolder; + if (!char) { + return; } + this.removeCharacterFromOldFolder(char); + this.updateCharacterFolder(char, cleanFolder); + this.addCharacterToNewFolder(char, cleanFolder); + }, + updateCharacterFolder(char: Character, folder: string | undefined): void { + char.folder = folder; + }, + removeCharacterFromOldFolder(char: Character): void { + const oldFolder = char.folder; if (oldFolder) { - this.folders[oldFolder] = this.folders[oldFolder].filter((id) => id !== character._id); + this.folders[oldFolder] = this.folders[oldFolder].filter((id) => id !== char._id); } - - if (cleanFolder && this.folders[cleanFolder]) { - this.folders[cleanFolder].push(character._id); + }, + addCharacterToNewFolder(char: Character, folder: string | undefined): void { + if (folder && this.folders[folder]) { + this.folders[folder].push(char._id); } }, isFolderValid(cleanFolder: string | undefined): boolean { diff --git a/src/utils/characters.ts b/src/utils/characters.ts index 5f1f56f..03aa938 100644 --- a/src/utils/characters.ts +++ b/src/utils/characters.ts @@ -1,6 +1,6 @@ import {Character} from '../types/character.ts'; -export function getVisibleName(character: Character) { +export function getVisibleName(character: Character): string { const prefix = character.who_prefix ? character.who_prefix : ''; const suffix = character.who_suffix ? character.who_suffix : ''; return `${prefix}${character.name}${suffix}`; diff --git a/src/utils/config.ts b/src/utils/config.ts index 9243495..18d3365 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -1,3 +1,5 @@ +// noinspection JSUnusedGlobalSymbols,JSUnusedLocalSymbols + import {ConfigItem, ScriptVar} from '../types/globals.ts'; export class Config { @@ -59,7 +61,7 @@ export class Config { private static getString(name: string, value: string): string { const config = this.getConfigFromName(name); - if (config.unwrap) { + if (config?.unwrap) { if (value.startsWith(config.prefix)) { value = value.slice(config.prefix.length); } diff --git a/src/utils/data.ts b/src/utils/data.ts index 1c82422..38efeb2 100644 --- a/src/utils/data.ts +++ b/src/utils/data.ts @@ -1,3 +1,4 @@ +/* eslint-disable camelcase */ import {invoke} from '@tauri-apps/api/tauri'; import {ref} from 'vue'; From b6928360080bc90123fc5b37406b15201d013dd3 Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Wed, 18 Oct 2023 19:56:36 +0200 Subject: [PATCH 07/16] Add scene creation functionality and update dependencies --- package.json | 28 +- pnpm-lock.yaml | 718 ++++++++++++++++++++-------- src/components/SceneListElement.vue | 36 ++ src/layout/Navigation.vue | 2 +- src/pages/scene/create.vue | 56 +++ src/pages/scene/edit.vue | 24 + src/pages/scenes.vue | 46 ++ src/routes/main.ts | 25 + src/stores/scenesStore.ts | 38 ++ src/translations/en.json | 4 +- src/translations/fr.json | 6 +- src/types/scene.ts | 1 - src/utils/config.ts | 31 +- src/utils/tools.ts | 5 + tests/story.test.ts | 7 + vite.config.ts | 2 +- 16 files changed, 812 insertions(+), 217 deletions(-) create mode 100644 src/components/SceneListElement.vue create mode 100644 src/pages/scene/create.vue create mode 100644 src/pages/scene/edit.vue create mode 100644 src/pages/scenes.vue create mode 100644 src/stores/scenesStore.ts create mode 100644 tests/story.test.ts diff --git a/package.json b/package.json index c5d2428..9cc39d0 100644 --- a/package.json +++ b/package.json @@ -9,30 +9,34 @@ "preview": "vite preview", "tauri": "tauri", "check:js": "eslint --ext .js,.vue,.ts src/ --fix", - "check:q": "qodana scan --show-report" + "check:q": "qodana scan --show-report", + "test": "vitest", + "test:ui": "vitest --ui" }, "dependencies": { "@intlify/unplugin-vue-i18n": "^1.4.0", "@tauri-apps/api": "^1.5.0", "eslint-plugin-simple-import-sort": "^10.0.0", - "pinia": "^2.1.6", + "pinia": "^2.1.7", "vue": "^3.3.4", "vue-i18n": "^9.5.0", "vue-router": "^4.2.5" }, "devDependencies": { - "@faker-js/faker": "^8.1.0", - "@tauri-apps/cli": "^1.5.0", - "@types/node": "^20.8.0", - "@typescript-eslint/eslint-plugin": "^6.7.3", - "@typescript-eslint/parser": "^6.7.3", - "@vitejs/plugin-vue": "^4.3.4", + "@faker-js/faker": "^8.2.0", + "@tauri-apps/cli": "^1.5.2", + "@types/node": "^20.8.6", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "@vitejs/plugin-vue": "^4.4.0", + "@vitest/ui": "^0.34.6", "@vue/eslint-config-typescript": "^12.0.0", - "eslint": "^8.50.0", + "eslint": "^8.51.0", "eslint-plugin-vue": "^9.17.0", - "sass": "^1.68.0", + "sass": "^1.69.3", "typescript": "^5.2.2", - "vite": "^4.4.9", - "vue-tsc": "^1.8.15" + "vite": "^4.4.11", + "vitest": "^0.34.6", + "vue-tsc": "^1.8.19" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 468943e..d7e22b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,10 +13,10 @@ dependencies: version: 1.5.0 eslint-plugin-simple-import-sort: specifier: ^10.0.0 - version: 10.0.0(eslint@8.50.0) + version: 10.0.0(eslint@8.51.0) pinia: - specifier: ^2.1.6 - version: 2.1.6(typescript@5.2.2)(vue@3.3.4) + specifier: ^2.1.7 + version: 2.1.7(typescript@5.2.2)(vue@3.3.4) vue: specifier: ^3.3.4 version: 3.3.4 @@ -29,44 +29,50 @@ dependencies: devDependencies: '@faker-js/faker': - specifier: ^8.1.0 - version: 8.1.0 + specifier: ^8.2.0 + version: 8.2.0 '@tauri-apps/cli': - specifier: ^1.5.0 - version: 1.5.0 + specifier: ^1.5.2 + version: 1.5.2 '@types/node': - specifier: ^20.8.0 - version: 20.8.0 + specifier: ^20.8.6 + version: 20.8.6 '@typescript-eslint/eslint-plugin': - specifier: ^6.7.3 - version: 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) + specifier: ^6.8.0 + version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) '@typescript-eslint/parser': - specifier: ^6.7.3 - version: 6.7.3(eslint@8.50.0)(typescript@5.2.2) + specifier: ^6.8.0 + version: 6.8.0(eslint@8.51.0)(typescript@5.2.2) '@vitejs/plugin-vue': - specifier: ^4.3.4 - version: 4.3.4(vite@4.4.9)(vue@3.3.4) + specifier: ^4.4.0 + version: 4.4.0(vite@4.4.11)(vue@3.3.4) + '@vitest/ui': + specifier: ^0.34.6 + version: 0.34.6(vitest@0.34.6) '@vue/eslint-config-typescript': specifier: ^12.0.0 - version: 12.0.0(eslint-plugin-vue@9.17.0)(eslint@8.50.0)(typescript@5.2.2) + version: 12.0.0(eslint-plugin-vue@9.17.0)(eslint@8.51.0)(typescript@5.2.2) eslint: - specifier: ^8.50.0 - version: 8.50.0 + specifier: ^8.51.0 + version: 8.51.0 eslint-plugin-vue: specifier: ^9.17.0 - version: 9.17.0(eslint@8.50.0) + version: 9.17.0(eslint@8.51.0) sass: - specifier: ^1.68.0 - version: 1.68.0 + specifier: ^1.69.3 + version: 1.69.3 typescript: specifier: ^5.2.2 version: 5.2.2 vite: - specifier: ^4.4.9 - version: 4.4.9(@types/node@20.8.0)(sass@1.68.0) + specifier: ^4.4.11 + version: 4.4.11(@types/node@20.8.6)(sass@1.69.3) + vitest: + specifier: ^0.34.6 + version: 0.34.6(@vitest/ui@0.34.6)(sass@1.69.3) vue-tsc: - specifier: ^1.8.15 - version: 1.8.15(typescript@5.2.2) + specifier: ^1.8.19 + version: 1.8.19(typescript@5.2.2) packages: @@ -295,17 +301,17 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.50.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.50.0 + eslint: 8.51.0 eslint-visitor-keys: 3.4.3 - /@eslint-community/regexpp@4.9.0: - resolution: {integrity: sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==} + /@eslint-community/regexpp@4.9.1: + resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} /@eslint/eslintrc@2.1.2: @@ -315,7 +321,7 @@ packages: ajv: 6.12.6 debug: 4.3.4 espree: 9.6.1 - globals: 13.22.0 + globals: 13.23.0 ignore: 5.2.4 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -324,12 +330,12 @@ packages: transitivePeerDependencies: - supports-color - /@eslint/js@8.50.0: - resolution: {integrity: sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==} + /@eslint/js@8.51.0: + resolution: {integrity: sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /@faker-js/faker@8.1.0: - resolution: {integrity: sha512-38DT60rumHfBYynif3lmtxMqMqmsOQIxQgEuPZxCk2yUYN0eqWpTACgxi0VpidvsJB8CRxCpvP7B3anK85FjtQ==} + /@faker-js/faker@8.2.0: + resolution: {integrity: sha512-VacmzZqVxdWdf9y64lDOMZNDMM/FQdtM9IsaOPKOm2suYwEatb8VkdHqOzXcDnZbk7YDE2BmsJmy/2Hmkn563g==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} dev: true @@ -368,7 +374,7 @@ packages: escodegen: 2.1.0 estree-walker: 2.0.2 jsonc-eslint-parser: 2.3.0 - magic-string: 0.30.4 + magic-string: 0.30.5 mlly: 1.4.2 source-map-js: 1.0.2 vue-i18n: 9.5.0(vue@3.3.4) @@ -413,7 +419,7 @@ packages: dependencies: '@intlify/bundle-utils': 7.4.0(vue-i18n@9.5.0) '@intlify/shared': 9.5.0 - '@rollup/pluginutils': 5.0.4 + '@rollup/pluginutils': 5.0.5 '@vue/compiler-sfc': 3.3.4 debug: 4.3.4 fast-glob: 3.3.1 @@ -429,6 +435,13 @@ packages: - supports-color dev: false + /@jest/schemas@29.6.3: + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@sinclair/typebox': 0.27.8 + dev: true + /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -450,11 +463,15 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.15.0 - /@rollup/pluginutils@5.0.4: - resolution: {integrity: sha512-0KJnIoRI8A+a1dqOYLxH8vBf8bphDmty5QvIm2hqm7oFCFYKCAZWWd2hXgMibaPsNDhI0AtpYfQZJG47pt/k4g==} + /@polka/url@1.0.0-next.23: + resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} + dev: true + + /@rollup/pluginutils@5.0.5: + resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true @@ -464,13 +481,17 @@ packages: picomatch: 2.3.1 dev: false + /@sinclair/typebox@0.27.8: + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true + /@tauri-apps/api@1.5.0: resolution: {integrity: sha512-yQY9wpVNuiYhLLuyDlu1nBpqJELT1fGp7OctN4rW9I2W1T2p7A3tqPxsEzQprEwneQRBAlPM9vC8NsnMbct+pg==} engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} dev: false - /@tauri-apps/cli-darwin-arm64@1.5.0: - resolution: {integrity: sha512-wvEfcSBjlh1G8uBiylMNFgBtAyk4mXfvDFcGyigf/2ui7Wve6fcAFDJdTVwiHOZ4Wxnw6BD3lIkVMQdDpE+nFg==} + /@tauri-apps/cli-darwin-arm64@1.5.2: + resolution: {integrity: sha512-3mYN15jpYjuuHRWii5Xk6JvB3ZLEgAZkeVgc5Hg7k3Yw1ZBrEGiUNe3Ku4DjbkYWL/QDd7oteIJnQk3j0mXwEg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -478,8 +499,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-darwin-x64@1.5.0: - resolution: {integrity: sha512-pWzLMAMslx3dkLyq1f4PpuEhgUs8mPISM5nQoHfgYYchJk6Ip1YtWupo56h5QjqyRNPUsSYT8DVGIw0Oi8auXQ==} + /@tauri-apps/cli-darwin-x64@1.5.2: + resolution: {integrity: sha512-8Jsl+EKBGdBoRUIR5ohjiTV6uG+pFpkNwHB4WaOzzR//v6p0lGULk2ohPIjJxhoQIFIN9oBd8bsSSNbZO/57/g==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -487,8 +508,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm-gnueabihf@1.5.0: - resolution: {integrity: sha512-hP3nAd0TjxblIAgriXhdX33sKXwbkY3CKsWBVB3O+5DOGy7XzKosIt0KaqiV8BHI2pbHMVOwTZuvjdK8pPLULQ==} + /@tauri-apps/cli-linux-arm-gnueabihf@1.5.2: + resolution: {integrity: sha512-oWzcQtZogchdCSdQ+eEbDJHjJO9BGPO9EZNfvI2u3JzS/hJj4wCwnGHvZGI4jJ/6cnmcNvtt9ZftYYN4rpQW7A==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -496,8 +517,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-gnu@1.5.0: - resolution: {integrity: sha512-/AwGSjUplzeiGWbKP8rAW4gQx5umWiaQJ0ifx6NakA/sIrhRXPYTobwzg4ixw31ALQNXaEosJCkmvXyHUvoUYw==} + /@tauri-apps/cli-linux-arm64-gnu@1.5.2: + resolution: {integrity: sha512-hfIUtys+SrrGEpLhQJwmL16g1FDhfObR4AGahCMqvMwA25uQKhtzRhxieO4X3k03vBeboTyJla5a2rX4TQ4lXA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -505,8 +526,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-musl@1.5.0: - resolution: {integrity: sha512-OFzKMkg3bmBjr/BYQ1kx4QOHL+JSkzX+Cw8RcG7CKnq8QoJyg8N0K0UTskgsVwlCN4l7bxeuSLvEveg4SBA2AQ==} + /@tauri-apps/cli-linux-arm64-musl@1.5.2: + resolution: {integrity: sha512-ZpFX4HyjkJHfF0geVVpq5fNjEXG8766LRg/BL4/wKy8MNbqcc/aW3sLEpVj0GvdulxOnd2trDb1FJdZ206Kp8g==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -514,8 +535,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-gnu@1.5.0: - resolution: {integrity: sha512-V2stfUH3Qrc3cIXAd+cKbJruS1oJqqGd40GTVcKOKlRk9Ef9H3WNUQ5PyWKj1t1rk8AxjcBO/vK+Unkuy1WSCw==} + /@tauri-apps/cli-linux-x64-gnu@1.5.2: + resolution: {integrity: sha512-/kEZrDVZv1+qYpZigtLntX4s+gx7WQqp8cmxKZL5GrzAjUNSTnfWK5VL7o0lYm09QBJAdTvjcJu2aPzNHLDS+Q==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -523,8 +544,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-musl@1.5.0: - resolution: {integrity: sha512-qpcGeesuksxzE7lC3RCnikTY9DCRMnAYwhWa9i8MA7pKDX1IXaEvAaXrse44XCZUohxLLgn2k2o6Pb+65dDijQ==} + /@tauri-apps/cli-linux-x64-musl@1.5.2: + resolution: {integrity: sha512-vOrTqfW7NZLYmB1ZXjEq9JC8Z5knIHVGltN3jfyq9UY+tu7d6jNaSHuDdsVHLaKIRQajTHz+5cphDMoL+6/MUQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -532,8 +553,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-arm64-msvc@1.5.0: - resolution: {integrity: sha512-Glt/AEWwbFmFnQuoPRbB6vMzCIT9jYSpD59zRP8ljhRSzwDHE59q5nXOrheLKICwMmaXqtAuCIq9ndDBKghwoQ==} + /@tauri-apps/cli-win32-arm64-msvc@1.5.2: + resolution: {integrity: sha512-PCAIxH8TvIy1PlJK2qrdwpRCa7pZV648whRhmoLwj9lvn9PR4+vwuUWhSTXmp1ISHWZm/mEJpYuVq0ZxJDQKZQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -541,8 +562,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-ia32-msvc@1.5.0: - resolution: {integrity: sha512-k+R2VI8eZJfRjaRS8LwbkjMBKFaKcWtA/byaFnGDDUnb3VM/WFW++3KjC5Ne2wXpxFW9RVaFiBNIpmRcExI0Qw==} + /@tauri-apps/cli-win32-ia32-msvc@1.5.2: + resolution: {integrity: sha512-0rCXZC/9qyWZI2cgVnsT4JEjcxjQcZlrZjaSwhGynPUMkIUUBsWDimzkQeOP8abw5j/kLS2QPQRHAHqd0IF6Rg==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -550,8 +571,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-x64-msvc@1.5.0: - resolution: {integrity: sha512-jEwq9UuUldVyDJ/dsYoHFuZfNZIkxbeDYSMELfZXsRvWWEA8xRYeTkH38S++KU1eBl5dTK0LbxhztEB2HjRT1g==} + /@tauri-apps/cli-win32-x64-msvc@1.5.2: + resolution: {integrity: sha512-HrOwIujKTql8yUOvR+IEGW/SXwMwPrGWrcM35cDfCxpkLH6h3F5i4JtRqYTAiFdSfTk1J2rcFVQXfFJYIDntnA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -559,21 +580,31 @@ packages: dev: true optional: true - /@tauri-apps/cli@1.5.0: - resolution: {integrity: sha512-usY7Ncfkxl2f/ufjWDtp+eJsodlj8ipMKExIt160KR+tx0GtQgLtxRnrKxe1o7wu18Pkqd5JIuWMaOmT3YZeYA==} + /@tauri-apps/cli@1.5.2: + resolution: {integrity: sha512-x4rPinrdyWLdTU5TbV7wrXudOyMilv0nmi1rngm/jwN3MmZdAj5J2xaS2rYtA8BU3oM/SE34qQwYxv1a2sM9ug==} engines: {node: '>= 10'} hasBin: true optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 1.5.0 - '@tauri-apps/cli-darwin-x64': 1.5.0 - '@tauri-apps/cli-linux-arm-gnueabihf': 1.5.0 - '@tauri-apps/cli-linux-arm64-gnu': 1.5.0 - '@tauri-apps/cli-linux-arm64-musl': 1.5.0 - '@tauri-apps/cli-linux-x64-gnu': 1.5.0 - '@tauri-apps/cli-linux-x64-musl': 1.5.0 - '@tauri-apps/cli-win32-arm64-msvc': 1.5.0 - '@tauri-apps/cli-win32-ia32-msvc': 1.5.0 - '@tauri-apps/cli-win32-x64-msvc': 1.5.0 + '@tauri-apps/cli-darwin-arm64': 1.5.2 + '@tauri-apps/cli-darwin-x64': 1.5.2 + '@tauri-apps/cli-linux-arm-gnueabihf': 1.5.2 + '@tauri-apps/cli-linux-arm64-gnu': 1.5.2 + '@tauri-apps/cli-linux-arm64-musl': 1.5.2 + '@tauri-apps/cli-linux-x64-gnu': 1.5.2 + '@tauri-apps/cli-linux-x64-musl': 1.5.2 + '@tauri-apps/cli-win32-arm64-msvc': 1.5.2 + '@tauri-apps/cli-win32-ia32-msvc': 1.5.2 + '@tauri-apps/cli-win32-x64-msvc': 1.5.2 + dev: true + + /@types/chai-subset@1.3.3: + resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + dependencies: + '@types/chai': 4.3.8 + dev: true + + /@types/chai@4.3.8: + resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} dev: true /@types/estree@1.0.2: @@ -584,16 +615,18 @@ packages: resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} dev: true - /@types/node@20.8.0: - resolution: {integrity: sha512-LzcWltT83s1bthcvjBmiBvGJiiUe84NWRHkw+ZV6Fr41z2FbIzvc815dk2nQ3RAKMuN2fkenM/z3Xv2QzEpYxQ==} + /@types/node@20.8.6: + resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + dependencies: + undici-types: 5.25.3 dev: true /@types/semver@7.5.3: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} dev: true - /@typescript-eslint/eslint-plugin@6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==} + /@typescript-eslint/eslint-plugin@6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha @@ -603,14 +636,14 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.9.0 - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/type-utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.3 + '@eslint-community/regexpp': 4.9.1 + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/type-utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 graphemer: 1.4.0 ignore: 5.2.4 natural-compare: 1.4.0 @@ -621,8 +654,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@6.7.3(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==} + /@typescript-eslint/parser@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -631,27 +664,27 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/scope-manager@6.7.3: - resolution: {integrity: sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==} + /@typescript-eslint/scope-manager@6.8.0: + resolution: {integrity: sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 dev: true - /@typescript-eslint/type-utils@6.7.3(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==} + /@typescript-eslint/type-utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 @@ -660,23 +693,23 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) - '@typescript-eslint/utils': 6.7.3(eslint@8.50.0)(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.8.0(eslint@8.51.0)(typescript@5.2.2) debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 ts-api-utils: 1.0.3(typescript@5.2.2) typescript: 5.2.2 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/types@6.7.3: - resolution: {integrity: sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==} + /@typescript-eslint/types@6.8.0: + resolution: {integrity: sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@6.7.3(typescript@5.2.2): - resolution: {integrity: sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==} + /@typescript-eslint/typescript-estree@6.8.0(typescript@5.2.2): + resolution: {integrity: sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -684,8 +717,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/visitor-keys': 6.7.3 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/visitor-keys': 6.8.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -696,60 +729,113 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@6.7.3(eslint@8.50.0)(typescript@5.2.2): - resolution: {integrity: sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==} + /@typescript-eslint/utils@6.8.0(eslint@8.51.0)(typescript@5.2.2): + resolution: {integrity: sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) '@types/json-schema': 7.0.13 '@types/semver': 7.5.3 - '@typescript-eslint/scope-manager': 6.7.3 - '@typescript-eslint/types': 6.7.3 - '@typescript-eslint/typescript-estree': 6.7.3(typescript@5.2.2) - eslint: 8.50.0 + '@typescript-eslint/scope-manager': 6.8.0 + '@typescript-eslint/types': 6.8.0 + '@typescript-eslint/typescript-estree': 6.8.0(typescript@5.2.2) + eslint: 8.51.0 semver: 7.5.4 transitivePeerDependencies: - supports-color - typescript dev: true - /@typescript-eslint/visitor-keys@6.7.3: - resolution: {integrity: sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==} + /@typescript-eslint/visitor-keys@6.8.0: + resolution: {integrity: sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.7.3 + '@typescript-eslint/types': 6.8.0 eslint-visitor-keys: 3.4.3 dev: true - /@vitejs/plugin-vue@4.3.4(vite@4.4.9)(vue@3.3.4): - resolution: {integrity: sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw==} + /@vitejs/plugin-vue@4.4.0(vite@4.4.11)(vue@3.3.4): + resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.8.0)(sass@1.68.0) + vite: 4.4.11(@types/node@20.8.6)(sass@1.69.3) vue: 3.3.4 dev: true - /@volar/language-core@1.10.1: - resolution: {integrity: sha512-JnsM1mIPdfGPxmoOcK1c7HYAsL6YOv0TCJ4aW3AXPZN/Jb4R77epDyMZIVudSGjWMbvv/JfUa+rQ+dGKTmgwBA==} + /@vitest/expect@0.34.6: + resolution: {integrity: sha512-QUzKpUQRc1qC7qdGo7rMK3AkETI7w18gTCUrsNnyjjJKYiuUB9+TQK3QnR1unhCnWRC0AbKv2omLGQDF/mIjOw==} + dependencies: + '@vitest/spy': 0.34.6 + '@vitest/utils': 0.34.6 + chai: 4.3.10 + dev: true + + /@vitest/runner@0.34.6: + resolution: {integrity: sha512-1CUQgtJSLF47NnhN+F9X2ycxUP0kLHQ/JWvNHbeBfwW8CzEGgeskzNnHDyv1ieKTltuR6sdIHV+nmR6kPxQqzQ==} + dependencies: + '@vitest/utils': 0.34.6 + p-limit: 4.0.0 + pathe: 1.1.1 + dev: true + + /@vitest/snapshot@0.34.6: + resolution: {integrity: sha512-B3OZqYn6k4VaN011D+ve+AA4whM4QkcwcrwaKwAbyyvS/NB1hCWjFIBQxAQQSQir9/RtyAAGuq+4RJmbn2dH4w==} + dependencies: + magic-string: 0.30.5 + pathe: 1.1.1 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@0.34.6: + resolution: {integrity: sha512-xaCvneSaeBw/cz8ySmF7ZwGvL0lBjfvqc1LpQ/vcdHEvpLn3Ff1vAvjw+CoGn0802l++5L/pxb7whwcWAw+DUQ==} + dependencies: + tinyspy: 2.2.0 + dev: true + + /@vitest/ui@0.34.6(vitest@0.34.6): + resolution: {integrity: sha512-/fxnCwGC0Txmr3tF3BwAbo3v6U2SkBTGR9UB8zo0Ztlx0BTOXHucE0gDHY7SjwEktCOHatiGmli9kZD6gYSoWQ==} + peerDependencies: + vitest: '>=0.30.1 <1' + dependencies: + '@vitest/utils': 0.34.6 + fast-glob: 3.3.1 + fflate: 0.8.1 + flatted: 3.2.9 + pathe: 1.1.1 + picocolors: 1.0.0 + sirv: 2.0.3 + vitest: 0.34.6(@vitest/ui@0.34.6)(sass@1.69.3) + dev: true + + /@vitest/utils@0.34.6: + resolution: {integrity: sha512-IG5aDD8S6zlvloDsnzHw0Ut5xczlF+kv2BOTo+iXfPr54Yhi5qbVOgGB1hZaVq4iJ4C/MZ2J0y15IlsV/ZcI0A==} + dependencies: + diff-sequences: 29.6.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + + /@volar/language-core@1.10.4: + resolution: {integrity: sha512-Na69qA6uwVIdA0rHuOc2W3pHtVQQO8hCNim7FOaKNpRJh0oAFnu5r9i7Oopo5C4cnELZkPNjTrbmpcCTiW+CMQ==} dependencies: - '@volar/source-map': 1.10.1 + '@volar/source-map': 1.10.4 dev: true - /@volar/source-map@1.10.1: - resolution: {integrity: sha512-3/S6KQbqa7pGC8CxPrg69qHLpOvkiPHGJtWPkI/1AXCsktkJ6gIk/5z4hyuMp8Anvs6eS/Kvp/GZa3ut3votKA==} + /@volar/source-map@1.10.4: + resolution: {integrity: sha512-RxZdUEL+pV8p+SMqnhVjzy5zpb1QRZTlcwSk4bdcBO7yOu4rtEWqDGahVCEj4CcXour+0yJUMrMczfSCpP9Uxg==} dependencies: muggle-string: 0.3.1 dev: true - /@volar/typescript@1.10.1: - resolution: {integrity: sha512-+iiO9yUSRHIYjlteT+QcdRq8b44qH19/eiUZtjNtuh6D9ailYM7DVR0zO2sEgJlvCaunw/CF9Ov2KooQBpR4VQ==} + /@volar/typescript@1.10.4: + resolution: {integrity: sha512-BCCUEBASBEMCrz7qmNSi2hBEWYsXD0doaktRKpmmhvb6XntM2sAWYu6gbyK/MluLDgluGLFiFRpWgobgzUqolg==} dependencies: - '@volar/language-core': 1.10.1 + '@volar/language-core': 1.10.4 dev: true /@vue/compiler-core@3.3.4: @@ -776,7 +862,7 @@ packages: '@vue/reactivity-transform': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.4 + magic-string: 0.30.5 postcss: 8.4.31 source-map-js: 1.0.2 @@ -786,11 +872,11 @@ packages: '@vue/compiler-dom': 3.3.4 '@vue/shared': 3.3.4 - /@vue/devtools-api@6.5.0: - resolution: {integrity: sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==} + /@vue/devtools-api@6.5.1: + resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} dev: false - /@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@9.17.0)(eslint@8.50.0)(typescript@5.2.2): + /@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@9.17.0)(eslint@8.51.0)(typescript@5.2.2): resolution: {integrity: sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: @@ -801,26 +887,26 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.7.3(@typescript-eslint/parser@6.7.3)(eslint@8.50.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.7.3(eslint@8.50.0)(typescript@5.2.2) - eslint: 8.50.0 - eslint-plugin-vue: 9.17.0(eslint@8.50.0) + '@typescript-eslint/eslint-plugin': 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.8.0(eslint@8.51.0)(typescript@5.2.2) + eslint: 8.51.0 + eslint-plugin-vue: 9.17.0(eslint@8.51.0) typescript: 5.2.2 - vue-eslint-parser: 9.3.1(eslint@8.50.0) + vue-eslint-parser: 9.3.2(eslint@8.51.0) transitivePeerDependencies: - supports-color dev: true - /@vue/language-core@1.8.15(typescript@5.2.2): - resolution: {integrity: sha512-zche5Aw8kkvp3YaghuLiOZyVIpoWHjSQ0EfjxGSsqHOPMamdCoa9x3HtbenpR38UMUoKJ88wiWuiOrV3B/Yq+A==} + /@vue/language-core@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-nt3dodGs97UM6fnxeQBazO50yYCKBK53waFWB3qMbLmR6eL3aUryZgQtZoBe1pye17Wl8fs9HysV3si6xMgndQ==} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@volar/language-core': 1.10.1 - '@volar/source-map': 1.10.1 + '@volar/language-core': 1.10.4 + '@volar/source-map': 1.10.4 '@vue/compiler-dom': 3.3.4 '@vue/reactivity': 3.3.4 '@vue/shared': 3.3.4 @@ -837,7 +923,7 @@ packages: '@vue/compiler-core': 3.3.4 '@vue/shared': 3.3.4 estree-walker: 2.0.2 - magic-string: 0.30.4 + magic-string: 0.30.5 /@vue/reactivity@3.3.4: resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==} @@ -869,11 +955,11 @@ packages: /@vue/shared@3.3.4: resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==} - /@vue/typescript@1.8.15(typescript@5.2.2): - resolution: {integrity: sha512-qWyanQKXOsK84S8rP7QBrqsvUdQ0nZABZmTjXMpb3ox4Bp5IbkscREA3OPUrkgl64mAxwwCzIWcOc3BPTCPjQw==} + /@vue/typescript@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-k/SHeeQROUgqsxyHQ8Cs3Zz5TnX57p7BcBDVYR2E0c61QL2DJ2G8CsaBremmNGuGE6o1R5D50IHIxFmroMz8iw==} dependencies: - '@volar/typescript': 1.10.1 - '@vue/language-core': 1.8.15(typescript@5.2.2) + '@volar/typescript': 1.10.4 + '@vue/language-core': 1.8.19(typescript@5.2.2) transitivePeerDependencies: - typescript dev: true @@ -885,6 +971,11 @@ packages: dependencies: acorn: 8.10.0 + /acorn-walk@8.2.0: + resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.10.0: resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} engines: {node: '>=0.4.0'} @@ -908,6 +999,11 @@ packages: dependencies: color-convert: 2.0.1 + /ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + dev: true + /anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -923,6 +1019,10 @@ packages: engines: {node: '>=8'} dev: true + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -952,10 +1052,28 @@ packages: dependencies: fill-range: 7.0.1 + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + /chai@4.3.10: + resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -963,6 +1081,12 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -1021,9 +1145,21 @@ packages: dependencies: ms: 2.1.2 + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + /diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true + /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -1083,27 +1219,27 @@ packages: source-map: 0.6.1 dev: false - /eslint-plugin-simple-import-sort@10.0.0(eslint@8.50.0): + /eslint-plugin-simple-import-sort@10.0.0(eslint@8.51.0): resolution: {integrity: sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==} peerDependencies: eslint: '>=5.0.0' dependencies: - eslint: 8.50.0 + eslint: 8.51.0 dev: false - /eslint-plugin-vue@9.17.0(eslint@8.50.0): + /eslint-plugin-vue@9.17.0(eslint@8.51.0): resolution: {integrity: sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - eslint: 8.50.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + eslint: 8.51.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.0.13 semver: 7.5.4 - vue-eslint-parser: 9.3.1(eslint@8.50.0) + vue-eslint-parser: 9.3.2(eslint@8.51.0) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -1120,15 +1256,15 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - /eslint@8.50.0: - resolution: {integrity: sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==} + /eslint@8.51.0: + resolution: {integrity: sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.50.0) - '@eslint-community/regexpp': 4.9.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) + '@eslint-community/regexpp': 4.9.1 '@eslint/eslintrc': 2.1.2 - '@eslint/js': 8.50.0 + '@eslint/js': 8.51.0 '@humanwhocodes/config-array': 0.11.11 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -1147,7 +1283,7 @@ packages: file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.22.0 + globals: 13.23.0 graphemer: 1.4.0 ignore: 5.2.4 imurmurhash: 0.1.4 @@ -1226,11 +1362,15 @@ packages: dependencies: reusify: 1.0.4 + /fflate@0.8.1: + resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} + dev: true + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} dependencies: - flat-cache: 3.1.0 + flat-cache: 3.1.1 /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} @@ -1245,12 +1385,12 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 - /flat-cache@3.1.0: - resolution: {integrity: sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==} + /flat-cache@3.1.1: + resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} engines: {node: '>=12.0.0'} dependencies: flatted: 3.2.9 - keyv: 4.5.3 + keyv: 4.5.4 rimraf: 3.0.2 /flatted@3.2.9: @@ -1266,6 +1406,10 @@ packages: requiresBuild: true optional: true + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1288,8 +1432,8 @@ packages: once: 1.4.0 path-is-absolute: 1.0.1 - /globals@13.22.0: - resolution: {integrity: sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==} + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} engines: {node: '>=8'} dependencies: type-fest: 0.20.2 @@ -1406,10 +1550,9 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: false - /keyv@4.5.3: - resolution: {integrity: sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==} + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 @@ -1420,6 +1563,11 @@ packages: prelude-ls: 1.2.1 type-check: 0.4.0 + /local-pkg@0.4.3: + resolution: {integrity: sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==} + engines: {node: '>=14'} + dev: true + /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -1432,14 +1580,20 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - /magic-string@0.30.4: - resolution: {integrity: sha512-Q/TKtsC5BPm0kGqgBIF9oXAs/xEf2vRKiIB4wCRQTJOQIByZ1d+NnUOotvJOvNpi5RNIgVOMC3pOuaP1ZTDlVg==} + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} engines: {node: '>=12'} dependencies: '@jridgewell/sourcemap-codec': 1.4.15 @@ -1474,7 +1628,11 @@ packages: pathe: 1.1.1 pkg-types: 1.0.3 ufo: 1.3.1 - dev: false + + /mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} + engines: {node: '>=10'} + dev: true /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -1523,6 +1681,13 @@ packages: dependencies: yocto-queue: 0.1.0 + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -1554,7 +1719,10 @@ packages: /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: false + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -1563,8 +1731,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - /pinia@2.1.6(typescript@5.2.2)(vue@3.3.4): - resolution: {integrity: sha512-bIU6QuE5qZviMmct5XwCesXelb5VavdOWKWaB17ggk++NUwQWWbP5YnsONTk3b752QkW9sACiR81rorpeOMSvQ==} + /pinia@2.1.7(typescript@5.2.2)(vue@3.3.4): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} peerDependencies: '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' @@ -1575,7 +1743,7 @@ packages: typescript: optional: true dependencies: - '@vue/devtools-api': 6.5.0 + '@vue/devtools-api': 6.5.1 typescript: 5.2.2 vue: 3.3.4 vue-demi: 0.14.6(vue@3.3.4) @@ -1587,7 +1755,6 @@ packages: jsonc-parser: 3.2.0 mlly: 1.4.2 pathe: 1.1.1 - dev: false /postcss-selector-parser@6.0.13: resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} @@ -1609,6 +1776,15 @@ packages: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} + /pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.2.0 + dev: true + /punycode@2.3.0: resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} engines: {node: '>=6'} @@ -1616,6 +1792,10 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + /react-is@18.2.0: + resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -1649,8 +1829,8 @@ packages: dependencies: queue-microtask: 1.2.3 - /sass@1.68.0: - resolution: {integrity: sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==} + /sass@1.69.3: + resolution: {integrity: sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -1676,6 +1856,19 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + + /sirv@2.0.3: + resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.23 + mrmime: 1.0.1 + totalist: 3.0.1 + dev: true + /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -1692,6 +1885,14 @@ packages: dev: false optional: true + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + + /std-env@3.4.3: + resolution: {integrity: sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==} + dev: true + /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -1702,6 +1903,12 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + /strip-literal@1.3.0: + resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} + dependencies: + acorn: 8.10.0 + dev: true + /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -1711,6 +1918,20 @@ packages: /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + /tinybench@2.5.1: + resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} + dev: true + + /tinypool@0.7.0: + resolution: {integrity: sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.0: + resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} + engines: {node: '>=14.0.0'} + dev: true + /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -1721,6 +1942,11 @@ packages: dependencies: is-number: 7.0.0 + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + /ts-api-utils@1.0.3(typescript@5.2.2): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} @@ -1736,6 +1962,11 @@ packages: dependencies: prelude-ls: 1.2.1 + /type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + dev: true + /type-fest@0.20.2: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} @@ -1747,7 +1978,10 @@ packages: /ufo@1.3.1: resolution: {integrity: sha512-uY/99gMLIOlJPwATcMVYfqDSxUR9//AUcgZMzwfSTJPDKzA1S8mX4VLqa+fiAtveraQUBCz4FFcwVZBGbwBXIw==} - dev: false + + /undici-types@5.25.3: + resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} + dev: true /unplugin@1.5.0: resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} @@ -1767,8 +2001,30 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite@4.4.9(@types/node@20.8.0)(sass@1.68.0): - resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} + /vite-node@0.34.6(@types/node@20.8.6)(sass@1.69.3): + resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} + engines: {node: '>=v14.18.0'} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + mlly: 1.4.2 + pathe: 1.1.1 + picocolors: 1.0.0 + vite: 4.4.11(@types/node@20.8.6)(sass@1.69.3) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite@4.4.11(@types/node@20.8.6)(sass@1.69.3): + resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -1795,15 +2051,81 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.0 + '@types/node': 20.8.6 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 - sass: 1.68.0 + sass: 1.69.3 optionalDependencies: fsevents: 2.3.3 dev: true + /vitest@0.34.6(@vitest/ui@0.34.6)(sass@1.69.3): + resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} + engines: {node: '>=v14.18.0'} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@vitest/browser': '*' + '@vitest/ui': '*' + happy-dom: '*' + jsdom: '*' + playwright: '*' + safaridriver: '*' + webdriverio: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + playwright: + optional: true + safaridriver: + optional: true + webdriverio: + optional: true + dependencies: + '@types/chai': 4.3.8 + '@types/chai-subset': 1.3.3 + '@types/node': 20.8.6 + '@vitest/expect': 0.34.6 + '@vitest/runner': 0.34.6 + '@vitest/snapshot': 0.34.6 + '@vitest/spy': 0.34.6 + '@vitest/ui': 0.34.6(vitest@0.34.6) + '@vitest/utils': 0.34.6 + acorn: 8.10.0 + acorn-walk: 8.2.0 + cac: 6.7.14 + chai: 4.3.10 + debug: 4.3.4 + local-pkg: 0.4.3 + magic-string: 0.30.5 + pathe: 1.1.1 + picocolors: 1.0.0 + std-env: 3.4.3 + strip-literal: 1.3.0 + tinybench: 2.5.1 + tinypool: 0.7.0 + vite: 4.4.11(@types/node@20.8.6)(sass@1.69.3) + vite-node: 0.34.6(@types/node@20.8.6)(sass@1.69.3) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vue-demi@0.14.6(vue@3.3.4): resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} engines: {node: '>=12'} @@ -1819,14 +2141,14 @@ packages: vue: 3.3.4 dev: false - /vue-eslint-parser@9.3.1(eslint@8.50.0): - resolution: {integrity: sha512-Clr85iD2XFZ3lJ52/ppmUDG/spxQu6+MAeHXjjyI4I1NUYZ9xmenQp4N0oaHJhrA8OOxltCVxMRfANGa70vU0g==} + /vue-eslint-parser@9.3.2(eslint@8.51.0): + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: '>=6.0.0' dependencies: debug: 4.3.4 - eslint: 8.50.0 + eslint: 8.51.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -1845,7 +2167,7 @@ packages: dependencies: '@intlify/core-base': 9.5.0 '@intlify/shared': 9.5.0 - '@vue/devtools-api': 6.5.0 + '@vue/devtools-api': 6.5.1 vue: 3.3.4 dev: false @@ -1854,7 +2176,7 @@ packages: peerDependencies: vue: ^3.2.0 dependencies: - '@vue/devtools-api': 6.5.0 + '@vue/devtools-api': 6.5.1 vue: 3.3.4 dev: false @@ -1865,14 +2187,14 @@ packages: he: 1.2.0 dev: true - /vue-tsc@1.8.15(typescript@5.2.2): - resolution: {integrity: sha512-4DoB3LUj7IToLmggoCxRiFG+QU5lem0nv03m1ocqugXA9rSVoTOEoYYaP8vu8b99Eh+/cCVdYOeIAQ+RsgUYUw==} + /vue-tsc@1.8.19(typescript@5.2.2): + resolution: {integrity: sha512-tacMQLQ0CXAfbhRycCL5sWIy1qujXaIEtP1hIQpzHWOUuICbtTj9gJyFf91PvzG5KCNIkA5Eg7k2Fmgt28l5DQ==} hasBin: true peerDependencies: typescript: '*' dependencies: - '@vue/language-core': 1.8.15(typescript@5.2.2) - '@vue/typescript': 1.8.15(typescript@5.2.2) + '@vue/language-core': 1.8.19(typescript@5.2.2) + '@vue/typescript': 1.8.19(typescript@5.2.2) semver: 7.5.4 typescript: 5.2.2 dev: true @@ -1902,6 +2224,15 @@ packages: dependencies: isexe: 2.0.0 + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -1919,14 +2250,19 @@ packages: dependencies: eslint-visitor-keys: 3.4.3 lodash: 4.17.21 - yaml: 2.3.2 + yaml: 2.3.3 dev: false - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} + /yaml@2.3.3: + resolution: {integrity: sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==} engines: {node: '>= 14'} dev: false /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true diff --git a/src/components/SceneListElement.vue b/src/components/SceneListElement.vue new file mode 100644 index 0000000..914cf3f --- /dev/null +++ b/src/components/SceneListElement.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/src/layout/Navigation.vue b/src/layout/Navigation.vue index 5e643ef..0bfa195 100644 --- a/src/layout/Navigation.vue +++ b/src/layout/Navigation.vue @@ -24,7 +24,7 @@ const loadedItems: MenuItem[] = [ {name: 'game.category', icon: 'sports_esports', path: '/game', order: 1}, {name: 'characters', icon: 'face', path: '/characters', order: 2}, {name: 'assets', icon: 'image', path: '/assets', disabled: true, order: 3}, - {name: 'scenes', icon: 'theater_comedy', path: '/scenes', disabled: true, order: 4}, + {name: 'scenes', icon: 'theater_comedy', path: '/scenes', order: 4}, {name: 'variables', icon: 'switches', path: '/variables', disabled: true, order: 5}, {name: 'scripts', icon: 'code', path: '/scripts', disabled: true, order: 6}, {name: 'translations', icon: 'translate', path: '/translations', disabled: true, order: 7}, diff --git a/src/pages/scene/create.vue b/src/pages/scene/create.vue new file mode 100644 index 0000000..94e9a3b --- /dev/null +++ b/src/pages/scene/create.vue @@ -0,0 +1,56 @@ + + + + + \ No newline at end of file diff --git a/src/pages/scene/edit.vue b/src/pages/scene/edit.vue new file mode 100644 index 0000000..37a65f2 --- /dev/null +++ b/src/pages/scene/edit.vue @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/src/pages/scenes.vue b/src/pages/scenes.vue new file mode 100644 index 0000000..73ca7be --- /dev/null +++ b/src/pages/scenes.vue @@ -0,0 +1,46 @@ + + + + + \ No newline at end of file diff --git a/src/routes/main.ts b/src/routes/main.ts index ef46fa7..fd80ff4 100644 --- a/src/routes/main.ts +++ b/src/routes/main.ts @@ -6,6 +6,9 @@ import Characters from '../pages/characters.vue'; import Game from '../pages/game.vue'; import NotFound from '../pages/not-found.vue'; import Projects from '../pages/projects.vue'; +import SceneCreate from '../pages/scene/create.vue'; +import SceneEdit from '../pages/scene/edit.vue'; +import Scenes from '../pages/scenes.vue'; import Settings from '../pages/settings.vue'; export const routes = [ @@ -55,6 +58,28 @@ export const routes = [ } ] }, + { + path: '/scenes', + name: 'scenes', + component: Scenes, + children: [ + { + path: '', + name: 'scene.index', + redirect: {name: 'scene.create'}, + }, + { + path: 'create', + name: 'scene.create', + component: SceneCreate + }, + { + path: 'scene/:id', + name: 'scene.edit', + component: SceneEdit + } + ] + }, { path: '/settings', name: 'settings', diff --git a/src/stores/scenesStore.ts b/src/stores/scenesStore.ts new file mode 100644 index 0000000..0843ad9 --- /dev/null +++ b/src/stores/scenesStore.ts @@ -0,0 +1,38 @@ +import {defineStore} from 'pinia'; + +import {getCleanNameWithDashes, getRandomToken} from '../utils/tools.ts'; + +import {Label} from '../types/scene.ts'; + +export const useScenesStore = defineStore({ + id: 'ScenesData', + state: (): { + scenes: Label[] + } => ({ + scenes: [] + }), + getters: { + getScenes(): Label[] { + return this.scenes || []; + }, + getSceneById(): (id: Label['_id']) => Label | undefined { + return (id: string) => this.scenes.find((scene: Label) => scene._id === id); + } + }, + actions: { + createScene(sceneName: Label['name']): string { + const id = getRandomToken(); + const cleanSceneName = getCleanNameWithDashes(sceneName); + + const sceneId = `sc_${cleanSceneName}_${id}`; + + this.scenes.push({ + _id: sceneId, + name: sceneName, + actions: [] + }); + + return sceneId; + } + } +}); \ No newline at end of file diff --git a/src/translations/en.json b/src/translations/en.json index c05ad1f..b78dcca 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -104,5 +104,7 @@ "create_folder": "Create folder", "folder": "Folder", "no_folder": "No folder", - "others": "Others" + "others": "Others", + "create_scene": "Create scene", + "scene_name" : "Scene name" } \ No newline at end of file diff --git a/src/translations/fr.json b/src/translations/fr.json index e0da897..b3fd00f 100644 --- a/src/translations/fr.json +++ b/src/translations/fr.json @@ -2,7 +2,7 @@ "projects": "Projects", "characters": "personnages", "assets": "ressources", - "scenes": "scenes", + "scenes": "scènes", "variables": "variables", "scripts": "scripts", "translations": "traductions", @@ -104,5 +104,7 @@ "create_folder": "Créer un dossier", "folder": "Dossier", "no_folder": "Aucun dossier", - "others": "Autres" + "others": "Autres", + "create_scene": "Créer une scène", + "scene_name": "Nom de la scène" } \ No newline at end of file diff --git a/src/types/scene.ts b/src/types/scene.ts index 9157119..216af27 100644 --- a/src/types/scene.ts +++ b/src/types/scene.ts @@ -92,7 +92,6 @@ export type MenuAction = { options: MenuOption[]; }; - export type ShowAction = { type: 'show'; } & ImageOrCharacter & WithTransition & AtPosition & OnLayer; diff --git a/src/utils/config.ts b/src/utils/config.ts index 18d3365..eda35b3 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -50,7 +50,7 @@ export class Config { return this.configKeys.find(k => k.name === name)?.type; } - private static getValue(name: string, value: ScriptVar): ScriptVar { + public static getValue(name: string, value: ScriptVar): ScriptVar { if (typeof value === 'string') { return this.getString(name, value); } @@ -62,17 +62,32 @@ export class Config { const config = this.getConfigFromName(name); if (config?.unwrap) { - if (value.startsWith(config.prefix)) { - value = value.slice(config.prefix.length); - } - - if (value.endsWith(config.suffix)) { - value = value.slice(0, -config.suffix.length); - } + value = this.unwrapPrefix(config, value); + value = this.unwrapSuffix(config, value); return value; } return value; } + + private static unwrapPrefix(config: ConfigItem, value: string): string { + const prefix = config.prefix ?? ''; + + if (value.startsWith(prefix)) { + value = value.slice(prefix.length); + } + + return value; + } + + private static unwrapSuffix(config: ConfigItem, value: string): string { + const suffix = config.suffix ?? ''; + + if (value.endsWith(suffix)) { + value = value.slice(0, -suffix.length); + } + + return value; + } } \ No newline at end of file diff --git a/src/utils/tools.ts b/src/utils/tools.ts index 0fd30c3..9dba1d2 100644 --- a/src/utils/tools.ts +++ b/src/utils/tools.ts @@ -88,6 +88,11 @@ export function getCleanNameWithSpaces(name: string): string { return name.replace(/[^a-zA-Z0-9 ]/g, '').toLowerCase(); } +export function getCleanNameWithDashes(name: string): string { + return (name).replace(/ /g, '_') + .replace('__', '_'); +} + export function truncatePath(path: string, maxLength: number): string { const ellipsis = '.../'; const parts = path.split('/'); diff --git a/tests/story.test.ts b/tests/story.test.ts new file mode 100644 index 0000000..9efd8db --- /dev/null +++ b/tests/story.test.ts @@ -0,0 +1,7 @@ +import {describe, expect,it} from 'vitest'; + +describe('Sould pass', () => { + it('Should pass', () => { + expect(true).toBe(true); + }); +}); \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index 015d6e6..5a1cc1a 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -23,5 +23,5 @@ export default defineConfig(async () => ({ }, // 3. to make use of `TAURI_DEBUG` and other env variables // https://tauri.studio/v1/api/config#buildconfig.beforedevcommand - envPrefix: ['VITE_', 'TAURI_'], + envPrefix: ['VITE_', 'TAURI_'] })); From afbaa375a8a3f18e2bb48b0cd1e760925d8818fa Mon Sep 17 00:00:00 2001 From: Anthony Bellancourt Date: Wed, 18 Oct 2023 21:31:43 +0200 Subject: [PATCH 08/16] Rework all translations files --- package.json | 11 +- pnpm-lock.yaml | 216 ++++++++++++------------ src/components/inputs/InputCheckbox.vue | 3 +- src/components/inputs/InputPath.vue | 2 +- src/components/settings/Locale.vue | 6 +- src/components/settings/Renpy.vue | 5 +- src/components/settings/Theme.vue | 14 +- src/layout/Navigation.vue | 18 +- src/layout/PageLayout.vue | 4 +- src/pages/character/create.vue | 16 +- src/pages/character/delete.vue | 10 +- src/pages/character/edit.vue | 24 +-- src/pages/character/folder/create.vue | 6 +- src/pages/characters.vue | 8 +- src/pages/game.vue | 34 ++-- src/pages/not-found.vue | 2 +- src/pages/projects.vue | 2 +- src/pages/projects/create.vue | 8 +- src/pages/scene/create.vue | 6 +- src/pages/scenes.vue | 4 +- src/pages/settings.vue | 2 +- src/translations/en.json | 110 ------------ src/translations/en.yaml | 137 +++++++++++++++ src/translations/fr.json | 110 ------------ src/translations/fr.yaml | 137 +++++++++++++++ src/utils/i18n.ts | 10 +- vite.config.ts | 2 + 27 files changed, 486 insertions(+), 421 deletions(-) delete mode 100644 src/translations/en.json create mode 100644 src/translations/en.yaml delete mode 100644 src/translations/fr.json create mode 100644 src/translations/fr.yaml diff --git a/package.json b/package.json index 9cc39d0..32aa62c 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ }, "dependencies": { "@intlify/unplugin-vue-i18n": "^1.4.0", - "@tauri-apps/api": "^1.5.0", + "@modyfi/vite-plugin-yaml": "^1.0.4", + "@tauri-apps/api": "^1.5.1", "eslint-plugin-simple-import-sort": "^10.0.0", "pinia": "^2.1.7", "vue": "^3.3.4", @@ -24,8 +25,8 @@ }, "devDependencies": { "@faker-js/faker": "^8.2.0", - "@tauri-apps/cli": "^1.5.2", - "@types/node": "^20.8.6", + "@tauri-apps/cli": "^1.5.4", + "@types/node": "^20.8.7", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", "@vitejs/plugin-vue": "^4.4.0", @@ -33,9 +34,9 @@ "@vue/eslint-config-typescript": "^12.0.0", "eslint": "^8.51.0", "eslint-plugin-vue": "^9.17.0", - "sass": "^1.69.3", + "sass": "^1.69.4", "typescript": "^5.2.2", - "vite": "^4.4.11", + "vite": "^4.5.0", "vitest": "^0.34.6", "vue-tsc": "^1.8.19" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7e22b0..32e903d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,9 +8,12 @@ dependencies: '@intlify/unplugin-vue-i18n': specifier: ^1.4.0 version: 1.4.0(vue-i18n@9.5.0) + '@modyfi/vite-plugin-yaml': + specifier: ^1.0.4 + version: 1.0.4(vite@4.5.0) '@tauri-apps/api': - specifier: ^1.5.0 - version: 1.5.0 + specifier: ^1.5.1 + version: 1.5.1 eslint-plugin-simple-import-sort: specifier: ^10.0.0 version: 10.0.0(eslint@8.51.0) @@ -32,11 +35,11 @@ devDependencies: specifier: ^8.2.0 version: 8.2.0 '@tauri-apps/cli': - specifier: ^1.5.2 - version: 1.5.2 + specifier: ^1.5.4 + version: 1.5.4 '@types/node': - specifier: ^20.8.6 - version: 20.8.6 + specifier: ^20.8.7 + version: 20.8.7 '@typescript-eslint/eslint-plugin': specifier: ^6.8.0 version: 6.8.0(@typescript-eslint/parser@6.8.0)(eslint@8.51.0)(typescript@5.2.2) @@ -45,7 +48,7 @@ devDependencies: version: 6.8.0(eslint@8.51.0)(typescript@5.2.2) '@vitejs/plugin-vue': specifier: ^4.4.0 - version: 4.4.0(vite@4.4.11)(vue@3.3.4) + version: 4.4.0(vite@4.5.0)(vue@3.3.4) '@vitest/ui': specifier: ^0.34.6 version: 0.34.6(vitest@0.34.6) @@ -59,17 +62,17 @@ devDependencies: specifier: ^9.17.0 version: 9.17.0(eslint@8.51.0) sass: - specifier: ^1.69.3 - version: 1.69.3 + specifier: ^1.69.4 + version: 1.69.4 typescript: specifier: ^5.2.2 version: 5.2.2 vite: - specifier: ^4.4.11 - version: 4.4.11(@types/node@20.8.6)(sass@1.69.3) + specifier: ^4.5.0 + version: 4.5.0(@types/node@20.8.7)(sass@1.69.4) vitest: specifier: ^0.34.6 - version: 0.34.6(@vitest/ui@0.34.6)(sass@1.69.3) + version: 0.34.6(@vitest/ui@0.34.6)(sass@1.69.4) vue-tsc: specifier: ^1.8.19 version: 1.8.19(typescript@5.2.2) @@ -109,7 +112,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-arm@0.18.20: @@ -118,7 +120,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-x64@0.18.20: @@ -127,7 +128,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/darwin-arm64@0.18.20: @@ -136,7 +136,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/darwin-x64@0.18.20: @@ -145,7 +144,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-arm64@0.18.20: @@ -154,7 +152,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-x64@0.18.20: @@ -163,7 +160,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm64@0.18.20: @@ -172,7 +168,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm@0.18.20: @@ -181,7 +176,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ia32@0.18.20: @@ -190,7 +184,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-loong64@0.18.20: @@ -199,7 +192,6 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-mips64el@0.18.20: @@ -208,7 +200,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ppc64@0.18.20: @@ -217,7 +208,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-riscv64@0.18.20: @@ -226,7 +216,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-s390x@0.18.20: @@ -235,7 +224,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-x64@0.18.20: @@ -244,7 +232,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/netbsd-x64@0.18.20: @@ -253,7 +240,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /@esbuild/openbsd-x64@0.18.20: @@ -262,7 +248,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /@esbuild/sunos-x64@0.18.20: @@ -271,7 +256,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /@esbuild/win32-arm64@0.18.20: @@ -280,7 +264,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-ia32@0.18.20: @@ -289,7 +272,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-x64@0.18.20: @@ -298,7 +280,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.51.0): @@ -445,6 +426,19 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + /@modyfi/vite-plugin-yaml@1.0.4(vite@4.5.0): + resolution: {integrity: sha512-qkT0KiR3AQQRfUvDzLv4+1rYAzXj+QmGhAbyUd0Ordf9xynK76i758lk5GiEfxuQxbvdqDaJ9oXkH/KacbSjQQ==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 + dependencies: + '@rollup/pluginutils': 5.0.2 + js-yaml: 4.1.0 + tosource: 2.0.0-alpha.3 + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + transitivePeerDependencies: + - rollup + dev: false + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -467,6 +461,20 @@ packages: resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} dev: true + /@rollup/pluginutils@5.0.2: + resolution: {integrity: sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + dependencies: + '@types/estree': 1.0.3 + estree-walker: 2.0.2 + picomatch: 2.3.1 + dev: false + /@rollup/pluginutils@5.0.5: resolution: {integrity: sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==} engines: {node: '>=14.0.0'} @@ -476,7 +484,7 @@ packages: rollup: optional: true dependencies: - '@types/estree': 1.0.2 + '@types/estree': 1.0.3 estree-walker: 2.0.2 picomatch: 2.3.1 dev: false @@ -485,13 +493,13 @@ packages: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} dev: true - /@tauri-apps/api@1.5.0: - resolution: {integrity: sha512-yQY9wpVNuiYhLLuyDlu1nBpqJELT1fGp7OctN4rW9I2W1T2p7A3tqPxsEzQprEwneQRBAlPM9vC8NsnMbct+pg==} + /@tauri-apps/api@1.5.1: + resolution: {integrity: sha512-6unsZDOdlXTmauU3NhWhn+Cx0rODV+rvNvTdvolE5Kls5ybA6cqndQENDt1+FS0tF7ozCP66jwWoH6a5h90BrA==} engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'} dev: false - /@tauri-apps/cli-darwin-arm64@1.5.2: - resolution: {integrity: sha512-3mYN15jpYjuuHRWii5Xk6JvB3ZLEgAZkeVgc5Hg7k3Yw1ZBrEGiUNe3Ku4DjbkYWL/QDd7oteIJnQk3j0mXwEg==} + /@tauri-apps/cli-darwin-arm64@1.5.4: + resolution: {integrity: sha512-gbCmzVYYRgyftyheEtTkShvnStJQeN0kQYIUIWVUQiF7bsgHhD4/CfJyPNbwYtdGogtZJtKJEZbIwB9HVMaegA==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -499,8 +507,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-darwin-x64@1.5.2: - resolution: {integrity: sha512-8Jsl+EKBGdBoRUIR5ohjiTV6uG+pFpkNwHB4WaOzzR//v6p0lGULk2ohPIjJxhoQIFIN9oBd8bsSSNbZO/57/g==} + /@tauri-apps/cli-darwin-x64@1.5.4: + resolution: {integrity: sha512-Ysi9URY4F9m+f7ThXAYDfu4oEDMWAWhdaEeaoOI4VcaWXckbZl+8klaF1clm6xW+iOK/bmzKS4SlyGknlhRgQA==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -508,8 +516,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm-gnueabihf@1.5.2: - resolution: {integrity: sha512-oWzcQtZogchdCSdQ+eEbDJHjJO9BGPO9EZNfvI2u3JzS/hJj4wCwnGHvZGI4jJ/6cnmcNvtt9ZftYYN4rpQW7A==} + /@tauri-apps/cli-linux-arm-gnueabihf@1.5.4: + resolution: {integrity: sha512-7tBjl5Fn5CPKvADVvBhA43EM9SWgy0L1IueHooSjJslwo2Ca5Tm+lZfPHnhaGF6uDFZ8RU1YZEcI33rUqEhJYQ==} engines: {node: '>= 10'} cpu: [arm] os: [linux] @@ -517,8 +525,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-gnu@1.5.2: - resolution: {integrity: sha512-hfIUtys+SrrGEpLhQJwmL16g1FDhfObR4AGahCMqvMwA25uQKhtzRhxieO4X3k03vBeboTyJla5a2rX4TQ4lXA==} + /@tauri-apps/cli-linux-arm64-gnu@1.5.4: + resolution: {integrity: sha512-3w3PU1VWcNzvjDblV7WXMB6hGidKL0DNN4UnGMWE+BVSQSMbdd0lfeZ788sl637cwm9xiFHttY6ovmwD7yIWuw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -526,8 +534,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-arm64-musl@1.5.2: - resolution: {integrity: sha512-ZpFX4HyjkJHfF0geVVpq5fNjEXG8766LRg/BL4/wKy8MNbqcc/aW3sLEpVj0GvdulxOnd2trDb1FJdZ206Kp8g==} + /@tauri-apps/cli-linux-arm64-musl@1.5.4: + resolution: {integrity: sha512-yQwAxp5AbR/y/Q1hAxQIRdHCamoTDjEMGRwiQO1qnhpQIGsUAAD92nWvEQJF2fX2YE113mo0LpTya63uRisqyA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -535,8 +543,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-gnu@1.5.2: - resolution: {integrity: sha512-/kEZrDVZv1+qYpZigtLntX4s+gx7WQqp8cmxKZL5GrzAjUNSTnfWK5VL7o0lYm09QBJAdTvjcJu2aPzNHLDS+Q==} + /@tauri-apps/cli-linux-x64-gnu@1.5.4: + resolution: {integrity: sha512-iXITFTnKA/UhSUZJaBxM4tHplPzNthIUheGuMhJuUHVdTGLzp+HqvQxMO6/qMVGrptPn9TA/k6SaSh91mF27jQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -544,8 +552,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-linux-x64-musl@1.5.2: - resolution: {integrity: sha512-vOrTqfW7NZLYmB1ZXjEq9JC8Z5knIHVGltN3jfyq9UY+tu7d6jNaSHuDdsVHLaKIRQajTHz+5cphDMoL+6/MUQ==} + /@tauri-apps/cli-linux-x64-musl@1.5.4: + resolution: {integrity: sha512-Kp0d1jXJvlRVJRM0UqRdnUcIqGhuT1fXWo6wXIhKtCUPxaYAaRGwJAj9zZiEfJH2lcgbPW+vLjyr6TAcH/fXiA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -553,8 +561,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-arm64-msvc@1.5.2: - resolution: {integrity: sha512-PCAIxH8TvIy1PlJK2qrdwpRCa7pZV648whRhmoLwj9lvn9PR4+vwuUWhSTXmp1ISHWZm/mEJpYuVq0ZxJDQKZQ==} + /@tauri-apps/cli-win32-arm64-msvc@1.5.4: + resolution: {integrity: sha512-z5k71KabwZlYf8DetVMDsPPYoCinMx2gOc2vdxY9mC7w0Ovbk0Ff3VLR80M33MpcAonNakjS5QSrzNeLrwT8DQ==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -562,8 +570,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-ia32-msvc@1.5.2: - resolution: {integrity: sha512-0rCXZC/9qyWZI2cgVnsT4JEjcxjQcZlrZjaSwhGynPUMkIUUBsWDimzkQeOP8abw5j/kLS2QPQRHAHqd0IF6Rg==} + /@tauri-apps/cli-win32-ia32-msvc@1.5.4: + resolution: {integrity: sha512-9uwsBUfD4ee2QhNCCGcG5oVPHBtPxU+ew6j9NfP2B4KvyQVQ6WxkoCTJEMWcpvwefUlWfA/87wbRZQe4RLLCkw==} engines: {node: '>= 10'} cpu: [ia32] os: [win32] @@ -571,8 +579,8 @@ packages: dev: true optional: true - /@tauri-apps/cli-win32-x64-msvc@1.5.2: - resolution: {integrity: sha512-HrOwIujKTql8yUOvR+IEGW/SXwMwPrGWrcM35cDfCxpkLH6h3F5i4JtRqYTAiFdSfTk1J2rcFVQXfFJYIDntnA==} + /@tauri-apps/cli-win32-x64-msvc@1.5.4: + resolution: {integrity: sha512-cYrr+AGbt0PEdYqU8PcH6fSVVZNk0PDl4k0+OPf5CHMr878ypqa3dhuVHxSvXccLtFXRltr9xvnSZcqmWLvQMg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -580,46 +588,45 @@ packages: dev: true optional: true - /@tauri-apps/cli@1.5.2: - resolution: {integrity: sha512-x4rPinrdyWLdTU5TbV7wrXudOyMilv0nmi1rngm/jwN3MmZdAj5J2xaS2rYtA8BU3oM/SE34qQwYxv1a2sM9ug==} + /@tauri-apps/cli@1.5.4: + resolution: {integrity: sha512-zmEG0z2sij6GcyI97AdvBdlHYrlhdJP7ecOO9JC6hJ0zjLF8AGpUfVWWKAPg/z92xsgGPRUrXY+zGKaxQiUIQw==} engines: {node: '>= 10'} hasBin: true optionalDependencies: - '@tauri-apps/cli-darwin-arm64': 1.5.2 - '@tauri-apps/cli-darwin-x64': 1.5.2 - '@tauri-apps/cli-linux-arm-gnueabihf': 1.5.2 - '@tauri-apps/cli-linux-arm64-gnu': 1.5.2 - '@tauri-apps/cli-linux-arm64-musl': 1.5.2 - '@tauri-apps/cli-linux-x64-gnu': 1.5.2 - '@tauri-apps/cli-linux-x64-musl': 1.5.2 - '@tauri-apps/cli-win32-arm64-msvc': 1.5.2 - '@tauri-apps/cli-win32-ia32-msvc': 1.5.2 - '@tauri-apps/cli-win32-x64-msvc': 1.5.2 + '@tauri-apps/cli-darwin-arm64': 1.5.4 + '@tauri-apps/cli-darwin-x64': 1.5.4 + '@tauri-apps/cli-linux-arm-gnueabihf': 1.5.4 + '@tauri-apps/cli-linux-arm64-gnu': 1.5.4 + '@tauri-apps/cli-linux-arm64-musl': 1.5.4 + '@tauri-apps/cli-linux-x64-gnu': 1.5.4 + '@tauri-apps/cli-linux-x64-musl': 1.5.4 + '@tauri-apps/cli-win32-arm64-msvc': 1.5.4 + '@tauri-apps/cli-win32-ia32-msvc': 1.5.4 + '@tauri-apps/cli-win32-x64-msvc': 1.5.4 dev: true - /@types/chai-subset@1.3.3: - resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} + /@types/chai-subset@1.3.4: + resolution: {integrity: sha512-CCWNXrJYSUIojZ1149ksLl3AN9cmZ5djf+yUoVVV+NuYrtydItQVlL2ZDqyC6M6O9LWRnVf8yYDxbXHO2TfQZg==} dependencies: - '@types/chai': 4.3.8 + '@types/chai': 4.3.9 dev: true - /@types/chai@4.3.8: - resolution: {integrity: sha512-yW/qTM4mRBBcsA9Xw9FbcImYtFPY7sgr+G/O5RDYVmxiy9a+pE5FyoFUi8JYCZY5nicj8atrr1pcfPiYpeNGOA==} + /@types/chai@4.3.9: + resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} dev: true - /@types/estree@1.0.2: - resolution: {integrity: sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA==} + /@types/estree@1.0.3: + resolution: {integrity: sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ==} dev: false - /@types/json-schema@7.0.13: - resolution: {integrity: sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==} + /@types/json-schema@7.0.14: + resolution: {integrity: sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw==} dev: true - /@types/node@20.8.6: - resolution: {integrity: sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ==} + /@types/node@20.8.7: + resolution: {integrity: sha512-21TKHHh3eUHIi2MloeptJWALuCu5H7HQTdTrWIFReA8ad+aggoX+lRes3ex7/FtpC+sVUpFMQ+QTfYr74mruiQ==} dependencies: undici-types: 5.25.3 - dev: true /@types/semver@7.5.3: resolution: {integrity: sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==} @@ -736,7 +743,7 @@ packages: eslint: ^7.0.0 || ^8.0.0 dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.51.0) - '@types/json-schema': 7.0.13 + '@types/json-schema': 7.0.14 '@types/semver': 7.5.3 '@typescript-eslint/scope-manager': 6.8.0 '@typescript-eslint/types': 6.8.0 @@ -756,14 +763,14 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vitejs/plugin-vue@4.4.0(vite@4.4.11)(vue@3.3.4): + /@vitejs/plugin-vue@4.4.0(vite@4.5.0)(vue@3.3.4): resolution: {integrity: sha512-xdguqb+VUwiRpSg+nsc2HtbAUSGak25DXYvpQQi4RVU1Xq1uworyoH/md9Rfd8zMmPR/pSghr309QNcftUVseg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.11(@types/node@20.8.6)(sass@1.69.3) + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) vue: 3.3.4 dev: true @@ -809,7 +816,7 @@ packages: pathe: 1.1.1 picocolors: 1.0.0 sirv: 2.0.3 - vitest: 0.34.6(@vitest/ui@0.34.6)(sass@1.69.3) + vitest: 0.34.6(@vitest/ui@0.34.6)(sass@1.69.4) dev: true /@vitest/utils@0.34.6: @@ -1201,7 +1208,6 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - dev: true /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} @@ -1468,7 +1474,6 @@ packages: /immutable@4.3.4: resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} - dev: true /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -1822,22 +1827,20 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 - dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - /sass@1.69.3: - resolution: {integrity: sha512-X99+a2iGdXkdWn1akFPs0ZmelUzyAQfvqYc2P/MPTrJRuIRoTffGzT9W9nFqG00S+c8hXzVmgxhUuHFdrwxkhQ==} + /sass@1.69.4: + resolution: {integrity: sha512-+qEreVhqAy8o++aQfCJwp0sklr2xyEzkm9Pp/Igu9wNPoe7EZEQ8X/MBvvXggI2ql607cxKg/RKOwDj6pp2XDA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: chokidar: 3.5.3 immutable: 4.3.4 source-map-js: 1.0.2 - dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -1942,6 +1945,11 @@ packages: dependencies: is-number: 7.0.0 + /tosource@2.0.0-alpha.3: + resolution: {integrity: sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==} + engines: {node: '>=10'} + dev: false + /totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -1981,7 +1989,6 @@ packages: /undici-types@5.25.3: resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} - dev: true /unplugin@1.5.0: resolution: {integrity: sha512-9ZdRwbh/4gcm1JTOkp9lAkIDrtOyOxgHmY7cjuwI8L/2RTikMcVG25GsZwNAgRuap3iDw2jeq7eoqtAsz5rW3A==} @@ -2001,7 +2008,7 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: true - /vite-node@0.34.6(@types/node@20.8.6)(sass@1.69.3): + /vite-node@0.34.6(@types/node@20.8.7)(sass@1.69.4): resolution: {integrity: sha512-nlBMJ9x6n7/Amaz6F3zJ97EBwR2FkzhBRxF5e+jE6LA3yi6Wtc2lyTij1OnDMIr34v5g/tVQtsVAzhT0jc5ygA==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2011,7 +2018,7 @@ packages: mlly: 1.4.2 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.11(@types/node@20.8.6)(sass@1.69.3) + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) transitivePeerDependencies: - '@types/node' - less @@ -2023,8 +2030,8 @@ packages: - terser dev: true - /vite@4.4.11(@types/node@20.8.6)(sass@1.69.3): - resolution: {integrity: sha512-ksNZJlkcU9b0lBwAGZGGaZHCMqHsc8OpgtoYhsQ4/I2v5cnpmmmqe5pM4nv/4Hn6G/2GhTdj0DhZh2e+Er1q5A==} + /vite@4.5.0(@types/node@20.8.7)(sass@1.69.4): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: @@ -2051,16 +2058,15 @@ packages: terser: optional: true dependencies: - '@types/node': 20.8.6 + '@types/node': 20.8.7 esbuild: 0.18.20 postcss: 8.4.31 rollup: 3.29.4 - sass: 1.69.3 + sass: 1.69.4 optionalDependencies: fsevents: 2.3.3 - dev: true - /vitest@0.34.6(@vitest/ui@0.34.6)(sass@1.69.3): + /vitest@0.34.6(@vitest/ui@0.34.6)(sass@1.69.4): resolution: {integrity: sha512-+5CALsOvbNKnS+ZHMXtuUC7nL8/7F1F2DnHGjSsszX8zCjWSSviphCb/NuS9Nzf4Q03KyyDRBAXhF/8lffME4Q==} engines: {node: '>=v14.18.0'} hasBin: true @@ -2091,9 +2097,9 @@ packages: webdriverio: optional: true dependencies: - '@types/chai': 4.3.8 - '@types/chai-subset': 1.3.3 - '@types/node': 20.8.6 + '@types/chai': 4.3.9 + '@types/chai-subset': 1.3.4 + '@types/node': 20.8.7 '@vitest/expect': 0.34.6 '@vitest/runner': 0.34.6 '@vitest/snapshot': 0.34.6 @@ -2113,8 +2119,8 @@ packages: strip-literal: 1.3.0 tinybench: 2.5.1 tinypool: 0.7.0 - vite: 4.4.11(@types/node@20.8.6)(sass@1.69.3) - vite-node: 0.34.6(@types/node@20.8.6)(sass@1.69.3) + vite: 4.5.0(@types/node@20.8.7)(sass@1.69.4) + vite-node: 0.34.6(@types/node@20.8.7)(sass@1.69.4) why-is-node-running: 2.2.2 transitivePeerDependencies: - less diff --git a/src/components/inputs/InputCheckbox.vue b/src/components/inputs/InputCheckbox.vue index 6c086ae..c2722a3 100644 --- a/src/components/inputs/InputCheckbox.vue +++ b/src/components/inputs/InputCheckbox.vue @@ -67,7 +67,7 @@ const usableWidth = props.width ? props.width : '100%'; />
- {{ $t(value ? 'yes' : 'no') }} + {{ $t(value ? 'global.yes' : 'global.no') }}
.input__group { + user-select: none; display: flex; flex-direction: column; gap: .5rem; diff --git a/src/components/inputs/InputPath.vue b/src/components/inputs/InputPath.vue index 4468a51..3408e08 100644 --- a/src/components/inputs/InputPath.vue +++ b/src/components/inputs/InputPath.vue @@ -68,7 +68,7 @@ async function importFolder(): Promise { >
{ renpyPathError.value = ''; useSettingStore().setRenpyPath(renpyPath.value); } else { - renpyPathError.value = 'renpy_path_error'; + renpyPathError.value = 'renpy.errors.pathInvalid'; useSettingStore().setRenpyPath(undefined); } }); @@ -26,9 +26,10 @@ function hasRenpyExecutable(files: string[]): boolean { } +