@softvisio/webview 1.2.12

Sign up to get free protection for your applications and to get access to all the features.

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,109 @@
1
+ # Changelog
2
+
3
+ ### 1.2.12 (2022-05-28)
4
+
5
+ Fixes:
6
+
7
+ - fix: search browser
8
+
9
+ ### 1.2.11 (2022-05-28)
10
+
11
+ Fixes:
12
+
13
+ - fix: win net isolation check
14
+
15
+ ### 1.2.10 (2022-05-28)
16
+
17
+ Fixes:
18
+
19
+ - fix: browser width, height
20
+
21
+ ### 1.2.9 (2022-05-28)
22
+
23
+ Fixes:
24
+
25
+ - fix: browser app mode
26
+
27
+ ### 1.2.8 (2022-05-28)
28
+
29
+ Fixes:
30
+
31
+ - fix: browser support
32
+
33
+ ### 1.2.7 (2022-05-19)
34
+
35
+ Fixes:
36
+
37
+ - fix: windows elevation error handle
38
+
39
+ ### 1.2.6 (2022-05-19)
40
+
41
+ Fixes:
42
+
43
+ - fix: windows elevation error handle
44
+
45
+ ### 1.2.5 (2022-05-19)
46
+
47
+ Fixes:
48
+
49
+ - fix: windows elevation error handle
50
+
51
+ ### 1.2.4 (2022-05-19)
52
+
53
+ Fixes:
54
+
55
+ - fix: error message on windows
56
+
57
+ ### 1.2.3 (2022-05-19)
58
+
59
+ Fixes:
60
+
61
+ - fix: use laucher under windows
62
+
63
+ ### 1.2.2 (2022-05-18)
64
+
65
+ Fixes:
66
+
67
+ - fix: windows launcher
68
+
69
+ ### 1.2.1 (2022-04-23)
70
+
71
+ Fixes:
72
+
73
+ - fix: windows isolation patch removed
74
+
75
+ ### 1.2.0 (2022-04-21)
76
+
77
+ Features:
78
+
79
+ - feat: abort signal support
80
+
81
+ Fixes:
82
+
83
+ - fix: spawn typo
84
+
85
+ ### 1.1.2 (2022-04-16)
86
+
87
+ Fixes:
88
+
89
+ - fix: win32 loopback
90
+
91
+ ### 1.1.1 (2022-04-16)
92
+
93
+ Fixes:
94
+
95
+ - fix: docs
96
+
97
+ ### 1.1.0 (2022-04-16)
98
+
99
+ Features:
100
+
101
+ - feat: close events
102
+
103
+ ### 1.0.0 (2022-04-16)
104
+
105
+ Fixes:
106
+
107
+ - fix: build
108
+
109
+ 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,145 @@
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
+ var BROWSER, WIN32_NET_ISOLATION;
12
+
13
+ export default class WebView extends Events {
14
+ #proc;
15
+
16
+ constructor ( url, { title, width, height, maximized = true, signal, dataDir, forceWebView } = {} ) {
17
+ super();
18
+
19
+ if ( !( url instanceof URL ) ) url = new URL( url );
20
+
21
+ var command, args;
22
+
23
+ // browser
24
+ BROWSER: if ( !forceWebView ) {
25
+ if ( process.platform === "win32" ) {
26
+ if ( BROWSER == null ) {
27
+ BROWSER = false;
28
+
29
+ const locations = [
30
+
31
+ //
32
+ process.env["LocalAppData"] + "/Google/Chrome/Application/chrome.exe",
33
+ process.env["ProgramFiles(x86)"] + "/Google/Chrome/Application/chrome.exe",
34
+ process.env["ProgramFiles"] + "/Google/Chrome/Application/chrome.exe",
35
+ process.env["ProgramFiles(x86)"] + "/Microsoft/Edge/Application/msedge.exe",
36
+ ];
37
+
38
+ for ( const location of locations ) {
39
+ if ( fs.existsSync( location ) ) {
40
+ BROWSER = location;
41
+
42
+ break;
43
+ }
44
+ }
45
+ }
46
+
47
+ if ( !BROWSER ) break BROWSER;
48
+
49
+ command = BROWSER;
50
+
51
+ args = [
52
+
53
+ //
54
+ "--new-window",
55
+ "--no-first-run",
56
+ ...( dataDir ? [`--user-data-dir=${dataDir}`] : [] ),
57
+ "--app=" + url,
58
+ ];
59
+
60
+ if ( width || height ) {
61
+ args.push( `--window-size=${width || 100000},${height || 100000}` );
62
+ }
63
+ else if ( maximized ) {
64
+ args.push( "--start-maximized" );
65
+ }
66
+ }
67
+ }
68
+
69
+ // webview
70
+ if ( !command ) {
71
+ if ( process.platform === "win32" && ( url.hostname === "localhost" || url.hostname.startsWith( "127." ) ) && !WIN32_NET_ISOLATION ) {
72
+ if ( WIN32_NET_ISOLATION == null ) {
73
+ if ( !this.#checkWindowsNetIsolation() ) {
74
+
75
+ // set loopback net isolation
76
+ childProcess.execFileSync( "hstart.exe", ["/ELEVATE", "/NOCONSOLE", "checknetisolation.exe LoopbackExempt -a -n=Microsoft.Win32WebViewHost_cw5n1h2txyewy"], {
77
+ "cwd": new URL( `binaries/${process.platform}`, import.meta.url ),
78
+ "windowsHide": true,
79
+ "encoding": "utf8",
80
+ } );
81
+
82
+ if ( !this.#checkWindowsNetIsolation() ) {
83
+ WIN32_NET_ISOLATION = false;
84
+ }
85
+ else {
86
+ WIN32_NET_ISOLATION = true;
87
+ }
88
+ }
89
+ else {
90
+ WIN32_NET_ISOLATION = true;
91
+ }
92
+ }
93
+
94
+ if ( !WIN32_NET_ISOLATION ) {
95
+ console.log( `Unable to start webview, elevated permissions are required (https://github.com/webview/webview/issues/599)` );
96
+
97
+ url = new URL( `binaries/${process.platform}/elevation-required.html`, import.meta.url );
98
+ }
99
+ }
100
+
101
+ command = BINARIES[process.platform];
102
+
103
+ args = ["--url", url];
104
+ if ( title ) args.push( "--title", title );
105
+ if ( width ) args.push( "--width", width );
106
+ if ( height ) args.push( "--height", height );
107
+ }
108
+
109
+ this.#proc = childProcess
110
+ .spawn( command, args, {
111
+ "cwd": new URL( `binaries/${process.platform}`, import.meta.url ),
112
+ "stdio": "ignore",
113
+ signal,
114
+ } )
115
+ .once( "error", e => {
116
+ if ( e.code !== "ABORT_ERR" ) throw e;
117
+ } )
118
+ .once( "close", () => {
119
+ this.#proc = null;
120
+
121
+ this.emit( "close" );
122
+ } );
123
+ }
124
+
125
+ // properties
126
+ isStarted () {
127
+ return !!this.#proc;
128
+ }
129
+
130
+ close () {
131
+ if ( !this.#proc ) return;
132
+ this.#proc.kill();
133
+
134
+ this.#proc = null;
135
+ }
136
+
137
+ #checkWindowsNetIsolation () {
138
+ const stdout = childProcess.execFileSync( "checknetisolation.exe", ["LoopbackExempt", "-s"], {
139
+ "windowsHide": true,
140
+ "encoding": "utf8",
141
+ } );
142
+
143
+ return stdout.includes( "microsoft.win32webviewhost_cw5n1h2txyewy" );
144
+ }
145
+ }
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@softvisio/webview",
3
+ "version": "1.2.12",
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
+ }