@polkadot/extension-base 0.50.1 → 0.52.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.
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.packageInfo = void 0;
4
- exports.packageInfo = { name: '@polkadot/extension-base', path: typeof __dirname === 'string' ? __dirname : 'auto', type: 'cjs', version: '0.50.1' };
4
+ exports.packageInfo = { name: '@polkadot/extension-base', path: typeof __dirname === 'string' ? __dirname : 'auto', type: 'cjs', version: '0.52.1' };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensurePortConnection = exports.wakeUpServiceWorkerWrapper = exports.wakeUpServiceWorker = exports.setupPort = void 0;
4
+ const chrome_1 = require("@polkadot/extension-inject/chrome");
5
+ function setupPort(portName, onMessageHandler, onDisconnectHandler) {
6
+ const port = chrome_1.chrome.runtime.connect({ name: portName });
7
+ port.onMessage.addListener(onMessageHandler);
8
+ port.onDisconnect.addListener(() => {
9
+ console.log(`Disconnected from ${portName}`);
10
+ onDisconnectHandler();
11
+ });
12
+ return port;
13
+ }
14
+ exports.setupPort = setupPort;
15
+ async function wakeUpServiceWorker() {
16
+ return new Promise((resolve, reject) => {
17
+ chrome_1.chrome.runtime.sendMessage({ type: 'wakeup' }, (response) => {
18
+ if (chrome_1.chrome.runtime.lastError) {
19
+ reject(new Error(chrome_1.chrome.runtime.lastError.message));
20
+ }
21
+ else {
22
+ resolve(response);
23
+ }
24
+ });
25
+ });
26
+ }
27
+ exports.wakeUpServiceWorker = wakeUpServiceWorker;
28
+ exports.wakeUpServiceWorkerWrapper = { wakeUpServiceWorker };
29
+ async function ensurePortConnection(portRef, portConfig) {
30
+ const maxAttempts = 5;
31
+ const delayMs = 1000;
32
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
33
+ try {
34
+ const response = await exports.wakeUpServiceWorkerWrapper.wakeUpServiceWorker();
35
+ if (response?.status === 'awake') {
36
+ if (!portRef) {
37
+ return setupPort(portConfig.portName, portConfig.onPortMessageHandler, portConfig.onPortDisconnectHandler);
38
+ }
39
+ return portRef;
40
+ }
41
+ }
42
+ catch (error) {
43
+ console.error(`Attempt ${attempt + 1} failed: ${error.message}`);
44
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
45
+ }
46
+ }
47
+ throw new Error('Failed to wake up the service worker and setup the port after multiple attempts');
48
+ }
49
+ exports.ensurePortConnection = ensurePortConnection;
package/package.json CHANGED
@@ -18,7 +18,7 @@
18
18
  "./cjs/packageDetect.js"
19
19
  ],
20
20
  "type": "module",
21
- "version": "0.50.1",
21
+ "version": "0.52.1",
22
22
  "main": "./cjs/index.js",
23
23
  "module": "./index.js",
24
24
  "types": "./index.d.ts",
@@ -214,20 +214,26 @@
214
214
  "module": "./utils/getId.js",
215
215
  "require": "./cjs/utils/getId.js",
216
216
  "default": "./utils/getId.js"
217
+ },
218
+ "./utils/portUtils": {
219
+ "types": "./utils/portUtils.d.ts",
220
+ "module": "./utils/portUtils.js",
221
+ "require": "./cjs/utils/portUtils.js",
222
+ "default": "./utils/portUtils.js"
217
223
  }
218
224
  },
