create-vitrify 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/cli.js +74 -0
  2. package/dist/index.js +83 -0
  3. package/dist/templates.js +20 -0
  4. package/dist/types/cli.d.ts +1 -0
  5. package/dist/types/index.d.ts +16 -0
  6. package/dist/types/templates.d.ts +20 -0
  7. package/package.json +30 -10
  8. package/templates/quasar/.vscode/extensions.json +3 -0
  9. package/templates/quasar/_gitignore +3 -0
  10. package/templates/quasar/package.json.hbs +27 -0
  11. package/templates/quasar/src/App.test.js +3 -0
  12. package/templates/quasar/src/App.vue +9 -0
  13. package/templates/quasar/src/assets/quasar-logo-vertical.svg +15 -0
  14. package/templates/quasar/src/components/HelloWorld.vue +16 -0
  15. package/templates/quasar/src/layouts/MainLayout.vue +42 -0
  16. package/templates/quasar/src/pages/Error404.vue +25 -0
  17. package/templates/quasar/src/pages/Index.vue +9 -0
  18. package/templates/quasar/src/router/index.ts +17 -0
  19. package/templates/quasar/src/router/routes.ts +18 -0
  20. package/templates/quasar/tsconfig.json +15 -0
  21. package/templates/quasar/vitrify.config.js +21 -0
  22. package/templates/quasar-monorepo/package.json +11 -0
  23. package/templates/quasar-monorepo/packages/quasar/.vscode/extensions.json +3 -0
  24. package/templates/quasar-monorepo/packages/quasar/_gitignore +3 -0
  25. package/templates/quasar-monorepo/packages/quasar/package.json.hbs +28 -0
  26. package/templates/quasar-monorepo/packages/quasar/src/App.test.js +3 -0
  27. package/templates/quasar-monorepo/packages/quasar/src/App.vue +9 -0
  28. package/templates/quasar-monorepo/packages/quasar/src/assets/quasar-logo-vertical.svg +15 -0
  29. package/templates/quasar-monorepo/packages/quasar/src/components/HelloWorld.vue +16 -0
  30. package/templates/quasar-monorepo/packages/quasar/src/layouts/MainLayout.vue +42 -0
  31. package/templates/quasar-monorepo/packages/quasar/src/pages/Error404.vue +25 -0
  32. package/templates/quasar-monorepo/packages/quasar/src/pages/Index.vue.hbs +13 -0
  33. package/templates/quasar-monorepo/packages/quasar/src/router/index.ts +17 -0
  34. package/templates/quasar-monorepo/packages/quasar/src/router/routes.ts +18 -0
  35. package/templates/quasar-monorepo/packages/quasar/tsconfig.json +15 -0
  36. package/templates/quasar-monorepo/packages/quasar/vitrify.config.js.hbs +29 -0
  37. package/templates/quasar-monorepo/packages/quasar-plugin/_gitignore +3 -0
  38. package/templates/quasar-monorepo/packages/quasar-plugin/package.json.hbs +47 -0
  39. package/templates/quasar-monorepo/packages/quasar-plugin/run/install.ts +6 -0
  40. package/templates/quasar-monorepo/packages/quasar-plugin/run/render.ts +9 -0
  41. package/templates/quasar-monorepo/packages/quasar-plugin/src/ui/components/HelloWorld.vue +9 -0
  42. package/templates/quasar-monorepo/packages/quasar-plugin/src/ui/index.ts +8 -0
  43. package/templates/quasar-monorepo/packages/quasar-plugin/src/ui/lang/en-us.ts +9 -0
  44. package/templates/quasar-monorepo/packages/quasar-plugin/src/ui/lang.ts +32 -0
  45. package/templates/quasar-monorepo/packages/quasar-plugin/src/ui/shims-vue.d.ts +6 -0
  46. package/templates/quasar-monorepo/packages/quasar-plugin/src/ui/utils/helpers.ts +1 -0
  47. package/templates/quasar-monorepo/packages/quasar-plugin/src/ui/vue-plugin.ts +10 -0
  48. package/templates/quasar-monorepo/packages/quasar-plugin/src/vite-plugin.ts.hbs +19 -0
  49. package/templates/quasar-monorepo/packages/quasar-plugin/tsconfig.build.plugin.json +12 -0
  50. package/templates/quasar-monorepo/packages/quasar-plugin/tsconfig.build.run.json +9 -0
  51. package/templates/quasar-monorepo/packages/quasar-plugin/tsconfig.json +29 -0
  52. package/templates/quasar-monorepo/packages/quasar-plugin/tsconfig.node.json +10 -0
  53. package/templates/quasar-monorepo/packages/quasar-plugin/tsconfig.types.json +17 -0
  54. package/templates/quasar-monorepo/packages/quasar-plugin/vite.config.ts +32 -0
  55. package/templates/quasar-monorepo/pnpm-workspace.yaml +2 -0
  56. package/templates/quasar-plugin/_gitignore +3 -0
  57. package/templates/quasar-plugin/package.json.hbs +47 -0
  58. package/templates/quasar-plugin/run/install.ts +6 -0
  59. package/templates/quasar-plugin/run/render.ts +9 -0
  60. package/templates/quasar-plugin/src/ui/components/HelloWorld.vue +9 -0
  61. package/templates/quasar-plugin/src/ui/index.ts +8 -0
  62. package/templates/quasar-plugin/src/ui/lang/en-us.ts +9 -0
  63. package/templates/quasar-plugin/src/ui/lang.ts +32 -0
  64. package/templates/quasar-plugin/src/ui/shims-vue.d.ts +6 -0
  65. package/templates/quasar-plugin/src/ui/utils/helpers.ts +1 -0
  66. package/templates/quasar-plugin/src/ui/vue-plugin.ts +10 -0
  67. package/templates/quasar-plugin/src/vite-plugin.ts.hbs +19 -0
  68. package/templates/quasar-plugin/tsconfig.build.plugin.json +12 -0
  69. package/templates/quasar-plugin/tsconfig.build.run.json +9 -0
  70. package/templates/quasar-plugin/tsconfig.json +29 -0
  71. package/templates/quasar-plugin/tsconfig.node.json +10 -0
  72. package/templates/quasar-plugin/tsconfig.types.json +17 -0
  73. package/templates/quasar-plugin/vite.config.ts +32 -0
  74. package/templates/vite-project/_gitignore +3 -0
  75. package/templates/vite-project/index.html +13 -0
  76. package/templates/vite-project/package.json.hbs +25 -0
  77. package/templates/vite-project/src/App.vue +9 -0
  78. package/templates/vite-project/src/assets/quasar-logo-vertical.svg +15 -0
  79. package/templates/vite-project/src/components/HelloWorld.vue +16 -0
  80. package/templates/vite-project/src/env.d.ts +8 -0
  81. package/templates/vite-project/src/layouts/MainLayout.vue +42 -0
  82. package/templates/vite-project/src/main.ts +17 -0
  83. package/templates/vite-project/src/pages/Error404.vue +25 -0
  84. package/templates/vite-project/src/pages/Index.vue +9 -0
  85. package/templates/vite-project/src/router/index.ts +15 -0
  86. package/templates/vite-project/src/router/routes.ts +18 -0
  87. package/templates/vite-project/tsconfig.json +15 -0
  88. package/templates/vite-project/vite.config.ts +17 -0
