@nemigo/electron 1.3.0 → 1.5.0
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.
- package/dist/security.d.ts +11 -13
- package/dist/security.js +12 -16
- package/package.json +6 -3
package/dist/security.d.ts
CHANGED
|
@@ -8,29 +8,27 @@
|
|
|
8
8
|
export declare class NetworkSecurity {
|
|
9
9
|
/**
|
|
10
10
|
* Разрешенные домены для навигации внутри приложения
|
|
11
|
-
*
|
|
12
|
-
* @readonly
|
|
13
|
-
* @type {Set<string>}
|
|
14
11
|
*/
|
|
15
|
-
|
|
12
|
+
allowedInternalOrigins: Set<string>;
|
|
16
13
|
/**
|
|
17
14
|
* Разрешенные внешние домены для открытия в системном браузере
|
|
18
|
-
*
|
|
19
|
-
* @readonly
|
|
20
|
-
* @type {Set<string>}
|
|
21
15
|
*/
|
|
22
|
-
|
|
23
|
-
private extractUrlOrigin;
|
|
16
|
+
allowedExternalOrigins: Set<string>;
|
|
24
17
|
/**
|
|
25
|
-
* @param
|
|
26
|
-
* @param
|
|
27
|
-
* @param
|
|
18
|
+
* @param [allowedInternal=[]] - Разрешенные домены для навигации внутри приложения
|
|
19
|
+
* @param [allowedExternal=[]] - Разрешенные внешние домены для открытия в системном браузере
|
|
20
|
+
* @param [init=true] - Инициализировать сразу обработчики событий {@link NetworkSecurity.init}
|
|
28
21
|
*/
|
|
29
22
|
constructor(allowedInternal?: (URL | string)[], allowedExternal?: (URL | string)[], init?: boolean);
|
|
30
23
|
/**
|
|
31
24
|
* Инициализирует обработчики событий
|
|
32
25
|
*
|
|
33
|
-
*
|
|
26
|
+
* ```typescript
|
|
27
|
+
* app.on("web-contents-created", (_, contents) => {
|
|
28
|
+
* contents.on("will-navigate", "...");
|
|
29
|
+
* contents.setWindowOpenHandler("...");
|
|
30
|
+
* });
|
|
31
|
+
* ```
|
|
34
32
|
*/
|
|
35
33
|
init(): this;
|
|
36
34
|
private handleNavigation;
|
package/dist/security.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { extractUrlOrigin } from "@nemigo/helpers/url";
|
|
1
2
|
import { app, shell } from "electron";
|
|
2
3
|
/**
|
|
3
4
|
* Политика защиты навигации и управления доступом к внешним URL.
|
|
@@ -9,37 +10,32 @@ import { app, shell } from "electron";
|
|
|
9
10
|
export class NetworkSecurity {
|
|
10
11
|
/**
|
|
11
12
|
* Разрешенные домены для навигации внутри приложения
|
|
12
|
-
*
|
|
13
|
-
* @readonly
|
|
14
|
-
* @type {Set<string>}
|
|
15
13
|
*/
|
|
16
14
|
allowedInternalOrigins;
|
|
17
15
|
/**
|
|
18
16
|
* Разрешенные внешние домены для открытия в системном браузере
|
|
19
|
-
*
|
|
20
|
-
* @readonly
|
|
21
|
-
* @type {Set<string>}
|
|
22
17
|
*/
|
|
23
18
|
allowedExternalOrigins;
|
|
24
|
-
extractUrlOrigin(url) {
|
|
25
|
-
const { origin } = new URL(url);
|
|
26
|
-
return origin;
|
|
27
|
-
}
|
|
28
19
|
/**
|
|
29
|
-
* @param
|
|
30
|
-
* @param
|
|
31
|
-
* @param
|
|
20
|
+
* @param [allowedInternal=[]] - Разрешенные домены для навигации внутри приложения
|
|
21
|
+
* @param [allowedExternal=[]] - Разрешенные внешние домены для открытия в системном браузере
|
|
22
|
+
* @param [init=true] - Инициализировать сразу обработчики событий {@link NetworkSecurity.init}
|
|
32
23
|
*/
|
|
33
24
|
constructor(allowedInternal = [], allowedExternal = [], init = true) {
|
|
34
|
-
this.allowedInternalOrigins = new Set(allowedInternal.map((v) =>
|
|
35
|
-
this.allowedExternalOrigins = new Set(allowedExternal.map((v) =>
|
|
25
|
+
this.allowedInternalOrigins = new Set(allowedInternal.map((v) => extractUrlOrigin(v)));
|
|
26
|
+
this.allowedExternalOrigins = new Set(allowedExternal.map((v) => extractUrlOrigin(v)));
|
|
36
27
|
if (init)
|
|
37
28
|
this.init();
|
|
38
29
|
}
|
|
39
30
|
/**
|
|
40
31
|
* Инициализирует обработчики событий
|
|
41
32
|
*
|
|
42
|
-
*
|
|
33
|
+
* ```typescript
|
|
34
|
+
* app.on("web-contents-created", (_, contents) => {
|
|
35
|
+
* contents.on("will-navigate", "...");
|
|
36
|
+
* contents.setWindowOpenHandler("...");
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
43
39
|
*/
|
|
44
40
|
init() {
|
|
45
41
|
app.on("web-contents-created", (_, contents) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nemigo/electron",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Vlad Logvin",
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
},
|
|
9
9
|
"type": "module",
|
|
10
10
|
"engines": {
|
|
11
|
-
"node": ">=22"
|
|
11
|
+
"node": ">=22",
|
|
12
|
+
"pnpm": ">=10.9.0"
|
|
12
13
|
},
|
|
13
14
|
"scripts": {
|
|
14
15
|
"build": "svelte-package && rimraf .svelte-kit",
|
|
@@ -23,9 +24,11 @@
|
|
|
23
24
|
}
|
|
24
25
|
},
|
|
25
26
|
"peerDependencies": {
|
|
27
|
+
"@nemigo/helpers": ">=1.5.0",
|
|
26
28
|
"electron": ">=32.0.0"
|
|
27
29
|
},
|
|
28
30
|
"devDependencies": {
|
|
29
|
-
"@nemigo/configs": "workspace:*"
|
|
31
|
+
"@nemigo/configs": "workspace:*",
|
|
32
|
+
"@nemigo/helpers": "workspace:*"
|
|
30
33
|
}
|
|
31
34
|
}
|