@voltkit/create-volt 0.1.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 (52) hide show
  1. package/dist/__tests__/index.test.d.ts +1 -0
  2. package/dist/__tests__/index.test.js +158 -0
  3. package/dist/config-updater.d.ts +1 -0
  4. package/dist/config-updater.js +267 -0
  5. package/dist/create-project.d.ts +2 -0
  6. package/dist/create-project.js +46 -0
  7. package/dist/index.d.ts +11 -0
  8. package/dist/index.js +65 -0
  9. package/dist/options.d.ts +8 -0
  10. package/dist/options.js +32 -0
  11. package/dist/templates/enterprise-ts/index.html +17 -0
  12. package/dist/templates/enterprise-ts/package.json +21 -0
  13. package/dist/templates/enterprise-ts/src/backend.ts +3 -0
  14. package/dist/templates/enterprise-ts/src/main.ts +9 -0
  15. package/dist/templates/enterprise-ts/src/style.css +50 -0
  16. package/dist/templates/enterprise-ts/tsconfig.json +12 -0
  17. package/dist/templates/enterprise-ts/volt.config.ts +26 -0
  18. package/dist/templates/react-ts/index.html +12 -0
  19. package/dist/templates/react-ts/package.json +23 -0
  20. package/dist/templates/react-ts/src/App.tsx +15 -0
  21. package/dist/templates/react-ts/src/backend.ts +3 -0
  22. package/dist/templates/react-ts/src/main.tsx +10 -0
  23. package/dist/templates/react-ts/src/style.css +50 -0
  24. package/dist/templates/react-ts/tsconfig.json +13 -0
  25. package/dist/templates/react-ts/vite.config.ts +6 -0
  26. package/dist/templates/react-ts/volt.config.ts +12 -0
  27. package/dist/templates/svelte-ts/index.html +12 -0
  28. package/dist/templates/svelte-ts/package.json +20 -0
  29. package/dist/templates/svelte-ts/src/App.svelte +20 -0
  30. package/dist/templates/svelte-ts/src/backend.ts +3 -0
  31. package/dist/templates/svelte-ts/src/main.ts +7 -0
  32. package/dist/templates/svelte-ts/src/style.css +43 -0
  33. package/dist/templates/svelte-ts/tsconfig.json +12 -0
  34. package/dist/templates/svelte-ts/vite.config.ts +6 -0
  35. package/dist/templates/svelte-ts/volt.config.ts +12 -0
  36. package/dist/templates/vanilla-ts/index.html +17 -0
  37. package/dist/templates/vanilla-ts/package.json +18 -0
  38. package/dist/templates/vanilla-ts/src/backend.ts +3 -0
  39. package/dist/templates/vanilla-ts/src/main.ts +9 -0
  40. package/dist/templates/vanilla-ts/src/style.css +50 -0
  41. package/dist/templates/vanilla-ts/tsconfig.json +12 -0
  42. package/dist/templates/vanilla-ts/volt.config.ts +12 -0
  43. package/dist/templates/vue-ts/index.html +12 -0
  44. package/dist/templates/vue-ts/package.json +21 -0
  45. package/dist/templates/vue-ts/src/App.vue +24 -0
  46. package/dist/templates/vue-ts/src/backend.ts +3 -0
  47. package/dist/templates/vue-ts/src/main.ts +5 -0
  48. package/dist/templates/vue-ts/src/style.css +43 -0
  49. package/dist/templates/vue-ts/tsconfig.json +13 -0
  50. package/dist/templates/vue-ts/vite.config.ts +6 -0
  51. package/dist/templates/vue-ts/volt.config.ts +12 -0
  52. package/package.json +35 -0
