electron-wcap 1.0.0 → 1.1.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/README.md +16 -14
- package/common/errors.d.ts +1 -1
- package/common/errors.d.ts.map +1 -1
- package/common/errors.js +4 -0
- package/common/errors.js.map +1 -1
- package/common/interfaces.d.ts +1 -0
- package/common/interfaces.d.ts.map +1 -1
- package/common/protocol.d.ts +6 -1
- package/common/protocol.d.ts.map +1 -1
- package/common/protocol.js +16 -5
- package/common/protocol.js.map +1 -1
- package/esm/common/errors.d.ts +1 -1
- package/esm/common/errors.d.ts.map +1 -1
- package/esm/common/errors.js +4 -1
- package/esm/common/errors.js.map +1 -1
- package/esm/common/interfaces.d.ts +1 -0
- package/esm/common/interfaces.d.ts.map +1 -1
- package/esm/common/protocol.d.ts +6 -1
- package/esm/common/protocol.d.ts.map +1 -1
- package/esm/common/protocol.js +15 -6
- package/esm/common/protocol.js.map +1 -1
- package/esm/main/callback-registry.d.ts +1 -0
- package/esm/main/callback-registry.d.ts.map +1 -1
- package/esm/main/callback-registry.js +25 -11
- package/esm/main/callback-registry.js.map +1 -1
- package/esm/main/compiler.d.ts +4 -0
- package/esm/main/compiler.d.ts.map +1 -0
- package/esm/main/compiler.js +29 -0
- package/esm/main/compiler.js.map +1 -0
- package/esm/main/index.d.ts +1 -1
- package/esm/main/index.d.ts.map +1 -1
- package/esm/main/index.js +1 -1
- package/esm/main/provider.d.ts +2 -0
- package/esm/main/provider.d.ts.map +1 -1
- package/esm/main/provider.js +14 -27
- package/esm/main/provider.js.map +1 -1
- package/esm/preload/bridge.d.ts.map +1 -1
- package/esm/preload/bridge.js +7 -1
- package/esm/preload/bridge.js.map +1 -1
- package/main/callback-registry.d.ts +1 -0
- package/main/callback-registry.d.ts.map +1 -1
- package/main/callback-registry.js +24 -10
- package/main/callback-registry.js.map +1 -1
- package/main/compiler.d.ts +4 -0
- package/main/compiler.d.ts.map +1 -0
- package/main/compiler.js +30 -0
- package/main/compiler.js.map +1 -0
- package/main/index.d.ts +1 -1
- package/main/index.d.ts.map +1 -1
- package/main/index.js +2 -0
- package/main/index.js.map +1 -1
- package/main/provider.d.ts +2 -0
- package/main/provider.d.ts.map +1 -1
- package/main/provider.js +15 -26
- package/main/provider.js.map +1 -1
- package/package.json +5 -2
- package/preload/bridge.d.ts.map +1 -1
- package/preload/bridge.js +6 -0
- package/preload/bridge.js.map +1 -1
package/README.md
CHANGED
|
@@ -18,6 +18,10 @@ npm add electron-wcap
|
|
|
18
18
|
|
|
19
19
|
Requires **Electron** (peer dependency). Node 22+ and pnpm are recommended (see `volta` in `package.json`).
|
|
20
20
|
|
|
21
|
+
## Example
|
|
22
|
+
|
|
23
|
+
- See [Web Applciation with theme swticher API](example/)
|
|
24
|
+
|
|
21
25
|
## Usage
|
|
22
26
|
|
|
23
27
|
### 1. Main process
|
|
@@ -80,6 +84,14 @@ The renderer can call the callback (possibly asynchronously); the call is sent t
|
|
|
80
84
|
Returns a proxy that implements `ApiInterface` (and `Promisify<ApiInterface>` so methods are async). Each property access returns an async function that runs the corresponding method in the renderer via `webContents.executeJavaScript`.
|
|
81
85
|
The proxy also has a readonly **`webContents`** property (the `WebContents` you passed in).
|
|
82
86
|
|
|
87
|
+
- **`removeAllCallbacks(apiProvider)`**
|
|
88
|
+
Removes all registered callbacks associated with this API provider (i.e. webContents).
|
|
89
|
+
Returns **`true`** if at least one callback was removed.
|
|
90
|
+
|
|
91
|
+
- **`removeCallback(apiProvider, name)`**
|
|
92
|
+
Removes registered callbacks associated with this API provider (i.e. webContents) and name.
|
|
93
|
+
Returns **`true`** if callback was removed.
|
|
94
|
+
|
|
83
95
|
### Preload (`electron-wcap/preload`)
|
|
84
96
|
|
|
85
97
|
- **`enableCallbacks()`**
|
|
@@ -89,23 +101,13 @@ The renderer can call the callback (possibly asynchronously); the call is sent t
|
|
|
89
101
|
|
|
90
102
|
- **Entry points**: Use `electron-wcap/main` in the main process and `electron-wcap/preload` in the preload script. Importing from `electron-wcap` alone throws an error that explains this.
|
|
91
103
|
- **Callback names**: Callbacks you pass from main must be named (e.g. `function onData(x) { ... }`), not anonymous, so they can be registered and invoked by name.
|
|
92
|
-
- **
|
|
93
|
-
|
|
94
|
-
## Build
|
|
95
|
-
|
|
96
|
-
From the repo:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
pnpm i
|
|
100
|
-
pnpm build
|
|
101
|
-
```
|
|
104
|
+
- **Sandbox**: as Electron now deafult sandbox to `true`, you should disable sandoxing to use callbacks.
|
|
105
|
+
- **Reload webContents**: As the callback registry do not observes to webContents re/loading, you should manually drop and re-register callbacks after reloading or navigation.
|
|
102
106
|
|
|
103
|
-
|
|
107
|
+
## Develop
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
See [DEVELOP.md](./doc/DEVELOP.md).
|
|
106
110
|
|
|
107
|
-
- `pnpm build` — Rollup build (CJS + ESM)
|
|
108
|
-
- `pnpm lint` — Lint (editorconfig + ESLint)
|
|
109
111
|
|
|
110
112
|
## License
|
|
111
113
|
|
package/common/errors.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare function unknownOptionsType(): Error;
|
|
2
1
|
export declare function apiKeyNotExists(apiKey: string, webContentsId: number): Error;
|
|
3
2
|
export declare function callbackNotRegistered(method: string, senderId: number): Error;
|
|
4
3
|
export declare function nonInvocationRequest(): Error;
|
|
4
|
+
export declare function nonRemoveRequest(): Error;
|
|
5
5
|
export declare function callbackWithoutName(): Error;
|
|
6
6
|
export declare function callbackRegisteredAlready(callbackName: string, webContentsId: number): Error;
|
|
7
7
|
export declare function bridgeNotRegistered(): Error;
|
package/common/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/common/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/common/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,KAAK,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAE7E;AAED,wBAAgB,oBAAoB,IAAI,KAAK,CAE5C;AAED,wBAAgB,gBAAgB,IAAI,KAAK,CAExC;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAE3C;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,KAAK,CAE5F;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAE3C;AAED,wBAAgB,cAAc,IAAI,KAAK,CAOtC"}
|
package/common/errors.js
CHANGED
|
@@ -7,6 +7,9 @@ function callbackNotRegistered(method, senderId) {
|
|
|
7
7
|
function nonInvocationRequest() {
|
|
8
8
|
return Error('electron-wcap: got non callback invocation request');
|
|
9
9
|
}
|
|
10
|
+
function nonRemoveRequest() {
|
|
11
|
+
return Error('electron-wcap: got non callback remove request');
|
|
12
|
+
}
|
|
10
13
|
function callbackWithoutName() {
|
|
11
14
|
return Error('electron-wcap: callback must have a name - use function decration syntax');
|
|
12
15
|
}
|
|
@@ -32,4 +35,5 @@ exports.callbackRegisteredAlready = callbackRegisteredAlready;
|
|
|
32
35
|
exports.callbackWithoutName = callbackWithoutName;
|
|
33
36
|
exports.exportFromRoot = exportFromRoot;
|
|
34
37
|
exports.nonInvocationRequest = nonInvocationRequest;
|
|
38
|
+
exports.nonRemoveRequest = nonRemoveRequest;
|
|
35
39
|
//# sourceMappingURL=errors.js.map
|
package/common/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sources":["../../src/common/errors.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../../src/common/errors.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,SAAU,eAAe,CAAC,MAAc,EAAE,aAAqB,EAAA;IACpE,OAAO,KAAK,CAAC,CAAA,6BAAA,EAAiC,MAAO,sCAAuC,aAAc,CAAA,CAAA,CAAG,CAAC;AAC/G;AAEM,SAAU,qBAAqB,CAAC,MAAc,EAAE,QAAgB,EAAA;IACrE,OAAO,KAAK,CAAC,CAAA,yBAAA,EAA6B,MAAO,gCAAiC,QAAS,CAAA,CAAA,CAAG,CAAC;AAChG;SAEgB,oBAAoB,GAAA;AACnC,IAAA,OAAO,KAAK,CAAC,oDAAoD,CAAC;AACnE;SAEgB,gBAAgB,GAAA;AAC/B,IAAA,OAAO,KAAK,CAAC,gDAAgD,CAAC;AAC/D;SAEgB,mBAAmB,GAAA;AAClC,IAAA,OAAO,KAAK,CAAC,0EAA0E,CAAC;AACzF;AAEM,SAAU,yBAAyB,CAAC,YAAoB,EAAE,aAAqB,EAAA;IACpF,OAAO,KAAK,CAAC,CAAA,mCAAA,EAAuC,YAAa,yCAA0C,aAAc,CAAA,CAAA,CAAG,CAAC;AAC9H;SAEgB,mBAAmB,GAAA;AAClC,IAAA,OAAO,KAAK,CAAC,gGAAgG,CAAC;AAC/G;SAEgB,cAAc,GAAA;AAC7B,IAAA,OAAO,KAAK,CAAC,CAAA;;;;;AAKX,EAAA,CAAA,CAAC;AACJ;;;;;;;;;;;"}
|
package/common/interfaces.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/common/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/common/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC"}
|
package/common/protocol.d.ts
CHANGED
|
@@ -2,10 +2,15 @@ export interface CallbackInvokeRequest {
|
|
|
2
2
|
method: string;
|
|
3
3
|
args: unknown[];
|
|
4
4
|
}
|
|
5
|
+
export interface CallbackRemoveRequest {
|
|
6
|
+
method: string;
|
|
7
|
+
}
|
|
5
8
|
export interface DispatchedCallback {
|
|
6
9
|
dispatchedCallbackName: string;
|
|
7
10
|
}
|
|
8
11
|
export declare function isCallbackInvokeRequest(msg: unknown): msg is CallbackInvokeRequest;
|
|
9
|
-
export declare
|
|
12
|
+
export declare function isCallbackRemoveRequest(msg: unknown): msg is CallbackRemoveRequest;
|
|
13
|
+
export declare const BRIDGE_INVOKE_REQUEST_CHANNEL = "electron-wcap:bridge-invoke-request";
|
|
14
|
+
export declare const BRIDGE_REMOVE_REQUEST_CHANNEL = "electron-wcap:bridge-remove-request";
|
|
10
15
|
export declare const CALLBACK_BRIDGE_NAME = "__ElectronWCAPBridge__";
|
|
11
16
|
//# sourceMappingURL=protocol.d.ts.map
|
package/common/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/common/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAClC,sBAAsB,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/common/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,sBAAsB,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,CAOlF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,CAKlF;AAED,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AACnF,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AAEnF,eAAO,MAAM,oBAAoB,2BAA2B,CAAC"}
|
package/common/protocol.js
CHANGED
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
function isCallbackInvokeRequest(msg) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
return msg !== null &&
|
|
3
|
+
typeof msg === 'object' &&
|
|
4
|
+
'method' in msg &&
|
|
5
|
+
typeof msg.method === 'string' &&
|
|
6
|
+
'args' in msg &&
|
|
7
|
+
Array.isArray(msg.args);
|
|
6
8
|
}
|
|
7
|
-
|
|
9
|
+
function isCallbackRemoveRequest(msg) {
|
|
10
|
+
return msg !== null &&
|
|
11
|
+
typeof msg === 'object' &&
|
|
12
|
+
'method' in msg &&
|
|
13
|
+
typeof msg.method === 'string';
|
|
14
|
+
}
|
|
15
|
+
const BRIDGE_INVOKE_REQUEST_CHANNEL = 'electron-wcap:bridge-invoke-request';
|
|
16
|
+
const BRIDGE_REMOVE_REQUEST_CHANNEL = 'electron-wcap:bridge-remove-request';
|
|
8
17
|
const CALLBACK_BRIDGE_NAME = '__ElectronWCAPBridge__';
|
|
9
18
|
|
|
10
19
|
exports.BRIDGE_INVOKE_REQUEST_CHANNEL = BRIDGE_INVOKE_REQUEST_CHANNEL;
|
|
20
|
+
exports.BRIDGE_REMOVE_REQUEST_CHANNEL = BRIDGE_REMOVE_REQUEST_CHANNEL;
|
|
11
21
|
exports.CALLBACK_BRIDGE_NAME = CALLBACK_BRIDGE_NAME;
|
|
12
22
|
exports.isCallbackInvokeRequest = isCallbackInvokeRequest;
|
|
23
|
+
exports.isCallbackRemoveRequest = isCallbackRemoveRequest;
|
|
13
24
|
//# sourceMappingURL=protocol.js.map
|
package/common/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sources":["../../src/common/protocol.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol.js","sources":["../../src/common/protocol.ts"],"sourcesContent":[null],"names":[],"mappings":"AAaM,SAAU,uBAAuB,CAAC,GAAY,EAAA;IACnD,OAAO,GAAG,KAAK,IAAI;QAClB,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,QAAQ,IAAI,GAAG;AACf,QAAA,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;AAC9B,QAAA,MAAM,IAAI,GAAG;AACb,QAAA,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB;AAEM,SAAU,uBAAuB,CAAC,GAAY,EAAA;IACnD,OAAO,GAAG,KAAK,IAAI;QAClB,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,QAAQ,IAAI,GAAG;AACf,QAAA,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;AAChC;AAEO,MAAM,6BAA6B,GAAG;AACtC,MAAM,6BAA6B,GAAG;AAEtC,MAAM,oBAAoB,GAAG;;;;;;;;"}
|
package/esm/common/errors.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare function unknownOptionsType(): Error;
|
|
2
1
|
export declare function apiKeyNotExists(apiKey: string, webContentsId: number): Error;
|
|
3
2
|
export declare function callbackNotRegistered(method: string, senderId: number): Error;
|
|
4
3
|
export declare function nonInvocationRequest(): Error;
|
|
4
|
+
export declare function nonRemoveRequest(): Error;
|
|
5
5
|
export declare function callbackWithoutName(): Error;
|
|
6
6
|
export declare function callbackRegisteredAlready(callbackName: string, webContentsId: number): Error;
|
|
7
7
|
export declare function bridgeNotRegistered(): Error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/common/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/common/errors.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,KAAK,CAE5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAE7E;AAED,wBAAgB,oBAAoB,IAAI,KAAK,CAE5C;AAED,wBAAgB,gBAAgB,IAAI,KAAK,CAExC;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAE3C;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,KAAK,CAE5F;AAED,wBAAgB,mBAAmB,IAAI,KAAK,CAE3C;AAED,wBAAgB,cAAc,IAAI,KAAK,CAOtC"}
|
package/esm/common/errors.js
CHANGED
|
@@ -7,6 +7,9 @@ function callbackNotRegistered(method, senderId) {
|
|
|
7
7
|
function nonInvocationRequest() {
|
|
8
8
|
return Error('electron-wcap: got non callback invocation request');
|
|
9
9
|
}
|
|
10
|
+
function nonRemoveRequest() {
|
|
11
|
+
return Error('electron-wcap: got non callback remove request');
|
|
12
|
+
}
|
|
10
13
|
function callbackWithoutName() {
|
|
11
14
|
return Error('electron-wcap: callback must have a name - use function decration syntax');
|
|
12
15
|
}
|
|
@@ -25,5 +28,5 @@ function exportFromRoot() {
|
|
|
25
28
|
`);
|
|
26
29
|
}
|
|
27
30
|
|
|
28
|
-
export { apiKeyNotExists, bridgeNotRegistered, callbackNotRegistered, callbackRegisteredAlready, callbackWithoutName, exportFromRoot, nonInvocationRequest };
|
|
31
|
+
export { apiKeyNotExists, bridgeNotRegistered, callbackNotRegistered, callbackRegisteredAlready, callbackWithoutName, exportFromRoot, nonInvocationRequest, nonRemoveRequest };
|
|
29
32
|
//# sourceMappingURL=errors.js.map
|
package/esm/common/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sources":["../../../../src/common/errors.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.js","sources":["../../../../src/common/errors.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAM,SAAU,eAAe,CAAC,MAAc,EAAE,aAAqB,EAAA;IACpE,OAAO,KAAK,CAAC,CAAA,6BAAA,EAAiC,MAAO,sCAAuC,aAAc,CAAA,CAAA,CAAG,CAAC;AAC/G;AAEM,SAAU,qBAAqB,CAAC,MAAc,EAAE,QAAgB,EAAA;IACrE,OAAO,KAAK,CAAC,CAAA,yBAAA,EAA6B,MAAO,gCAAiC,QAAS,CAAA,CAAA,CAAG,CAAC;AAChG;SAEgB,oBAAoB,GAAA;AACnC,IAAA,OAAO,KAAK,CAAC,oDAAoD,CAAC;AACnE;SAEgB,gBAAgB,GAAA;AAC/B,IAAA,OAAO,KAAK,CAAC,gDAAgD,CAAC;AAC/D;SAEgB,mBAAmB,GAAA;AAClC,IAAA,OAAO,KAAK,CAAC,0EAA0E,CAAC;AACzF;AAEM,SAAU,yBAAyB,CAAC,YAAoB,EAAE,aAAqB,EAAA;IACpF,OAAO,KAAK,CAAC,CAAA,mCAAA,EAAuC,YAAa,yCAA0C,aAAc,CAAA,CAAA,CAAG,CAAC;AAC9H;SAEgB,mBAAmB,GAAA;AAClC,IAAA,OAAO,KAAK,CAAC,gGAAgG,CAAC;AAC/G;SAEgB,cAAc,GAAA;AAC7B,IAAA,OAAO,KAAK,CAAC,CAAA;;;;;AAKX,EAAA,CAAA,CAAC;AACJ;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/common/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/common/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC9B,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC1D,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;CACtC"}
|
package/esm/common/protocol.d.ts
CHANGED
|
@@ -2,10 +2,15 @@ export interface CallbackInvokeRequest {
|
|
|
2
2
|
method: string;
|
|
3
3
|
args: unknown[];
|
|
4
4
|
}
|
|
5
|
+
export interface CallbackRemoveRequest {
|
|
6
|
+
method: string;
|
|
7
|
+
}
|
|
5
8
|
export interface DispatchedCallback {
|
|
6
9
|
dispatchedCallbackName: string;
|
|
7
10
|
}
|
|
8
11
|
export declare function isCallbackInvokeRequest(msg: unknown): msg is CallbackInvokeRequest;
|
|
9
|
-
export declare
|
|
12
|
+
export declare function isCallbackRemoveRequest(msg: unknown): msg is CallbackRemoveRequest;
|
|
13
|
+
export declare const BRIDGE_INVOKE_REQUEST_CHANNEL = "electron-wcap:bridge-invoke-request";
|
|
14
|
+
export declare const BRIDGE_REMOVE_REQUEST_CHANNEL = "electron-wcap:bridge-remove-request";
|
|
10
15
|
export declare const CALLBACK_BRIDGE_NAME = "__ElectronWCAPBridge__";
|
|
11
16
|
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/common/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAClC,sBAAsB,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/common/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACrC,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,sBAAsB,EAAE,MAAM,CAAA;CAC9B;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,CAOlF;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB,CAKlF;AAED,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AACnF,eAAO,MAAM,6BAA6B,wCAAwC,CAAC;AAEnF,eAAO,MAAM,oBAAoB,2BAA2B,CAAC"}
|
package/esm/common/protocol.js
CHANGED
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
function isCallbackInvokeRequest(msg) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
return msg !== null &&
|
|
3
|
+
typeof msg === 'object' &&
|
|
4
|
+
'method' in msg &&
|
|
5
|
+
typeof msg.method === 'string' &&
|
|
6
|
+
'args' in msg &&
|
|
7
|
+
Array.isArray(msg.args);
|
|
6
8
|
}
|
|
7
|
-
|
|
9
|
+
function isCallbackRemoveRequest(msg) {
|
|
10
|
+
return msg !== null &&
|
|
11
|
+
typeof msg === 'object' &&
|
|
12
|
+
'method' in msg &&
|
|
13
|
+
typeof msg.method === 'string';
|
|
14
|
+
}
|
|
15
|
+
const BRIDGE_INVOKE_REQUEST_CHANNEL = 'electron-wcap:bridge-invoke-request';
|
|
16
|
+
const BRIDGE_REMOVE_REQUEST_CHANNEL = 'electron-wcap:bridge-remove-request';
|
|
8
17
|
const CALLBACK_BRIDGE_NAME = '__ElectronWCAPBridge__';
|
|
9
18
|
|
|
10
|
-
export { BRIDGE_INVOKE_REQUEST_CHANNEL, CALLBACK_BRIDGE_NAME, isCallbackInvokeRequest };
|
|
19
|
+
export { BRIDGE_INVOKE_REQUEST_CHANNEL, BRIDGE_REMOVE_REQUEST_CHANNEL, CALLBACK_BRIDGE_NAME, isCallbackInvokeRequest, isCallbackRemoveRequest };
|
|
11
20
|
//# sourceMappingURL=protocol.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sources":["../../../../src/common/protocol.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"protocol.js","sources":["../../../../src/common/protocol.ts"],"sourcesContent":[null],"names":[],"mappings":"AAaM,SAAU,uBAAuB,CAAC,GAAY,EAAA;IACnD,OAAO,GAAG,KAAK,IAAI;QAClB,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,QAAQ,IAAI,GAAG;AACf,QAAA,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;AAC9B,QAAA,MAAM,IAAI,GAAG;AACb,QAAA,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACzB;AAEM,SAAU,uBAAuB,CAAC,GAAY,EAAA;IACnD,OAAO,GAAG,KAAK,IAAI;QAClB,OAAO,GAAG,KAAK,QAAQ;AACvB,QAAA,QAAQ,IAAI,GAAG;AACf,QAAA,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;AAChC;AAEO,MAAM,6BAA6B,GAAG;AACtC,MAAM,6BAA6B,GAAG;AAEtC,MAAM,oBAAoB,GAAG;;;;"}
|
|
@@ -4,6 +4,7 @@ export declare class CallbackRegistry {
|
|
|
4
4
|
constructor();
|
|
5
5
|
registerCallback(webContents: WebContents, callback: (...args: unknown[]) => unknown): string;
|
|
6
6
|
unregisterCallback(hostId: number, name: string): boolean;
|
|
7
|
+
unregisterAll(hostId: number): boolean;
|
|
7
8
|
private watchForHost;
|
|
8
9
|
}
|
|
9
10
|
export declare function globalCallbacksRegistry(): CallbackRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-registry.d.ts","sourceRoot":"","sources":["../../../src/main/callback-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AAKhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmE;;
|
|
1
|
+
{"version":3,"file":"callback-registry.d.ts","sourceRoot":"","sources":["../../../src/main/callback-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AAKhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmE;;IA6B7F,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM;IAoB7F,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAgBzD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAItC,OAAO,CAAC,YAAY;CAKpB;AAID,wBAAgB,uBAAuB,IAAI,gBAAgB,CAM1D"}
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
import { ipcMain } from 'electron';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { nonInvocationRequest, callbackNotRegistered, nonRemoveRequest, callbackWithoutName, callbackRegisteredAlready } from '../common/errors.js';
|
|
3
|
+
import { BRIDGE_INVOKE_REQUEST_CHANNEL, isCallbackInvokeRequest, BRIDGE_REMOVE_REQUEST_CHANNEL, isCallbackRemoveRequest } from '../common/protocol.js';
|
|
4
4
|
|
|
5
5
|
class CallbackRegistry {
|
|
6
6
|
callbacks = new Map();
|
|
7
7
|
constructor() {
|
|
8
8
|
ipcMain.on(BRIDGE_INVOKE_REQUEST_CHANNEL, (event, msg) => {
|
|
9
|
-
if (isCallbackInvokeRequest(msg)) {
|
|
10
|
-
|
|
11
|
-
if (!callback) {
|
|
12
|
-
console.error(callbackNotRegistered(msg.method, event.sender.id));
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
event.returnValue = callback?.(...msg.args);
|
|
9
|
+
if (!isCallbackInvokeRequest(msg)) {
|
|
10
|
+
console.error(nonInvocationRequest());
|
|
16
11
|
return;
|
|
17
12
|
}
|
|
18
|
-
|
|
13
|
+
const callback = this.callbacks.get(event.sender.id)?.get(msg.method);
|
|
14
|
+
if (!callback) {
|
|
15
|
+
console.error(callbackNotRegistered(msg.method, event.sender.id));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
event.returnValue = callback(...msg.args);
|
|
19
|
+
});
|
|
20
|
+
ipcMain.on(BRIDGE_REMOVE_REQUEST_CHANNEL, (event, msg) => {
|
|
21
|
+
if (!isCallbackRemoveRequest(msg)) {
|
|
22
|
+
console.error(nonRemoveRequest());
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
event.returnValue = this.unregisterCallback(event.sender.id, msg.method);
|
|
19
26
|
});
|
|
20
27
|
}
|
|
21
28
|
registerCallback(webContents, callback) {
|
|
@@ -39,7 +46,14 @@ class CallbackRegistry {
|
|
|
39
46
|
if (!callbacksByIdBucket) {
|
|
40
47
|
return false;
|
|
41
48
|
}
|
|
42
|
-
|
|
49
|
+
const deleted = callbacksByIdBucket.delete(name);
|
|
50
|
+
if (!callbacksByIdBucket.size) {
|
|
51
|
+
this.callbacks.delete(hostId);
|
|
52
|
+
}
|
|
53
|
+
return deleted;
|
|
54
|
+
}
|
|
55
|
+
unregisterAll(hostId) {
|
|
56
|
+
return this.callbacks.delete(hostId);
|
|
43
57
|
}
|
|
44
58
|
watchForHost(webContents) {
|
|
45
59
|
webContents.once('destroyed', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-registry.js","sources":["../../../../src/main/callback-registry.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;MAKa,gBAAgB,CAAA;AACX,IAAA,SAAS,GAAG,IAAI,GAAG,EAAwD;AAE5F,IAAA,WAAA,GAAA;QACC,OAAO,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,KAA4B,EAAE,GAAY,KAAI;AACxF,YAAA,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"callback-registry.js","sources":["../../../../src/main/callback-registry.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CallbackRegistry } from './callback-registry';
|
|
2
|
+
export declare function compileInvoke<P extends unknown[]>(registry: CallbackRegistry, webContents: Electron.WebContents, apiKey: string, method: string, args: P): string;
|
|
3
|
+
export declare function compile<P extends unknown[]>(fn: (..._: P) => unknown, ...args: P): string;
|
|
4
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../../src/main/compiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,EAChD,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW,EACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,GAAG,MAAM,CAEhB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAEzF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { invoke } from './injectable.js';
|
|
2
|
+
|
|
3
|
+
function compileInvoke(registry, webContents, apiKey, method, args) {
|
|
4
|
+
return `(${invoke.toString()})("${apiKey}","${method}",[${serializeArguments(registry, webContents, args)}])`;
|
|
5
|
+
}
|
|
6
|
+
function compile(fn, ...args) {
|
|
7
|
+
return `(${fn.toString()})(${serializeArgumentsRaw(args)})`;
|
|
8
|
+
}
|
|
9
|
+
function serializeArguments(registry, webContents, args) {
|
|
10
|
+
const serialized = args.map((arg, index) => {
|
|
11
|
+
if (typeof arg === 'function') {
|
|
12
|
+
const dispatched = {
|
|
13
|
+
dispatchedCallbackName: registry.registerCallback(webContents, arg)
|
|
14
|
+
};
|
|
15
|
+
args[index] = dispatched;
|
|
16
|
+
}
|
|
17
|
+
return JSON.stringify(args[index]);
|
|
18
|
+
});
|
|
19
|
+
return serialized.join(',');
|
|
20
|
+
}
|
|
21
|
+
function serializeArgumentsRaw(...args) {
|
|
22
|
+
const serialized = args.map((arg) => {
|
|
23
|
+
return JSON.stringify(arg);
|
|
24
|
+
});
|
|
25
|
+
return serialized.join(',');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { compile, compileInvoke };
|
|
29
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sources":["../../../../src/main/compiler.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAIM,SAAU,aAAa,CAC5B,QAA0B,EAC1B,WAAiC,EACjC,MAAc,EACd,MAAc,EACd,IAAO,EAAA;AACP,IAAA,OAAO,IAAK,MAAM,CAAC,QAAQ,EAAG,CAAA,GAAA,EAAO,MAAO,CAAA,GAAA,EAAO,MAAO,MAAO,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAE,IAAI;AACtH;SAEgB,OAAO,CAAsB,EAAwB,EAAE,GAAG,IAAO,EAAA;IAChF,OAAO,CAAA,CAAA,EAAK,EAAE,CAAC,QAAQ,EAAG,CAAA,EAAA,EAAM,qBAAqB,CAAC,IAAI,CAAE,CAAA,CAAA,CAAG;AAChE;AAEA,SAAS,kBAAkB,CAAC,QAA0B,EAAE,WAAiC,EAAE,IAAe,EAAA;IACzG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,KAAa,KAAI;AAC3D,QAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAC9B,YAAA,MAAM,UAAU,GAAuB;gBACtC,sBAAsB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAmC;aAClG;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU;QACzB;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B;AAEA,SAAS,qBAAqB,CAAC,GAAG,IAAe,EAAA;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAY,KAAI;AAC5C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3B,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B;;;;"}
|
package/esm/main/index.d.ts
CHANGED
package/esm/main/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnF,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
package/esm/main/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createApiProvider } from './provider.js';
|
|
1
|
+
export { createApiProvider, removeAllCallbacks, removeCallback } from './provider.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/esm/main/provider.d.ts
CHANGED
|
@@ -4,4 +4,6 @@ export type WebContentsApiProvider<T> = Promisify<T> & {
|
|
|
4
4
|
readonly webContents: WebContents;
|
|
5
5
|
};
|
|
6
6
|
export declare function createApiProvider<ApiInterface>(webContents: WebContents, apiKey: string): WebContentsApiProvider<ApiInterface>;
|
|
7
|
+
export declare function removeAllCallbacks<T>(apiProvider: WebContentsApiProvider<T>): boolean;
|
|
8
|
+
export declare function removeCallback<T>(apiProvider: WebContentsApiProvider<T>, name: string): boolean;
|
|
7
9
|
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/main/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/main/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;AA+C7F,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAS9H;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAErF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/F"}
|
package/esm/main/provider.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { globalCallbacksRegistry } from './callback-registry.js';
|
|
2
|
-
import { apiExists, invoke } from './injectable.js';
|
|
3
1
|
import { apiKeyNotExists } from '../common/errors.js';
|
|
2
|
+
import { globalCallbacksRegistry } from './callback-registry.js';
|
|
3
|
+
import { compile, compileInvoke } from './compiler.js';
|
|
4
|
+
import { apiExists } from './injectable.js';
|
|
4
5
|
|
|
5
6
|
class ApiProviderPropertiesHandler {
|
|
6
7
|
webContents;
|
|
@@ -11,26 +12,6 @@ class ApiProviderPropertiesHandler {
|
|
|
11
12
|
this.apiKey = apiKey;
|
|
12
13
|
this.callbackRegistry = callbackRegistry;
|
|
13
14
|
}
|
|
14
|
-
compile(fn, ...args) {
|
|
15
|
-
return `(${fn.toString()})(${this.serializeArguments(...args)})`;
|
|
16
|
-
}
|
|
17
|
-
;
|
|
18
|
-
serializeArguments(...args) {
|
|
19
|
-
const serialized = args.map((arg) => {
|
|
20
|
-
if (Array.isArray(arg)) {
|
|
21
|
-
arg.forEach((value, index) => {
|
|
22
|
-
if (typeof value === 'function') {
|
|
23
|
-
const dispatched = {
|
|
24
|
-
dispatchedCallbackName: this.callbackRegistry.registerCallback(this.webContents, value)
|
|
25
|
-
};
|
|
26
|
-
arg[index] = dispatched;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return JSON.stringify(arg);
|
|
31
|
-
});
|
|
32
|
-
return serialized.join(',');
|
|
33
|
-
}
|
|
34
15
|
}
|
|
35
16
|
class ApiProviderProxyHandler {
|
|
36
17
|
apiExistsAwaiter;
|
|
@@ -46,14 +27,14 @@ class ApiProviderProxyHandler {
|
|
|
46
27
|
if (propertyProxy) {
|
|
47
28
|
return propertyProxy;
|
|
48
29
|
}
|
|
49
|
-
const
|
|
30
|
+
const apiExistsAwaiterClosure = this.apiExistsAwaiter;
|
|
50
31
|
// proxy context must be a function, to allow using handler 'apply'.
|
|
51
32
|
const propProxy = new Proxy(() => { }, {
|
|
52
33
|
async apply(_target, this_, args) {
|
|
53
|
-
if (!(await
|
|
34
|
+
if (!(await apiExistsAwaiterClosure)) {
|
|
54
35
|
throw apiKeyNotExists(this_.apiKey, this_.webContents.id);
|
|
55
36
|
}
|
|
56
|
-
const injectable = this_.
|
|
37
|
+
const injectable = compileInvoke(globalCallbacksRegistry(), this_.webContents, this_.apiKey, propertyKey, args);
|
|
57
38
|
return this_.webContents.executeJavaScript(injectable);
|
|
58
39
|
},
|
|
59
40
|
});
|
|
@@ -63,11 +44,17 @@ class ApiProviderProxyHandler {
|
|
|
63
44
|
}
|
|
64
45
|
function createApiProvider(webContents, apiKey) {
|
|
65
46
|
const propertiesHandler = new ApiProviderPropertiesHandler(webContents, apiKey, globalCallbacksRegistry());
|
|
66
|
-
const checkApiExistsInjectable =
|
|
47
|
+
const checkApiExistsInjectable = compile(apiExists, apiKey);
|
|
67
48
|
const checkApiExistsPromise = webContents.executeJavaScript(checkApiExistsInjectable);
|
|
68
49
|
const proxyHandler = new ApiProviderProxyHandler(checkApiExistsPromise);
|
|
69
50
|
return new Proxy(propertiesHandler, proxyHandler);
|
|
70
51
|
}
|
|
52
|
+
function removeAllCallbacks(apiProvider) {
|
|
53
|
+
return globalCallbacksRegistry().unregisterAll(apiProvider.webContents.id);
|
|
54
|
+
}
|
|
55
|
+
function removeCallback(apiProvider, name) {
|
|
56
|
+
return globalCallbacksRegistry().unregisterCallback(apiProvider.webContents.id, name);
|
|
57
|
+
}
|
|
71
58
|
|
|
72
|
-
export { createApiProvider };
|
|
59
|
+
export { createApiProvider, removeAllCallbacks, removeCallback };
|
|
73
60
|
//# sourceMappingURL=provider.js.map
|
package/esm/main/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../../../src/main/provider.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../../../src/main/provider.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAUA,MAAM,4BAA4B,CAAA;AAEvB,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,gBAAA;AAHV,IAAA,WAAA,CACU,WAAwB,EACxB,MAAc,EACd,gBAAkC,EAAA;QAFlC,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IACvB;AACH;AAED,MAAM,uBAAuB,CAAA;AAGC,IAAA,gBAAA;IAFZ,UAAU,GAA4B,EAAE;AAEzD,IAAA,WAAA,CAA6B,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAqB;IAElE,GAAG,CAAC,OAAqC,EAAE,WAA+C,EAAA;AACzF,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,UAAU,EAAE;AACtF,YAAA,OAAO,OAAO,CAAC,WAAW,CAAC;QAC5B;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAElD,IAAI,aAAa,EAAE;AAClB,YAAA,OAAO,aAAa;QACrB;AAEA,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB;;QAGrD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,MAAK,EAAE,CAAC,EAAE;AACrC,YAAA,MAAM,KAAK,CAAC,OAAgB,EAAE,KAAmC,EAAE,IAAe,EAAA;AACjF,gBAAA,IAAI,EAAE,MAAM,uBAAuB,CAAC,EAAE;AACrC,oBAAA,MAAM,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1D;AAEA,gBAAA,MAAM,UAAU,GAAG,aAAa,CAAC,uBAAuB,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;gBAE/G,OAAO,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC;YACvD,CAAC;AACD,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS;AAExC,QAAA,OAAO,SAAS;IACjB;AACA;AAEK,SAAU,iBAAiB,CAAe,WAAwB,EAAE,MAAc,EAAA;AACvF,IAAA,MAAM,iBAAiB,GAAG,IAAI,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAE1G,MAAM,wBAAwB,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3D,MAAM,qBAAqB,GAAG,WAAW,CAAC,iBAAiB,CAAC,wBAAwB,CAAqB;AAEzG,IAAA,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,qBAAqB,CAAC;AAEvE,IAAA,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAyC;AAC1F;AAEM,SAAU,kBAAkB,CAAI,WAAsC,EAAA;IAC3E,OAAO,uBAAuB,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AAC3E;AAEM,SAAU,cAAc,CAAI,WAAsC,EAAE,IAAY,EAAA;AACrF,IAAA,OAAO,uBAAuB,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;AACtF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/preload/bridge.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../../src/preload/bridge.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,IAAI,IAAI,CAkBtC"}
|
package/esm/preload/bridge.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { contextBridge, ipcRenderer } from 'electron';
|
|
2
|
-
import { CALLBACK_BRIDGE_NAME, BRIDGE_INVOKE_REQUEST_CHANNEL } from '../common/protocol.js';
|
|
2
|
+
import { CALLBACK_BRIDGE_NAME, BRIDGE_REMOVE_REQUEST_CHANNEL, BRIDGE_INVOKE_REQUEST_CHANNEL } from '../common/protocol.js';
|
|
3
3
|
|
|
4
4
|
function enableCallbacks() {
|
|
5
5
|
contextBridge.exposeInMainWorld(CALLBACK_BRIDGE_NAME, {
|
|
@@ -9,6 +9,12 @@ function enableCallbacks() {
|
|
|
9
9
|
args
|
|
10
10
|
};
|
|
11
11
|
return ipcRenderer.sendSync(BRIDGE_INVOKE_REQUEST_CHANNEL, invokeRequest);
|
|
12
|
+
},
|
|
13
|
+
remove(callbackName) {
|
|
14
|
+
const removeRequest = {
|
|
15
|
+
method: callbackName,
|
|
16
|
+
};
|
|
17
|
+
return ipcRenderer.sendSync(BRIDGE_REMOVE_REQUEST_CHANNEL, removeRequest);
|
|
12
18
|
}
|
|
13
19
|
});
|
|
14
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sources":["../../../../src/preload/bridge.ts"],"sourcesContent":[null],"names":[],"mappings":";;;SAIgB,eAAe,GAAA;AAC9B,IAAA,aAAa,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;QACrD,MAAM,CAAC,YAAoB,EAAE,IAAe,EAAA;AAC3C,YAAA,MAAM,aAAa,GAA0B;AAC5C,gBAAA,MAAM,EAAE,YAAY;gBACpB;aACA;YAED,OAAO,WAAW,CAAC,QAAQ,CAAC,6BAA6B,EAAE,aAAa,CAAC;QAC1E;AACA,KAAA,CAAC;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sources":["../../../../src/preload/bridge.ts"],"sourcesContent":[null],"names":[],"mappings":";;;SAIgB,eAAe,GAAA;AAC9B,IAAA,aAAa,CAAC,iBAAiB,CAAC,oBAAoB,EAAE;QACrD,MAAM,CAAC,YAAoB,EAAE,IAAe,EAAA;AAC3C,YAAA,MAAM,aAAa,GAA0B;AAC5C,gBAAA,MAAM,EAAE,YAAY;gBACpB;aACA;YAED,OAAO,WAAW,CAAC,QAAQ,CAAC,6BAA6B,EAAE,aAAa,CAAC;QAC1E,CAAC;AACD,QAAA,MAAM,CAAC,YAAoB,EAAA;AAC1B,YAAA,MAAM,aAAa,GAA0B;AAC5C,gBAAA,MAAM,EAAE,YAAY;aACpB;YAED,OAAO,WAAW,CAAC,QAAQ,CAAC,6BAA6B,EAAE,aAAa,CAAC;QAC1E;AACA,KAAA,CAAC;AACH;;;;"}
|
|
@@ -4,6 +4,7 @@ export declare class CallbackRegistry {
|
|
|
4
4
|
constructor();
|
|
5
5
|
registerCallback(webContents: WebContents, callback: (...args: unknown[]) => unknown): string;
|
|
6
6
|
unregisterCallback(hostId: number, name: string): boolean;
|
|
7
|
+
unregisterAll(hostId: number): boolean;
|
|
7
8
|
private watchForHost;
|
|
8
9
|
}
|
|
9
10
|
export declare function globalCallbacksRegistry(): CallbackRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-registry.d.ts","sourceRoot":"","sources":["../../src/main/callback-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AAKhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmE;;
|
|
1
|
+
{"version":3,"file":"callback-registry.d.ts","sourceRoot":"","sources":["../../src/main/callback-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,WAAW,EAAE,MAAM,UAAU,CAAC;AAKhD,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmE;;IA6B7F,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,GAAG,MAAM;IAoB7F,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO;IAgBzD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAItC,OAAO,CAAC,YAAY;CAKpB;AAID,wBAAgB,uBAAuB,IAAI,gBAAgB,CAM1D"}
|
|
@@ -1,21 +1,28 @@
|
|
|
1
1
|
const electron = require('electron');
|
|
2
|
-
const protocol = require('../common/protocol.js');
|
|
3
2
|
const errors = require('../common/errors.js');
|
|
3
|
+
const protocol = require('../common/protocol.js');
|
|
4
4
|
|
|
5
5
|
class CallbackRegistry {
|
|
6
6
|
callbacks = new Map();
|
|
7
7
|
constructor() {
|
|
8
8
|
electron.ipcMain.on(protocol.BRIDGE_INVOKE_REQUEST_CHANNEL, (event, msg) => {
|
|
9
|
-
if (protocol.isCallbackInvokeRequest(msg)) {
|
|
10
|
-
|
|
11
|
-
if (!callback) {
|
|
12
|
-
console.error(errors.callbackNotRegistered(msg.method, event.sender.id));
|
|
13
|
-
return;
|
|
14
|
-
}
|
|
15
|
-
event.returnValue = callback?.(...msg.args);
|
|
9
|
+
if (!protocol.isCallbackInvokeRequest(msg)) {
|
|
10
|
+
console.error(errors.nonInvocationRequest());
|
|
16
11
|
return;
|
|
17
12
|
}
|
|
18
|
-
|
|
13
|
+
const callback = this.callbacks.get(event.sender.id)?.get(msg.method);
|
|
14
|
+
if (!callback) {
|
|
15
|
+
console.error(errors.callbackNotRegistered(msg.method, event.sender.id));
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
event.returnValue = callback(...msg.args);
|
|
19
|
+
});
|
|
20
|
+
electron.ipcMain.on(protocol.BRIDGE_REMOVE_REQUEST_CHANNEL, (event, msg) => {
|
|
21
|
+
if (!protocol.isCallbackRemoveRequest(msg)) {
|
|
22
|
+
console.error(errors.nonRemoveRequest());
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
event.returnValue = this.unregisterCallback(event.sender.id, msg.method);
|
|
19
26
|
});
|
|
20
27
|
}
|
|
21
28
|
registerCallback(webContents, callback) {
|
|
@@ -39,7 +46,14 @@ class CallbackRegistry {
|
|
|
39
46
|
if (!callbacksByIdBucket) {
|
|
40
47
|
return false;
|
|
41
48
|
}
|
|
42
|
-
|
|
49
|
+
const deleted = callbacksByIdBucket.delete(name);
|
|
50
|
+
if (!callbacksByIdBucket.size) {
|
|
51
|
+
this.callbacks.delete(hostId);
|
|
52
|
+
}
|
|
53
|
+
return deleted;
|
|
54
|
+
}
|
|
55
|
+
unregisterAll(hostId) {
|
|
56
|
+
return this.callbacks.delete(hostId);
|
|
43
57
|
}
|
|
44
58
|
watchForHost(webContents) {
|
|
45
59
|
webContents.once('destroyed', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"callback-registry.js","sources":["../../src/main/callback-registry.ts"],"sourcesContent":[null],"names":["ipcMain","BRIDGE_INVOKE_REQUEST_CHANNEL","isCallbackInvokeRequest","callbackNotRegistered","
|
|
1
|
+
{"version":3,"file":"callback-registry.js","sources":["../../src/main/callback-registry.ts"],"sourcesContent":[null],"names":["ipcMain","BRIDGE_INVOKE_REQUEST_CHANNEL","isCallbackInvokeRequest","nonInvocationRequest","callbackNotRegistered","BRIDGE_REMOVE_REQUEST_CHANNEL","isCallbackRemoveRequest","nonRemoveRequest","callbackWithoutName","callbackRegisteredAlready"],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CallbackRegistry } from './callback-registry';
|
|
2
|
+
export declare function compileInvoke<P extends unknown[]>(registry: CallbackRegistry, webContents: Electron.WebContents, apiKey: string, method: string, args: P): string;
|
|
3
|
+
export declare function compile<P extends unknown[]>(fn: (..._: P) => unknown, ...args: P): string;
|
|
4
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/main/compiler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,wBAAgB,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,EAChD,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW,EACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,GAAG,MAAM,CAEhB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAEzF"}
|
package/main/compiler.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const injectable = require('./injectable.js');
|
|
2
|
+
|
|
3
|
+
function compileInvoke(registry, webContents, apiKey, method, args) {
|
|
4
|
+
return `(${injectable.invoke.toString()})("${apiKey}","${method}",[${serializeArguments(registry, webContents, args)}])`;
|
|
5
|
+
}
|
|
6
|
+
function compile(fn, ...args) {
|
|
7
|
+
return `(${fn.toString()})(${serializeArgumentsRaw(args)})`;
|
|
8
|
+
}
|
|
9
|
+
function serializeArguments(registry, webContents, args) {
|
|
10
|
+
const serialized = args.map((arg, index) => {
|
|
11
|
+
if (typeof arg === 'function') {
|
|
12
|
+
const dispatched = {
|
|
13
|
+
dispatchedCallbackName: registry.registerCallback(webContents, arg)
|
|
14
|
+
};
|
|
15
|
+
args[index] = dispatched;
|
|
16
|
+
}
|
|
17
|
+
return JSON.stringify(args[index]);
|
|
18
|
+
});
|
|
19
|
+
return serialized.join(',');
|
|
20
|
+
}
|
|
21
|
+
function serializeArgumentsRaw(...args) {
|
|
22
|
+
const serialized = args.map((arg) => {
|
|
23
|
+
return JSON.stringify(arg);
|
|
24
|
+
});
|
|
25
|
+
return serialized.join(',');
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
exports.compile = compile;
|
|
29
|
+
exports.compileInvoke = compileInvoke;
|
|
30
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sources":["../../src/main/compiler.ts"],"sourcesContent":[null],"names":["invoke"],"mappings":";;AAIM,SAAU,aAAa,CAC5B,QAA0B,EAC1B,WAAiC,EACjC,MAAc,EACd,MAAc,EACd,IAAO,EAAA;AACP,IAAA,OAAO,IAAKA,iBAAM,CAAC,QAAQ,EAAG,CAAA,GAAA,EAAO,MAAO,CAAA,GAAA,EAAO,MAAO,MAAO,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAE,IAAI;AACtH;SAEgB,OAAO,CAAsB,EAAwB,EAAE,GAAG,IAAO,EAAA;IAChF,OAAO,CAAA,CAAA,EAAK,EAAE,CAAC,QAAQ,EAAG,CAAA,EAAA,EAAM,qBAAqB,CAAC,IAAI,CAAE,CAAA,CAAA,CAAG;AAChE;AAEA,SAAS,kBAAkB,CAAC,QAA0B,EAAE,WAAiC,EAAE,IAAe,EAAA;IACzG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,KAAa,KAAI;AAC3D,QAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AAC9B,YAAA,MAAM,UAAU,GAAuB;gBACtC,sBAAsB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,GAAmC;aAClG;AAED,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU;QACzB;QAEA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnC,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B;AAEA,SAAS,qBAAqB,CAAC,GAAG,IAAe,EAAA;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAY,KAAI;AAC5C,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3B,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B;;;;;"}
|
package/main/index.d.ts
CHANGED
package/main/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACnF,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
package/main/index.js
CHANGED
package/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
|
package/main/provider.d.ts
CHANGED
|
@@ -4,4 +4,6 @@ export type WebContentsApiProvider<T> = Promisify<T> & {
|
|
|
4
4
|
readonly webContents: WebContents;
|
|
5
5
|
};
|
|
6
6
|
export declare function createApiProvider<ApiInterface>(webContents: WebContents, apiKey: string): WebContentsApiProvider<ApiInterface>;
|
|
7
|
+
export declare function removeAllCallbacks<T>(apiProvider: WebContentsApiProvider<T>): boolean;
|
|
8
|
+
export declare function removeCallback<T>(apiProvider: WebContentsApiProvider<T>, name: string): boolean;
|
|
7
9
|
//# sourceMappingURL=provider.d.ts.map
|
package/main/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/main/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/main/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAOzC,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC;AA+C7F,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAS9H;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAErF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,sBAAsB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/F"}
|
package/main/provider.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
const errors = require('../common/errors.js');
|
|
1
2
|
const callbackRegistry = require('./callback-registry.js');
|
|
3
|
+
const compiler = require('./compiler.js');
|
|
2
4
|
const injectable = require('./injectable.js');
|
|
3
|
-
const errors = require('../common/errors.js');
|
|
4
5
|
|
|
5
6
|
class ApiProviderPropertiesHandler {
|
|
6
7
|
webContents;
|
|
@@ -11,26 +12,6 @@ class ApiProviderPropertiesHandler {
|
|
|
11
12
|
this.apiKey = apiKey;
|
|
12
13
|
this.callbackRegistry = callbackRegistry;
|
|
13
14
|
}
|
|
14
|
-
compile(fn, ...args) {
|
|
15
|
-
return `(${fn.toString()})(${this.serializeArguments(...args)})`;
|
|
16
|
-
}
|
|
17
|
-
;
|
|
18
|
-
serializeArguments(...args) {
|
|
19
|
-
const serialized = args.map((arg) => {
|
|
20
|
-
if (Array.isArray(arg)) {
|
|
21
|
-
arg.forEach((value, index) => {
|
|
22
|
-
if (typeof value === 'function') {
|
|
23
|
-
const dispatched = {
|
|
24
|
-
dispatchedCallbackName: this.callbackRegistry.registerCallback(this.webContents, value)
|
|
25
|
-
};
|
|
26
|
-
arg[index] = dispatched;
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
return JSON.stringify(arg);
|
|
31
|
-
});
|
|
32
|
-
return serialized.join(',');
|
|
33
|
-
}
|
|
34
15
|
}
|
|
35
16
|
class ApiProviderProxyHandler {
|
|
36
17
|
apiExistsAwaiter;
|
|
@@ -46,15 +27,15 @@ class ApiProviderProxyHandler {
|
|
|
46
27
|
if (propertyProxy) {
|
|
47
28
|
return propertyProxy;
|
|
48
29
|
}
|
|
49
|
-
const
|
|
30
|
+
const apiExistsAwaiterClosure = this.apiExistsAwaiter;
|
|
50
31
|
// proxy context must be a function, to allow using handler 'apply'.
|
|
51
32
|
const propProxy = new Proxy(() => { }, {
|
|
52
33
|
async apply(_target, this_, args) {
|
|
53
|
-
if (!(await
|
|
34
|
+
if (!(await apiExistsAwaiterClosure)) {
|
|
54
35
|
throw errors.apiKeyNotExists(this_.apiKey, this_.webContents.id);
|
|
55
36
|
}
|
|
56
|
-
const injectable
|
|
57
|
-
return this_.webContents.executeJavaScript(injectable
|
|
37
|
+
const injectable = compiler.compileInvoke(callbackRegistry.globalCallbacksRegistry(), this_.webContents, this_.apiKey, propertyKey, args);
|
|
38
|
+
return this_.webContents.executeJavaScript(injectable);
|
|
58
39
|
},
|
|
59
40
|
});
|
|
60
41
|
this.properties[propertyKey] = propProxy;
|
|
@@ -63,11 +44,19 @@ class ApiProviderProxyHandler {
|
|
|
63
44
|
}
|
|
64
45
|
function createApiProvider(webContents, apiKey) {
|
|
65
46
|
const propertiesHandler = new ApiProviderPropertiesHandler(webContents, apiKey, callbackRegistry.globalCallbacksRegistry());
|
|
66
|
-
const checkApiExistsInjectable =
|
|
47
|
+
const checkApiExistsInjectable = compiler.compile(injectable.apiExists, apiKey);
|
|
67
48
|
const checkApiExistsPromise = webContents.executeJavaScript(checkApiExistsInjectable);
|
|
68
49
|
const proxyHandler = new ApiProviderProxyHandler(checkApiExistsPromise);
|
|
69
50
|
return new Proxy(propertiesHandler, proxyHandler);
|
|
70
51
|
}
|
|
52
|
+
function removeAllCallbacks(apiProvider) {
|
|
53
|
+
return callbackRegistry.globalCallbacksRegistry().unregisterAll(apiProvider.webContents.id);
|
|
54
|
+
}
|
|
55
|
+
function removeCallback(apiProvider, name) {
|
|
56
|
+
return callbackRegistry.globalCallbacksRegistry().unregisterCallback(apiProvider.webContents.id, name);
|
|
57
|
+
}
|
|
71
58
|
|
|
72
59
|
exports.createApiProvider = createApiProvider;
|
|
60
|
+
exports.removeAllCallbacks = removeAllCallbacks;
|
|
61
|
+
exports.removeCallback = removeCallback;
|
|
73
62
|
//# sourceMappingURL=provider.js.map
|
package/main/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sources":["../../src/main/provider.ts"],"sourcesContent":[null],"names":["apiKeyNotExists","
|
|
1
|
+
{"version":3,"file":"provider.js","sources":["../../src/main/provider.ts"],"sourcesContent":[null],"names":["apiKeyNotExists","compileInvoke","globalCallbacksRegistry","compile","apiExists"],"mappings":";;;;;AAUA,MAAM,4BAA4B,CAAA;AAEvB,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,gBAAA;AAHV,IAAA,WAAA,CACU,WAAwB,EACxB,MAAc,EACd,gBAAkC,EAAA;QAFlC,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IACvB;AACH;AAED,MAAM,uBAAuB,CAAA;AAGC,IAAA,gBAAA;IAFZ,UAAU,GAA4B,EAAE;AAEzD,IAAA,WAAA,CAA6B,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAAqB;IAElE,GAAG,CAAC,OAAqC,EAAE,WAA+C,EAAA;AACzF,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,OAAO,OAAO,CAAC,WAAW,CAAC,KAAK,UAAU,EAAE;AACtF,YAAA,OAAO,OAAO,CAAC,WAAW,CAAC;QAC5B;QAEA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAElD,IAAI,aAAa,EAAE;AAClB,YAAA,OAAO,aAAa;QACrB;AAEA,QAAA,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB;;QAGrD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,MAAK,EAAE,CAAC,EAAE;AACrC,YAAA,MAAM,KAAK,CAAC,OAAgB,EAAE,KAAmC,EAAE,IAAe,EAAA;AACjF,gBAAA,IAAI,EAAE,MAAM,uBAAuB,CAAC,EAAE;AACrC,oBAAA,MAAMA,sBAAe,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1D;AAEA,gBAAA,MAAM,UAAU,GAAGC,sBAAa,CAACC,wCAAuB,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;gBAE/G,OAAO,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC;YACvD,CAAC;AACD,SAAA,CAAC;AAEF,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS;AAExC,QAAA,OAAO,SAAS;IACjB;AACA;AAEK,SAAU,iBAAiB,CAAe,WAAwB,EAAE,MAAc,EAAA;AACvF,IAAA,MAAM,iBAAiB,GAAG,IAAI,4BAA4B,CAAC,WAAW,EAAE,MAAM,EAAEA,wCAAuB,EAAE,CAAC;IAE1G,MAAM,wBAAwB,GAAGC,gBAAO,CAACC,oBAAS,EAAE,MAAM,CAAC;IAC3D,MAAM,qBAAqB,GAAG,WAAW,CAAC,iBAAiB,CAAC,wBAAwB,CAAqB;AAEzG,IAAA,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,qBAAqB,CAAC;AAEvE,IAAA,OAAO,IAAI,KAAK,CAAC,iBAAiB,EAAE,YAAY,CAAyC;AAC1F;AAEM,SAAU,kBAAkB,CAAI,WAAsC,EAAA;IAC3E,OAAOF,wCAAuB,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC;AAC3E;AAEM,SAAU,cAAc,CAAI,WAAsC,EAAE,IAAY,EAAA;AACrF,IAAA,OAAOA,wCAAuB,EAAE,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;AACtF;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "electron-wcap",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"author": "Egor Kushnarev",
|
|
5
5
|
"description": "Electron WebContent API Provider — call renderer APIs from the main process with support for passing callbacks.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,5 +39,8 @@
|
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
"module": "./esm/main/index.js",
|
|
42
|
-
"browser": "./esm/renderer/index.js"
|
|
42
|
+
"browser": "./esm/renderer/index.js",
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"promisify-ts": "^1.0.1"
|
|
45
|
+
}
|
|
43
46
|
}
|
package/preload/bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/preload/bridge.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/preload/bridge.ts"],"names":[],"mappings":"AAIA,wBAAgB,eAAe,IAAI,IAAI,CAkBtC"}
|
package/preload/bridge.js
CHANGED
|
@@ -9,6 +9,12 @@ function enableCallbacks() {
|
|
|
9
9
|
args
|
|
10
10
|
};
|
|
11
11
|
return electron.ipcRenderer.sendSync(protocol.BRIDGE_INVOKE_REQUEST_CHANNEL, invokeRequest);
|
|
12
|
+
},
|
|
13
|
+
remove(callbackName) {
|
|
14
|
+
const removeRequest = {
|
|
15
|
+
method: callbackName,
|
|
16
|
+
};
|
|
17
|
+
return electron.ipcRenderer.sendSync(protocol.BRIDGE_REMOVE_REQUEST_CHANNEL, removeRequest);
|
|
12
18
|
}
|
|
13
19
|
});
|
|
14
20
|
}
|
package/preload/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sources":["../../src/preload/bridge.ts"],"sourcesContent":[null],"names":["contextBridge","CALLBACK_BRIDGE_NAME","ipcRenderer","BRIDGE_INVOKE_REQUEST_CHANNEL"],"mappings":";;;SAIgB,eAAe,GAAA;AAC9B,IAAAA,sBAAa,CAAC,iBAAiB,CAACC,6BAAoB,EAAE;QACrD,MAAM,CAAC,YAAoB,EAAE,IAAe,EAAA;AAC3C,YAAA,MAAM,aAAa,GAA0B;AAC5C,gBAAA,MAAM,EAAE,YAAY;gBACpB;aACA;YAED,OAAOC,oBAAW,CAAC,QAAQ,CAACC,sCAA6B,EAAE,aAAa,CAAC;QAC1E;AACA,KAAA,CAAC;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sources":["../../src/preload/bridge.ts"],"sourcesContent":[null],"names":["contextBridge","CALLBACK_BRIDGE_NAME","ipcRenderer","BRIDGE_INVOKE_REQUEST_CHANNEL","BRIDGE_REMOVE_REQUEST_CHANNEL"],"mappings":";;;SAIgB,eAAe,GAAA;AAC9B,IAAAA,sBAAa,CAAC,iBAAiB,CAACC,6BAAoB,EAAE;QACrD,MAAM,CAAC,YAAoB,EAAE,IAAe,EAAA;AAC3C,YAAA,MAAM,aAAa,GAA0B;AAC5C,gBAAA,MAAM,EAAE,YAAY;gBACpB;aACA;YAED,OAAOC,oBAAW,CAAC,QAAQ,CAACC,sCAA6B,EAAE,aAAa,CAAC;QAC1E,CAAC;AACD,QAAA,MAAM,CAAC,YAAoB,EAAA;AAC1B,YAAA,MAAM,aAAa,GAA0B;AAC5C,gBAAA,MAAM,EAAE,YAAY;aACpB;YAED,OAAOD,oBAAW,CAAC,QAAQ,CAACE,sCAA6B,EAAE,aAAa,CAAC;QAC1E;AACA,KAAA,CAAC;AACH;;;;"}
|