@softvisio/webview 1.2.7

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,79 @@
1
+ # Changelog
2
+
3
+ ### 1.2.7 (2022-05-19)
4
+
5
+ Fixes:
6
+
7
+ - fix: windows elevation error handle
8
+
9
+ ### 1.2.6 (2022-05-19)
10
+
11
+ Fixes:
12
+
13
+ - fix: windows elevation error handle
14
+
15
+ ### 1.2.5 (2022-05-19)
16
+
17
+ Fixes:
18
+
19
+ - fix: windows elevation error handle
20
+
21
+ ### 1.2.4 (2022-05-19)
22
+
23
+ Fixes:
24
+
25
+ - fix: error message on windows
26
+
27
+ ### 1.2.3 (2022-05-19)
28
+
29
+ Fixes:
30
+
31
+ - fix: use laucher under windows
32
+
33
+ ### 1.2.2 (2022-05-18)
34
+
35
+ Fixes:
36
+
37
+ - fix: windows launcher
38
+
39
+ ### 1.2.1 (2022-04-23)
40
+
41
+ Fixes:
42
+
43
+ - fix: windows isolation patch removed
44
+
45
+ ### 1.2.0 (2022-04-21)
46
+
47
+ Features:
48
+
49
+ - feat: abort signal support
50
+
51
+ Fixes:
52
+
53
+ - fix: spawn typo
54
+
55
+ ### 1.1.2 (2022-04-16)
56
+
57
+ Fixes:
58
+
59
+ - fix: win32 loopback
60
+
61
+ ### 1.1.1 (2022-04-16)
62
+
63
+ Fixes:
64
+
65
+ - fix: docs
66
+
67
+ ### 1.1.0 (2022-04-16)
68
+
69
+ Features:
70
+
71
+ - feat: close events
72
+
73
+ ### 1.0.0 (2022-04-16)
74
+
75
+ Fixes:
76
+
77
+ - fix: build
78
+
79
+ 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,94 @@
1
+ import Events from "events";
2
+ import childProcess from "child_process";
3
+
4
+ const BINARIES = {
5
+ "win32": "webview.exe",
6
+ "linux": "webview",
7
+ "darwin": "webview",
8
+ };
9
+
10
+ var WIN32_NET_ISOLATION;
11
+
12
+ export default class WebView extends Events {
13
+ #name;
14
+ #proc;
15
+
16
+ constructor ( url, { name, title, width, height, signal } = {} ) {
17
+ super();
18
+
19
+ if ( this.#proc ) return;
20
+
21
+ this.#name = name || "webview";
22
+
23
+ if ( !( url instanceof URL ) ) url = new URL( url );
24
+
25
+ if ( process.platform === "win32" && ( url.hostname === "localhost" || url.hostname.startsWith( "127." ) ) && !WIN32_NET_ISOLATION ) {
26
+ if ( !this.#checkWindowsNetIsolation() ) {
27
+
28
+ // set loopback net isolation
29
+ childProcess.execFileSync( "hstart.exe", ["/ELEVATE", "/NOCONSOLE", "checknetisolation.exe LoopbackExempt -a -n=Microsoft.Win32WebViewHost_cw5n1h2txyewy"], {
30
+ "cwd": new URL( `binaries/${process.platform}`, import.meta.url ),
31
+ "windowsHide": true,
32
+ "encoding": "utf8",
33
+ } );
34
+
35
+ if ( !this.#checkWindowsNetIsolation() ) {
36
+ console.log( `Unable to start webview, elevated permissions are required (https://github.com/webview/webview/issues/599)` );
37
+
38
+ url = new URL( `binaries/${process.platform}/elevation-required.html`, import.meta.url );
39
+ }
40
+ else {
41
+ WIN32_NET_ISOLATION = true;
42
+ }
43
+ }
44
+ else {
45
+ WIN32_NET_ISOLATION = true;
46
+ }
47
+ }
48
+
49
+ const args = ["--url", url];
50
+ if ( title ) args.push( "--title", title );
51
+ if ( width ) args.push( "--width", width );
52
+ if ( height ) args.push( "--height", height );
53
+
54
+ this.#proc = childProcess
55
+ .spawn( BINARIES[process.platform], args, {
56
+ "cwd": new URL( `binaries/${process.platform}`, import.meta.url ),
57
+ "stdio": "ignore",
58
+ signal,
59
+ } )
60
+ .once( "error", e => {
61
+ if ( e.code !== "ABORT_ERR" ) throw e;
62
+ } )
63
+ .once( "close", () => {
64
+ this.#proc = null;
65
+
66
+ this.emit( "close" );
67
+ } );
68
+ }
69
+
70
+ // properties
71
+ get name () {
72
+ return this.#name;
73
+ }
74
+
75
+ isStarted () {
76
+ return !!this.#proc;
77
+ }
78
+
79
+ close () {
80
+ if ( !this.#proc ) return;
81
+ this.#proc.kill();
82
+
83
+ this.#proc = null;
84
+ }
85
+
86
+ #checkWindowsNetIsolation () {
87
+ const stdout = childProcess.execFileSync( "checknetisolation.exe", ["LoopbackExempt", "-s"], {
88
+ "windowsHide": true,
89
+ "encoding": "utf8",
90
+ } );
91
+
92
+ return stdout.includes( "microsoft.win32webviewhost_cw5n1h2txyewy" );
93
+ }
94
+ }
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@softvisio/webview",
3
+ "version": "1.2.7",
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
+ }