219
225
  "dependencies": {
220
- "@polkadot/api": "^12.2.1",
221
- "@polkadot/extension-chains": "0.50.1",
222
- "@polkadot/extension-dapp": "0.50.1",
223
- "@polkadot/extension-inject": "0.50.1",
226
+ "@polkadot/api": "^12.3.1",
227
+ "@polkadot/extension-chains": "0.52.1",
228
+ "@polkadot/extension-dapp": "0.52.1",
229
+ "@polkadot/extension-inject": "0.52.1",
224
230
  "@polkadot/keyring": "^13.0.2",
225
231
  "@polkadot/networks": "^13.0.2",
226
- "@polkadot/phishing": "^0.23.1",
227
- "@polkadot/rpc-provider": "^12.2.1",
228
- "@polkadot/types": "^12.2.1",
229
- "@polkadot/ui-keyring": "^3.8.2",
230
- "@polkadot/ui-settings": "^3.8.2",
232
+ "@polkadot/phishing": "^0.23.3",
233
+ "@polkadot/rpc-provider": "^12.3.1",
234
+ "@polkadot/types": "^12.3.1",
235
+ "@polkadot/ui-keyring": "^3.9.1",
236
+ "@polkadot/ui-settings": "^3.9.1",
231
237
  "@polkadot/util": "^13.0.2",
232
238
  "@polkadot/util-crypto": "^13.0.2",
233
239
  "eventemitter3": "^5.0.1",
package/packageInfo.js CHANGED
@@ -1 +1 @@
1
- export const packageInfo = { name: '@polkadot/extension-base', path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '0.50.1' };
1
+ export const packageInfo = { name: '@polkadot/extension-base', path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '0.52.1' };
@@ -0,0 +1,14 @@
1
+ /// <reference types="chrome" />
2
+ import type { Message } from '@polkadot/extension-base/types';
3
+ export declare function setupPort(portName: string, onMessageHandler: (data: Message['data']) => void, onDisconnectHandler: () => void): chrome.runtime.Port;
4
+ export declare function wakeUpServiceWorker(): Promise<{
5
+ status: string;
6
+ }>;
7
+ export declare const wakeUpServiceWorkerWrapper: {
8
+ wakeUpServiceWorker: typeof wakeUpServiceWorker;
9
+ };
10
+ export declare function ensurePortConnection(portRef: chrome.runtime.Port | undefined, portConfig: {
11
+ portName: string;
12
+ onPortMessageHandler: (data: Message['data']) => void;
13
+ onPortDisconnectHandler: () => void;
14
+ }): Promise<chrome.runtime.Port>;
@@ -0,0 +1,43 @@
1
+ import { chrome } from '@polkadot/extension-inject/chrome';
2
+ export function setupPort(portName, onMessageHandler, onDisconnectHandler) {
3
+ const port = chrome.runtime.connect({ name: portName });
4
+ port.onMessage.addListener(onMessageHandler);
5
+ port.onDisconnect.addListener(() => {
6
+ console.log(`Disconnected from ${portName}`);
7
+ onDisconnectHandler();
8
+ });
9
+ return port;
10
+ }
11
+ export async function wakeUpServiceWorker() {
12
+ return new Promise((resolve, reject) => {
13
+ chrome.runtime.sendMessage({ type: 'wakeup' }, (response) => {
14
+ if (chrome.runtime.lastError) {
15
+ reject(new Error(chrome.runtime.lastError.message));
16
+ }
17
+ else {
18
+ resolve(response);
19
+ }
20
+ });
21
+ });
22
+ }
23
+ export const wakeUpServiceWorkerWrapper = { wakeUpServiceWorker };
24
+ export async function ensurePortConnection(portRef, portConfig) {
25
+ const maxAttempts = 5;
26
+ const delayMs = 1000;
27
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
28
+ try {
29
+ const response = await wakeUpServiceWorkerWrapper.wakeUpServiceWorker();
30
+ if (response?.status === 'awake') {
31
+ if (!portRef) {
32
+ return setupPort(portConfig.portName, portConfig.onPortMessageHandler, portConfig.onPortDisconnectHandler);
33
+ }
34
+ return portRef;
35
+ }
36
+ }
37
+ catch (error) {
38
+ console.error(`Attempt ${attempt + 1} failed: ${error.message}`);
39
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
40
+ }
41
+ }
42
+ throw new Error('Failed to wake up the service worker and setup the port after multiple attempts');
43
+ }