From 358ff45ae1d9822b8a7c342515f668d25b7128b5 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Thu, 14 Apr 2022 02:02:05 +0200 Subject: [PATCH] feat(tool): crontab generator --- package-lock.json | 22 ++ package.json | 2 + src/plugins/naive.plugin.ts | 2 + .../crontab-generator/crontab-generator.vue | 216 ++++++++++++++++++ src/tools/crontab-generator/index.ts | 11 + src/tools/index.ts | 3 +- 6 files changed, 255 insertions(+), 1 deletion(-) create mode 100644 src/tools/crontab-generator/crontab-generator.vue create mode 100644 src/tools/crontab-generator/index.ts diff --git a/package-lock.json b/package-lock.json index a6527e77..452c16de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,8 @@ "@vueuse/head": "^0.7.5", "bip39": "^3.0.4", "buffer": "^6.0.3", + "cron-validator": "^1.3.1", + "cronstrue": "^2.2.0", "crypto-js": "^4.1.1", "date-fns": "^2.28.0", "lodash": "^4.17.21", @@ -2383,6 +2385,16 @@ "sha.js": "^2.4.8" } }, + "node_modules/cron-validator": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cron-validator/-/cron-validator-1.3.1.tgz", + "integrity": "sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A==" + }, + "node_modules/cronstrue": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.2.0.tgz", + "integrity": "sha512-oM/ftAvCNIdygVGGfYp8gxrVc81mDSA2mff0kvu6+ehrZhfYPzGHG8DVcFdrRVizjHnzWoFIlgEq6KTM/9lPBw==" + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -9925,6 +9937,16 @@ "sha.js": "^2.4.8" } }, + "cron-validator": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cron-validator/-/cron-validator-1.3.1.tgz", + "integrity": "sha512-C1HsxuPCY/5opR55G5/WNzyEGDWFVG+6GLrA+fW/sCTcP6A6NTjUP2AK7B8n2PyFs90kDG2qzwm8LMheADku6A==" + }, + "cronstrue": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cronstrue/-/cronstrue-2.2.0.tgz", + "integrity": "sha512-oM/ftAvCNIdygVGGfYp8gxrVc81mDSA2mff0kvu6+ehrZhfYPzGHG8DVcFdrRVizjHnzWoFIlgEq6KTM/9lPBw==" + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", diff --git a/package.json b/package.json index 24613053..6b66aede 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,8 @@ "@vueuse/head": "^0.7.5", "bip39": "^3.0.4", "buffer": "^6.0.3", + "cron-validator": "^1.3.1", + "cronstrue": "^2.2.0", "crypto-js": "^4.1.1", "date-fns": "^2.28.0", "lodash": "^4.17.21", diff --git a/src/plugins/naive.plugin.ts b/src/plugins/naive.plugin.ts index 8b3e0098..68d2036f 100644 --- a/src/plugins/naive.plugin.ts +++ b/src/plugins/naive.plugin.ts @@ -45,9 +45,11 @@ import { NInputGroupLabel, NDivider, NStatistic, + NTable, } from 'naive-ui'; const components = [ + NTable, NStatistic, NDivider, NInputGroup, diff --git a/src/tools/crontab-generator/crontab-generator.vue b/src/tools/crontab-generator/crontab-generator.vue new file mode 100644 index 00000000..a77a3f51 --- /dev/null +++ b/src/tools/crontab-generator/crontab-generator.vue @@ -0,0 +1,216 @@ + + + + + \ No newline at end of file diff --git a/src/tools/crontab-generator/index.ts b/src/tools/crontab-generator/index.ts new file mode 100644 index 00000000..56286254 --- /dev/null +++ b/src/tools/crontab-generator/index.ts @@ -0,0 +1,11 @@ +import { Alarm } from '@vicons/tabler'; +import type { ITool } from './../Tool'; + +export const tool: ITool = { + name: 'Crontab generator', + path: '/crontab-generator', + description: 'Validate and generate crontab and get the human readable description of the cron schedule.', + keywords: ['crontab', 'generator', 'cronjob', 'cron', 'schedule', 'parse', 'expression', 'year', 'month', 'week', 'day', 'minute', 'second'], + component: () => import('./crontab-generator.vue'), + icon: Alarm, +}; diff --git a/src/tools/index.ts b/src/tools/index.ts index d7443535..17f73592 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,6 +1,7 @@ import { LockOpen } from '@vicons/tabler'; import type { ToolCategory } from './Tool'; +import { tool as crontabGenerator } from './crontab-generator'; import { tool as textStatistics } from './text-statistics'; import { tool as tokenGenerator } from './token-generator'; import { tool as hashText } from './hash-text'; @@ -34,7 +35,7 @@ export const toolsByCategory: ToolCategory[] = [ { name: 'Development', icon: LockOpen, - components: [gitMemo, randomPortGenerator], + components: [gitMemo, randomPortGenerator, crontabGenerator], }, { name: 'Text',