@onekeyfe/cross-inpage-provider-core 0.0.1
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/LICENSE +202 -0
- package/README.md +1 -0
- package/dist/JsBridgeBase.d.ts +54 -0
- package/dist/JsBridgeBase.js +272 -0
- package/dist/PromiseCallbacks.d.ts +2 -0
- package/dist/PromiseCallbacks.js +2 -0
- package/dist/ProviderBase.d.ts +21 -0
- package/dist/ProviderBase.js +55 -0
- package/dist/cjs/JsBridgeBase.js +279 -0
- package/dist/cjs/PromiseCallbacks.js +6 -0
- package/dist/cjs/ProviderBase.js +61 -0
- package/dist/cjs/consts.js +13 -0
- package/dist/cjs/debugLogger.js +16 -0
- package/dist/cjs/index.js +37 -0
- package/dist/cjs/injectJsBridge.js +23 -0
- package/dist/cjs/injectedFactory.js +52 -0
- package/dist/cjs/injectedProviderReceiveHandler.js +30 -0
- package/dist/consts.d.ts +9 -0
- package/dist/consts.js +10 -0
- package/dist/debugLogger.d.ts +6 -0
- package/dist/debugLogger.js +13 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +9 -0
- package/dist/injectJsBridge.d.ts +3 -0
- package/dist/injectJsBridge.js +20 -0
- package/dist/injectedFactory.d.ts +15 -0
- package/dist/injectedFactory.js +50 -0
- package/dist/injectedProviderReceiveHandler.d.ts +4 -0
- package/dist/injectedProviderReceiveHandler.js +27 -0
- package/package.json +35 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
function createCodeWithScriptTag({ code }) {
|
|
2
|
+
// TODO script id check, only inject once.
|
|
3
|
+
return `
|
|
4
|
+
(function(){
|
|
5
|
+
const s = document.createElement('script');
|
|
6
|
+
s.setAttribute('async', 'false');
|
|
7
|
+
s.setAttribute('data-onekey-injected', 'true');
|
|
8
|
+
s.textContent=${JSON.stringify(code)};
|
|
9
|
+
(document.head || document.documentElement).appendChild(s);
|
|
10
|
+
s.remove();
|
|
11
|
+
})();
|
|
12
|
+
`;
|
|
13
|
+
}
|
|
14
|
+
function injectCodeWithScriptTag({ code, file, remove = true, }) {
|
|
15
|
+
console.log('injectCodeWithScriptTag: ', { remove, file });
|
|
16
|
+
(function () {
|
|
17
|
+
const s = document.createElement('script');
|
|
18
|
+
s.setAttribute('async', 'false');
|
|
19
|
+
s.setAttribute('defer', 'false');
|
|
20
|
+
s.setAttribute('data-onekey-injected', 'true');
|
|
21
|
+
if (code) {
|
|
22
|
+
s.textContent = JSON.stringify(code);
|
|
23
|
+
}
|
|
24
|
+
if (file) {
|
|
25
|
+
s.src = file;
|
|
26
|
+
}
|
|
27
|
+
s.onload = function () {
|
|
28
|
+
if (remove && file) {
|
|
29
|
+
s.remove();
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
(document.head || document.documentElement).appendChild(s);
|
|
33
|
+
if (remove && code) {
|
|
34
|
+
s.remove();
|
|
35
|
+
}
|
|
36
|
+
})();
|
|
37
|
+
}
|
|
38
|
+
function createCodeJsBridgeReceive(payloadStr) {
|
|
39
|
+
return `
|
|
40
|
+
if(window.$onekey && window.$onekey.jsBridge){
|
|
41
|
+
window.$onekey.jsBridge.receive(${JSON.stringify(payloadStr)});
|
|
42
|
+
}
|
|
43
|
+
void 0;
|
|
44
|
+
`;
|
|
45
|
+
}
|
|
46
|
+
export default {
|
|
47
|
+
injectCodeWithScriptTag,
|
|
48
|
+
createCodeWithScriptTag,
|
|
49
|
+
createCodeJsBridgeReceive,
|
|
50
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { IJsBridgeMessagePayload } from '@onekeyfe/cross-inpage-provider-types';
|
|
2
|
+
import { JsBridgeBase } from './JsBridgeBase';
|
|
3
|
+
declare function injectedProviderReceiveHandler(payload: IJsBridgeMessagePayload, bridge?: JsBridgeBase): void;
|
|
4
|
+
export { injectedProviderReceiveHandler };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
function injectedProviderReceiveHandler(payload, bridge) {
|
|
2
|
+
// ethereum, solana, conflux
|
|
3
|
+
const providerHub = (bridge === null || bridge === void 0 ? void 0 : bridge.providersHub) || window.$onekey;
|
|
4
|
+
const providerName = payload.scope;
|
|
5
|
+
console.log(`injectedProviderReceiveHandler onMessage from (${providerName})`, payload);
|
|
6
|
+
const payloadData = payload.data;
|
|
7
|
+
if (!providerName) {
|
|
8
|
+
console.error('providerName (scope) is required in injectedProviderReceiveHandler.');
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const providers = []
|
|
12
|
+
.concat(providerHub[providerName])
|
|
13
|
+
.filter(Boolean);
|
|
14
|
+
if (!providers || !providers.length) {
|
|
15
|
+
console.error(`[${providerName}] provider is NOT injected to document.`);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// emit events to injected provider
|
|
19
|
+
providers.forEach((provider) => {
|
|
20
|
+
if (provider && provider.events) {
|
|
21
|
+
provider.events.emit('notification', payloadData);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
// TODO return value to host bridge, type=EVENT, REQUEST, RESPONSE
|
|
25
|
+
// provider.handleRemoteMethodCall(payload)
|
|
26
|
+
}
|
|
27
|
+
export { injectedProviderReceiveHandler };
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@onekeyfe/cross-inpage-provider-core",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"keywords": [
|
|
5
|
+
"cross-inpage-provider"
|
|
6
|
+
],
|
|
7
|
+
"author": "dev-fe@onekey.so",
|
|
8
|
+
"repository": "https://github.com/OneKeyHQ/cross-inpage-provider",
|
|
9
|
+
"license": "Apache-2.0",
|
|
10
|
+
"publishConfig": {
|
|
11
|
+
"access": "public"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist/*"
|
|
16
|
+
],
|
|
17
|
+
"exports": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js",
|
|
20
|
+
"require": "./dist/cjs/index.js"
|
|
21
|
+
},
|
|
22
|
+
"types": "./dist/index.d.ts",
|
|
23
|
+
"module": "./dist/index.js",
|
|
24
|
+
"main": "./dist/cjs/index.js",
|
|
25
|
+
"scripts": {
|
|
26
|
+
"prebuild": "rm -rf dist",
|
|
27
|
+
"build": "tsc && tsc --project tsconfig.cjs.json",
|
|
28
|
+
"start": "tsc --watch"
|
|
29
|
+
},
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@onekeyfe/cross-inpage-provider-types": "^0.0.1",
|
|
32
|
+
"eventemitter3": "^4.0.7"
|
|
33
|
+
},
|
|
34
|
+
"gitHead": "443a40bcb8cc29616dbbaebd6f6f025c20b7e2b5"
|
|
35
|
+
}
|