package/dist/cli.js ADDED
@@ -0,0 +1,74 @@
1
+ import { renderTemplate } from './index.js';
2
+ import parseArgs from 'minimist';
3
+ import inquirer from 'inquirer';
4
+ import { templates } from './templates.js';
5
+ const escape = (val) => JSON.stringify(val).slice(1, -1);
6
+ // const templates = (await promises.readdir(new URL('../templates/', import.meta.url), { withFileTypes: true }))
7
+ // .filter((file) => file.isDirectory())
8
+ // .map((file) => file.name)
9
+ const argv = parseArgs(process.argv.slice(2), {
10
+ string: ['template']
11
+ });
12
+ let questions = [];
13
+ if (!argv.template) {
14
+ // throw new Error('Please provide a template argument: --template')
15
+ questions = [
16
+ ...questions,
17
+ {
18
+ type: 'list',
19
+ name: 'template',
20
+ message: 'Which template would you like to use?',
21
+ choices: Object.entries(templates).map(([key, value]) => ({
22
+ name: value.fullName,
23
+ value: key,
24
+ short: value.description
25
+ }))
26
+ }
27
+ ];
28
+ }
29
+ questions = [
30
+ ...questions,
31
+ {
32
+ type: 'input',
33
+ name: 'name',
34
+ message: 'Package name',
35
+ validate: (val) => val && val.length > 0,
36
+ default: (answers) => {
37
+ return argv._[0];
38
+ }
39
+ },
40
+ {
41
+ type: 'input',
42
+ name: 'productName',
43
+ message: 'Project product name',
44
+ default: 'App',
45
+ when: (answers) => {
46
+ return answers.template !== 'plugin';
47
+ },
48
+ validate: (val) => val && val.length > 0,
49
+ transformer: escape
50
+ },
51
+ {
52
+ type: 'input',
53
+ name: 'description',
54
+ message: 'Project description',
55
+ default: 'A Vitrify app',
56
+ transformer: escape
57
+ },
58
+ {
59
+ type: 'input',
60
+ name: 'author',
61
+ message: 'Author'
62
+ }
63
+ ];
64
+ const answers = await inquirer.prompt(questions);
65
+ const cwdUrl = new URL('', `file://${process.cwd()}/`);
66
+ const templateVariables = answers;
67
+ const templateUrl =
68
+ // @ts-ignore
69
+ templates[answers.template].url || templates[argv.template].url;
70
+ renderTemplate({
71
+ templateUrl,
72
+ templateVariables,
73
+ outputDir: new URL(`./${answers.name}/`, cwdUrl)
74
+ });
package/dist/index.js ADDED
@@ -0,0 +1,83 @@
1
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'fs';
2
+ import Handlebars from 'handlebars';
3
+ export const renderAll = ({ inputPath, outputPath, templateVariables, exclude }) => {
4
+ if (!existsSync(outputPath)) {
5
+ mkdirSync(outputPath);
6
+ }
7
+ const content = readdirSync(inputPath, { withFileTypes: true });
8
+ const files = content
9
+ .filter((dirent) => !dirent.isDirectory())
10
+ .map((dirent) => dirent.name);
11
+ const directories = content
12
+ .filter((dirent) => dirent.isDirectory())
13
+ .map((dirent) => dirent.name);
14
+ for (let file of files) {
15
+ const fileContent = readFileSync(new URL(`./${file}`, inputPath), 'utf-8');
16
+ let output;
17
+ if (file.endsWith('.hbs')) {
18
+ const template = Handlebars.compile(fileContent);
19
+ output = template(templateVariables);
20
+ }
21
+ else {
22
+ output = fileContent;
23
+ }
24
+ if (file.startsWith('_'))
25
+ file = file.replace('_', '.');
26
+ const fileOutputPath = new URL(file.replace('.hbs', ''), outputPath);
27
+ writeFileSync(fileOutputPath, output, 'utf-8');
28
+ }
29
+ for (const directory of directories) {
30
+ renderAll({
31
+ inputPath: new URL(`./${directory}/`, inputPath),
32
+ outputPath: new URL(`./${directory}/`, outputPath),
33
+ templateVariables
34
+ });
35
+ }
36
+ };
37
+ export const render = ({ inputPath, outputPath, templateVariables }) => {
38
+ const outputFolder = new URL('./', outputPath);
39
+ if (!existsSync(outputFolder)) {
40
+ mkdirSync(outputFolder);
41
+ }
42
+ const fileContent = readFileSync(new URL(inputPath), 'utf-8');
43
+ const template = Handlebars.compile(fileContent);
44
+ const compiled = template(templateVariables);
45
+ writeFileSync(outputPath, compiled, 'utf-8');
46
+ };
47
+ export const renderTemplate = ({ templateUrl, templateVariables, outputDir }) => {
48
+ if (outputDir.pathname[outputDir.pathname.length - 1] !== '/') {
49
+ throw new Error('outputDir is not a directory. Make sure the URL ends with a /');
50
+ }
51
+ // const templatesDir = new URL(`../templates/`, import.meta.url)
52
+ // const templateDir = new URL(`../templates/${template}/`, import.meta.url)
53
+ /**
54
+ * General Quasar project files
55
+ */
56
+ // render({
57
+ // inputPath: new URL('./package.json.hbs', templatesDir),
58
+ // outputPath: new URL(`./package.json`, outputDir),
59
+ // templateVariables
60
+ // })
61
+ // render({
62
+ // inputPath: new URL('./quasar.conf.js', templatesDir),
63
+ // outputPath: new URL(`./quasar.conf.js`, outputDir),
64
+ // templateVariables
65
+ // })
66
+ // render({
67
+ // inputPath: new URL('_gitignore', templateUrl),
68
+ // outputPath: new URL(`.gitignore`, outputDir),
69
+ // templateVariables
70
+ // })
71
+ /**
72
+ * Specific template files
73
+ */
74
+ renderAll({
75
+ inputPath: new URL(`./`, templateUrl),
76
+ outputPath: new URL(`./`, outputDir),
77
+ templateVariables
78
+ });
79
+ };
80
+ // renderTemplate({
81
+ // template: 'quasar-ts',
82
+ // outputDir: new URL('./generated/', import.meta.url)
83
+ // })
@@ -0,0 +1,20 @@
1
+ export const templates = {
2
+ quasar: {
3
+ name: 'quasar',
4
+ fullName: 'Quasar Project',
5
+ description: 'Quasar Framework project',
6
+ url: new URL('../templates/quasar/', import.meta.url)
7
+ },
8
+ plugin: {
9
+ name: 'quasar-plugin',
10
+ fullName: 'Quasar Plugin',
11
+ description: 'Quasar Framework plugin',
12
+ url: new URL('../templates/quasar-plugin/', import.meta.url)
13
+ },
14
+ quasarMonorepo: {
15
+ name: 'quasar-monorepo',
16
+ fullName: 'Quasar monorepo (project + plugin)',
17
+ description: 'Quasar Framework monorepo',
18
+ url: new URL('../templates/quasar-monorepo/', import.meta.url)
19
+ }
20
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,16 @@
1
+ export declare const renderAll: ({ inputPath, outputPath, templateVariables, exclude }: {
2
+ inputPath: URL;
3
+ outputPath: URL;
4
+ templateVariables: Record<string, any>;
5
+ exclude?: string[] | undefined;
6
+ }) => void;
7
+ export declare const render: ({ inputPath, outputPath, templateVariables }: {
8
+ inputPath: URL;
9
+ outputPath: URL;
10
+ templateVariables: Record<string, any>;
11
+ }) => void;
12
+ export declare const renderTemplate: ({ templateUrl, templateVariables, outputDir }: {
13
+ templateUrl: URL;
14
+ templateVariables: Record<string, any>;
15
+ outputDir: URL;
16
+ }) => void;
@@ -0,0 +1,20 @@
1
+ export declare const templates: {
2
+ quasar: {
3
+ name: string;
4
+ fullName: string;
5
+ description: string;
6
+ url: URL;
7
+ };
8
+ plugin: {
9
+ name: string;
10
+ fullName: string;
11
+ description: string;
12
+ url: URL;
13
+ };
14
+ quasarMonorepo: {
15
+ name: string;
16
+ fullName: string;
17
+ description: string;
18
+ url: URL;
19
+ };
20
+ };
package/package.json CHANGED
@@ -1,18 +1,19 @@
1
1
  {
2
2
  "name": "create-vitrify",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "license": "MIT",
5
5
  "author": "Stefan van Herwijnen",
6
+ "type": "module",
6
7
  "bin": {
7
- "create-vitrify": "dist/index.js"
8
+ "create-vitrify": "dist/cli.js"
8
9
  },
9
- "files": [
10
- "bin",
11
- "templates"
12
- ],
13
- "main": "dist/index.js",
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "echo \"Error: no test specified\" && exit 0"
13
+ },
14
+ "main": "dist/cli.js",
14
15
  "engines": {
15
- "node": ">=12.0.0"
16
+ "node": ">=16.0.0"
16
17
  },
17
18
  "repository": {
18
19
  "type": "git",
@@ -23,5 +24,24 @@
23
24
  "url": "https://github.com/simsustech/vitrify/issues"
24
25
  },
25
26
  "homepage": "https://github.com/simsustech/vitrify/tree/main/packages/create-vitrify#readme",
26
- "dependencies": {}
27
- }
27
+ "dependencies": {
28
+ "handlebars": "^4.7.7",
29
+ "inquirer": "^8.2.2",
30
+ "minimist": "^1.2.6"
31
+ },
32
+ "devDependencies": {
33
+ "@types/inquirer": "^8.2.1",
34
+ "@types/minimist": "^1.2.2",
35
+ "@types/node": "^17.0.23",
36
+ "vite": "^3.0.0-alpha.9",
37
+ "vue": "^3.2.37"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "templates"
42
+ ],
43
+ "publishConfig": {
44
+ "access": "public",
45
+ "registry": "https://registry.npmjs.org/"
46
+ }
47
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "recommendations": ["johnsoncodehk.volar"]
3
+ }
@@ -0,0 +1,3 @@
1
+ node_modules
2
+ dist
3
+ *.local
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "{{ name }}",
3
+ "productName": "{{ productName }}",
4
+ "version": "1.0.0",
5
+ "type": "module",
6
+ "description": "{{ description }}",
7
+ "scripts": {
8
+ "dev": "vitrify dev",
9
+ "build": "vitrify build",
10
+ "build:ssr": "vitrify build -m ssr",
11
+ "test": "echo \"Error: no test specified\" && exit 1"
12
+ },
13
+ "author": "{{ author }}",
14
+ "dependencies": {
15
+ "@fastify/static": "^6.4.0",
16
+ "fastify": "^4.0.0",
17
+ "fastify-plugin": "^3.0.1",
18
+ "vue": "^3.2.37",
19
+ "vue-router": "^4.0.12",
20
+ "@quasar/extras": "^1.13.1",
21
+ "quasar": "^2.6.0"
22
+ },
23
+ "devDependencies": {
24
+ "vitrify": "^0.4.0",
25
+ "typescript": "^4.6.2"
26
+ }
27
+ }
@@ -0,0 +1,3 @@
1
+ test('App', async () => {
2
+ expect(true).toBeTruthy()
3
+ })
@@ -0,0 +1,9 @@
1
+ <template>
2
+ <router-view></router-view>
3
+ </template>
4
+
5
+ <script setup lang="ts"></script>
6
+
7
+ <style lang="sass">
8
+ // do not remove, required for additionalData import
9
+ </style>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356 360">
2
+ <path
3
+ d="M43.4 303.4c0 3.8-2.3 6.3-7.1 6.3h-15v-22h14.4c4.3 0 6.2 2.2 6.2 5.2 0 2.6-1.5 4.4-3.4 5 2.8.4 4.9 2.5 4.9 5.5zm-8-13H24.1v6.9H35c2.1 0 4-1.3 4-3.8 0-2.2-1.3-3.1-3.7-3.1zm5.1 12.6c0-2.3-1.8-3.7-4-3.7H24.2v7.7h11.7c3.4 0 4.6-1.8 4.6-4zm36.3 4v2.7H56v-22h20.6v2.7H58.9v6.8h14.6v2.3H58.9v7.5h17.9zm23-5.8v8.5H97v-8.5l-11-13.4h3.4l8.9 11 8.8-11h3.4l-10.8 13.4zm19.1-1.8V298c0-7.9 5.2-10.7 12.7-10.7 7.5 0 13 2.8 13 10.7v1.4c0 7.9-5.5 10.8-13 10.8s-12.7-3-12.7-10.8zm22.7 0V298c0-5.7-3.9-8-10-8-6 0-9.8 2.3-9.8 8v1.4c0 5.8 3.8 8.1 9.8 8.1 6 0 10-2.3 10-8.1zm37.2-11.6v21.9h-2.9l-15.8-17.9v17.9h-2.8v-22h3l15.6 18v-18h2.9zm37.9 10.2v1.3c0 7.8-5.2 10.4-12.4 10.4H193v-22h11.2c7.2 0 12.4 2.8 12.4 10.3zm-3 0c0-5.3-3.3-7.6-9.4-7.6h-8.4V307h8.4c6 0 9.5-2 9.5-7.7V298zm50.8-7.6h-9.7v19.3h-3v-19.3h-9.7v-2.6h22.4v2.6zm34.4-2.6v21.9h-3v-10.1h-16.8v10h-2.8v-21.8h2.8v9.2H296v-9.2h2.9zm34.9 19.2v2.7h-20.7v-22h20.6v2.7H316v6.8h14.5v2.3H316v7.5h17.8zM24 340.2v7.3h13.9v2.4h-14v9.6H21v-22h20v2.7H24zm41.5 11.4h-9.8v7.9H53v-22h13.3c5.1 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6H66c3.1 0 5.3-1.5 5.3-4.7 0-3.3-2.2-4.1-5.3-4.1H55.7v8.8zm47.9 6.2H89l-2 4.3h-3.2l10.7-22.2H98l10.7 22.2h-3.2l-2-4.3zm-1-2.3l-6.3-13-6 13h12.2zm46.3-15.3v21.9H146v-17.2L135.7 358h-2.1l-10.2-15.6v17h-2.8v-21.8h3l11 16.9 11.3-17h3zm35 19.3v2.6h-20.7v-22h20.6v2.7H166v6.8h14.5v2.3H166v7.6h17.8zm47-19.3l-8.3 22h-3l-7.1-18.6-7 18.6h-3l-8.2-22h3.3L204 356l6.8-18.5h3.4L221 356l6.6-18.5h3.3zm10 11.6v-1.4c0-7.8 5.2-10.7 12.7-10.7 7.6 0 13 2.9 13 10.7v1.4c0 7.9-5.4 10.8-13 10.8-7.5 0-12.7-3-12.7-10.8zm22.8 0v-1.4c0-5.7-4-8-10-8s-9.9 2.3-9.9 8v1.4c0 5.8 3.8 8.2 9.8 8.2 6.1 0 10-2.4 10-8.2zm28.3 2.4h-9.8v7.9h-2.8v-22h13.2c5.2 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6h10.2c3 0 5.2-1.5 5.2-4.7 0-3.3-2.1-4.1-5.2-4.1h-10.2v8.8zm40.3-1.5l-6.8 5.6v6.4h-2.9v-22h2.9v12.3l15.2-12.2h3.7l-9.9 8.1 10.3 13.8h-3.6l-8.9-12z" />
4
+ <path fill="#050A14"
5
+ d="M188.4 71.7a10.4 10.4 0 01-20.8 0 10.4 10.4 0 1120.8 0zM224.2 45c-2.2-3.9-5-7.5-8.2-10.7l-12 7c-3.7-3.2-8-5.7-12.6-7.3a49.4 49.4 0 00-9.7 13.9 59 59 0 0140.1 14l7.6-4.4a57 57 0 00-5.2-12.5zM178 125.1c4.5 0 9-.6 13.4-1.7v-14a40 40 0 0012.5-7.2 47.7 47.7 0 00-7.1-15.3 59 59 0 01-32.2 27.7v8.7c4.4 1.2 8.9 1.8 13.4 1.8zM131.8 45c-2.3 4-4 8.1-5.2 12.5l12 7a40 40 0 000 14.4c5.7 1.5 11.3 2 16.9 1.5a59 59 0 01-8-41.7l-7.5-4.3c-3.2 3.2-6 6.7-8.2 10.6z" />
6
+ <path fill="#00B4FF"
7
+ d="M224.2 98.4c2.3-3.9 4-8 5.2-12.4l-12-7a40 40 0 000-14.5c-5.7-1.5-11.3-2-16.9-1.5a59 59 0 018 41.7l7.5 4.4c3.2-3.2 6-6.8 8.2-10.7zm-92.4 0c2.2 4 5 7.5 8.2 10.7l12-7a40 40 0 0012.6 7.3c4-4.1 7.3-8.8 9.7-13.8a59 59 0 01-40-14l-7.7 4.4c1.2 4.3 3 8.5 5.2 12.4zm46.2-80c-4.5 0-9 .5-13.4 1.7V34a40 40 0 00-12.5 7.2c1.5 5.7 4 10.8 7.1 15.4a59 59 0 0132.2-27.7V20a53.3 53.3 0 00-13.4-1.8z" />
8
+ <path fill="#00B4FF"
9
+ d="M178 9.2a62.6 62.6 0 11-.1 125.2A62.6 62.6 0 01178 9.2m0-9.2a71.7 71.7 0 100 143.5A71.7 71.7 0 00178 0z" />
10
+ <path fill="#050A14"
11
+ d="M96.6 212v4.3c-9.2-.8-15.4-5.8-15.4-17.8V180h4.6v18.4c0 8.6 4 12.6 10.8 13.5zm16-31.9v18.4c0 8.9-4.3 12.8-10.9 13.5v4.4c9.2-.7 15.5-5.6 15.5-18v-18.3h-4.7zM62.2 199v-2.2c0-12.7-8.8-17.4-21-17.4-12.1 0-20.7 4.7-20.7 17.4v2.2c0 12.8 8.6 17.6 20.7 17.6 1.5 0 3-.1 4.4-.3l11.8 6.2 2-3.3-8.2-4-6.4-3.1a32 32 0 01-3.6.2c-9.8 0-16-3.9-16-13.3v-2.2c0-9.3 6.2-13.1 16-13.1 9.9 0 16.3 3.8 16.3 13.1v2.2c0 5.3-2.1 8.7-5.6 10.8l4.8 2.4c3.4-2.8 5.5-7 5.5-13.2zM168 215.6h5.1L156 179.7h-4.8l17 36zM143 205l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.8-3.7H143zm133.7 10.7h5.2l-17.3-35.9h-4.8l17 36zm-25-10.7l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.7-3.7h-14.8zm73.8-2.5c6-1.2 9-5.4 9-11.4 0-8-4.5-10.9-12.9-10.9h-21.4v35.5h4.6v-31.3h16.5c5 0 8.5 1.4 8.5 6.7 0 5.2-3.5 7.7-8.5 7.7h-11.4v4.1h10.7l9.3 12.8h5.5l-9.9-13.2zm-117.4 9.9c-9.7 0-14.7-2.5-18.6-6.3l-2.2 3.8c5.1 5 11 6.7 21 6.7 1.6 0 3.1-.1 4.6-.3l-1.9-4h-3zm18.4-7c0-6.4-4.7-8.6-13.8-9.4l-10.1-1c-6.7-.7-9.3-2.2-9.3-5.6 0-2.5 1.4-4 4.6-5l-1.8-3.8c-4.7 1.4-7.5 4.2-7.5 8.9 0 5.2 3.4 8.7 13 9.6l11.3 1.2c6.4.6 8.9 2 8.9 5.4 0 2.7-2.1 4.7-6 5.8l1.8 3.9c5.3-1.6 8.9-4.7 8.9-10zm-20.3-21.9c7.9 0 13.3 1.8 18.1 5.7l1.8-3.9a30 30 0 00-19.6-5.9c-2 0-4 .1-5.7.3l1.9 4 3.5-.2z" />
12
+ <path fill="#00B4FF"
13
+ d="M.5 251.9c29.6-.5 59.2-.8 88.8-1l88.7-.3 88.7.3 44.4.4 44.4.6-44.4.6-44.4.4-88.7.3-88.7-.3a7981 7981 0 01-88.8-1z" />
14
+ <path fill="none" d="M-565.2 324H-252v15.8h-313.2z" />
15
+ </svg>
@@ -0,0 +1,16 @@
1
+ <template>
2
+ <q-card>
3
+ <q-card-section>
4
+ <div class="row no-wrap items-center">
5
+ <q-avatar square style="height: 300px; width: 300px">
6
+ <img alt="Logo" :src="logo" />
7
+ </q-avatar>
8
+ </div>
9
+ </q-card-section>
10
+ </q-card>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import logo from 'src/assets/quasar-logo-vertical.svg'
15
+ const name = 'HelloWorld'
16
+ </script>
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <q-layout view="lHh Lpr lFf">
3
+ <q-header elevated>
4
+ <q-toolbar>
5
+ <q-btn
6
+ flat
7
+ dense
8
+ round
9
+ icon="menu"
10
+ aria-label="Menu"
11
+ @click="toggleLeftDrawer"
12
+ />
13
+
14
+ <q-toolbar-title> Quasar App </q-toolbar-title>
15
+
16
+ <div>Quasar v{{ $q.version }}</div>
17
+ </q-toolbar>
18
+ </q-header>
19
+
20
+ <q-drawer v-model="leftDrawerOpen" show-if-above bordered>
21
+ <q-list>
22
+ <q-item-label header> Essential Links </q-item-label>
23
+ </q-list>
24
+ </q-drawer>
25
+
26
+ <q-page-container>
27
+ <router-view />
28
+ </q-page-container>
29
+ </q-layout>
30
+ </template>
31
+
32
+ <script setup lang="ts">
33
+ import { ref } from 'vue'
34
+ import { useQuasar } from 'quasar'
35
+
36
+ const $q = useQuasar()
37
+ const leftDrawerOpen = ref(false)
38
+
39
+ const toggleLeftDrawer = () => {
40
+ leftDrawerOpen.value = !leftDrawerOpen.value
41
+ }
42
+ </script>
@@ -0,0 +1,25 @@
1
+ <template>
2
+ <div
3
+ class="fullscreen bg-blue text-white text-center q-pa-md flex flex-center"
4
+ >
5
+ <div>
6
+ <div style="font-size: 30vh">404</div>
7
+
8
+ <div class="text-h2" style="opacity: 0.4">Oops. Nothing here...</div>
9
+
10
+ <q-btn
11
+ class="q-mt-xl"
12
+ color="white"
13
+ text-color="blue"
14
+ unelevated
15
+ to="/"
16
+ label="Go Home"
17
+ no-caps
18
+ />
19
+ </div>
20
+ </div>
21
+ </template>
22
+
23
+ <script setup lang="ts">
24
+ const name = 'Error404'
25
+ </script>
@@ -0,0 +1,9 @@
1
+ <template>
2
+ <q-page class="row items-center justify-evenly">
3
+ <hello-world> </hello-world>
4
+ </q-page>
5
+ </template>
6
+
7
+ <script setup lang="ts">
8
+ import HelloWorld from 'src/components/HelloWorld.vue'
9
+ </script>
@@ -0,0 +1,17 @@
1
+ import {
2
+ createMemoryHistory,
3
+ createRouter as _createRouter,
4
+ createWebHistory
5
+ } from 'vue-router'
6
+ import routes from './routes'
7
+
8
+ export default function createRouter() {
9
+ return _createRouter({
10
+ // use appropriate history implementation for server/client
11
+ // import.meta.env.SSR is injected by Vite.
12
+ history: import.meta.env.SSR
13
+ ? createMemoryHistory(__BASE_URL__)
14
+ : createWebHistory(__BASE_URL__),
15
+ routes
16
+ })
17
+ }
@@ -0,0 +1,18 @@
1
+ import { RouteRecordRaw } from 'vue-router'
2
+
3
+ const routes: RouteRecordRaw[] = [
4
+ {
5
+ path: '/',
6
+ component: () => import('src/layouts/MainLayout.vue'),
7
+ children: [{ path: '', component: () => import('src/pages/Index.vue') }]
8
+ },
9
+
10
+ // Always leave this as last one,
11
+ // but you can also remove it
12
+ {
13
+ path: '/:catchAll(.*)*',
14
+ component: () => import('src/pages/Error404.vue')
15
+ }
16
+ ]
17
+
18
+ export default routes
@@ -0,0 +1,15 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "esnext",
4
+ "useDefineForClassFields": true,
5
+ "module": "esnext",
6
+ "moduleResolution": "node",
7
+ "strict": true,
8
+ "jsx": "preserve",
9
+ "sourceMap": true,
10
+ "resolveJsonModule": true,
11
+ "esModuleInterop": true,
12
+ "lib": ["esnext", "dom"]
13
+ },
14
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
15
+ }
@@ -0,0 +1,21 @@
1
+ export default function ({ mode, command }) {
2
+ return {
3
+ vitrify: {
4
+ hooks: {
5
+ // Vitrify hooks
6
+ },
7
+ sassVariables: {
8
+ $primary: '#000000'
9
+ }
10
+ },
11
+ quasar: {
12
+ extras: ['material-icons'],
13
+ framework: {
14
+ components: [
15
+ // Deprecated
16
+ ],
17
+ plugins: []
18
+ }
19
+ }
20
+ }
21
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "quasar-monorepo",
3
+ "private": true,
4
+ "workspaces": [
5
+ "packages/*"
6
+ ],
7
+ "engines": {
8
+ "node": ">=12.2.0"
9
+ },
10
+ "scripts": {}
11
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "recommendations": ["johnsoncodehk.volar"]
3
+ }
@@ -0,0 +1,3 @@
1
+ node_modules
2
+ dist
3
+ *.local
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "{{ name }}",
3
+ "productName": "{{ productName }}",
4
+ "version": "1.0.0",
5
+ "type": "module",
6
+ "description": "{{ description }}",
7
+ "scripts": {
8
+ "dev": "vitrify dev",
9
+ "build": "vitrify build",
10
+ "build:ssr": "vitrify build -m ssr",
11
+ "test": "echo \"Error: no test specified\" && exit 1"
12
+ },
13
+ "author": "{{ author }}",
14
+ "dependencies": {
15
+ "@fastify/static": "^6.4.0",
16
+ "fastify": "^4.0.0",
17
+ "fastify-plugin": "^3.0.1",
18
+ "vue": "^3.2.37",
19
+ "vue-router": "^4.0.12",
20
+ "@quasar/extras": "^1.13.1",
21
+ "quasar": "^2.6.0",
22
+ "quasar-plugin-{{ name }}": "^0.1.0"
23
+ },
24
+ "devDependencies": {
25
+ "vitrify": "^0.4.0",
26
+ "typescript": "^4.6.2"
27
+ }
28
+ }
@@ -0,0 +1,3 @@
1
+ test('App', async () => {
2
+ expect(true).toBeTruthy()
3
+ })
@@ -0,0 +1,9 @@
1
+ <template>
2
+ <router-view></router-view>
3
+ </template>
4
+
5
+ <script setup lang="ts"></script>
6
+
7
+ <style lang="sass">
8
+ // do not remove, required for additionalData import
9
+ </style>
@@ -0,0 +1,15 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356 360">
2
+ <path
3
+ d="M43.4 303.4c0 3.8-2.3 6.3-7.1 6.3h-15v-22h14.4c4.3 0 6.2 2.2 6.2 5.2 0 2.6-1.5 4.4-3.4 5 2.8.4 4.9 2.5 4.9 5.5zm-8-13H24.1v6.9H35c2.1 0 4-1.3 4-3.8 0-2.2-1.3-3.1-3.7-3.1zm5.1 12.6c0-2.3-1.8-3.7-4-3.7H24.2v7.7h11.7c3.4 0 4.6-1.8 4.6-4zm36.3 4v2.7H56v-22h20.6v2.7H58.9v6.8h14.6v2.3H58.9v7.5h17.9zm23-5.8v8.5H97v-8.5l-11-13.4h3.4l8.9 11 8.8-11h3.4l-10.8 13.4zm19.1-1.8V298c0-7.9 5.2-10.7 12.7-10.7 7.5 0 13 2.8 13 10.7v1.4c0 7.9-5.5 10.8-13 10.8s-12.7-3-12.7-10.8zm22.7 0V298c0-5.7-3.9-8-10-8-6 0-9.8 2.3-9.8 8v1.4c0 5.8 3.8 8.1 9.8 8.1 6 0 10-2.3 10-8.1zm37.2-11.6v21.9h-2.9l-15.8-17.9v17.9h-2.8v-22h3l15.6 18v-18h2.9zm37.9 10.2v1.3c0 7.8-5.2 10.4-12.4 10.4H193v-22h11.2c7.2 0 12.4 2.8 12.4 10.3zm-3 0c0-5.3-3.3-7.6-9.4-7.6h-8.4V307h8.4c6 0 9.5-2 9.5-7.7V298zm50.8-7.6h-9.7v19.3h-3v-19.3h-9.7v-2.6h22.4v2.6zm34.4-2.6v21.9h-3v-10.1h-16.8v10h-2.8v-21.8h2.8v9.2H296v-9.2h2.9zm34.9 19.2v2.7h-20.7v-22h20.6v2.7H316v6.8h14.5v2.3H316v7.5h17.8zM24 340.2v7.3h13.9v2.4h-14v9.6H21v-22h20v2.7H24zm41.5 11.4h-9.8v7.9H53v-22h13.3c5.1 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6H66c3.1 0 5.3-1.5 5.3-4.7 0-3.3-2.2-4.1-5.3-4.1H55.7v8.8zm47.9 6.2H89l-2 4.3h-3.2l10.7-22.2H98l10.7 22.2h-3.2l-2-4.3zm-1-2.3l-6.3-13-6 13h12.2zm46.3-15.3v21.9H146v-17.2L135.7 358h-2.1l-10.2-15.6v17h-2.8v-21.8h3l11 16.9 11.3-17h3zm35 19.3v2.6h-20.7v-22h20.6v2.7H166v6.8h14.5v2.3H166v7.6h17.8zm47-19.3l-8.3 22h-3l-7.1-18.6-7 18.6h-3l-8.2-22h3.3L204 356l6.8-18.5h3.4L221 356l6.6-18.5h3.3zm10 11.6v-1.4c0-7.8 5.2-10.7 12.7-10.7 7.6 0 13 2.9 13 10.7v1.4c0 7.9-5.4 10.8-13 10.8-7.5 0-12.7-3-12.7-10.8zm22.8 0v-1.4c0-5.7-4-8-10-8s-9.9 2.3-9.9 8v1.4c0 5.8 3.8 8.2 9.8 8.2 6.1 0 10-2.4 10-8.2zm28.3 2.4h-9.8v7.9h-2.8v-22h13.2c5.2 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6h10.2c3 0 5.2-1.5 5.2-4.7 0-3.3-2.1-4.1-5.2-4.1h-10.2v8.8zm40.3-1.5l-6.8 5.6v6.4h-2.9v-22h2.9v12.3l15.2-12.2h3.7l-9.9 8.1 10.3 13.8h-3.6l-8.9-12z" />
4
+ <path fill="#050A14"
5
+ d="M188.4 71.7a10.4 10.4 0 01-20.8 0 10.4 10.4 0 1120.8 0zM224.2 45c-2.2-3.9-5-7.5-8.2-10.7l-12 7c-3.7-3.2-8-5.7-12.6-7.3a49.4 49.4 0 00-9.7 13.9 59 59 0 0140.1 14l7.6-4.4a57 57 0 00-5.2-12.5zM178 125.1c4.5 0 9-.6 13.4-1.7v-14a40 40 0 0012.5-7.2 47.7 47.7 0 00-7.1-15.3 59 59 0 01-32.2 27.7v8.7c4.4 1.2 8.9 1.8 13.4 1.8zM131.8 45c-2.3 4-4 8.1-5.2 12.5l12 7a40 40 0 000 14.4c5.7 1.5 11.3 2 16.9 1.5a59 59 0 01-8-41.7l-7.5-4.3c-3.2 3.2-6 6.7-8.2 10.6z" />
6
+ <path fill="#00B4FF"
7
+ d="M224.2 98.4c2.3-3.9 4-8 5.2-12.4l-12-7a40 40 0 000-14.5c-5.7-1.5-11.3-2-16.9-1.5a59 59 0 018 41.7l7.5 4.4c3.2-3.2 6-6.8 8.2-10.7zm-92.4 0c2.2 4 5 7.5 8.2 10.7l12-7a40 40 0 0012.6 7.3c4-4.1 7.3-8.8 9.7-13.8a59 59 0 01-40-14l-7.7 4.4c1.2 4.3 3 8.5 5.2 12.4zm46.2-80c-4.5 0-9 .5-13.4 1.7V34a40 40 0 00-12.5 7.2c1.5 5.7 4 10.8 7.1 15.4a59 59 0 0132.2-27.7V20a53.3 53.3 0 00-13.4-1.8z" />
8
+ <path fill="#00B4FF"
9
+ d="M178 9.2a62.6 62.6 0 11-.1 125.2A62.6 62.6 0 01178 9.2m0-9.2a71.7 71.7 0 100 143.5A71.7 71.7 0 00178 0z" />
10
+ <path fill="#050A14"
11
+ d="M96.6 212v4.3c-9.2-.8-15.4-5.8-15.4-17.8V180h4.6v18.4c0 8.6 4 12.6 10.8 13.5zm16-31.9v18.4c0 8.9-4.3 12.8-10.9 13.5v4.4c9.2-.7 15.5-5.6 15.5-18v-18.3h-4.7zM62.2 199v-2.2c0-12.7-8.8-17.4-21-17.4-12.1 0-20.7 4.7-20.7 17.4v2.2c0 12.8 8.6 17.6 20.7 17.6 1.5 0 3-.1 4.4-.3l11.8 6.2 2-3.3-8.2-4-6.4-3.1a32 32 0 01-3.6.2c-9.8 0-16-3.9-16-13.3v-2.2c0-9.3 6.2-13.1 16-13.1 9.9 0 16.3 3.8 16.3 13.1v2.2c0 5.3-2.1 8.7-5.6 10.8l4.8 2.4c3.4-2.8 5.5-7 5.5-13.2zM168 215.6h5.1L156 179.7h-4.8l17 36zM143 205l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.8-3.7H143zm133.7 10.7h5.2l-17.3-35.9h-4.8l17 36zm-25-10.7l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.7-3.7h-14.8zm73.8-2.5c6-1.2 9-5.4 9-11.4 0-8-4.5-10.9-12.9-10.9h-21.4v35.5h4.6v-31.3h16.5c5 0 8.5 1.4 8.5 6.7 0 5.2-3.5 7.7-8.5 7.7h-11.4v4.1h10.7l9.3 12.8h5.5l-9.9-13.2zm-117.4 9.9c-9.7 0-14.7-2.5-18.6-6.3l-2.2 3.8c5.1 5 11 6.7 21 6.7 1.6 0 3.1-.1 4.6-.3l-1.9-4h-3zm18.4-7c0-6.4-4.7-8.6-13.8-9.4l-10.1-1c-6.7-.7-9.3-2.2-9.3-5.6 0-2.5 1.4-4 4.6-5l-1.8-3.8c-4.7 1.4-7.5 4.2-7.5 8.9 0 5.2 3.4 8.7 13 9.6l11.3 1.2c6.4.6 8.9 2 8.9 5.4 0 2.7-2.1 4.7-6 5.8l1.8 3.9c5.3-1.6 8.9-4.7 8.9-10zm-20.3-21.9c7.9 0 13.3 1.8 18.1 5.7l1.8-3.9a30 30 0 00-19.6-5.9c-2 0-4 .1-5.7.3l1.9 4 3.5-.2z" />
12
+ <path fill="#00B4FF"
13
+ d="M.5 251.9c29.6-.5 59.2-.8 88.8-1l88.7-.3 88.7.3 44.4.4 44.4.6-44.4.6-44.4.4-88.7.3-88.7-.3a7981 7981 0 01-88.8-1z" />
14
+ <path fill="none" d="M-565.2 324H-252v15.8h-313.2z" />
15
+ </svg>
@@ -0,0 +1,16 @@
1
+ <template>
2
+ <q-card>
3
+ <q-card-section>
4
+ <div class="row no-wrap items-center">
5
+ <q-avatar square style="height: 300px; width: 300px">
6
+ <img alt="Logo" :src="logo" />
7
+ </q-avatar>
8
+ </div>
9
+ </q-card-section>
10
+ </q-card>
11
+ </template>
12
+
13
+ <script lang="ts" setup>
14
+ import logo from 'src/assets/quasar-logo-vertical.svg'
15
+ const name = 'HelloWorld'
16
+ </script>