electrobun 0.0.19-beta.8 → 0.0.19-beta.80

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 (39) hide show
  1. package/BUILD.md +90 -0
  2. package/bin/electrobun.cjs +165 -0
  3. package/debug.js +5 -0
  4. package/dist/api/browser/builtinrpcSchema.ts +19 -0
  5. package/dist/api/browser/index.ts +409 -0
  6. package/dist/api/browser/rpc/webview.ts +79 -0
  7. package/dist/api/browser/stylesAndElements.ts +3 -0
  8. package/dist/api/browser/webviewtag.ts +534 -0
  9. package/dist/api/bun/core/ApplicationMenu.ts +66 -0
  10. package/dist/api/bun/core/BrowserView.ts +349 -0
  11. package/dist/api/bun/core/BrowserWindow.ts +191 -0
  12. package/dist/api/bun/core/ContextMenu.ts +67 -0
  13. package/dist/api/bun/core/Paths.ts +5 -0
  14. package/dist/api/bun/core/Socket.ts +181 -0
  15. package/dist/api/bun/core/Tray.ts +107 -0
  16. package/dist/api/bun/core/Updater.ts +552 -0
  17. package/dist/api/bun/core/Utils.ts +48 -0
  18. package/dist/api/bun/events/ApplicationEvents.ts +14 -0
  19. package/dist/api/bun/events/event.ts +29 -0
  20. package/dist/api/bun/events/eventEmitter.ts +45 -0
  21. package/dist/api/bun/events/trayEvents.ts +9 -0
  22. package/dist/api/bun/events/webviewEvents.ts +16 -0
  23. package/dist/api/bun/events/windowEvents.ts +12 -0
  24. package/dist/api/bun/index.ts +45 -0
  25. package/dist/api/bun/proc/linux.md +43 -0
  26. package/dist/api/bun/proc/native.ts +1220 -0
  27. package/dist/api/shared/platform.ts +48 -0
  28. package/dist/main.js +53 -0
  29. package/package.json +15 -7
  30. package/src/cli/index.ts +1034 -210
  31. package/templates/hello-world/README.md +57 -0
  32. package/templates/hello-world/bun.lock +63 -0
  33. package/templates/hello-world/electrobun.config +18 -0
  34. package/templates/hello-world/package.json +16 -0
  35. package/templates/hello-world/src/bun/index.ts +15 -0
  36. package/templates/hello-world/src/mainview/index.css +124 -0
  37. package/templates/hello-world/src/mainview/index.html +47 -0
  38. package/templates/hello-world/src/mainview/index.ts +5 -0
  39. package/bin/electrobun +0 -0
