electrobun 0.0.2 → 0.0.4

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 (76) hide show
  1. package/.colab.json +1 -0
  2. package/README.md +14 -12
  3. package/bun.lockb +0 -0
  4. package/dist/bsdiff +0 -0
  5. package/dist/bspatch +0 -0
  6. package/dist/webview +0 -0
  7. package/docs-old/architecture.md +46 -0
  8. package/documentation/README.md +41 -0
  9. package/documentation/babel.config.js +3 -0
  10. package/documentation/blog/2024-08-20-electrobun.md +22 -0
  11. package/documentation/blog/authors.yml +8 -0
  12. package/documentation/blog/tags.yml +0 -0
  13. package/documentation/docs/apis/Application Icons.md +9 -0
  14. package/documentation/docs/apis/Bundled Assets.md +95 -0
  15. package/documentation/docs/apis/browser/DraggableRegions.md +36 -0
  16. package/documentation/docs/apis/browser/Electrobun Webview Tag.md +200 -0
  17. package/documentation/docs/apis/browser/Electroview Class.md +158 -0
  18. package/documentation/docs/apis/browser/GlobalProperties.md +11 -0
  19. package/documentation/docs/apis/browser/index.md +25 -0
  20. package/documentation/docs/apis/bun/ApplicationMenu.md +141 -0
  21. package/documentation/docs/apis/bun/BrowserView.md +513 -0
  22. package/documentation/docs/apis/bun/BrowserWindow.md +423 -0
  23. package/documentation/docs/apis/bun/ContextMenu.md +50 -0
  24. package/documentation/docs/apis/bun/Events.md +50 -0
  25. package/documentation/docs/apis/bun/PATHS.md +17 -0
  26. package/documentation/docs/apis/bun/Tray.md +115 -0
  27. package/documentation/docs/apis/bun/Updater.md +74 -0
  28. package/documentation/docs/apis/bun/Utils.md +51 -0
  29. package/documentation/docs/apis/bun/index.md +26 -0
  30. package/documentation/docs/apis/cli/Electrobun.config.md +97 -0
  31. package/documentation/docs/apis/cli/cli args.md +76 -0
  32. package/documentation/docs/guides/Architecture/Events.md +19 -0
  33. package/documentation/docs/guides/Architecture/IPC and Isolation.md +20 -0
  34. package/documentation/docs/guides/Architecture/Overview.md +140 -0
  35. package/documentation/docs/guides/Architecture/Updates.md +7 -0
  36. package/documentation/docs/guides/Architecture/Webview Tag.md +5 -0
  37. package/documentation/docs/guides/Compatability.md +8 -0
  38. package/documentation/docs/guides/Getting Started/Creating UI.md +147 -0
  39. package/documentation/docs/guides/Getting Started/Distributing.md +116 -0
  40. package/documentation/docs/guides/Getting Started/Getting Started.md +7 -0
  41. package/documentation/docs/guides/Getting Started/Hello World.md +93 -0
  42. package/documentation/docs/guides/Getting Started/What is Electrobun.md +39 -0
  43. package/documentation/docs/guides/Guides/Build UI with React +0 -0
  44. package/documentation/docs/guides/Guides/Build UI with Solidjs +0 -0
  45. package/documentation/docs/guides/Guides/Build a Web Browser +0 -0
  46. package/documentation/docs/guides/Guides/Bun <-> Browser RPC +0 -0
  47. package/documentation/docs/guides/Guides/Using Tailwind +0 -0
  48. package/documentation/docusaurus.config.ts +153 -0
  49. package/documentation/package-lock.json +14530 -0
  50. package/documentation/package.json +47 -0
  51. package/documentation/sidebars.ts +32 -0
  52. package/documentation/src/components/HomepageFeatures/index.tsx +70 -0
  53. package/documentation/src/components/HomepageFeatures/styles.module.css +11 -0
  54. package/documentation/src/css/custom.css +30 -0
  55. package/documentation/src/pages/index.module.css +23 -0
  56. package/documentation/src/pages/index.tsx +137 -0
  57. package/documentation/static/.nojekyll +0 -0
  58. package/documentation/static/img/electrobun-logo-256.png +0 -0
  59. package/documentation/static/img/electrobun-logo-32.png +0 -0
  60. package/documentation/tsconfig.json +7 -0
  61. package/package.json +11 -6
  62. package/src/browser/index.ts +7 -2
  63. package/src/browser/webviewtag.ts +149 -17
  64. package/src/bun/core/BrowserView.ts +19 -2
  65. package/src/bun/proc/zig.ts +1 -0
  66. package/src/cli/build/electrobun +0 -0
  67. package/src/cli/index.ts +3 -1
  68. package/src/extractor/zig-out/bin/extractor +0 -0
  69. package/src/launcher/zig-out/bin/launcher +0 -0
  70. package/docs/architecture.md +0 -84
  71. /package/{docs → docs-old}/api/bun-api.md +0 -0
  72. /package/{docs → docs-old}/api/view-api.md +0 -0
  73. /package/{docs → docs-old}/electrobun-config.md +0 -0
  74. /package/{docs → docs-old}/getting-started.md +0 -0
  75. /package/{docs → docs-old}/node_modules/.cache/webpack/client-development-en/0.pack +0 -0
  76. /package/{docs → docs-old}/node_modules/.cache/webpack/client-development-en/index.pack +0 -0
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "docs",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "docusaurus": "docusaurus",
7
+ "start": "docusaurus start",
8
+ "build": "docusaurus build",
9
+ "swizzle": "docusaurus swizzle",
10
+ "deploy": "docusaurus deploy",
11
+ "clear": "docusaurus clear",
12
+ "serve": "docusaurus serve",
13
+ "write-translations": "docusaurus write-translations",
14
+ "write-heading-ids": "docusaurus write-heading-ids",
15
+ "typecheck": "tsc"
16
+ },
17
+ "dependencies": {
18
+ "@docusaurus/core": "3.5.1",
19
+ "@docusaurus/preset-classic": "3.5.1",
20
+ "@mdx-js/react": "^3.0.0",
21
+ "clsx": "^2.0.0",
22
+ "prism-react-renderer": "^2.3.0",
23
+ "react": "^18.0.0",
24
+ "react-dom": "^18.0.0"
25
+ },
26
+ "devDependencies": {
27
+ "@docusaurus/module-type-aliases": "3.5.1",
28
+ "@docusaurus/tsconfig": "3.5.1",
29
+ "@docusaurus/types": "3.5.1",
30
+ "typescript": "~5.5.2"
31
+ },
32
+ "browserslist": {
33
+ "production": [
34
+ ">0.5%",
35
+ "not dead",
36
+ "not op_mini all"
37
+ ],
38
+ "development": [
39
+ "last 3 chrome version",
40
+ "last 3 firefox version",
41
+ "last 5 safari version"
42
+ ]
43
+ },
44
+ "engines": {
45
+ "node": ">=18.0"
46
+ }
47
+ }
@@ -0,0 +1,32 @@
1
+ import type { SidebarsConfig } from "@docusaurus/plugin-content-docs";
2
+
3
+ /**
4
+ * Creating a sidebar enables you to:
5
+ - create an ordered group of docs
6
+ - render a sidebar for each doc of that group
7
+ - provide next/previous navigation
8
+
9
+ The sidebars can be generated from the filesystem, or explicitly defined here.
10
+
11
+ Create as many sidebars as you want.
12
+ */
13
+ const sidebars: SidebarsConfig = {
14
+ // By default, Docusaurus generates a sidebar from the docs folder structure
15
+ guidesSidebar: [{ type: "autogenerated", dirName: "guides" }],
16
+ apiSidebar: [{ type: "autogenerated", dirName: "apis" }],
17
+
18
+ // But you can create a sidebar manually
19
+ /*
20
+ tutorialSidebar: [
21
+ 'intro',
22
+ 'hello',
23
+ {
24
+ type: 'category',
25
+ label: 'Tutorial',
26
+ items: ['tutorial-basics/create-a-document'],
27
+ },
28
+ ],
29
+ */
30
+ };
31
+
32
+ export default sidebars;
@@ -0,0 +1,70 @@
1
+ import clsx from 'clsx';
2
+ import Heading from '@theme/Heading';
3
+ import styles from './styles.module.css';
4
+
5
+ type FeatureItem = {
6
+ title: string;
7
+ Svg: React.ComponentType<React.ComponentProps<'svg'>>;
8
+ description: JSX.Element;
9
+ };
10
+
11
+ const FeatureList: FeatureItem[] = [
12
+ {
13
+ title: 'Easy to Use',
14
+ Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
15
+ description: (
16
+ <>
17
+ Docusaurus was designed from the ground up to be easily installed and
18
+ used to get your website up and running quickly.
19
+ </>
20
+ ),
21
+ },
22
+ {
23
+ title: 'Focus on What Matters',
24
+ Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
25
+ description: (
26
+ <>
27
+ Docusaurus lets you focus on your docs, and we&apos;ll do the chores. Go
28
+ ahead and move your docs into the <code>docs</code> directory.
29
+ </>
30
+ ),
31
+ },
32
+ {
33
+ title: 'Powered by React',
34
+ Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
35
+ description: (
36
+ <>
37
+ Extend or customize your website layout by reusing React. Docusaurus can
38
+ be extended while reusing the same header and footer.
39
+ </>
40
+ ),
41
+ },
42
+ ];
43
+
44
+ function Feature({title, Svg, description}: FeatureItem) {
45
+ return (
46
+ <div className={clsx('col col--4')}>
47
+ <div className="text--center">
48
+ <Svg className={styles.featureSvg} role="img" />
49
+ </div>
50
+ <div className="text--center padding-horiz--md">
51
+ <Heading as="h3">{title}</Heading>
52
+ <p>{description}</p>
53
+ </div>
54
+ </div>
55
+ );
56
+ }
57
+
58
+ export default function HomepageFeatures(): JSX.Element {
59
+ return (
60
+ <section className={styles.features}>
61
+ <div className="container">
62
+ <div className="row">
63
+ {FeatureList.map((props, idx) => (
64
+ <Feature key={idx} {...props} />
65
+ ))}
66
+ </div>
67
+ </div>
68
+ </section>
69
+ );
70
+ }
@@ -0,0 +1,11 @@
1
+ .features {
2
+ display: flex;
3
+ align-items: center;
4
+ padding: 2rem 0;
5
+ width: 100%;
6
+ }
7
+
8
+ .featureSvg {
9
+ height: 200px;
10
+ width: 200px;
11
+ }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Any CSS included here will be global. The classic template
3
+ * bundles Infima by default. Infima is a CSS framework designed to
4
+ * work well for content-centric websites.
5
+ */
6
+
7
+ /* You can override the default Infima variables here. */
8
+ :root {
9
+ --ifm-color-primary: #2e8555;
10
+ --ifm-color-primary-dark: #29784c;
11
+ --ifm-color-primary-darker: #277148;
12
+ --ifm-color-primary-darkest: #205d3b;
13
+ --ifm-color-primary-light: #33925d;
14
+ --ifm-color-primary-lighter: #359962;
15
+ --ifm-color-primary-lightest: #3cad6e;
16
+ --ifm-code-font-size: 95%;
17
+ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
18
+ }
19
+
20
+ /* For readability concerns, you should choose a lighter palette in dark mode. */
21
+ [data-theme='dark'] {
22
+ --ifm-color-primary: #25c2a0;
23
+ --ifm-color-primary-dark: #21af90;
24
+ --ifm-color-primary-darker: #1fa588;
25
+ --ifm-color-primary-darkest: #1a8870;
26
+ --ifm-color-primary-light: #29d5b0;
27
+ --ifm-color-primary-lighter: #32d8b4;
28
+ --ifm-color-primary-lightest: #4fddbf;
29
+ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
30
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * CSS files with the .module.css suffix will be treated as CSS modules
3
+ * and scoped locally.
4
+ */
5
+
6
+ .heroBanner {
7
+ padding: 4rem 0;
8
+ text-align: center;
9
+ position: relative;
10
+ overflow: hidden;
11
+ }
12
+
13
+ @media screen and (max-width: 996px) {
14
+ .heroBanner {
15
+ padding: 2rem;
16
+ }
17
+ }
18
+
19
+ .buttons {
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: center;
23
+ }
@@ -0,0 +1,137 @@
1
+ import useDocusaurusContext from "@docusaurus/useDocusaurusContext";
2
+ import Layout from "@theme/Layout";
3
+
4
+ export default function Home(): JSX.Element {
5
+ const { siteConfig } = useDocusaurusContext();
6
+ return (
7
+ <Layout
8
+ title={`Hello from ${siteConfig.title}`}
9
+ description="Description will go into a meta tag in <head />"
10
+ >
11
+ <main
12
+ style={{
13
+ display: "flex",
14
+ flexDirection: "column",
15
+ alignSelf: "center",
16
+ width: "100vw",
17
+ background: "#111",
18
+ }}
19
+ >
20
+ <div
21
+ style={{
22
+ alignSelf: "center",
23
+ textAlign: "center",
24
+
25
+ color: "#fefefe",
26
+ padding: 20,
27
+ maxWidth: 800,
28
+ }}
29
+ >
30
+ <h1 style={{ fontSize: "4rem" }}>Electrobun</h1>
31
+ <div style={{}}>
32
+ <p>
33
+ Electrobun aims to be a complete solution-in-a-box for building,
34
+ updating, and shipping ultra fast, tiny, and cross-platform
35
+ desktop applications written in Typescript.
36
+ </p>
37
+ <img src="/img/electrobun-logo-256.png"></img>
38
+ <p>
39
+ Under the hood it uses bun to execute the main process and to
40
+ bundle webview typescript, and has native bindings written in zig.
41
+ </p>
42
+ </div>
43
+ <hr style={{ margin: "35px 0" }} />
44
+ <h2>Install Electrobun v0.1.0</h2>
45
+ <div
46
+ style={{
47
+ display: "flex",
48
+ border: "4px solid #e263a9",
49
+ borderRadius: 8,
50
+ padding: 8,
51
+ background: "#000",
52
+ fontSize: 20,
53
+ fontWeight: "bold",
54
+ width: 300,
55
+ alignSelf: "center",
56
+ margin: "auto",
57
+ }}
58
+ >
59
+ <span style={{ color: "#777", padding: "0 8px" }}>$</span>
60
+ <span style={{ color: "#aaa" }}>bun install electrobun</span>
61
+ </div>
62
+ <hr style={{ margin: "35px 0" }} />
63
+ <div
64
+ style={{
65
+ display: "flex",
66
+ margin: "auto",
67
+ textAlign: "left",
68
+ flexWrap: "wrap",
69
+ justifyContent: "space-evenly",
70
+ }}
71
+ >
72
+ <div
73
+ style={{
74
+ minWidth: 100,
75
+ maxWidth: 350,
76
+ padding: 20,
77
+ border: "2px solid black",
78
+ }}
79
+ >
80
+ <h3>Typescript</h3>
81
+ <p>
82
+ Write typescript for the main process and webviews without
83
+ having to think about it. One language, no hassle.
84
+ </p>
85
+ </div>
86
+
87
+ <div
88
+ style={{
89
+ minWidth: 100,
90
+ maxWidth: 350,
91
+ padding: 20,
92
+ border: "2px solid black",
93
+ }}
94
+ >
95
+ <h3>Fast</h3>
96
+ <p>
97
+ Security and Performance with isolation between the main and
98
+ webview processes and fast, typed, easy to implement RPC between
99
+ them.
100
+ </p>
101
+ </div>
102
+
103
+ <div
104
+ style={{
105
+ minWidth: 100,
106
+ maxWidth: 350,
107
+ padding: 20,
108
+ border: "2px solid black",
109
+ }}
110
+ >
111
+ <h3>Tiny</h3>
112
+ <p>
113
+ Small self-extracting app bundles ~12MB and tiny app updates as
114
+ small as 4KB. Ship often while saving bandwidth costs.
115
+ </p>
116
+ </div>
117
+
118
+ <div
119
+ style={{
120
+ minWidth: 100,
121
+ maxWidth: 350,
122
+ padding: 20,
123
+ border: "2px solid black",
124
+ }}
125
+ >
126
+ <h3>Batteries</h3>
127
+ <p>
128
+ Everything you need in one tightly integrated workflow to start
129
+ writing code in 5 minutes and distribute in 10.
130
+ </p>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </main>
135
+ </Layout>
136
+ );
137
+ }
File without changes
@@ -0,0 +1,7 @@
1
+ {
2
+ // This file is not used in compilation. It is here just for a nice editor experience.
3
+ "extends": "@docusaurus/tsconfig",
4
+ "compilerOptions": {
5
+ "baseUrl": "."
6
+ }
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "electrobun",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "Build ultra fast, tiny, and cross-platform desktop apps with Typescript.",
5
5
  "license": "MIT",
6
6
  "author": "Blackboard Technologies Inc.",
@@ -11,7 +11,7 @@
11
11
  "./view": "./src/browser/index.ts"
12
12
  },
13
13
  "bin": {
14
- "electrobun": "src/cli/build/electrobun"
14
+ "electrobun": "src/cli/build/electrobun"
15
15
  },
16
16
  "homepage": "https://electrobun.dev",
17
17
  "repository": {
@@ -19,7 +19,7 @@
19
19
  "url": "https://github.com/blackboardsh/electrobun.git"
20
20
  },
21
21
  "scripts": {
22
- "start": "bun src/bun/index.ts",
22
+ "start": "bun src/bun/index.ts",
23
23
  "check-zig-version": "vendors/zig/zig version",
24
24
  "install-zig": "mkdir -p vendors/zig && curl -L https://ziglang.org/download/0.11.0/zig-macos-aarch64-0.11.0.tar.xz | tar -xJ --strip-components=1 -C vendors/zig zig-macos-aarch64-0.11.0/zig zig-macos-aarch64-0.11.0/lib",
25
25
  "build:objc:object": "mkdir -p src/objc/build && clang -c src/objc/objcWrapper.m -o src/objc/build/objcWrapper.o -fobjc-arc -fno-objc-msgsend-selector-stubs",
@@ -34,20 +34,25 @@
34
34
  "build:launcher:release": "cd src/launcher && ../../vendors/zig/zig build -Doptimize=ReleaseSmall",
35
35
  "build:extractor:release": "cd src/extractor && ../../vendors/zig/zig build -Doptimize=ReleaseSmall",
36
36
  "build:browser": "bun build src/browser/index.ts --outdir src/zig/build/",
37
- "build:cli": "bun build src/cli/index.ts --compile --outfile src/cli/build/electrobun",
37
+ "build:cli": "bun build src/cli/index.ts --compile --outfile src/cli/build/electrobun",
38
38
  "build:dev": "bun install && bun build:zig:trdiff && bun build:objc && bun build:browser && bun build:zig && bun build:launcher && bun build:extractor && bun build:cli",
39
39
  "build:release": "bun build:objc && bun build:zig:trdiff:release && bun build:browser && bun build:zig:release && bun build:launcher:release && bun build:extractor:release && bun build:cli",
40
40
  "release:dist": "bun build:release && cp src/launcher/zig-out/bin/launcher dist/launcher && cp src/extractor/zig-out/bin/extractor dist/extractor && cp src/bsdiff/zig-out/bin/bsdiff dist/bsdiff && cp src/bsdiff/zig-out/bin/bspatch dist/bspatch && cp src/zig/zig-out/bin/webview dist/webview && cp node_modules/.bin/bun dist/bun",
41
41
  "build:electrobun": "bun build:objc && bun build:browser && bun build:zig && bun build:bun",
42
42
  "dev:example": "bun build:dev && cd example && npm install && bun build:dev && bun start",
43
43
  "dev:example:rerun": "cd example && bun start",
44
- "dev:example:canary": "bun build:release && cd example && npm install && bun build:canary"
44
+ "dev:example:canary": "bun build:release && cd example && npm install && bun build:canary",
45
+ "dev:docs": "cd documentation && bun start",
46
+ "build:docs:release": "cd documentation && bun run build"
45
47
  },
46
48
  "devDependencies": {
47
49
  "@types/bun": "^1.0.8",
48
50
  "bun": "1.0.26"
49
51
  },
50
52
  "dependencies": {
51
- "rpc-anywhere": "1.5.0", "tar": "^6.2.1", "@oneidentity/zstd-js": "^1.0.3"
53
+ "@oneidentity/zstd-js": "^1.0.3",
54
+ "electrobun": "^0.0.2",
55
+ "rpc-anywhere": "1.5.0",
56
+ "tar": "^6.2.1"
52
57
  }
53
58
  }
@@ -45,6 +45,7 @@ type WebviewTagHandlers = RPCSchema<{
45
45
  width: number;
46
46
  height: number;
47
47
  };
48
+ masks: string;
48
49
  };
49
50
  webviewTagUpdateSrc: {
50
51
  id: number;
@@ -77,6 +78,10 @@ type WebviewTagHandlers = RPCSchema<{
77
78
  id: number;
78
79
  transparent: boolean;
79
80
  };
81
+ webviewTagToggleMirroring: {
82
+ id: number;
83
+ enable: boolean;
84
+ };
80
85
  webviewTagSetPassthrough: {
81
86
  id: number;
82
87
  enablePassthrough: boolean;
@@ -384,8 +389,8 @@ class Electroview<T> {
384
389
 
385
390
  export { type RPCSchema, createRPC, Electroview };
386
391
 
387
- const ElectrobunView = {
392
+ const Electrobun = {
388
393
  Electroview,
389
394
  };
390
395
 
391
- export default ElectrobunView;
396
+ export default Electrobun;