@softvisio/webview 1.2.13

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.

Potentially problematic release.


This version of @softvisio/webview might be problematic. Click here for more details.

package/.editorconfig ADDED
@@ -0,0 +1,16 @@
1
+ root = true
2
+
3
+ [*]
4
+ indent_style = space
5
+ indent_size = 4
6
+ end_of_line = lf
7
+ charset = utf-8
8
+ trim_trailing_whitespace = true
9
+ insert_final_newline = true
10
+ max_line_length = 99999999
11
+
12
+ [*.{yml,yaml}]
13
+ indent_size = 2
14
+
15
+ [Makefile]
16
+ indent_style = tab
package/CHANGELOG.md ADDED
@@ -0,0 +1,115 @@
1
+ # Changelog
2
+
3
+ ### 1.2.13 (2022-06-14)
4
+
5
+ Fixes:
6
+
7
+ - fix: browser locations updated
8
+
9
+ ### 1.2.12 (2022-05-28)
10
+
11
+ Fixes:
12
+
13
+ - fix: search browser
14
+
15
+ ### 1.2.11 (2022-05-28)
16
+
17
+ Fixes:
18
+
19
+ - fix: win net isolation check
20
+
21
+ ### 1.2.10 (2022-05-28)
22
+
23
+ Fixes:
24
+
25
+ - fix: browser width, height
26
+
27
+ ### 1.2.9 (2022-05-28)
28
+
29
+ Fixes:
30
+
31
+ - fix: browser app mode
32
+
33
+ ### 1.2.8 (2022-05-28)
34
+
35
+ Fixes:
36
+
37
+ - fix: browser support
38
+
39
+ ### 1.2.7 (2022-05-19)
40
+
41
+ Fixes:
42
+
43
+ - fix: windows elevation error handle
44
+
45
+ ### 1.2.6 (2022-05-19)
46
+
47
+ Fixes:
48
+
49
+ - fix: windows elevation error handle
50
+
51
+ ### 1.2.5 (2022-05-19)
52
+
53
+ Fixes:
54
+
55
+ - fix: windows elevation error handle
56
+
57
+ ### 1.2.4 (2022-05-19)
58
+
59
+ Fixes:
60
+
61
+ - fix: error message on windows
62
+
63
+ ### 1.2.3 (2022-05-19)
64
+
65
+ Fixes:
66
+
67
+ - fix: use laucher under windows
68
+
69
+ ### 1.2.2 (2022-05-18)
70
+
71
+ Fixes:
72
+
73
+ - fix: windows launcher
74
+
75
+ ### 1.2.1 (2022-04-23)
76
+
77
+ Fixes:
78
+
79
+ - fix: windows isolation patch removed
80
+
81
+ ### 1.2.0 (2022-04-21)
82
+
83
+ Features:
84
+
85
+ - feat: abort signal support
86
+
87
+ Fixes:
88
+
89
+ - fix: spawn typo
90
+
91
+ ### 1.1.2 (2022-04-16)
92
+
93
+ Fixes:
94
+
95
+ - fix: win32 loopback
96
+
97
+ ### 1.1.1 (2022-04-16)
98
+
99
+ Fixes:
100
+
101
+ - fix: docs
102
+
103
+ ### 1.1.0 (2022-04-16)
104
+
105
+ Features:
106
+
107
+ - feat: close events
108
+
109
+ ### 1.0.0 (2022-04-16)
110
+
111
+ Fixes:
112
+
113
+ - fix: build
114
+
115
+ Migration:
package/README.md ADDED
@@ -0,0 +1,52 @@
1
+ <!-- !!! DO NOT EDIT, THIS FILE IS GENERATED AUTOMATICALLY !!! -->
2
+
3
+ > :information_source: Please, see the full project documentation here: [https://softvisio.github.io/webview/](https://softvisio.github.io/webview/).
4
+
5
+ # Introduction
6
+
7
+ `NodeJS` wrapper for [webview](https://github.com/webview/webview).
8
+
9
+ Compiled binaries: [suchipi/webview](https://github.com/suchipi/webview).
10
+
11
+ ## Install
12
+
13
+ ```shell
14
+ npm i @softvisio/webview
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ```javascript
20
+ import WebView from "@softvisio/webview";
21
+
22
+ const webView = new WebView("https://example.com/", { title: "Example", width: 400, height: 400 });
23
+
24
+ webView.on("close", () => {});
25
+
26
+ webView.close();
27
+ ```
28
+
29
+ ## Notes
30
+
31
+ ### Windows
32
+
33
+ On windows, the webview will not be able to access localhost unless the following command has been run as administrator at least once before:
34
+
35
+ ```shell
36
+ checknetisolation.exe LoopbackExempt -a -n=Microsoft.Win32WebViewHost_cw5n1h2txyewy
37
+ ```
38
+
39
+ ```shell
40
+ curl -sSLO https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
41
+ nuget.exe install Microsoft.Web.Webview2 -OutputDirectory script
42
+
43
+ cl -DSFML_STATIC /std:c++17 /EHsc /I script\Microsoft.Web.WebView2.1.0.1185.39\build\native\include script\Microsoft.Web.WebView2.1.0.1185.39\build\native\x64\WebView2Loader.dll.lib main.cc /link /out:webview.exe
44
+ ```
45
+
46
+ ### Linux
47
+
48
+ On Linux, you need to install GTK3 and GtkWebkit2.
49
+
50
+ ```shell
51
+ sudo apt-get install libwebkit2gtk-4.0-dev
52
+ ```
@@ -0,0 +1,5 @@
1
+ logo: false
2
+
3
+ externalTypes:
4
+ - https://softvisio.github.io/core/
5
+ - https://softvisio.github.io/result/
package/docs/.nojekyll ADDED
File without changes
package/docs/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # Introduction
2
+
3
+ `NodeJS` wrapper for [webview](https://github.com/webview/webview).
4
+
5
+ Compiled binaries: [suchipi/webview](https://github.com/suchipi/webview).
6
+
7
+ ## Install
8
+
9
+ ```shell
10
+ npm i @softvisio/webview
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ ```javascript
16
+ import WebView from "@softvisio/webview";
17
+
18
+ const webView = new WebView("https://example.com/", { title: "Example", width: 400, height: 400 });
19
+
20
+ webView.on("close", () => {});
21
+
22
+ webView.close();
23
+ ```
24
+
25
+ ## Notes
26
+
27
+ ### Windows
28
+
29
+ On windows, the webview will not be able to access localhost unless the following command has been run as administrator at least once before:
30
+
31
+ ```shell
32
+ checknetisolation.exe LoopbackExempt -a -n=Microsoft.Win32WebViewHost_cw5n1h2txyewy
33
+ ```
34
+
35
+ ```shell
36
+ curl -sSLO https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
37
+ nuget.exe install Microsoft.Web.Webview2 -OutputDirectory script
38
+
39
+ cl -DSFML_STATIC /std:c++17 /EHsc /I script\Microsoft.Web.WebView2.1.0.1185.39\build\native\include script\Microsoft.Web.WebView2.1.0.1185.39\build\native\x64\WebView2Loader.dll.lib main.cc /link /out:webview.exe
40
+ ```
41
+
42
+ ### Linux
43
+
44
+ On Linux, you need to install GTK3 and GtkWebkit2.
45
+
46
+ ```shell
47
+ sudo apt-get install libwebkit2gtk-4.0-dev
48
+ ```
@@ -0,0 +1,11 @@
1
+ - [Introduction](/)
2
+
3
+ **API**
4
+
5
+ - [Introduction](/api.md)
6
+ - [API v1](/api-v1.md)
7
+ - [RPC v1](/rpc-v1.md)
8
+
9
+ **Links**
10
+
11
+ - [Changelog](/changelog)
@@ -0,0 +1,37 @@
1
+ <!DOCTYPE html>
2
+
3
+ <!-- !!! DO NOT EDIT, THIS FILE IS GENERATED AUTOMATICALLY !!! -->
4
+
5
+ <html>
6
+ <head>
7
+ <meta charset="UTF-8" />
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
9
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
10
+
11
+ <link rel="stylesheet" id="lightTheme" href="https://cdn.jsdelivr.net/npm/docsify-themeable/dist/css/theme-simple.css" />
12
+ <link rel="stylesheet" id="darkTheme" href="https://cdn.jsdelivr.net/npm/docsify-themeable/dist/css/theme-simple-dark.css" />
13
+ <link rel="stylesheet" href="https://softvisio.github.io/cli/assets/theme/theme.css" />
14
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free/css/all.min.css" />
15
+ </head>
16
+ <body>
17
+ <nav>
18
+ <a href="#/changelog">Changelog</a> • <a href="https://github.com/softvisio/webview/discussions" title="Discussions"><i class="fa-regular fa-comments"></i></a> • <a href="https://github.com/softvisio/webview/issues" title="Issues"><i class="fa-solid fa-bug"></i></a> • <a href="https://www.npmjs.com/package/@softvisio/webview" title="NPM package"><i class="fa-brands fa-npm"></i></a> • <a href="#toggleTheme"><i class="fa-solid fa-adjust"></i> Theme</a>
19
+ </nav>
20
+ <div id="app"></div>
21
+ <div id="gotoTop"><a href="#gotoTop">🡡 Top</a></div>
22
+
23
+ <script>
24
+ window.$docsify = { alias: { "/changelog": "https://raw.githubusercontent.com/softvisio/webview/master/CHANGELOG.md" }, auto2top: true, externalLinkTarget: "_self", loadSidebar: true, maxLevel: 2, name: "@softvisio/webview", relativePath: true, repo: "https://github.com/softvisio/webview", search: { depth: 3 }, subMaxLevel: 2, tabs: {} };
25
+ </script>
26
+
27
+ <script src="https://softvisio.github.io/cli/assets/theme/theme.js"></script>
28
+ <script src="https://cdn.jsdelivr.net/npm/docsify"></script>
29
+ <script src="https://cdn.jsdelivr.net/npm/prismjs/components/prism-bash.min.js"></script>
30
+ <script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/search.min.js"></script>
31
+ <script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script>
32
+ <script src="https://cdn.jsdelivr.net/npm/docsify-tabs"></script>
33
+ <script src="https://cdn.jsdelivr.net/npm/docsify-copy-code"></script>
34
+ <script src="https://cdn.jsdelivr.net/npm/docsify-pagination/dist/docsify-pagination.min.js"></script>
35
+ <script src="https://cdn.jsdelivr.net/npm/docsify/lib/plugins/external-script.min.js"></script>
36
+ </body>
37
+ </html>
Binary file
Binary file
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Elevated permissions are required</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <meta name="title" content="" />
7
+ <meta name="keywords" content="" />
8
+ <meta name="description" content="" />
9
+ <meta name="robots" content="" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <meta http-equiv="Content-Style-Type" content="text/css" />
12
+ </head>
13
+ <body>
14
+ <h2>Elevated permissions are required</h2>
15
+ <p>
16
+ Microsoft webview requires elevated permissions to access localhost.
17
+ <br />
18
+ Please, run it with the evevated permissions or run following command manually as administrator to allow access to the localhost for webview (this is required one time only):
19
+ </p>
20
+ <code>CheckNetIsolation.exe LoopbackExempt -a -n="Microsoft.Win32WebViewHost_cw5n1h2txyewy"</code>
21
+ </body>
22
+ </html>
Binary file
Binary file
Binary file
package/lib/index.js ADDED
@@ -0,0 +1,159 @@
1
+ import Events from "node:events";
2
+ import childProcess from "node:child_process";
3
+ import fs from "node:fs";
4
+
5
+ const BINARIES = {
6
+ "win32": "webview.exe",
7
+ "linux": "webview",
8
+ "darwin": "webview",
9
+ };
10
+
11
+ const BROWSER_LOCATIONS = {
12
+ "win32": [
13
+
14
+ //
15
+ process.env["LocalAppData"] + "/Google/Chrome/Application/chrome.exe",
16
+ process.env["ProgramFiles(x86)"] + "/Google/Chrome/Application/chrome.exe",
17
+ process.env["ProgramFiles"] + "/Google/Chrome/Application/chrome.exe",
18
+ process.env["ProgramFiles(x86)"] + "/Microsoft/Edge/Application/msedge.exe",
19
+ ],
20
+ "linux": [
21
+
22
+ //
23
+ "/usr/bin/google-chrome",
24
+ "/usr/bin/google-chrome-stable",
25
+ "/usr/bin/chromium-browser",
26
+ ],
27
+ "darwin": [
28
+
29
+ //
30
+ "/usr/bin/google-chrome",
31
+ "/usr/bin/google-chrome-stable",
32
+ "/usr/bin/chromium-browser",
33
+ ],
34
+ };
35
+
36
+ var BROWSER, WIN32_NET_ISOLATION;
37
+
38
+ export default class WebView extends Events {
39
+ #proc;
40
+
41
+ constructor ( url, { title, width, height, maximized = true, signal, dataDir, forceWebView } = {} ) {
42
+ super();
43
+
44
+ if ( !( url instanceof URL ) ) url = new URL( url );
45
+
46
+ var command, args;
47
+
48
+ // browser
49
+ BROWSER: if ( !forceWebView ) {
50
+ if ( BROWSER == null ) {
51
+ BROWSER = false;
52
+
53
+ for ( const location of BROWSER_LOCATIONS[process.platform] ) {
54
+ if ( fs.existsSync( location ) ) {
55
+ BROWSER = location;
56
+
57
+ break;
58
+ }
59
+ }
60
+ }
61
+
62
+ if ( !BROWSER ) break BROWSER;
63
+
64
+ command = BROWSER;
65
+
66
+ args = [
67
+
68
+ //
69
+ "--new-window",
70
+ "--no-first-run",
71
+ ...( dataDir ? [`--user-data-dir=${dataDir}`] : [] ),
72
+ "--app=" + url,
73
+ ];
74
+
75
+ if ( width || height ) {
76
+ args.push( `--window-size=${width || 100000},${height || 100000}` );
77
+ }
78
+ else if ( maximized ) {
79
+ args.push( "--start-maximized" );
80
+ }
81
+ }
82
+
83
+ // webview
84
+ if ( !command ) {
85
+ if ( process.platform === "win32" && ( url.hostname === "localhost" || url.hostname.startsWith( "127." ) ) && !WIN32_NET_ISOLATION ) {
86
+ if ( WIN32_NET_ISOLATION == null ) {
87
+ if ( !this.#checkWindowsNetIsolation() ) {
88
+
89
+ // set loopback net isolation
90
+ childProcess.execFileSync( "hstart.exe", ["/ELEVATE", "/NOCONSOLE", "checknetisolation.exe LoopbackExempt -a -n=Microsoft.Win32WebViewHost_cw5n1h2txyewy"], {
91
+ "cwd": new URL( `binaries/${process.platform}`, import.meta.url ),
92
+ "windowsHide": true,
93
+ "encoding": "utf8",
94
+ } );
95
+
96
+ if ( !this.#checkWindowsNetIsolation() ) {
97
+ WIN32_NET_ISOLATION = false;
98
+ }
99
+ else {
100
+ WIN32_NET_ISOLATION = true;
101
+ }
102
+ }
103
+ else {
104
+ WIN32_NET_ISOLATION = true;
105
+ }
106
+ }
107
+
108
+ if ( !WIN32_NET_ISOLATION ) {
109
+ console.log( `Unable to start webview, elevated permissions are required (https://github.com/webview/webview/issues/599)` );
110
+
111
+ url = new URL( `binaries/${process.platform}/elevation-required.html`, import.meta.url );
112
+ }
113
+ }
114
+
115
+ command = BINARIES[process.platform];
116
+
117
+ args = ["--url", url];
118
+ if ( title ) args.push( "--title", title );
119
+ if ( width ) args.push( "--width", width );
120
+ if ( height ) args.push( "--height", height );
121
+ }
122
+
123
+ this.#proc = childProcess
124
+ .spawn( command, args, {
125
+ "cwd": new URL( `binaries/${process.platform}`, import.meta.url ),
126
+ "stdio": "ignore",
127
+ signal,
128
+ } )
129
+ .once( "error", e => {
130
+ if ( e.code !== "ABORT_ERR" ) throw e;
131
+ } )
132
+ .once( "close", () => {
133
+ this.#proc = null;
134
+
135
+ this.emit( "close" );
136
+ } );
137
+ }
138
+
139
+ // properties
140
+ isStarted () {
141
+ return !!this.#proc;
142
+ }
143
+
144
+ close () {
145
+ if ( !this.#proc ) return;
146
+ this.#proc.kill();
147
+
148
+ this.#proc = null;
149
+ }
150
+
151
+ #checkWindowsNetIsolation () {
152
+ const stdout = childProcess.execFileSync( "checknetisolation.exe", ["LoopbackExempt", "-s"], {
153
+ "windowsHide": true,
154
+ "encoding": "utf8",
155
+ } );
156
+
157
+ return stdout.includes( "microsoft.win32webviewhost_cw5n1h2txyewy" );
158
+ }
159
+ }
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@softvisio/webview",
3
+ "version": "1.2.13",
4
+ "description": "Webview bindings",
5
+ "keywords": [
6
+ "softvisio",
7
+ "webview"
8
+ ],
9
+ "homepage": "https://softvisio.github.io/webview/",
10
+ "bugs": {
11
+ "url": "https://github.com/softvisio/webview/issues",
12
+ "email": "zdm <zdm@softvisio.net>"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "https://github.com/softvisio/webview.git"
17
+ },
18
+ "license": "ISC",
19
+ "author": "zdm <zdm@softvisio.net>",
20
+ "type": "module",
21
+ "imports": {
22
+ "#lib/*": "./lib/*.js"
23
+ },
24
+ "exports": {
25
+ ".": "./lib/index.js"
26
+ }
27
+ }