@@ -0,0 +1,57 @@
1
+ # Electrobun Hello World
2
+
3
+ A simple Electrobun app to get you started with the framework.
4
+
5
+ ## What You'll See
6
+
7
+ This hello world app demonstrates:
8
+ - **Native Window**: A cross-platform desktop window
9
+ - **Web-based UI**: Modern HTML, CSS, and JavaScript interface
10
+ - **Simple Architecture**: Clean separation between Bun process and UI
11
+
12
+ ## Getting Started
13
+
14
+ 1. Install dependencies:
15
+ ```bash
16
+ bun install
17
+ ```
18
+
19
+ 2. Run in development mode:
20
+ ```bash
21
+ bun run dev
22
+ ```
23
+
24
+ 3. Build for production:
25
+ ```bash
26
+ bun run build
27
+ ```
28
+
29
+ ## Project Structure
30
+
31
+ ```
32
+ src/
33
+ ├── bun/
34
+ │ └── index.ts # Main process - creates and manages windows
35
+ └── mainview/
36
+ ├── index.html # Your app's UI
37
+ ├── index.css # Styles
38
+ └── index.ts # View logic
39
+ ```
40
+
41
+ ## Next Steps
42
+
43
+ Ready to build something more complex? Check out:
44
+
45
+ - **[Documentation](https://docs.electrobun.dev)** - Learn about all Electrobun features
46
+ - **[Examples](https://github.com/blackboardsh/electrobun/tree/main/playground)** - See advanced features like RPC, menus, and system tray
47
+ - **[GitHub](https://github.com/blackboardsh/electrobun)** - Star the repo and join the community
48
+
49
+ ### Add More Features
50
+
51
+ Want to extend this app? Try adding:
52
+ - RPC communication between Bun and webview
53
+ - Native menus and system tray
54
+ - File dialogs and system integration
55
+ - Multiple windows and views
56
+
57
+ Happy building! 🚀
@@ -0,0 +1,63 @@
1
+ {
2
+ "lockfileVersion": 1,
3
+ "workspaces": {
4
+ "": {
5
+ "name": "electrobun-hello-world",
6
+ "dependencies": {
7
+ "electrobun": "latest",
8
+ },
9
+ "devDependencies": {
10
+ "@types/bun": "latest",
11
+ },
12
+ },
13
+ },
14
+ "packages": {
15
+ "@oneidentity/zstd-js": ["@oneidentity/zstd-js@1.0.3", "", { "dependencies": { "@types/emscripten": "^1.39.4" } }, "sha512-Jm6sawqxLzBrjC4sg2BeXToa33yPzUmq20CKsehKY2++D/gHb/oSwVjNgT+RH4vys+r8FynrgcNzGwhZWMLzfQ=="],
16
+
17
+ "@types/bun": ["@types/bun@1.2.19", "", { "dependencies": { "bun-types": "1.2.19" } }, "sha512-d9ZCmrH3CJ2uYKXQIUuZ/pUnTqIvLDS0SK7pFmbx8ma+ziH/FRMoAq5bYpRG7y+w1gl+HgyNZbtqgMq4W4e2Lg=="],
18
+
19
+ "@types/emscripten": ["@types/emscripten@1.40.1", "", {}, "sha512-sr53lnYkQNhjHNN0oJDdUm5564biioI5DuOpycufDVK7D3y+GR3oUswe2rlwY1nPNyusHbrJ9WoTyIHl4/Bpwg=="],
20
+
21
+ "@types/filesystem": ["@types/filesystem@0.0.36", "", { "dependencies": { "@types/filewriter": "*" } }, "sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA=="],
22
+
23
+ "@types/filewriter": ["@types/filewriter@0.0.33", "", {}, "sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g=="],
24
+
25
+ "@types/har-format": ["@types/har-format@1.2.16", "", {}, "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A=="],
26
+
27
+ "@types/node": ["@types/node@24.1.0", "", { "dependencies": { "undici-types": "~7.8.0" } }, "sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w=="],
28
+
29
+ "@types/react": ["@types/react@19.1.9", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA=="],
30
+
31
+ "@types/webextension-polyfill": ["@types/webextension-polyfill@0.12.3", "", {}, "sha512-F58aDVSeN/MjUGazXo/cPsmR76EvqQhQ1v4x23hFjUX0cfAJYE+JBWwiOGW36/VJGGxoH74sVlRIF3z7SJCKyg=="],
32
+
33
+ "browser-namespace": ["browser-namespace@1.4.0", "", { "dependencies": { "@types/filesystem": "*", "@types/har-format": "*", "@types/webextension-polyfill": "*" } }, "sha512-9b4yNTNs+8HVPssSq8RSZMRunf+G4cVQ2PMtOTn+uEVFOW5C0Uo+eGXuJ5LfxS1UDph5oAdWj92thPyxVhpqXg=="],
34
+
35
+ "bun-types": ["bun-types@1.2.19", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-uAOTaZSPuYsWIXRpj7o56Let0g/wjihKCkeRqUBhlLVM/Bt+Fj9xTo+LhC1OV1XDaGkz4hNC80et5xgy+9KTHQ=="],
36
+
37
+ "chownr": ["chownr@2.0.0", "", {}, "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="],
38
+
39
+ "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="],
40
+
41
+ "electrobun": ["electrobun@0.0.18", "", { "dependencies": { "@oneidentity/zstd-js": "^1.0.3", "rpc-anywhere": "1.5.0", "tar": "^6.2.1" }, "bin": { "electrobun": "dist/electrobun" } }, "sha512-RyMNGcAaHklicZlJToGfN3fVZGKHpxZv6o8S96TK9tHSY/SRze5bNPIGUnY9wr/BbWuQW5gGUGaVIWWqa5NSZQ=="],
42
+
43
+ "fs-minipass": ["fs-minipass@2.1.0", "", { "dependencies": { "minipass": "^3.0.0" } }, "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg=="],
44
+
45
+ "minipass": ["minipass@5.0.0", "", {}, "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ=="],
46
+
47
+ "minizlib": ["minizlib@2.1.2", "", { "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" } }, "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg=="],
48
+
49
+ "mkdirp": ["mkdirp@1.0.4", "", { "bin": { "mkdirp": "bin/cmd.js" } }, "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="],
50
+
51
+ "rpc-anywhere": ["rpc-anywhere@1.5.0", "", { "dependencies": { "browser-namespace": "^1.4.0" } }, "sha512-ZYrB0foAM4oE7oBnUH3BL7LwtW9d6+RkzL/rFnjj8GCaFt5c81Rbw6oVl6u9AMsGONsKeJX0mL62TpbPXSO6og=="],
52
+
53
+ "tar": ["tar@6.2.1", "", { "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", "minipass": "^5.0.0", "minizlib": "^2.1.1", "mkdirp": "^1.0.3", "yallist": "^4.0.0" } }, "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A=="],
54
+
55
+ "undici-types": ["undici-types@7.8.0", "", {}, "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw=="],
56
+
57
+ "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="],
58
+
59
+ "fs-minipass/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
60
+
61
+ "minizlib/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="],
62
+ }
63
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "app": {
3
+ "name": "hello-world",
4
+ "identifier": "helloworld.electrobun.dev",
5
+ "version": "0.0.1"
6
+ },
7
+ "build": {
8
+ "mac": {
9
+ "bundleCEF": true
10
+ },
11
+ "linux": {
12
+ "bundleCEF": true
13
+ },
14
+ "win": {
15
+ "bundleCEF": true
16
+ }
17
+ },
18
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "electrobun-hello-world",
3
+ "version": "1.0.0",
4
+ "description": "A simple Electrobun app showcasing core features",
5
+ "scripts": {
6
+ "dev": "electrobun dev",
7
+ "build": "electrobun build",
8
+ "start": "bun run build && bun run dev"
9
+ },
10
+ "dependencies": {
11
+ "electrobun": "latest"
12
+ },
13
+ "devDependencies": {
14
+ "@types/bun": "latest"
15
+ }
16
+ }
@@ -0,0 +1,15 @@
1
+ import { BrowserWindow } from "electrobun/bun";
2
+
3
+ // Create the main application window
4
+ const mainWindow = new BrowserWindow({
5
+ title: "Hello Electrobun!",
6
+ url: "views://main/index.html",
7
+ frame: {
8
+ width: 800,
9
+ height: 600,
10
+ x: 200,
11
+ y: 200,
12
+ },
13
+ });
14
+
15
+ console.log("Hello Electrobun app started!");
@@ -0,0 +1,124 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ body {
6
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
7
+ margin: 0;
8
+ padding: 0;
9
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
10
+ color: #333;
11
+ min-height: 100vh;
12
+ }
13
+
14
+ .container {
15
+ max-width: 800px;
16
+ margin: 0 auto;
17
+ padding: 40px 20px;
18
+ }
19
+
20
+ h1 {
21
+ color: white;
22
+ font-size: 3rem;
23
+ text-align: center;
24
+ margin-bottom: 8px;
25
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
26
+ }
27
+
28
+ .subtitle {
29
+ color: rgba(255, 255, 255, 0.9);
30
+ font-size: 1.25rem;
31
+ text-align: center;
32
+ margin-top: 0;
33
+ margin-bottom: 40px;
34
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
35
+ }
36
+
37
+ .welcome-section {
38
+ background: white;
39
+ border-radius: 12px;
40
+ padding: 30px;
41
+ margin: 30px 0;
42
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15);
43
+ line-height: 1.6;
44
+ }
45
+
46
+ h2 {
47
+ color: #2563eb;
48
+ margin-top: 30px;
49
+ margin-bottom: 15px;
50
+ }
51
+
52
+ ul {
53
+ margin: 20px 0;
54
+ padding-left: 20px;
55
+ }
56
+
57
+ li {
58
+ margin: 8px 0;
59
+ }
60
+
61
+ .links {
62
+ display: flex;
63
+ gap: 15px;
64
+ margin: 25px 0;
65
+ flex-wrap: wrap;
66
+ }
67
+
68
+ .doc-link {
69
+ display: inline-block;
70
+ background: #2563eb;
71
+ color: white;
72
+ text-decoration: none;
73
+ padding: 12px 20px;
74
+ border-radius: 8px;
75
+ font-weight: 500;
76
+ transition: all 0.2s ease;
77
+ box-shadow: 0 2px 4px rgba(37, 99, 235, 0.2);
78
+ }
79
+
80
+ .doc-link:hover {
81
+ background: #1d4ed8;
82
+ transform: translateY(-1px);
83
+ box-shadow: 0 4px 8px rgba(37, 99, 235, 0.3);
84
+ }
85
+
86
+ code {
87
+ background: #f1f5f9;
88
+ color: #475569;
89
+ padding: 2px 6px;
90
+ border-radius: 4px;
91
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
92
+ font-size: 0.9em;
93
+ }
94
+
95
+ .footer {
96
+ text-align: center;
97
+ color: rgba(255, 255, 255, 0.8);
98
+ margin-top: 40px;
99
+ padding: 20px;
100
+ background: rgba(255, 255, 255, 0.1);
101
+ border-radius: 8px;
102
+ backdrop-filter: blur(10px);
103
+ }
104
+
105
+ .footer p {
106
+ margin: 8px 0;
107
+ }
108
+
109
+ /* Dark mode support */
110
+ @media (prefers-color-scheme: dark) {
111
+ .welcome-section {
112
+ background: #1f2937;
113
+ color: #f3f4f6;
114
+ }
115
+
116
+ h2 {
117
+ color: #60a5fa;
118
+ }
119
+
120
+ code {
121
+ background: #374151;
122
+ color: #d1d5db;
123
+ }
124
+ }
@@ -0,0 +1,47 @@
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>Hello Electrobun!</title>
7
+ <link rel="stylesheet" href="index.css">
8
+ </head>
9
+ <body>
10
+ <div class="container">
11
+ <h1>Hello Electrobun! 🎉</h1>
12
+ <p class="subtitle">A fast, cross-platform desktop app framework</p>
13
+
14
+ <div class="welcome-section">
15
+ <p>Welcome to your first Electrobun app! This framework combines the power of Bun with native desktop capabilities.</p>
16
+
17
+ <h2>What is Electrobun?</h2>
18
+ <ul>
19
+ <li><strong>Fast:</strong> Built on Bun's lightning-fast JavaScript runtime</li>
20
+ <li><strong>Native:</strong> Access to system APIs like menus, trays, and file dialogs</li>
21
+ <li><strong>Cross-platform:</strong> Works on macOS, Windows, and Linux</li>
22
+ <li><strong>Web-based UI:</strong> Use familiar HTML, CSS, and JavaScript for your interface</li>
23
+ </ul>
24
+
25
+ <h2>Get Started</h2>
26
+ <p>Ready to build something amazing? Check out the documentation and examples:</p>
27
+
28
+ <div class="links">
29
+ <a href="https://docs.electrobun.dev" target="_blank" class="doc-link">
30
+ 📚 Documentation
31
+ </a>
32
+ <a href="https://github.com/blackboardsh/electrobun" target="_blank" class="doc-link">
33
+ 🐙 GitHub Repository
34
+ </a>
35
+ <a href="https://docs.electrobun.dev/examples" target="_blank" class="doc-link">
36
+ 💡 Examples
37
+ </a>
38
+ </div>
39
+ </div>
40
+
41
+ <div class="footer">
42
+ <p>Edit <code>src/bun/index.ts</code> and <code>src/mainview/</code> to customize your app</p>
43
+ <p>Press F12 to open DevTools</p>
44
+ </div>
45
+ </div>
46
+ </body>
47
+ </html>
@@ -0,0 +1,5 @@
1
+ // Simple Hello World - no RPC needed for this basic template
2
+ console.log("Hello Electrobun view loaded!");
3
+
4
+ // You can add interactive functionality here
5
+ // For RPC communication with the Bun process, check out the playground example
package/bin/electrobun DELETED
Binary file