@@ -0,0 +1,50 @@
1
+ :root {
2
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
3
+ color-scheme: light dark;
4
+ color: #213547;
5
+ background-color: #ffffff;
6
+ }
7
+
8
+ @media (prefers-color-scheme: dark) {
9
+ :root {
10
+ color: rgba(255, 255, 255, 0.87);
11
+ background-color: #1a1a2e;
12
+ }
13
+ }
14
+
15
+ body {
16
+ margin: 0;
17
+ display: flex;
18
+ place-items: center;
19
+ min-width: 320px;
20
+ min-height: 100vh;
21
+ }
22
+
23
+ #app {
24
+ max-width: 480px;
25
+ margin: 0 auto;
26
+ padding: 2rem;
27
+ text-align: center;
28
+ }
29
+
30
+ h1 {
31
+ font-size: 2em;
32
+ line-height: 1.1;
33
+ }
34
+
35
+ button {
36
+ border-radius: 8px;
37
+ border: 1px solid transparent;
38
+ padding: 0.6em 1.2em;
39
+ font-size: 1em;
40
+ font-weight: 500;
41
+ font-family: inherit;
42
+ background-color: #646cff;
43
+ color: white;
44
+ cursor: pointer;
45
+ transition: background-color 0.2s;
46
+ }
47
+
48
+ button:hover {
49
+ background-color: #535bf2;
50
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "types": ["vite/client", "voltkit"],
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true
10
+ },
11
+ "include": ["src"]
12
+ }
@@ -0,0 +1,26 @@
1
+ import { defineConfig } from 'voltkit';
2
+
3
+ export default defineConfig({
4
+ name: 'My Volt Enterprise App',
5
+ version: '0.1.0',
6
+ backend: './src/backend.ts',
7
+ permissions: ['secureStorage', 'fs', 'dialog', 'http', 'db', 'shell'],
8
+ window: {
9
+ width: 1080,
10
+ height: 760,
11
+ minWidth: 900,
12
+ minHeight: 620,
13
+ title: 'My Volt Enterprise App',
14
+ },
15
+ package: {
16
+ identifier: 'com.example.my-volt-enterprise-app',
17
+ windows: {
18
+ installMode: 'perMachine',
19
+ silentAllUsers: true,
20
+ },
21
+ enterprise: {
22
+ generateAdmx: true,
23
+ includeDocsBundle: true,
24
+ },
25
+ },
26
+ });
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>My Volt App</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/main.tsx"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "my-volt-app",
3
+ "private": true,
4
+ "version": "0.1.0",
5
+ "scripts": {
6
+ "dev": "volt dev",
7
+ "build": "volt build",
8
+ "preview": "volt preview"
9
+ },
10
+ "dependencies": {
11
+ "react": "^19.0.0",
12
+ "react-dom": "^19.0.0",
13
+ "voltkit": "^0.1.0"
14
+ },
15
+ "devDependencies": {
16
+ "@voltkit/volt-cli": "^0.1.0",
17
+ "@types/react": "^19.0.0",
18
+ "@types/react-dom": "^19.0.0",
19
+ "@vitejs/plugin-react": "^4.3.0",
20
+ "typescript": "^5.7.0",
21
+ "vite": "^6.0.0"
22
+ }
23
+ }
@@ -0,0 +1,15 @@
1
+ import { useState } from 'react';
2
+
3
+ export function App() {
4
+ const [count, setCount] = useState(0);
5
+
6
+ return (
7
+ <div className="app">
8
+ <h1>Welcome to Volt!</h1>
9
+ <p>Edit <code>src/App.tsx</code> and save to see changes.</p>
10
+ <button onClick={() => setCount(c => c + 1)}>
11
+ Count: {count}
12
+ </button>
13
+ </div>
14
+ );
15
+ }
@@ -0,0 +1,3 @@
1
+ import { ipcMain } from 'volt:ipc';
2
+
3
+ ipcMain.handle('app:ping', () => ({ ok: true }));
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import { App } from './App';
4
+ import './style.css';
5
+
6
+ ReactDOM.createRoot(document.getElementById('root')!).render(
7
+ <React.StrictMode>
8
+ <App />
9
+ </React.StrictMode>,
10
+ );
@@ -0,0 +1,50 @@
1
+ :root {
2
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
3
+ color-scheme: light dark;
4
+ color: #213547;
5
+ background-color: #ffffff;
6
+ }
7
+
8
+ @media (prefers-color-scheme: dark) {
9
+ :root {
10
+ color: rgba(255, 255, 255, 0.87);
11
+ background-color: #1a1a2e;
12
+ }
13
+ }
14
+
15
+ body {
16
+ margin: 0;
17
+ display: flex;
18
+ place-items: center;
19
+ min-width: 320px;
20
+ min-height: 100vh;
21
+ }
22
+
23
+ .app {
24
+ max-width: 480px;
25
+ margin: 0 auto;
26
+ padding: 2rem;
27
+ text-align: center;
28
+ }
29
+
30
+ h1 {
31
+ font-size: 2em;
32
+ line-height: 1.1;
33
+ }
34
+
35
+ button {
36
+ border-radius: 8px;
37
+ border: 1px solid transparent;
38
+ padding: 0.6em 1.2em;
39
+ font-size: 1em;
40
+ font-weight: 500;
41
+ font-family: inherit;
42
+ background-color: #646cff;
43
+ color: white;
44
+ cursor: pointer;
45
+ transition: background-color 0.2s;
46
+ }
47
+
48
+ button:hover {
49
+ background-color: #535bf2;
50
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "types": ["vite/client", "voltkit"],
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true,
10
+ "jsx": "react-jsx"
11
+ },
12
+ "include": ["src"]
13
+ }
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+
4
+ export default defineConfig({
5
+ plugins: [react()],
6
+ });
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'voltkit';
2
+
3
+ export default defineConfig({
4
+ name: 'My Volt App',
5
+ version: '0.1.0',
6
+ backend: './src/backend.ts',
7
+ window: {
8
+ width: 800,
9
+ height: 600,
10
+ title: 'My Volt App',
11
+ },
12
+ });
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>My Volt App</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/main.ts"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "my-volt-app",
3
+ "private": true,
4
+ "version": "0.1.0",
5
+ "scripts": {
6
+ "dev": "volt dev",
7
+ "build": "volt build",
8
+ "preview": "volt preview"
9
+ },
10
+ "dependencies": {
11
+ "voltkit": "^0.1.0"
12
+ },
13
+ "devDependencies": {
14
+ "@voltkit/volt-cli": "^0.1.0",
15
+ "@sveltejs/vite-plugin-svelte": "^5.0.0",
16
+ "svelte": "^5.0.0",
17
+ "typescript": "^5.7.0",
18
+ "vite": "^6.0.0"
19
+ }
20
+ }
@@ -0,0 +1,20 @@
1
+ <script lang="ts">
2
+ let count = $state(0);
3
+ </script>
4
+
5
+ <div class="app">
6
+ <h1>Welcome to Volt!</h1>
7
+ <p>Edit <code>src/App.svelte</code> and save to see changes.</p>
8
+ <button onclick={() => count++}>
9
+ Count: {count}
10
+ </button>
11
+ </div>
12
+
13
+ <style>
14
+ .app {
15
+ max-width: 480px;
16
+ margin: 0 auto;
17
+ padding: 2rem;
18
+ text-align: center;
19
+ }
20
+ </style>
@@ -0,0 +1,3 @@
1
+ import { ipcMain } from 'volt:ipc';
2
+
3
+ ipcMain.handle('app:ping', () => ({ ok: true }));
@@ -0,0 +1,7 @@
1
+ import { mount } from 'svelte';
2
+ import App from './App.svelte';
3
+ import './style.css';
4
+
5
+ const app = mount(App, { target: document.getElementById('app')! });
6
+
7
+ export default app;
@@ -0,0 +1,43 @@
1
+ :root {
2
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
3
+ color-scheme: light dark;
4
+ color: #213547;
5
+ background-color: #ffffff;
6
+ }
7
+
8
+ @media (prefers-color-scheme: dark) {
9
+ :root {
10
+ color: rgba(255, 255, 255, 0.87);
11
+ background-color: #1a1a2e;
12
+ }
13
+ }
14
+
15
+ body {
16
+ margin: 0;
17
+ display: flex;
18
+ place-items: center;
19
+ min-width: 320px;
20
+ min-height: 100vh;
21
+ }
22
+
23
+ h1 {
24
+ font-size: 2em;
25
+ line-height: 1.1;
26
+ }
27
+
28
+ button {
29
+ border-radius: 8px;
30
+ border: 1px solid transparent;
31
+ padding: 0.6em 1.2em;
32
+ font-size: 1em;
33
+ font-weight: 500;
34
+ font-family: inherit;
35
+ background-color: #646cff;
36
+ color: white;
37
+ cursor: pointer;
38
+ transition: background-color 0.2s;
39
+ }
40
+
41
+ button:hover {
42
+ background-color: #535bf2;
43
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "types": ["vite/client", "voltkit"],
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true
10
+ },
11
+ "include": ["src"]
12
+ }
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vite';
2
+ import { svelte } from '@sveltejs/vite-plugin-svelte';
3
+
4
+ export default defineConfig({
5
+ plugins: [svelte()],
6
+ });
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'voltkit';
2
+
3
+ export default defineConfig({
4
+ name: 'My Volt App',
5
+ version: '0.1.0',
6
+ backend: './src/backend.ts',
7
+ window: {
8
+ width: 800,
9
+ height: 600,
10
+ title: 'My Volt App',
11
+ },
12
+ });
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>My Volt App</title>
7
+ <link rel="stylesheet" href="/src/style.css">
8
+ </head>
9
+ <body>
10
+ <div id="app">
11
+ <h1>Welcome to Volt!</h1>
12
+ <p>Edit <code>src/main.ts</code> and save to see changes.</p>
13
+ <button id="counter" type="button">Count: 0</button>
14
+ </div>
15
+ <script type="module" src="/src/main.ts"></script>
16
+ </body>
17
+ </html>
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "my-volt-app",
3
+ "private": true,
4
+ "version": "0.1.0",
5
+ "scripts": {
6
+ "dev": "volt dev",
7
+ "build": "volt build",
8
+ "preview": "volt preview"
9
+ },
10
+ "dependencies": {
11
+ "voltkit": "^0.1.0"
12
+ },
13
+ "devDependencies": {
14
+ "@voltkit/volt-cli": "^0.1.0",
15
+ "typescript": "^5.7.0",
16
+ "vite": "^6.0.0"
17
+ }
18
+ }
@@ -0,0 +1,3 @@
1
+ import { ipcMain } from 'volt:ipc';
2
+
3
+ ipcMain.handle('app:ping', () => ({ ok: true }));
@@ -0,0 +1,9 @@
1
+ let count = 0;
2
+
3
+ const button = document.getElementById('counter')!;
4
+ button.addEventListener('click', () => {
5
+ count++;
6
+ button.textContent = `Count: ${count}`;
7
+ });
8
+
9
+ console.log('Volt app is running!');
@@ -0,0 +1,50 @@
1
+ :root {
2
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
3
+ color-scheme: light dark;
4
+ color: #213547;
5
+ background-color: #ffffff;
6
+ }
7
+
8
+ @media (prefers-color-scheme: dark) {
9
+ :root {
10
+ color: rgba(255, 255, 255, 0.87);
11
+ background-color: #1a1a2e;
12
+ }
13
+ }
14
+
15
+ body {
16
+ margin: 0;
17
+ display: flex;
18
+ place-items: center;
19
+ min-width: 320px;
20
+ min-height: 100vh;
21
+ }
22
+
23
+ #app {
24
+ max-width: 480px;
25
+ margin: 0 auto;
26
+ padding: 2rem;
27
+ text-align: center;
28
+ }
29
+
30
+ h1 {
31
+ font-size: 2em;
32
+ line-height: 1.1;
33
+ }
34
+
35
+ button {
36
+ border-radius: 8px;
37
+ border: 1px solid transparent;
38
+ padding: 0.6em 1.2em;
39
+ font-size: 1em;
40
+ font-weight: 500;
41
+ font-family: inherit;
42
+ background-color: #646cff;
43
+ color: white;
44
+ cursor: pointer;
45
+ transition: background-color 0.2s;
46
+ }
47
+
48
+ button:hover {
49
+ background-color: #535bf2;
50
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "types": ["vite/client", "voltkit"],
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true
10
+ },
11
+ "include": ["src"]
12
+ }
@@ -0,0 +1,12 @@
1
+ import { defineConfig } from 'voltkit';
2
+
3
+ export default defineConfig({
4
+ name: 'My Volt App',
5
+ version: '0.1.0',
6
+ backend: './src/backend.ts',
7
+ window: {
8
+ width: 800,
9
+ height: 600,
10
+ title: 'My Volt App',
11
+ },
12
+ });
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>My Volt App</title>
7
+ </head>
8
+ <body>
9
+ <div id="app"></div>
10
+ <script type="module" src="/src/main.ts"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "my-volt-app",
3
+ "private": true,
4
+ "version": "0.1.0",
5
+ "scripts": {
6
+ "dev": "volt dev",
7
+ "build": "volt build",
8
+ "preview": "volt preview"
9
+ },
10
+ "dependencies": {
11
+ "vue": "^3.5.0",
12
+ "voltkit": "^0.1.0"
13
+ },
14
+ "devDependencies": {
15
+ "@voltkit/volt-cli": "^0.1.0",
16
+ "@vitejs/plugin-vue": "^5.2.0",
17
+ "typescript": "^5.7.0",
18
+ "vite": "^6.0.0",
19
+ "vue-tsc": "^2.0.0"
20
+ }
21
+ }
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue';
3
+
4
+ const count = ref(0);
5
+ </script>
6
+
7
+ <template>
8
+ <div class="app">
9
+ <h1>Welcome to Volt!</h1>
10
+ <p>Edit <code>src/App.vue</code> and save to see changes.</p>
11
+ <button @click="count++">
12
+ Count: {{ count }}
13
+ </button>
14
+ </div>
15
+ </template>
16
+
17
+ <style scoped>
18
+ .app {
19
+ max-width: 480px;
20
+ margin: 0 auto;
21
+ padding: 2rem;
22
+ text-align: center;
23
+ }
24
+ </style>
@@ -0,0 +1,3 @@
1
+ import { ipcMain } from 'volt:ipc';
2
+
3
+ ipcMain.handle('app:ping', () => ({ ok: true }));
@@ -0,0 +1,5 @@
1
+ import { createApp } from 'vue';
2
+ import App from './App.vue';
3
+ import './style.css';
4
+
5
+ createApp(App).mount('#app');
@@ -0,0 +1,43 @@
1
+ :root {
2
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
3
+ color-scheme: light dark;
4
+ color: #213547;
5
+ background-color: #ffffff;
6
+ }
7
+
8
+ @media (prefers-color-scheme: dark) {
9
+ :root {
10
+ color: rgba(255, 255, 255, 0.87);
11
+ background-color: #1a1a2e;
12
+ }
13
+ }
14
+
15
+ body {
16
+ margin: 0;
17
+ display: flex;
18
+ place-items: center;
19
+ min-width: 320px;
20
+ min-height: 100vh;
21
+ }
22
+
23
+ h1 {
24
+ font-size: 2em;
25
+ line-height: 1.1;
26
+ }
27
+
28
+ button {
29
+ border-radius: 8px;
30
+ border: 1px solid transparent;
31
+ padding: 0.6em 1.2em;
32
+ font-size: 1em;
33
+ font-weight: 500;
34
+ font-family: inherit;
35
+ background-color: #646cff;
36
+ color: white;
37
+ cursor: pointer;
38
+ transition: background-color 0.2s;
39
+ }
40
+
41
+ button:hover {
42
+ background-color: #535bf2;
43
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "bundler",
6
+ "types": ["vite/client", "voltkit"],
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true,
10
+ "jsx": "preserve"
11
+ },
12
+ "include": ["src"]
13
+ }
@@ -0,0 +1,6 @@
1
+ import { defineConfig } from 'vite';
2
+ import vue from '@vitejs/plugin-vue';
3
+
4
+ export default defineConfig({
5
+ plugins: [vue()],
6
+ });