From 931783245c0b2e29d1c181da734a8111e28da7bf Mon Sep 17 00:00:00 2001 From: Alexandre Tuleu Date: Fri, 11 Aug 2023 09:51:33 +0200 Subject: [PATCH] Skeleton for a yaml config. --- .prettierrc | 3 +-- package-lock.json | 52 +++++++++++++++++++++++++++++++++++++++++ package.json | 1 + src/config.ts | 36 ++++++++++++++++++++++++++++ src/config.yml | 14 +++++++++++ src/routes/+page.svelte | 10 ++++++-- tsconfig.json | 4 +++- vite.config.ts | 3 ++- 8 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 src/config.ts create mode 100644 src/config.yml diff --git a/.prettierrc b/.prettierrc index b7ef783..a77fdde 100644 --- a/.prettierrc +++ b/.prettierrc @@ -5,6 +5,5 @@ "printWidth": 100, "plugins": ["prettier-plugin-svelte"], "pluginSearchDirs": ["."], - "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }], - "tabWidth": 4 + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] } diff --git a/package-lock.json b/package-lock.json index 7107e30..20d527e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,7 @@ "name": "flanders", "version": "0.0.1", "devDependencies": { + "@modyfi/vite-plugin-yaml": "^1.0.4", "@playwright/test": "^1.28.1", "@sveltejs/adapter-auto": "^2.0.0", "@sveltejs/kit": "^1.20.4", @@ -549,6 +550,20 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@modyfi/vite-plugin-yaml": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@modyfi/vite-plugin-yaml/-/vite-plugin-yaml-1.0.4.tgz", + "integrity": "sha512-qkT0KiR3AQQRfUvDzLv4+1rYAzXj+QmGhAbyUd0Ordf9xynK76i758lk5GiEfxuQxbvdqDaJ9oXkH/KacbSjQQ==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "5.0.2", + "js-yaml": "4.1.0", + "tosource": "2.0.0-alpha.3" + }, + "peerDependencies": { + "vite": "^2.6.0 || ^3.0.0 || ^4.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -609,6 +624,34 @@ "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", "dev": true }, + "node_modules/@rollup/pluginutils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", + "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -3347,6 +3390,15 @@ "node": ">=8.0" } }, + "node_modules/tosource": { + "version": "2.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz", + "integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", diff --git a/package.json b/package.json index b7ae8e3..e99e3fb 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "test:unit": "vitest" }, "devDependencies": { + "@modyfi/vite-plugin-yaml": "^1.0.4", "@playwright/test": "^1.28.1", "@sveltejs/adapter-auto": "^2.0.0", "@sveltejs/kit": "^1.20.4", diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..eb04623 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,36 @@ +import configData from './config.yml'; + +export type Brand = { + logo?: string; + icon?: string; + usemask?: boolean; +}; + +export type Section = { + title: string; + subtitle?: string; +} & Brand; + +export type Service = { + url: string; + target?: string; + type?: string; + + [x: string]: unknown; +} & Section; + +export type ServiceGroup = { + items: Service[]; +} & Section; + +export type Config = { + services: ServiceGroup[]; +} & Section; + +export const config: Config = { + ...{ + title: 'Flanders', + services: [] + }, + ...configData +}; diff --git a/src/config.yml b/src/config.yml new file mode 100644 index 0000000..a6c81b8 --- /dev/null +++ b/src/config.yml @@ -0,0 +1,14 @@ +title: 'Hello World !!' +subtitle: 'I am a new pilot.' + +services: + - title: '/Cloud' + subtitle: 'Private Cloud Utilities' + icon: 'fas fa-cloud' + items: + - title: 'NAS' + subtitle: 'Network Attached Storage' + icon: 'fas fa-hard-drive' + target: '_blank' + url: '/NAS' + keywords: 'cloud storage files' diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 5982b0a..a0a4d6e 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -1,2 +1,8 @@ -

Welcome to SvelteKit

-

Visit kit.svelte.dev to read the documentation

+ + +

{config.title}

+{#if config.subtitle} +

{config.subtitle}

+{/if} diff --git a/tsconfig.json b/tsconfig.json index 6ae0c8c..75ec4fe 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,8 +8,10 @@ "resolveJsonModule": true, "skipLibCheck": true, "sourceMap": true, - "strict": true + "strict": true, + "types": ["@modyfi/vite-plugin-yaml/modules"] } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias // // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes diff --git a/vite.config.ts b/vite.config.ts index 37b6a84..b00cbdb 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,8 +1,9 @@ import { sveltekit } from '@sveltejs/kit/vite'; import { defineConfig } from 'vitest/config'; +import ViteYaml from '@modyfi/vite-plugin-yaml'; export default defineConfig({ - plugins: [sveltekit()], + plugins: [ViteYaml(), sveltekit()], test: { include: ['src/**/*.{test,spec}.{js,ts}'] }