From 6f1ea6e8e7df14be27d3414e767c53cb4c72bd5f Mon Sep 17 00:00:00 2001
From: bunsenstraat
Date: Tue, 11 Jan 2022 12:50:12 +0100
Subject: [PATCH] permission handler
---
apps/remix-ide/src/app.js | 6 +-
.../app/plugins/permission-handler-plugin.tsx | 126 +++++++++++
.../src/app/ui/persmission-handler.js | 202 ------------------
apps/remix-ide/src/remixAppManager.js | 4 +-
.../app/src/lib/remix-app/remix-app.tsx | 2 -
libs/remix-ui/permission-handler/src/index.ts | 3 +-
.../permission-handler/src/interface/index.ts | 8 +-
.../src/lib/permission-dialog.css | 4 +
.../src/lib/permission-dialog.tsx | 34 +--
.../src/lib/permission-handler.tsx | 25 ---
package-lock.json | 70 +++---
package.json | 14 +-
12 files changed, 204 insertions(+), 294 deletions(-)
create mode 100644 apps/remix-ide/src/app/plugins/permission-handler-plugin.tsx
delete mode 100644 apps/remix-ide/src/app/ui/persmission-handler.js
delete mode 100644 libs/remix-ui/permission-handler/src/lib/permission-handler.tsx
diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js
index 7038c120cd..5a7c9b8dc0 100644
--- a/apps/remix-ide/src/app.js
+++ b/apps/remix-ide/src/app.js
@@ -10,6 +10,7 @@ import { HiddenPanel } from './app/components/hidden-panel'
import { VerticalIcons } from './app/components/vertical-icons'
import { LandingPage } from './app/ui/landing-page/landing-page'
import { MainPanel } from './app/components/main-panel'
+import { PermissionHandlerPlugin } from './app/plugins/permission-handler-plugin'
import { WalkthroughService } from './walkthroughService'
@@ -191,8 +192,11 @@ class AppComponent {
const configPlugin = new ConfigPlugin()
self.layout = new Layout()
+
+ const permissionHandler = new PermissionHandlerPlugin()
self.engine.register([
+ permissionHandler,
self.layout,
self.modal,
self.gistHandler,
@@ -317,7 +321,7 @@ class AppComponent {
await self.appManager.activatePlugin(['layout'])
await self.appManager.activatePlugin(['modal'])
await self.appManager.activatePlugin(['editor'])
- await self.appManager.activatePlugin(['theme', 'fileManager', 'compilerMetadata', 'compilerArtefacts', 'network', 'web3Provider', 'offsetToLineColumnConverter'])
+ await self.appManager.activatePlugin(['permissionhandler', 'theme', 'fileManager', 'compilerMetadata', 'compilerArtefacts', 'network', 'web3Provider', 'offsetToLineColumnConverter'])
await self.appManager.activatePlugin(['mainPanel', 'menuicons', 'tabs'])
await self.appManager.activatePlugin(['sidePanel']) // activating host plugin separately
await self.appManager.activatePlugin(['home'])
diff --git a/apps/remix-ide/src/app/plugins/permission-handler-plugin.tsx b/apps/remix-ide/src/app/plugins/permission-handler-plugin.tsx
new file mode 100644
index 0000000000..530a8dfba2
--- /dev/null
+++ b/apps/remix-ide/src/app/plugins/permission-handler-plugin.tsx
@@ -0,0 +1,126 @@
+import React from 'react' // eslint-disable-line
+import { Plugin } from '@remixproject/engine'
+import { AppModal } from 'libs/remix-ui/app/src'
+import { PermissionHandlerDialog, PermissionHandlerValue } from 'libs/remix-ui/permission-handler/src'
+import { Profile } from '@remixproject/plugin-utils'
+
+const profile = {
+ name: 'permissionhandler',
+ displayName: 'permissionhandler',
+ description: 'permissionhandler',
+ methods: ['askPermission']
+}
+
+export class PermissionHandlerPlugin extends Plugin {
+ permissions: any
+ currentVersion: number
+ constructor() {
+ super(profile)
+ this.permissions = this._getFromLocal()
+ this.currentVersion = 1
+ // here we remove the old permissions saved before adding 'permissionVersion'
+ // since with v1 the structure has been changed because of new engine ^0.2.0-alpha.6 changes
+ if (!localStorage.getItem('permissionVersion')) {
+ localStorage.setItem('plugins/permissions', '')
+ localStorage.setItem('permissionVersion', this.currentVersion.toString())
+ }
+ }
+
+ _getFromLocal() {
+ const permission = localStorage.getItem('plugins/permissions')
+ return permission ? JSON.parse(permission) : {}
+ }
+
+ persistPermissions() {
+ const permissions = JSON.stringify(this.permissions)
+ localStorage.setItem('plugins/permissions', permissions)
+ }
+
+ switchMode (from: Profile, to: Profile, method: string, set: boolean) {
+ set
+ ? this.permissions[to.name][method][from.name] = {}
+ : delete this.permissions[to.name][method][from.name]
+ }
+
+ clear() {
+ localStorage.removeItem('plugins/permissions')
+ }
+
+ notAllowWarning(from: Profile, to: Profile, method: string) {
+ return `${from.displayName || from.name} is not allowed to call ${method} method of ${to.displayName || to.name}.`
+ }
+
+ async getTheme() {
+ return (await this.call('theme', 'currentTheme')).quality
+ }
+
+ /**
+ * Check if a plugin has the permission to call another plugin and askPermission if needed
+ * @param {PluginProfile} from the profile of the plugin that make the call
+ * @param {ModuleProfile} to The profile of the module that receive the call
+ * @param {string} method The name of the function to be called
+ * @param {string} message from the caller plugin to add more details if needed
+ * @returns {Promise}
+ */
+ async askPermission(from: Profile, to: Profile, method: string, message: string) {
+ try {
+ this.permissions = this._getFromLocal()
+ if (!this.permissions[to.name]) this.permissions[to.name] = {}
+ if (!this.permissions[to.name][method]) this.permissions[to.name][method] = {}
+ if (!this.permissions[to.name][method][from.name]) return this.openPermission(from, to, method, message)
+
+ const { allow, hash } = this.permissions[to.name][method][from.name]
+ if (!allow) {
+ const warning = this.notAllowWarning(from, to, method)
+ this.call('modal', 'toast', warning)
+ return false
+ }
+ return hash === from.hash
+ ? true // Allow
+ : await this.openPermission(from, to, method, message)
+ } catch (err) {
+ throw new Error(err)
+ }
+ }
+
+ async openPermission(from: Profile, to: Profile, method: string, message: string) {
+ const remember = this.permissions[to.name][method][from.name]
+ const value: PermissionHandlerValue = {
+ from,
+ to,
+ method,
+ message,
+ remember
+ }
+ const modal: AppModal = {
+ id: 'PermissionHandler',
+ title: `Permission needed for ${to.displayName || to.name}`,
+ message: ,
+ okLabel: 'sure',
+ cancelLabel: 'no'
+ }
+
+ const result = await this.call('modal', 'modal', modal)
+ return new Promise((resolve, reject) => {
+ if (result) {
+ if (this.permissions[to.name][method][from.name]) {
+ this.permissions[to.name][method][from.name] = {
+ allow: true,
+ hash: from.hash
+ }
+ this.persistPermissions()
+ }
+ resolve(true)
+ } else {
+ if (this.permissions[to.name][method][from.name]) {
+ this.permissions[to.name][method][from.name] = {
+ allow: false,
+ hash: from.hash
+ }
+ this.persistPermissions()
+ }
+ reject(this.notAllowWarning(from, to, method))
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/apps/remix-ide/src/app/ui/persmission-handler.js b/apps/remix-ide/src/app/ui/persmission-handler.js
deleted file mode 100644
index f3f10b5b63..0000000000
--- a/apps/remix-ide/src/app/ui/persmission-handler.js
+++ /dev/null
@@ -1,202 +0,0 @@
-import Registry from '../state/registry'
-
-/* global localStorage */
-const yo = require('yo-yo')
-const csjs = require('csjs-inject')
-const addTooltip = require('./tooltip')
-const modalDialog = require('./modaldialog')
-
-const css = csjs`
-.permission h4 {
- text-transform: uppercase;
- text-align: center;
-}
-.permission h6 {
- text-transform: uppercase;
-}
-.remember {
- display: flex;
- justify-content: space-between;
- align-items: center;
-}
-.images {
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 10px;
-}
-.images img {
- width: 40px;
- height: 40px;
-}
-.images i {
- margin: 0 20px;
-}
-`
-
-function notAllowWarning (from, to, method) {
- return `${from.displayName || from.name} is not allowed to call ${method} method of ${to.displayName || to.name}.`
-}
-
-export class PermissionHandler {
- constructor () {
- this.permissions = this._getFromLocal()
- this.currentVersion = 1
- // here we remove the old permissions saved before adding 'permissionVersion'
- // since with v1 the structure has been changed because of new engine ^0.2.0-alpha.6 changes
- if (!localStorage.getItem('permissionVersion')) {
- localStorage.setItem('plugins/permissions', '')
- localStorage.setItem('permissionVersion', this.currentVersion)
- }
- }
-
- _getFromLocal () {
- const permission = localStorage.getItem('plugins/permissions')
- return permission ? JSON.parse(permission) : {}
- }
-
- persistPermissions () {
- const permissions = JSON.stringify(this.permissions)
- localStorage.setItem('plugins/permissions', permissions)
- }
-
- clear () {
- localStorage.removeItem('plugins/permissions')
- addTooltip('All Permissions have been reset')
- }
-
- /**
- * Show a message to ask the user for a permission
- * @param {PluginProfile} from The name and hash of the plugin that make the call
- * @param {ModuleProfile} to The name of the plugin that receive the call
- * @param {string} method The name of the function to be called
- * @param {string} message from the caller plugin to add more details if needed
- * @returns {Promise<{ allow: boolean; remember: boolean }} Answer from the user to the permission
- */
- async openPermission (from, to, method, message) {
- return new Promise((resolve, reject) => {
- modalDialog(
- `Permission needed for ${to.displayName || to.name}`,
- this.form(from, to, method, message),
- {
- label: 'Accept',
- fn: () => {
- if (this.permissions[to.name][method][from.name]) {
- this.permissions[to.name][method][from.name] = {
- allow: true,
- hash: from.hash
- }
- this.persistPermissions()
- }
- resolve(true)
- }
- },
- {
- label: 'Decline',
- fn: () => {
- if (this.permissions[to.name][method][from.name]) {
- this.permissions[to.name][method][from.name] = {
- allow: false,
- hash: from.hash
- }
- this.persistPermissions()
- }
- reject(notAllowWarning(from, to, method))
- }
- }
- )
- })
- }
-
- /**
- * Check if a plugin has the permission to call another plugin and askPermission if needed
- * @param {PluginProfile} from the profile of the plugin that make the call
- * @param {ModuleProfile} to The profile of the module that receive the call
- * @param {string} method The name of the function to be called
- * @param {string} message from the caller plugin to add more details if needed
- * @returns {Promise}
- */
- async askPermission (from, to, method, message) {
- try {
- this.permissions = this._getFromLocal()
- if (!this.permissions[to.name]) this.permissions[to.name] = {}
- if (!this.permissions[to.name][method]) this.permissions[to.name][method] = {}
- if (!this.permissions[to.name][method][from.name]) return this.openPermission(from, to, method, message)
-
- const { allow, hash } = this.permissions[to.name][method][from.name]
- if (!allow) {
- const warning = notAllowWarning(from, to, method)
- addTooltip(warning)
- return false
- }
- return hash === from.hash
- ? true // Allow
- : this.openPermission(from, to, method, message) // New version of a plugin
- } catch (err) {
- throw new Error(err)
- }
- }
-
- /**
- * The permission form
- * @param {PluginProfile} from The name and hash of the plugin that make the call
- * @param {ModuleProfile} to The name of the plugin that receive the call
- * @param {string} method The name of te methode to be called
- * @param {string} message from the caller plugin to add more details if needed
- */
- form (from, to, method, message) {
- const fromName = from.displayName || from.name
- const toName = to.displayName || to.name
- const remember = this.permissions[to.name][method][from.name]
-
- const switchMode = (e) => {
- e.target.checked
- ? this.permissions[to.name][method][from.name] = {}
- : delete this.permissions[to.name][method][from.name]
- }
- const rememberSwitch = remember
- ? yo``
- : yo``
- const text = `"${fromName}" ${(remember ? 'has changed and' : '')} would like to access to "${method}" of "${toName}"`
- const imgFrom = yo``
- const imgTo = yo``
- const pluginsImages = yo`
-
- ${imgFrom}
-
- ${imgTo}
-
- `
-
- Registry.getInstance().get('themeModule').api.fixInvert(imgFrom)
- Registry.getInstance().get('themeModule').api.fixInvert(imgTo)
-
- const pluginMessage = message ? yo`
-
-
Description
-
${message}
-
- ` : ''
- return yo`
-
- ${pluginsImages}
-
- ${text} :
- ${fromName}
- ${from.description || yo`No description Provided`}
- ${toName} :
- ${to.description || yo`No description Provided`}
- ${pluginMessage}
-
-
-
-
- ${rememberSwitch}
-
-
-
-
-
- `
- }
-}
diff --git a/apps/remix-ide/src/remixAppManager.js b/apps/remix-ide/src/remixAppManager.js
index 5f5fa2f8eb..dcfd1fe385 100644
--- a/apps/remix-ide/src/remixAppManager.js
+++ b/apps/remix-ide/src/remixAppManager.js
@@ -2,7 +2,6 @@
import { PluginManager } from '@remixproject/engine'
import { EventEmitter } from 'events'
import QueryParams from './lib/query-params'
-import { PermissionHandler } from './app/ui/persmission-handler'
import { IframePlugin } from '@remixproject/engine-web'
const _paq = window._paq = window._paq || []
@@ -40,7 +39,6 @@ export class RemixAppManager extends PluginManager {
this.event = new EventEmitter()
this.pluginsDirectory = 'https://raw.githubusercontent.com/ethereum/remix-plugins-directory/master/build/metadata.json'
this.pluginLoader = new PluginLoader()
- this.permissionHandler = new PermissionHandler()
}
async canActivatePlugin (from, to) {
@@ -72,7 +70,7 @@ export class RemixAppManager extends PluginManager {
return true
}
// ask the user for permission
- return await this.permissionHandler.askPermission(this.profiles[from], this.profiles[to], method, message)
+ return await this.call('permissionhandler', 'askPermission', this.profiles[from], this.profiles[to], method, message)
}
onPluginActivated (plugin) {
diff --git a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx
index 605dcae501..27d5a7b832 100644
--- a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx
+++ b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx
@@ -8,7 +8,6 @@ import DragBar from './components/dragbar/dragbar'
import { AppProvider } from './context/provider'
import AppDialogs from './components/modals/dialogs'
import DialogViewPlugin from './components/modals/dialogViewPlugin'
-import { Permissionhandler } from '@remix-ui/permission-handler'
interface IRemixAppUi {
app: any
@@ -105,7 +104,6 @@ const RemixApp = (props: IRemixAppUi) => {
{components.hiddenPanel}
-
)
}
diff --git a/libs/remix-ui/permission-handler/src/index.ts b/libs/remix-ui/permission-handler/src/index.ts
index 6e662ed485..dfa55cfc9d 100644
--- a/libs/remix-ui/permission-handler/src/index.ts
+++ b/libs/remix-ui/permission-handler/src/index.ts
@@ -1 +1,2 @@
-export { default as Permissionhandler } from './lib/permission-handler'
+export { default as PermissionHandlerDialog } from './lib/permission-dialog'
+export { PermissionHandlerValue, PermissionHandlerProps } from './interface/index'
diff --git a/libs/remix-ui/permission-handler/src/interface/index.ts b/libs/remix-ui/permission-handler/src/interface/index.ts
index 7fbbbaaa34..a24c8570c6 100644
--- a/libs/remix-ui/permission-handler/src/interface/index.ts
+++ b/libs/remix-ui/permission-handler/src/interface/index.ts
@@ -1,8 +1,8 @@
-import { IconProfile } from 'libs/remix-ui/vertical-icons-panel/src/lib/components/Icon'
+import { Profile } from '@remixproject/plugin-utils'
export interface PermissionHandlerValue {
- from: IconProfile,
- to: IconProfile,
+ from: Profile,
+ to: Profile,
remember: boolean,
method: string,
message: string
@@ -10,4 +10,6 @@ export interface PermissionHandlerValue {
export interface PermissionHandlerProps {
value: PermissionHandlerValue
+ theme: string
+ plugin: any
}
diff --git a/libs/remix-ui/permission-handler/src/lib/permission-dialog.css b/libs/remix-ui/permission-handler/src/lib/permission-dialog.css
index b2584800b1..68e0d845b5 100644
--- a/libs/remix-ui/permission-handler/src/lib/permission-dialog.css
+++ b/libs/remix-ui/permission-handler/src/lib/permission-dialog.css
@@ -22,4 +22,8 @@
}
.images i {
margin: 0 20px;
+ }
+
+ .invert {
+ filter: invert(1);
}
\ No newline at end of file
diff --git a/libs/remix-ui/permission-handler/src/lib/permission-dialog.tsx b/libs/remix-ui/permission-handler/src/lib/permission-dialog.tsx
index 4550064754..5d7928b2f4 100644
--- a/libs/remix-ui/permission-handler/src/lib/permission-dialog.tsx
+++ b/libs/remix-ui/permission-handler/src/lib/permission-dialog.tsx
@@ -1,35 +1,38 @@
-import React, { useContext, useEffect, useRef, useState } from 'react' // eslint-disable-line
+import React, { ChangeEventHandler, useContext, useEffect, useRef, useState } from 'react' // eslint-disable-line
import { PermissionHandlerProps } from '../interface'
import './permission-dialog.css'
const PermissionHandlerDialog = (props: PermissionHandlerProps) => {
const { from, to, remember, method, message } = props.value
+ const [feedback, setFeedback] = useState('')
+ const theme = props.theme
- const switchMode = () => {
-
+ const switchMode = (e: any) => {
+ props.plugin.switchMode(from, to, method, e.target.checked)
}
const rememberSwitch = () => {
return
}
const reset = () => {
-
+ props.plugin.clear()
+ setFeedback('All permisssions have been reset.')
}
- const imgFrom = () => { return }
- const imgTo = () => { return }
+ const imgFrom = () => { return }
+ const imgTo = () => { return }
const pluginsImages = () => {
return (
- {imgFrom}
+ {imgFrom()}
- {imgTo}
+ {imgTo()}
)
}
const text = () => {
- return `"${from.displayName}" ${(remember ? 'has changed and' : '')} would like to access to "${method}" of "${to.displayName}"`
+ return <>"{from.displayName}" {(remember ? 'has changed and' : '')} would like to access to "{method}" of "{to.displayName}"`>
}
const pluginMessage = () => {
@@ -41,22 +44,23 @@ const PermissionHandlerDialog = (props: PermissionHandlerProps) => {
}
return (
- {pluginsImages}
+ {pluginsImages()}
- {text} :
+ {text()} :
{from.displayName}
- {from.description} || No description Provided
+ {from.description || No description Provided}
{to.displayName} :
- {to.description} || No description Provided
- {pluginMessage}
+ {to.description || No description Provided}
+ {pluginMessage()}
- {rememberSwitch}
+ {rememberSwitch()}
+ {feedback}
)
}
diff --git a/libs/remix-ui/permission-handler/src/lib/permission-handler.tsx b/libs/remix-ui/permission-handler/src/lib/permission-handler.tsx
deleted file mode 100644
index f6b06c23f4..0000000000
--- a/libs/remix-ui/permission-handler/src/lib/permission-handler.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { useDialogDispatchers } from 'libs/remix-ui/app/src/lib/remix-app/context/provider'
-import React, { useContext, useEffect, useRef, useState } from 'react' // eslint-disable-line
-import { PermissionHandlerValue } from '../interface'
-import PermissionHandlerDialog from './permission-dialog'
-
-const PermissionHandler = () => {
- const { alert, toast, modal } = useDialogDispatchers()
- const [value, setValue] = useState()
- useEffect(() => {
- if (value) {
- modal({
- id: 'PermissionHandler',
- title: 'permissions',
- message: ,
- okFn: () => {},
- cancelFn: () => {},
- okLabel: 'sure',
- cancelLabel: 'no'
- })
- }
- }, [value])
- return (<>>)
-}
-
-export default PermissionHandler
diff --git a/package-lock.json b/package-lock.json
index bab7da51d1..e28009392f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9782,46 +9782,46 @@
"integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ=="
},
"@remixproject/engine": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@remixproject/engine/-/engine-0.3.24.tgz",
- "integrity": "sha512-XVPaRIAwxTxEmc+u+bq9nIqUcP1NDdQFTm/8xmw8HcZicgagUW/y0RuLEMBj5GTGXF+EsljY27t6bPy7fmVHWQ==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@remixproject/engine/-/engine-0.3.25.tgz",
+ "integrity": "sha512-6XaXZ6BHKEoYfnAQSN7Hy2UZt8M/rKA2Vfq6Wy2tYocfzHVRXb3PeZncdumeO4vdnTldbrrRhgn4i4/ORcYAnA==",
"requires": {
- "@remixproject/plugin-api": "0.3.24",
- "@remixproject/plugin-utils": "0.3.24"
+ "@remixproject/plugin-api": "0.3.25",
+ "@remixproject/plugin-utils": "0.3.25"
}
},
"@remixproject/engine-web": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@remixproject/engine-web/-/engine-web-0.3.24.tgz",
- "integrity": "sha512-6P2NLoL9KSa/84FumEM3QxvOW4g/hIEsq8NcbBA+/PHz9VnIRoxRg2K/jGJUHHqKw+dfoSdk5lQ+LkFQHcrp+w==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@remixproject/engine-web/-/engine-web-0.3.25.tgz",
+ "integrity": "sha512-RzmDDE7Eh+gW1A/pQkGovQA+A6dRPKGfFmkShXcCkKZghNKc+DSCCKkgVxfYu2ckgr5Q5N11tBiAA+5OFduLRg==",
"requires": {
- "@remixproject/engine": "0.3.24",
- "@remixproject/plugin-api": "0.3.24",
- "@remixproject/plugin-utils": "0.3.24"
+ "@remixproject/engine": "0.3.25",
+ "@remixproject/plugin-api": "0.3.25",
+ "@remixproject/plugin-utils": "0.3.25"
}
},
"@remixproject/plugin": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@remixproject/plugin/-/plugin-0.3.24.tgz",
- "integrity": "sha512-nGtt3IZA5X2kcXauu5h5P8EEoMtHbVGm5wWnv0c7aYYWbffhQdK8dqtNNEAtQavWrsp5TL61zekqpkFzgxVv9w==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@remixproject/plugin/-/plugin-0.3.25.tgz",
+ "integrity": "sha512-EVFtZ42+BmfZ+6UWcTo7Ig+7RQ1LiaBe4hnM8lQVyVhKqsYnev7/NAQycDmrtTSZR7kaLhy/nH3vTfxryleqQw==",
"requires": {
- "@remixproject/plugin-api": "0.3.24",
- "@remixproject/plugin-utils": "0.3.24",
+ "@remixproject/plugin-api": "0.3.25",
+ "@remixproject/plugin-utils": "0.3.25",
"events": "3.2.0"
}
},
"@remixproject/plugin-api": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@remixproject/plugin-api/-/plugin-api-0.3.24.tgz",
- "integrity": "sha512-mBxou9OSsQt7ggMmKTJR433jJaSAckBmVj82Ek7i/+EGxEAxSqKhPfRlh5sFiTgvUmzHQzuvqa8ndyw0Bbcq4w==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@remixproject/plugin-api/-/plugin-api-0.3.25.tgz",
+ "integrity": "sha512-GPjPfGRv955En5AILLYf62zqZdALuDCJiq3DKR1XdkVukbI9Soc2FcGs8O2phNhqieIjgXMoUcl1Or6brfuLAw==",
"requires": {
- "@remixproject/plugin-utils": "0.3.24"
+ "@remixproject/plugin-utils": "0.3.25"
}
},
"@remixproject/plugin-utils": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@remixproject/plugin-utils/-/plugin-utils-0.3.24.tgz",
- "integrity": "sha512-nMXGCgs6filbgUc/Zvh1gReGG5HN2Bq+AI4Q7Ao08Thhg5ALj1UsbzQf86Ya/L7Q+EF6Em1CbgPT0VhcGlP66A==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@remixproject/plugin-utils/-/plugin-utils-0.3.25.tgz",
+ "integrity": "sha512-FzOKItdfwbQBYlFcK+erLu/ol1htxjAYeuvpxZ1CzbuMXtupA/GW58vCYzIbNZqd0LlYGqIUgEY+fsm3QuU41w==",
"requires": {
"tslib": "2.0.1"
},
@@ -9834,13 +9834,13 @@
}
},
"@remixproject/plugin-webview": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@remixproject/plugin-webview/-/plugin-webview-0.3.24.tgz",
- "integrity": "sha512-Wcyi+gGq1AYprE58vhQS181swAKZpoLAfKlKuHJ+ezbysUDuX8jgsEiQ6u1c17nQfy8Hp9sntK6VcCcDddn8gg==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@remixproject/plugin-webview/-/plugin-webview-0.3.25.tgz",
+ "integrity": "sha512-pjF1qAjgCFHciIDRKTsu2+9rdopjw6+H0GH5moUCGs9WsxmQT1NyfTxvJB+Qkf9GaWdak+ECBlrcn7DAX29BPA==",
"requires": {
- "@remixproject/plugin": "0.3.24",
- "@remixproject/plugin-api": "0.3.24",
- "@remixproject/plugin-utils": "0.3.24",
+ "@remixproject/plugin": "0.3.25",
+ "@remixproject/plugin-api": "0.3.25",
+ "@remixproject/plugin-utils": "0.3.25",
"axios": "^0.21.1"
},
"dependencies": {
@@ -9855,13 +9855,13 @@
}
},
"@remixproject/plugin-ws": {
- "version": "0.3.24",
- "resolved": "https://registry.npmjs.org/@remixproject/plugin-ws/-/plugin-ws-0.3.24.tgz",
- "integrity": "sha512-COIROJX61vS2TRH82MflIUlScxLauNtLkMRY7vzncVOIvufApvNc84Ua8Vr6vhSb2tZeWX+u4UTiFnpFDRL7xw==",
+ "version": "0.3.25",
+ "resolved": "https://registry.npmjs.org/@remixproject/plugin-ws/-/plugin-ws-0.3.25.tgz",
+ "integrity": "sha512-ligtZmDUUpEhtMjt6sD33ibFQmcP6qdybLMA6DL94wW5x6d+aM0K8+dtWYFnK3HPfgbpvqHFf/7A7ulFJphcPg==",
"requires": {
- "@remixproject/plugin": "0.3.24",
- "@remixproject/plugin-api": "0.3.24",
- "@remixproject/plugin-utils": "0.3.24"
+ "@remixproject/plugin": "0.3.25",
+ "@remixproject/plugin-api": "0.3.25",
+ "@remixproject/plugin-utils": "0.3.25"
}
},
"@restart/context": {
diff --git a/package.json b/package.json
index 0e55dd276d..a7c37245dc 100644
--- a/package.json
+++ b/package.json
@@ -147,13 +147,13 @@
"@ethereumjs/tx": "^3.3.2",
"@ethereumjs/vm": "^5.5.3",
"@monaco-editor/react": "^4.3.1",
- "@remixproject/engine": "^0.3.24",
- "@remixproject/engine-web": "^0.3.24",
- "@remixproject/plugin": "^0.3.24",
- "@remixproject/plugin-api": "^0.3.24",
- "@remixproject/plugin-utils": "^0.3.24",
- "@remixproject/plugin-webview": "^0.3.24",
- "@remixproject/plugin-ws": "^0.3.24",
+ "@remixproject/engine": "^0.3.25",
+ "@remixproject/engine-web": "^0.3.25",
+ "@remixproject/plugin": "^0.3.25",
+ "@remixproject/plugin-api": "^0.3.25",
+ "@remixproject/plugin-utils": "^0.3.25",
+ "@remixproject/plugin-webview": "^0.3.25",
+ "@remixproject/plugin-ws": "^0.3.25",
"ansi-gray": "^0.1.1",
"async": "^2.6.2",
"axios": ">=0.21.1",