@lynker-desktop/electron-window-manager 0.0.8-alpha.7 → 0.0.9-alpha.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/common/index.d.ts CHANGED
@@ -42,6 +42,8 @@ export interface BWItem extends BrowserWindow {
42
42
  _name: string;
43
43
  /** 额外数据 */
44
44
  _extraData?: string;
45
+ /** 初始化url */
46
+ _initUrl?: string;
45
47
  }
46
48
  export interface BVItem extends BrowserView {
47
49
  id: number;
@@ -52,6 +54,8 @@ export interface BVItem extends BrowserView {
52
54
  _name: string;
53
55
  /** 额外数据 */
54
56
  _extraData?: string;
57
+ /** 初始化url */
58
+ _initUrl?: string;
55
59
  }
56
60
  export {};
57
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAE3H,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AAED,MAAM,MAAM,6BAA6B,GACrC,CAAC;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,GACxH,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AAE1H,UAAU,iCAAiC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,MAAO,SAAQ,aAAa;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAO,SAAQ,WAAW;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAE3H,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AAED,MAAM,MAAM,6BAA6B,GACrC,CAAC;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,GACxH,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AAE1H,UAAU,iCAAiC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,MAAO,SAAQ,aAAa;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAO,SAAQ,WAAW;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -42,6 +42,8 @@ export interface BWItem extends BrowserWindow {
42
42
  _name: string;
43
43
  /** 额外数据 */
44
44
  _extraData?: string;
45
+ /** 初始化url */
46
+ _initUrl?: string;
45
47
  }
46
48
  export interface BVItem extends BrowserView {
47
49
  id: number;
@@ -52,6 +54,8 @@ export interface BVItem extends BrowserView {
52
54
  _name: string;
53
55
  /** 额外数据 */
54
56
  _extraData?: string;
57
+ /** 初始化url */
58
+ _initUrl?: string;
55
59
  }
56
60
  export {};
57
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAE3H,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AAED,MAAM,MAAM,6BAA6B,GACrC,CAAC;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,GACxH,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AAE1H,UAAU,iCAAiC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,MAAO,SAAQ,aAAa;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,MAAO,SAAQ,WAAW;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/common/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,+BAA+B,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAC;AAE3H,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,+BAA+B,EAAE,QAAQ,CAAC;IACxF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAAC,6BAA6B,EAAE,QAAQ,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,GAAG,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CAC7D;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE,GAAG,CAAC;KACnC;CACF;AAED,MAAM,MAAM,6BAA6B,GACrC,CAAC;IAAE,IAAI,CAAC,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,GACxH,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,CAAC,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC,iCAAiC,EAAE,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AAE1H,UAAU,iCAAiC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,CAAC,EAAE;QACV,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,aAAa,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IACpD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,MAAO,SAAQ,aAAa;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAO,SAAQ,WAAW;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -14,6 +14,22 @@ export declare class WindowsManager {
14
14
  preloadedBV: BVItem | null;
15
15
  preloading: boolean;
16
16
  webviewDomainWhiteList: string[];
17
+ /**
18
+ * webview 域名白名单
19
+ * 传入格式示例:
20
+ * [
21
+ * 'example.com', // 精确匹配 example.com
22
+ * '.example.com', // 匹配所有 example.com 的子域名,如 a.example.com、b.example.com
23
+ * 'sub.domain.com', // 精确匹配 sub.domain.com
24
+ * 'localhost', // 匹配 localhost 及本地回环地址
25
+ * '127.0.0.1', // 匹配 127.0.0.1
26
+ * '::1' // 匹配 IPv6 本地回环
27
+ * ]
28
+ * 注意:
29
+ * - 以点开头的(如 .example.com)会匹配所有子域名。
30
+ * - 不带点的(如 example.com)只匹配主域名。
31
+ * - 'localhost'、'127.0.0.1'、'::1' 以及局域网 IP(如 192.168.x.x、10.x.x.x、172.16.x.x~172.31.x.x)都视为本地白名单。
32
+ */
17
33
  constructor(preload?: string, loadingViewUrl?: string, errorViewUrl?: string, preloadWebContentsUrl?: string, webviewDomainWhiteList?: string[]);
18
34
  setPreloadWebContentsUrl(preloadWebContentsUrl: string): void;
19
35
  private _preloadInstances;
@@ -34,6 +50,7 @@ export declare class WindowsManager {
34
50
  close(idOrName: string | number): boolean;
35
51
  closeAll(): void;
36
52
  rename(idOrName: string | number, newName: string): BWItem | BVItem | undefined;
53
+ reInitUrl(idOrName: string | number, url: string): BWItem | BVItem | undefined;
37
54
  getPreload(): string | undefined;
38
55
  private _applyBrowserWindowOptions;
39
56
  private _applyBrowserViewOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,WAAW,EAAkE,MAAM,UAAU,CAAA;AAIvI,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/E,eAAO,MAAM,gBAAgB,wBAQzB,CAAC;AAUL,eAAO,MAAM,MAAM,QAAS,WAAW,SAEtC,CAAA;AAmBD,qBAAa,cAAc;IACzB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,gCAAgC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvD,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,OAAO,CAAS;IAC5B,sBAAsB,EAAE,MAAM,EAAE,CAAM;gBAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,EAAE,MAAM,EAAE;IAe/I,wBAAwB,CAAC,qBAAqB,EAAE,MAAM;YAgBxC,iBAAiB;IAwB/B,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,gBAAgB;IAyCxB,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACtF,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACvE,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,GAAG,MAAM;IA8U/D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,6BAA6B;IAmF5E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IA6B3D,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAyBtC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAqC/B,QAAQ;IA0BR,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM;IAqCjD,UAAU;IAKV,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,wBAAwB;IAiB1B,wBAAwB,CAAC,GAAG,EAAE,MAAM;CAqB3C;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,0BAA0B,MAAM,2BAA2B,MAAM,EAAE,KAAG,cAkPhK,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAmC,WAAW,EAAkE,MAAM,UAAU,CAAA;AAIvI,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAE/E,eAAO,MAAM,gBAAgB,wBAQzB,CAAC;AAUL,eAAO,MAAM,MAAM,QAAS,WAAW,SAEtC,CAAA;AAoBD,qBAAa,cAAc;IACzB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,gCAAgC,EAAE,MAAM,GAAG,IAAI,CAAQ;IACvD,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAQ;IACrD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAQ;IAClC,UAAU,EAAE,OAAO,CAAS;IAC5B,sBAAsB,EAAE,MAAM,EAAE,CAAM;IACtC;;;;;;;;;;;;;;;OAeG;gBACS,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,MAAM,EAAE,sBAAsB,CAAC,EAAE,MAAM,EAAE;IAe/I,wBAAwB,CAAC,qBAAqB,EAAE,MAAM;YAgBxC,iBAAiB;IAwB/B,OAAO,CAAC,gBAAgB;IA2CxB,OAAO,CAAC,gBAAgB;IAyCxB,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACtF,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,MAAM;IACvE,MAAM,CAAC,OAAO,EAAE,6BAA6B,GAAG,MAAM,GAAG,MAAM;IAsX/D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,6BAA6B;IAmF5E,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IA6B3D,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAyBtC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAqC/B,QAAQ;IA0BR,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM;IAqCjD,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS;IAgB9E,UAAU;IAKV,OAAO,CAAC,0BAA0B;IAoBlC,OAAO,CAAC,wBAAwB;IAiB1B,wBAAwB,CAAC,GAAG,EAAE,MAAM;CAqB3C;AAID,eAAO,IAAI,aAAa,SAAQ,CAAC;AAEjC,eAAO,MAAM,UAAU,aAAc,MAAM,mBAAmB,MAAM,iBAAiB,MAAM,0BAA0B,MAAM,2BAA2B,MAAM,EAAE,KAAG,cA4QhK,CAAA"}
package/esm/main/index.js CHANGED
@@ -30,7 +30,8 @@ const initWebContentsVal = (win, preload) => {
30
30
  __ELECTRON_WINDOW_MANAGER_TYPE__: ${JSON.stringify(win._type)},
31
31
  __ELECTRON_WINDOW_MANAGER_NAME__: ${JSON.stringify(win._name)},
32
32
  __ELECTRON_WINDOW_MANAGER_EXTRA_DATA__: ${JSON.stringify(win._extraData || '')},
33
- __ELECTRON_WINDOW_MANAGER_PRELOAD__: ${JSON.stringify(preload)}
33
+ __ELECTRON_WINDOW_MANAGER_PRELOAD__: ${JSON.stringify(preload)},
34
+ __ELECTRON_WINDOW_MANAGER_INIT_URL__: ${JSON.stringify(win._initUrl || '')}
34
35
  };
35
36
  Object.entries(data).forEach(([key, value]) => {
36
37
  window[key] = value;
@@ -39,6 +40,22 @@ const initWebContentsVal = (win, preload) => {
39
40
  `);
40
41
  };
41
42
  class WindowsManager {
43
+ /**
44
+ * webview 域名白名单
45
+ * 传入格式示例:
46
+ * [
47
+ * 'example.com', // 精确匹配 example.com
48
+ * '.example.com', // 匹配所有 example.com 的子域名,如 a.example.com、b.example.com
49
+ * 'sub.domain.com', // 精确匹配 sub.domain.com
50
+ * 'localhost', // 匹配 localhost 及本地回环地址
51
+ * '127.0.0.1', // 匹配 127.0.0.1
52
+ * '::1' // 匹配 IPv6 本地回环
53
+ * ]
54
+ * 注意:
55
+ * - 以点开头的(如 .example.com)会匹配所有子域名。
56
+ * - 不带点的(如 example.com)只匹配主域名。
57
+ * - 'localhost'、'127.0.0.1'、'::1' 以及局域网 IP(如 192.168.x.x、10.x.x.x、172.16.x.x~172.31.x.x)都视为本地白名单。
58
+ */
42
59
  constructor(preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl, webviewDomainWhiteList) {
43
60
  this.preloadedBW = null;
44
61
  this.preloadedBW_FramelessWithButtons = null;
@@ -221,6 +238,7 @@ class WindowsManager {
221
238
  win._type = 'BW';
222
239
  win._name = options.name || 'anonymous';
223
240
  win._extraData = `${options?.extraData || ''}`;
241
+ win._initUrl = `${options?.url || ''}`;
224
242
  // @ts-ignore
225
243
  win?.removeAllListeners && win?.removeAllListeners?.();
226
244
  win.webContents.removeAllListeners && win.webContents.removeAllListeners();
@@ -322,6 +340,7 @@ class WindowsManager {
322
340
  window._type = type;
323
341
  window._name = name;
324
342
  window._extraData = `${options?.extraData || ''}`;
343
+ window._initUrl = `${options?.url || ''}`;
325
344
  log('log', 'create 5: ', window.id, window._id, window._name);
326
345
  if (loadingView?.url) {
327
346
  if (type === 'BW') {
@@ -359,24 +378,57 @@ class WindowsManager {
359
378
  }
360
379
  }
361
380
  window.webContents.on('did-attach-webview', (_event, webContents) => {
362
- const url = webContents.getURL();
363
- if (this.webviewDomainWhiteList && this.webviewDomainWhiteList.length > 0) {
364
- try {
365
- const { hostname } = new URL(url);
366
- if (this.webviewDomainWhiteList.some(domain => hostname.endsWith(domain))) {
367
- enable(webContents);
381
+ const tryEnable = () => {
382
+ const url = webContents.getURL();
383
+ // 判断是否本地/内网IP
384
+ const isLocalhost = (hostname) => {
385
+ return (hostname === 'localhost' ||
386
+ hostname === '127.0.0.1' ||
387
+ hostname === '::1' ||
388
+ /^192\.168\./.test(hostname) ||
389
+ /^10\./.test(hostname) ||
390
+ /^172\.(1[6-9]|2[0-9]|3[0-1])\./.test(hostname));
391
+ };
392
+ if (this.webviewDomainWhiteList && this.webviewDomainWhiteList.length > 0) {
393
+ try {
394
+ const { hostname } = new URL(url);
395
+ // 优化白名单判断,支持 .example.com 形式的子域名通配和本地/内网IP
396
+ const isWhiteListed = this.webviewDomainWhiteList.some(domain => {
397
+ if (domain === 'localhost' || domain === '127.0.0.1' || domain === '::1') {
398
+ return isLocalhost(hostname);
399
+ }
400
+ if (domain.startsWith('.')) {
401
+ // .example.com 允许所有 *.example.com
402
+ return hostname === domain.slice(1) || hostname.endsWith(domain);
403
+ }
404
+ else {
405
+ // 精确匹配
406
+ return hostname === domain;
407
+ }
408
+ }) || isLocalhost(hostname); // 允许本地回环和内网地址
409
+ if (isWhiteListed) {
410
+ enable(webContents);
411
+ }
412
+ else {
413
+ log('log', 'webview 域名未在白名单,未启用 remote', url);
414
+ }
368
415
  }
369
- else {
370
- log('log', 'webview 域名未在白名单,未启用 remote', url);
416
+ catch {
417
+ log('log', 'webview url 解析失败,未启用 remote', url);
371
418
  }
372
419
  }
373
- catch {
374
- log('log', 'webview url 解析失败,未启用 remote', url);
420
+ else {
421
+ enable(webContents); // 没有配置白名单则全部允许
375
422
  }
376
- }
377
- else {
378
- enable(webContents); // 没有配置白名单则全部允许
379
- }
423
+ };
424
+ // 只监听一次,防止多次触发
425
+ const onDidNavigate = () => {
426
+ tryEnable();
427
+ webContents.removeListener('did-navigate', onDidNavigate);
428
+ webContents.removeListener('did-finish-load', onDidNavigate);
429
+ };
430
+ webContents.on('did-navigate', onDidNavigate);
431
+ webContents.on('did-finish-load', onDidNavigate);
380
432
  });
381
433
  window.webContents.on('close', () => {
382
434
  this.windows.delete(window.id || window._id);
@@ -415,6 +467,10 @@ class WindowsManager {
415
467
  console.error('did-finish-load', window.webContents.id);
416
468
  initWebContentsVal(window, `${preload || ''}`);
417
469
  });
470
+ window.webContents.on('did-start-loading', () => {
471
+ console.error('did-start-loading', window.webContents.id);
472
+ initWebContentsVal(window, `${preload || ''}`);
473
+ });
418
474
  if (type === 'BW') {
419
475
  const handleBrowserViewFocus = (view) => {
420
476
  try {
@@ -723,6 +779,21 @@ class WindowsManager {
723
779
  initWebContentsVal(win, `${this.preload || ''}`);
724
780
  return win;
725
781
  }
782
+ reInitUrl(idOrName, url) {
783
+ log('log', 'reInitUrl', idOrName, url);
784
+ let win = undefined;
785
+ this.windows.forEach(i => {
786
+ if (i?._name === idOrName) {
787
+ win = i;
788
+ }
789
+ });
790
+ if (!win) {
791
+ return undefined;
792
+ }
793
+ win._initUrl = url;
794
+ initWebContentsVal(win, `${this.preload || ''}`);
795
+ return win;
796
+ }
726
797
  getPreload() {
727
798
  log('log', 'getPreload');
728
799
  return this.preload;
@@ -816,6 +887,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl
816
887
  winName: `${findWin?._name || ''}`,
817
888
  winType: `${findWin?._type || ''}`,
818
889
  winExtraData: `${findWin?._extraData || ''}`,
890
+ winInitUrl: `${findWin?._initUrl || ''}`,
819
891
  };
820
892
  }
821
893
  const res = wm.create(opt.data);
@@ -824,6 +896,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl
824
896
  winName: `${res?._name || ''}`,
825
897
  winType: `${res?._type || ''}`,
826
898
  winExtraData: `${res?._extraData || ''}`,
899
+ winInitUrl: `${res?._initUrl || ''}`,
827
900
  };
828
901
  }
829
902
  if (data?.type === 'get') {
@@ -834,6 +907,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl
834
907
  winName: `${res?._name || ''}`,
835
908
  winType: `${res?._type || ''}`,
836
909
  winExtraData: `${res?._extraData || ''}`,
910
+ winInitUrl: `${res?._initUrl || ''}`,
837
911
  };
838
912
  }
839
913
  if (data?.type === 'getAll') {
@@ -846,6 +920,7 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl
846
920
  winName: `${i?._name || ''}`,
847
921
  winType: `${i?._type || ''}`,
848
922
  winExtraData: `${i?._extraData || ''}`,
923
+ winInitUrl: `${i?._initUrl || ''}`,
849
924
  };
850
925
  });
851
926
  return obj;
@@ -868,6 +943,21 @@ const initialize = (preload, loadingViewUrl, errorViewUrl, preloadWebContentsUrl
868
943
  winName: `${res?._name || ''}`,
869
944
  winType: `${res?._type || ''}`,
870
945
  winExtraData: `${res?._extraData || ''}`,
946
+ winInitUrl: `${res?._initUrl || ''}`,
947
+ };
948
+ }
949
+ return undefined;
950
+ }
951
+ if (data?.type === 'reInitUrl') {
952
+ const opt = data;
953
+ const res = wm.reInitUrl(opt.data.idOrName, opt.data.url);
954
+ if (res) {
955
+ return {
956
+ winId: Number(`${res?.id || res?._id || -1}`),
957
+ winName: `${res?._name || ''}`,
958
+ winType: `${res?._type || ''}`,
959
+ winExtraData: `${res?._extraData || ''}`,
960
+ winInitUrl: `${res?._initUrl || ''}`,
871
961
  };
872
962
  }
873
963
  return undefined;