Compare commits

...

8 Commits

Author SHA1 Message Date
Corentin Thomasset
af0b02d3a8 chore(release): 2.4.2 2022-06-01 08:50:10 +02:00
Corentin Thomasset
a46d125c19 refactor: set coerent head title for home page 2022-05-30 20:35:22 +02:00
Corentin Thomasset
6becdbb423 refactor(config): added config management with figue 2022-05-24 00:07:54 +02:00
Corentin Thomasset
5ce1262fb4 refactor(imports): removed useless defineProps import 2022-05-24 00:07:24 +02:00
Corentin Thomasset
d591a73ce7 chore(release): 2.4.1 2022-05-15 11:34:19 +02:00
Corentin Thomasset
a88e4a9289 fix(seo): wrong url in share metas 2022-05-15 11:31:17 +02:00
Corentin Thomasset
d4ea393c1d refactor(seo): changed title string 2022-05-15 11:29:36 +02:00
Corentin Thomasset
048bc4ae94 refactor(json-viewer): add clear button 2022-05-14 16:29:50 +02:00
12 changed files with 131 additions and 26 deletions

View File

@@ -2,6 +2,28 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [2.4.2](https://github.com/CorentinTh/it-tools/compare/v2.4.1...v2.4.2) (2022-06-01)
### Refactors
* **config:** added config management with figue ([6becdbb](https://github.com/CorentinTh/it-tools/commit/6becdbb42329e1bdecf158707e37ba9f13ba1d2c))
* **imports:** removed useless defineProps import ([5ce1262](https://github.com/CorentinTh/it-tools/commit/5ce1262fb44864b829dac09d5c0b9b68d522ceb7))
* set coerent head title for home page ([a46d125](https://github.com/CorentinTh/it-tools/commit/a46d125c19902c2f41f37c62c07bb7b548d9f6f0))
### [2.4.1](https://github.com/CorentinTh/it-tools/compare/v2.4.0...v2.4.1) (2022-05-15)
### Bug Fixes
* **seo:** wrong url in share metas ([a88e4a9](https://github.com/CorentinTh/it-tools/commit/a88e4a9289e7d8cc80190f60f2fe08fe2ba08ee6))
### Refactors
* **json-viewer:** add clear button ([048bc4a](https://github.com/CorentinTh/it-tools/commit/048bc4ae943509dea2946764efaa69f845b6c478))
* **seo:** changed title string ([d4ea393](https://github.com/CorentinTh/it-tools/commit/d4ea393c1df87ae958a06ed66a11e36b081282d4))
## [2.4.0](https://github.com/CorentinTh/it-tools/compare/v2.3.2...v2.4.0) (2022-05-14) ## [2.4.0](https://github.com/CorentinTh/it-tools/compare/v2.3.2...v2.4.0) (2022-05-14)

View File

@@ -4,8 +4,8 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" /> <link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>IT Tools</title> <title>IT Tools - Handy online tools for developers</title>
<meta itemprop="name" content="IT Tools - Handy tools for developers" /> <meta itemprop="name" content="IT Tools - Handy online tools for developers" />
<meta name="description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." /> <meta name="description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." />
<meta itemprop="description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." /> <meta itemprop="description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." />
<link rel="author" href="/humans.txt" /> <link rel="author" href="/humans.txt" />
@@ -18,16 +18,16 @@
<meta name="msapplication-TileColor" content="#da532c" /> <meta name="msapplication-TileColor" content="#da532c" />
<meta name="theme-color" content="#ffffff" /> <meta name="theme-color" content="#ffffff" />
<meta property="og:url" content="https://dev.it-tools.tech/" /> <meta property="og:url" content="https://it-tools.tech/" />
<meta property="og:type" content="website" /> <meta property="og:type" content="website" />
<meta property="og:title" content="IT Tools - Handy tools for developers" /> <meta property="og:title" content="IT Tools - Handy online tools for developers" />
<meta property="og:description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." /> <meta property="og:description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." />
<meta property="og:image" content="/banner.png" /> <meta property="og:image" content="/banner.png" />
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:domain" content="dev.it-tools.tech" /> <meta property="twitter:domain" content="it-tools.tech" />
<meta property="twitter:url" content="https://dev.it-tools.tech/" /> <meta property="twitter:url" content="https://it-tools.tech/" />
<meta name="twitter:title" content="IT Tools - Handy tools for developers" /> <meta name="twitter:title" content="IT Tools - Handy online tools for developers" />
<meta name="twitter:description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." /> <meta name="twitter:description" content="Collection of handy online tools for developers, with great UX. IT Tools is a free and open-source collection of handy online tools for developers & people working in IT." />
<meta name="twitter:image" content="/banner.png" /> <meta name="twitter:image" content="/banner.png" />
</head> </head>

24
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "it-tools", "name": "it-tools",
"version": "2.4.0", "version": "2.4.2",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "it-tools", "name": "it-tools",
"version": "2.4.0", "version": "2.4.2",
"dependencies": { "dependencies": {
"@it-tools/bip39": "^0.0.4", "@it-tools/bip39": "^0.0.4",
"@vicons/material": "^0.12.0", "@vicons/material": "^0.12.0",
@@ -20,6 +20,7 @@
"cronstrue": "^2.2.0", "cronstrue": "^2.2.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"date-fns": "^2.28.0", "date-fns": "^2.28.0",
"figue": "^1.1.0",
"highlight.js": "^11.5.1", "highlight.js": "^11.5.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"naive-ui": "^2.28.0", "naive-ui": "^2.28.0",
@@ -5521,6 +5522,17 @@
"reusify": "^1.0.4" "reusify": "^1.0.4"
} }
}, },
"node_modules/figue": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/figue/-/figue-1.1.0.tgz",
"integrity": "sha512-toW/IfEPBr42giaiqRtC4TkEDZA2q3E1GdzvYG7iJzIYK/fMVvzD2aqU3PJRh+QXCGp+uVxud1Zm7rpV7Fmprg==",
"dependencies": {
"lodash": "^4.17.21"
},
"funding": {
"url": "https://github.com/sponsors/CorentinTh"
}
},
"node_modules/figures": { "node_modules/figures": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@@ -15320,6 +15332,14 @@
"reusify": "^1.0.4" "reusify": "^1.0.4"
} }
}, },
"figue": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/figue/-/figue-1.1.0.tgz",
"integrity": "sha512-toW/IfEPBr42giaiqRtC4TkEDZA2q3E1GdzvYG7iJzIYK/fMVvzD2aqU3PJRh+QXCGp+uVxud1Zm7rpV7Fmprg==",
"requires": {
"lodash": "^4.17.21"
}
},
"figures": { "figures": {
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",

View File

@@ -1,6 +1,6 @@
{ {
"name": "it-tools", "name": "it-tools",
"version": "2.4.0", "version": "2.4.2",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "vue-tsc --noEmit && vite build", "build": "vue-tsc --noEmit && vite build",
@@ -25,6 +25,7 @@
"cronstrue": "^2.2.0", "cronstrue": "^2.2.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"date-fns": "^2.28.0", "date-fns": "^2.28.0",
"figue": "^1.1.0",
"highlight.js": "^11.5.1", "highlight.js": "^11.5.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"naive-ui": "^2.28.0", "naive-ui": "^2.28.0",

View File

@@ -16,7 +16,7 @@
<script setup lang="ts"> <script setup lang="ts">
import type { ITool } from '@/tools/Tool'; import type { ITool } from '@/tools/Tool';
import { toRefs, defineProps } from 'vue'; import { toRefs } from 'vue';
const props = defineProps<{ tool: ITool & { category: string } }>(); const props = defineProps<{ tool: ITool & { category: string } }>();
const { tool } = toRefs(props); const { tool } = toRefs(props);

53
src/config.ts Normal file
View File

@@ -0,0 +1,53 @@
import { figue } from 'figue';
export const config = figue({
app: {
version: {
doc: 'Application current version',
format: 'string',
default: '0.0.0',
env: 'PACKAGE_VERSION',
},
lastCommitSha: {
doc: 'Application last commit SHA version',
format: 'string',
default: '',
env: 'VITE_VERCEL_GIT_COMMIT_SHA',
},
baseUrl: {
doc: 'Application base url',
format: 'string',
default: '/',
env: 'BASE_URL',
},
env: {
doc: 'Application current env',
format: 'enum',
values: ['production', 'development', 'test'],
default: 'development',
env: 'MODE',
},
},
plausible: {
domain: {
doc: 'Plausible current domain',
format: 'string',
default: '',
env: 'VITE_PLAUSIBLE_DOMAIN',
},
apiHost: {
doc: 'Plausible remote api host',
format: 'string',
default: '',
env: 'VITE_PLAUSIBLE_API_HOST',
},
trackLocalhost: {
doc: 'Enable or disable localhost tracking by plausible',
format: 'boolean',
default: false,
},
},
})
.loadEnv(import.meta.env)
.validate()
.getConfig();

View File

@@ -9,12 +9,13 @@ import { useStyleStore } from '@/stores/style.store';
import HeroGradient from '../assets/hero-gradient.svg?component'; import HeroGradient from '../assets/hero-gradient.svg?component';
import MenuLayout from '../components/MenuLayout.vue'; import MenuLayout from '../components/MenuLayout.vue';
import NavbarButtons from '../components/NavbarButtons.vue'; import NavbarButtons from '../components/NavbarButtons.vue';
import { config } from '@/config';
const themeVars = useThemeVars(); const themeVars = useThemeVars();
const route = useRoute(); const route = useRoute();
const styleStore = useStyleStore(); const styleStore = useStyleStore();
const version = import.meta.env.PACKAGE_VERSION; const version = config.app.version;
const commitSha = import.meta.env.GIT_SHORT_SHA; const commitSha = config.app.lastCommitSha.slice(0, 7);
const makeLabel = (text: string, to: string) => () => h(RouterLink, { to }, { default: () => text }); const makeLabel = (text: string, to: string) => () => h(RouterLink, { to }, { default: () => text });
const makeIcon = (icon: Component) => () => h(NIcon, null, { default: () => h(icon) }); const makeIcon = (icon: Component) => () => h(NIcon, null, { default: () => h(icon) });

View File

@@ -3,7 +3,7 @@ import { toolsWithCategory } from '@/tools';
import ToolCard from '../components/ToolCard.vue'; import ToolCard from '../components/ToolCard.vue';
import { useHead } from '@vueuse/head'; import { useHead } from '@vueuse/head';
useHead({ title: 'IT Tools' }); useHead({ title: 'IT Tools - Handy online tools for developers' });
</script> </script>
<template> <template>

View File

@@ -1,15 +1,10 @@
import Plausible, { type PlausibleOptions } from 'plausible-tracker'; import { config } from '@/config';
import Plausible from 'plausible-tracker';
import type { App } from 'vue'; import type { App } from 'vue';
const options: PlausibleOptions = {
domain: import.meta.env.VITE_PLAUSIBLE_DOMAIN,
apiHost: import.meta.env.VITE_PLAUSIBLE_API_HOST,
trackLocalhost: false,
};
export const plausible = { export const plausible = {
install: (app: App) => { install: (app: App) => {
const plausible = Plausible(options); const plausible = Plausible(config.plausible);
plausible.enableAutoPageviews(); plausible.enableAutoPageviews();
app.config.globalProperties.$plausible = plausible; app.config.globalProperties.$plausible = plausible;

View File

@@ -3,6 +3,7 @@ import { createRouter, createWebHistory } from 'vue-router';
import HomePage from './pages/Home.page.vue'; import HomePage from './pages/Home.page.vue';
import NotFound from './pages/404.page.vue'; import NotFound from './pages/404.page.vue';
import { tools } from './tools'; import { tools } from './tools';
import { config } from './config';
const toolsRoutes = tools.map(({ path, name, component, ...config }) => ({ const toolsRoutes = tools.map(({ path, name, component, ...config }) => ({
path, path,
@@ -17,7 +18,7 @@ const toolsRedirectRoutes = tools
); );
const router = createRouter({ const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL), history: createWebHistory(config.app.baseUrl),
routes: [ routes: [
{ {
path: '/', path: '/',

View File

@@ -5,8 +5,21 @@
:feedback="rawJsonValidation.message" :feedback="rawJsonValidation.message"
:validation-status="rawJsonValidation.status" :validation-status="rawJsonValidation.status"
> >
<n-input v-model:value="rawJson" class="json-input" type="textarea" placeholder="Paste your raw json here..." /> <n-input
v-model:value="rawJson"
class="json-input"
type="textarea"
placeholder="Paste your raw json here..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"
/>
</n-form-item> </n-form-item>
<n-space justify="center">
<n-button secondary @click="rawJson = ''">Clear</n-button>
</n-space>
</n-card> </n-card>
<n-card v-if="cleanJson.length > 0"> <n-card v-if="cleanJson.length > 0">
@@ -39,7 +52,7 @@ const rawJsonValidation = useValidation({
source: rawJson, source: rawJson,
rules: [ rules: [
{ {
validator: (v) => JSON.parse(v), validator: (v) => v === '' || JSON.parse(v),
message: 'Invalid json string', message: 'Invalid json string',
}, },
], ],

View File

@@ -61,6 +61,5 @@ export default defineConfig({
}, },
define: { define: {
'import.meta.env.PACKAGE_VERSION': JSON.stringify(process.env.npm_package_version), 'import.meta.env.PACKAGE_VERSION': JSON.stringify(process.env.npm_package_version),
'import.meta.env.GIT_SHORT_SHA': JSON.stringify((process?.env?.VITE_VERCEL_GIT_COMMIT_SHA ?? '').slice(0, 7)),
}, },
}); });