diff --git a/apps/remix-dapp/src/locales/en/udapp.json b/apps/remix-dapp/src/locales/en/udapp.json index 4315f57a59..0d3952cc1a 100644 --- a/apps/remix-dapp/src/locales/en/udapp.json +++ b/apps/remix-dapp/src/locales/en/udapp.json @@ -26,7 +26,7 @@ "udapp.contractOptionsTitle2": "Select a compiled contract to deploy or to use with At Address.", "udapp.contractOptionsTitle3": "Select and compile *.sol file to deploy or access a contract.", "udapp.contractOptionsTitle4": "When there is a compiled .sol file, choose the contract to deploy or to use with At Address.", - "udapp.checkSumWarning": "It seems you are not using a checksumed address.A checksummed address is an address that contains uppercase letters, as specified in {a}.Checksummed addresses are meant to help prevent users from sending transactions to the wrong address.", + "udapp.checkSumWarning": "It seems you are not using a checksummed address.A checksummed address is an address that contains uppercase letters, as specified in {a}.Checksummed addresses are meant to help prevent users from sending transactions to the wrong address.", "udapp.isOverSizePromptEip170": "Contract creation initialization returns data with length of more than 24576 bytes. The deployment will likely fail if the current network has activated the eip 170. More info: {a}", "udapp.isOverSizePromptEip3860": "Contract creation init code exceeds the allowed max code size of 49152 bytes. The deployment will likely fail if the current network has activated the eip 3860. More info: {a}", "udapp.thisContractMayBeAbstract": "This contract may be abstract, it may not implement an abstract parent's methods completely or it may not invoke an inherited contract's constructor correctly.", diff --git a/apps/remix-dapp/src/locales/zh/udapp.json b/apps/remix-dapp/src/locales/zh/udapp.json index 35dad029bb..7fb99322b3 100644 --- a/apps/remix-dapp/src/locales/zh/udapp.json +++ b/apps/remix-dapp/src/locales/zh/udapp.json @@ -23,7 +23,7 @@ "udapp.contractOptionsTitle2": "选择要部署或与 At Address 一起使用的已编译合约。", "udapp.contractOptionsTitle3": "选择并编译 *.sol 文件以部署或访问合约。", "udapp.contractOptionsTitle4": "当有编译的 .sol 文件时,选择 {br} 合约进行部署或与 AtAddress 一起使用。", - "udapp.checkSumWarning": "您似乎没有使用 checksumed address 。{br} checksumed address 是包含大写字母的地址,如 {a} 中所指定。{br} checksumed address 旨在帮助防止用户将交易发送到错误地址。", + "udapp.checkSumWarning": "您似乎没有使用 checksummed address 。{br} checksummed address 是包含大写字母的地址,如 {a} 中所指定。{br} checksummed address 旨在帮助防止用户将交易发送到错误地址。", "udapp.isOverSizePromptEip170": "合约创建初始化返回长度超过24576字节的数据。部署可能会失败。 {br}更多信息:{a}", "udapp.isOverSizePromptEip3860": "合约创建初始化代码超出了允许的最大代码大小 49152 字节。如果当前网络已激活 eip 3860,则部署可能会失败。更多信息:{a}", "udapp.thisContractMayBeAbstract": "这个合约可能是抽象的,它可能没有完全实现抽象父类的方法,或者它可能没有正确调用继承合约的构造函数。", diff --git a/apps/remix-ide-e2e/src/commands/selectContract.ts b/apps/remix-ide-e2e/src/commands/selectContract.ts index d270f8949d..87bbc40c30 100644 --- a/apps/remix-ide-e2e/src/commands/selectContract.ts +++ b/apps/remix-ide-e2e/src/commands/selectContract.ts @@ -4,19 +4,14 @@ import EventEmitter from 'events' const selector = '.udapp_contractNames' class SelectContract extends EventEmitter { - command (this: NightwatchBrowser, contractName: string): NightwatchBrowser { - this.api.waitForElementVisible(selector).perform((done) => { - selectContract(this.api, contractName, () => { - done() - this.emit('complete') - }) - }) + command(this: NightwatchBrowser, contractName: string): NightwatchBrowser { + this.api + .waitForElementVisible(selector) + .waitForElementPresent(`${selector} option[value="${contractName}"]`) + .click(`${selector} option[value="${contractName}"]`) + .perform(() => this.emit('complete')) return this } } -function selectContract (browser: NightwatchBrowser, contractName: string, callback: VoidFunction) { - browser.click(`${selector} option[value="${contractName}"]`).perform(() => callback()) -} - module.exports = SelectContract diff --git a/apps/remix-ide-e2e/src/tests/terminal.test.ts b/apps/remix-ide-e2e/src/tests/terminal.test.ts index 8aa15f221c..77bb44f548 100644 --- a/apps/remix-ide-e2e/src/tests/terminal.test.ts +++ b/apps/remix-ide-e2e/src/tests/terminal.test.ts @@ -209,18 +209,16 @@ module.exports = { .createContract('') .getAddressAtPosition(0, (address) => { addressRef = address - }) - .perform((done) => { browser.addFile('scripts/test_filtering_event.ts', { content: test_filtering_event.replace('
', addressRef) }) - .perform(() => done()) + .executeScriptInTerminal('remix.execute(\'scripts/test_filtering_event.ts\')') + .pause(1000) + .waitForElementContainsText('*[data-id="terminalJournal"]', '1') + .waitForElementContainsText('*[data-id="terminalJournal"]', 'true') + .executeScriptInTerminal('remix.execute(\'scripts/test_filtering_event.ts\')') // re-emit the event + .waitForElementContainsText('*[data-id="terminalJournal"]', '2') + .waitForElementContainsText('*[data-id="terminalJournal"]', 'false') }) - .executeScriptInTerminal('remix.execute(\'scripts/test_filtering_event.ts\')') - .pause(1000) - .waitForElementContainsText('*[data-id="terminalJournal"]', '1') - .waitForElementContainsText('*[data-id="terminalJournal"]', 'true') - .executeScriptInTerminal('remix.execute(\'scripts/test_filtering_event.ts\')') // re-emit the event - .waitForElementContainsText('*[data-id="terminalJournal"]', '2') - .waitForElementContainsText('*[data-id="terminalJournal"]', 'false') + }, 'Should display auto-complete menu #group4': function (browser: NightwatchBrowser) { diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.ts similarity index 88% rename from apps/remix-ide/src/app.js rename to apps/remix-ide/src/app.ts index ab3b9ff246..86eb8697a2 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.ts @@ -26,21 +26,21 @@ import { WalkthroughService } from './walkthroughService' import { OffsetToLineColumnConverter, CompilerMetadata, CompilerArtefacts, FetchAndCompile, CompilerImports, GistHandler } from '@remix-project/core-plugin' -import {Registry} from '@remix-project/remix-lib' -import {ConfigPlugin} from './app/plugins/config' -import {StoragePlugin} from './app/plugins/storage' -import {Layout} from './app/panels/layout' -import {NotificationPlugin} from './app/plugins/notification' -import {Blockchain} from './blockchain/blockchain' -import {MergeVMProvider, LondonVMProvider, BerlinVMProvider, ShanghaiVMProvider, CancunVMProvider} from './app/providers/vm-provider' -import {MainnetForkVMProvider} from './app/providers/mainnet-vm-fork-provider' -import {SepoliaForkVMProvider} from './app/providers/sepolia-vm-fork-provider' -import {GoerliForkVMProvider} from './app/providers/goerli-vm-fork-provider' -import {CustomForkVMProvider} from './app/providers/custom-vm-fork-provider' -import {HardhatProvider} from './app/providers/hardhat-provider' -import {GanacheProvider} from './app/providers/ganache-provider' -import {FoundryProvider} from './app/providers/foundry-provider' -import {ExternalHttpProvider} from './app/providers/external-http-provider' +import { Registry } from '@remix-project/remix-lib' +import { ConfigPlugin } from './app/plugins/config' +import { StoragePlugin } from './app/plugins/storage' +import { Layout } from './app/panels/layout' +import { NotificationPlugin } from './app/plugins/notification' +import { Blockchain } from './blockchain/blockchain' +import { MergeVMProvider, LondonVMProvider, BerlinVMProvider, ShanghaiVMProvider, CancunVMProvider } from './app/providers/vm-provider' +import { MainnetForkVMProvider } from './app/providers/mainnet-vm-fork-provider' +import { SepoliaForkVMProvider } from './app/providers/sepolia-vm-fork-provider' +import { GoerliForkVMProvider } from './app/providers/goerli-vm-fork-provider' +import { CustomForkVMProvider } from './app/providers/custom-vm-fork-provider' +import { HardhatProvider } from './app/providers/hardhat-provider' +import { GanacheProvider } from './app/providers/ganache-provider' +import { FoundryProvider } from './app/providers/foundry-provider' +import { ExternalHttpProvider } from './app/providers/external-http-provider' import { EnvironmentExplorer } from './app/providers/environment-explorer' import { FileDecorator } from './app/plugins/file-decorator' import { CodeFormat } from './app/plugins/code-format' @@ -58,7 +58,7 @@ import { xtermPlugin } from './app/plugins/electron/xtermPlugin' import { ripgrepPlugin } from './app/plugins/electron/ripgrepPlugin' import { compilerLoaderPlugin, compilerLoaderPluginDesktop } from './app/plugins/electron/compilerLoaderPlugin' import { appUpdaterPlugin } from './app/plugins/electron/appUpdaterPlugin' -import { remixAIDesktopPlugin } from './app/plugins/electron/remixAIDesktopPlugin' +import { remixAIDesktopPlugin } from './app/plugins/electron/remixAIDesktopPlugin' import { RemixAIPlugin } from './app/plugins/remixAIPlugin' import { SlitherHandleDesktop } from './app/plugins/electron/slitherPlugin' import { SlitherHandle } from './app/files/slither-handle' @@ -72,9 +72,9 @@ import { Matomo } from './app/plugins/matomo' import { TemplatesSelectionPlugin } from './app/plugins/templates-selection/templates-selection-plugin' -const isElectron = require('is-electron') +import isElectron from 'is-electron' -const remixLib = require('@remix-project/remix-lib') +import * as remixLib from '@remix-project/remix-lib' import { QueryParams } from '@remix-project/remix-lib' import { SearchPlugin } from './app/tabs/search' @@ -82,27 +82,27 @@ import { ScriptRunnerUIPlugin } from './app/tabs/script-runner-ui' import { ElectronProvider } from './app/files/electronProvider' const Storage = remixLib.Storage -const RemixDProvider = require('./app/files/remixDProvider') -const Config = require('./config') +import RemixDProvider from './app/files/remixDProvider' +import Config from './config' -const FileManager = require('./app/files/fileManager') +import FileManager from './app/files/fileManager' import FileProvider from "./app/files/fileProvider" import { appPlatformTypes } from '@remix-ui/app' -const DGitProvider = require('./app/files/dgitProvider') -const WorkspaceFileProvider = require('./app/files/workspaceFileProvider') +import DGitProvider from './app/files/dgitProvider' +import WorkspaceFileProvider from './app/files/workspaceFileProvider' -const PluginManagerComponent = require('./app/components/plugin-manager-component') +import PluginManagerComponent from './app/components/plugin-manager-component' -const CompileTab = require('./app/tabs/compile-tab') -const SettingsTab = require('./app/tabs/settings-tab') -const AnalysisTab = require('./app/tabs/analysis-tab') -const { DebuggerTab } = require('./app/tabs/debugger-tab') -const TestTab = require('./app/tabs/test-tab') -const FilePanel = require('./app/panels/file-panel') -const Editor = require('./app/editor/editor') -const Terminal = require('./app/panels/terminal') -const { TabProxy } = require('./app/panels/tab-proxy.js') +import CompileTab from './app/tabs/compile-tab' +import SettingsTab from './app/tabs/settings-tab' +import AnalysisTab from './app/tabs/analysis-tab' +import DebuggerTab from './app/tabs/debugger-tab' +import TestTab from './app/tabs/test-tab' +import Filepanel from './app/panels/file-panel' +import Editor from './app/editor/editor' +import Terminal from './app/panels/terminal' +import TabProxy from './app/panels/tab-proxy.js' const _paq = (window._paq = window._paq || []) @@ -115,16 +115,49 @@ export class platformApi { } } +type Components = { + filesProviders: { + browser?: any + localhost?: any + workspace?: any + electron?: any + } +} + class AppComponent { + appManager: RemixAppManager + queryParams: QueryParams + private _components: Components + panels: any + workspace: any + engine: RemixEngine + matomoConfAlreadySet: any + matomoCurrentSetting: any + showMatomo: boolean + walkthroughService: WalkthroughService + platform: 'desktop' | 'web' + gistHandler: GistHandler + themeModule: ThemeModule + localeModule: LocaleModule + notification: NotificationPlugin + layout: Layout + mainview: any + menuicons: VerticalIcons + sidePanel: SidePanel + hiddenPanel: HiddenPanel + pinnedPanel: PinnedPanel + popupPanel: PopupPanel + statusBar: StatusBar + settings: SettingsTab constructor() { const PlatFormAPi = new platformApi() Registry.getInstance().put({ api: PlatFormAPi, name: 'platform' }) - this.appManager = new RemixAppManager({}) + this.appManager = new RemixAppManager() this.queryParams = new QueryParams() - this._components = {} + this._components = {} as Components // setup storage const configStorage = new Storage('config-v0.8:') @@ -161,7 +194,6 @@ class AppComponent { name: 'fileproviders' }) - } async run() { @@ -184,7 +216,7 @@ class AppComponent { this.matomoConfAlreadySet = Registry.getInstance().get('config').api.exists('settings/matomo-analytics') this.matomoCurrentSetting = Registry.getInstance().get('config').api.get('settings/matomo-analytics') - let electronTracking = window.electronAPI ? await window.electronAPI.canTrackMatomo() : false + const electronTracking = (window as any).electronAPI ? await (window as any).electronAPI.canTrackMatomo() : false const lastMatomoCheck = window.localStorage.getItem('matomo-analytics-consent') const sixMonthsAgo = new Date(); @@ -193,11 +225,11 @@ class AppComponent { const e2eforceMatomoToShow = window.localStorage.getItem('showMatomo') && window.localStorage.getItem('showMatomo') === 'true' const contextShouldShowMatomo = matomoDomains[window.location.hostname] || e2eforceMatomoToShow || electronTracking const shouldRenewConsent = this.matomoCurrentSetting === false && (!lastMatomoCheck || new Date(Number(lastMatomoCheck)) < sixMonthsAgo) // it is set to false for more than 6 months. - this.showMatomo = contextShouldShowMatomo && (!this.matomoConfAlreadySet || shouldRenewConsent) + this.showMatomo = contextShouldShowMatomo && (!this.matomoConfAlreadySet || shouldRenewConsent) if (this.showMatomo && shouldRenewConsent) { _paq.push(['trackEvent', 'Matomo', 'refreshMatomoPermissions']); - } + } this.walkthroughService = new WalkthroughService(appManager) @@ -387,7 +419,7 @@ class AppComponent { ganacheProvider, foundryProvider, externalHttpProvider, - environmentExplorer, + environmentExplorer, this.walkthroughService, search, solidityumlgen, @@ -456,10 +488,10 @@ class AppComponent { this.popupPanel = new PopupPanel() const pluginManagerComponent = new PluginManagerComponent(appManager, this.engine) - const filePanel = new FilePanel(appManager, contentImport) + const filePanel = new Filepanel(appManager, contentImport) this.statusBar = new StatusBar(filePanel, this.menuicons) const landingPage = new LandingPage(appManager, this.menuicons, fileManager, filePanel, contentImport) - this.settings = new SettingsTab(Registry.getInstance().get('config').api, editor, appManager) + this.settings = new SettingsTab(Registry.getInstance().get('config').api, editor)//, appManager) this.engine.register([this.menuicons, landingPage, this.hiddenPanel, this.sidePanel, this.statusBar, filePanel, pluginManagerComponent, this.settings, this.pinnedPanel, this.popupPanel]) @@ -514,7 +546,7 @@ class AppComponent { async activate() { const queryParams = new QueryParams() - const params = queryParams.get() + const params: any = queryParams.get() try { this.engine.register(await this.appManager.registeredPlugins()) @@ -610,10 +642,11 @@ class AppComponent { } if (params.call) { - const callDetails = params.call.split('//') + const callDetails: any = params.call.split('//') if (callDetails.length > 1) { this.appManager.call('notification', 'toast', `initiating ${callDetails[0]} and calling "${callDetails[1]}" ...`) // @todo(remove the timeout when activatePlugin is on 0.3.0) + //@ts-ignore await this.appManager.call(...callDetails).catch(console.error) } } @@ -629,6 +662,7 @@ class AppComponent { // @todo(remove the timeout when activatePlugin is on 0.3.0) try { + //@ts-ignore await this.appManager.call(...callDetails) } catch (e) { console.error(e) diff --git a/apps/remix-ide/src/app/components/main-panel.tsx b/apps/remix-ide/src/app/components/main-panel.tsx index e48399e839..a7f8a6a422 100644 --- a/apps/remix-ide/src/app/components/main-panel.tsx +++ b/apps/remix-ide/src/app/components/main-panel.tsx @@ -15,7 +15,7 @@ const profile = { export class MainPanel extends AbstractPanel { element: HTMLDivElement dispatch: React.Dispatch = () => {} - constructor(config) { + constructor(config = null) { super(profile) this.element = document.createElement('div') this.element.setAttribute('data-id', 'mainPanelPluginsContainer') diff --git a/apps/remix-ide/src/app/components/plugin-manager-component.js b/apps/remix-ide/src/app/components/plugin-manager-component.js index 816d9c1c11..e4471bbed2 100644 --- a/apps/remix-ide/src/app/components/plugin-manager-component.js +++ b/apps/remix-ide/src/app/components/plugin-manager-component.js @@ -19,7 +19,7 @@ const profile = { maintainedBy: "Remix" } -class PluginManagerComponent extends ViewPlugin { +export default class PluginManagerComponent extends ViewPlugin { constructor (appManager, engine) { super(profile) this.appManager = appManager diff --git a/apps/remix-ide/src/app/components/popup-panel.tsx b/apps/remix-ide/src/app/components/popup-panel.tsx index b000fde79d..1728dbfbba 100644 --- a/apps/remix-ide/src/app/components/popup-panel.tsx +++ b/apps/remix-ide/src/app/components/popup-panel.tsx @@ -24,7 +24,7 @@ export class PopupPanel extends AbstractPanel { dispatch: React.Dispatch = () => { } appStateDispatch: React.Dispatch = () => { } - constructor(config) { + constructor(config = null) { super(profile) this.event = new EventEmitter() } diff --git a/apps/remix-ide/src/app/editor/editor.js b/apps/remix-ide/src/app/editor/editor.js index b5f763db62..04259079aa 100644 --- a/apps/remix-ide/src/app/editor/editor.js +++ b/apps/remix-ide/src/app/editor/editor.js @@ -16,7 +16,7 @@ const profile = { methods: ['highlight', 'discardHighlight', 'clearAnnotations', 'addLineText', 'discardLineTexts', 'addAnnotation', 'gotoLine', 'revealRange', 'getCursorPosition', 'open', 'addModel','addErrorMarker', 'clearErrorMarkers', 'getText', 'getPositionAt', 'openReadOnly'], } -class Editor extends Plugin { +export default class Editor extends Plugin { constructor () { super(profile) @@ -90,7 +90,7 @@ class Editor extends Plugin { } render () { - return
{ + return
{ this.ref = element this.ref.currentContent = () => this.currentContent() // used by e2e test this.ref.setCurrentContent = (value) => { @@ -102,7 +102,7 @@ class Editor extends Plugin { this.ref.gotoLine = (line, column) => this.gotoLine(line, column || 0) this.ref.getCursorPosition = () => this.getCursorPosition() this.ref.addDecoration = (marker, filePath, typeOfDecoration) => this.addDecoration(marker, filePath, typeOfDecoration) - this.ref.clearDecorationsByPlugin = (filePath, plugin, typeOfDecoration) => this.clearDecorationsByPlugin(filePath, plugin, typeOfDecoration) + this.ref.clearDecorationsByPlugin = (filePath, plugin, typeOfDecoration) => this.clearDecorationsByPlugin(filePath, plugin, typeOfDecoration) this.ref.keepDecorationsFor = (name, typeOfDecoration) => this.keepDecorationsFor(name, typeOfDecoration) }} id='editorView'> @@ -249,7 +249,7 @@ class Editor extends Plugin { */ async _createSession (path, content, mode, readOnly) { if (!this.activated) return - + this.emit('addModel', content, mode, path, readOnly || this.readOnlySessions[path]) return { path, @@ -548,7 +548,7 @@ class Editor extends Plugin { decoration.from = from const { currentDecorations, registeredDecorations } = this.api.addDecoration(decoration, path, typeOfDecoration) - if (!this.registeredDecorations[typeOfDecoration][filePath]) this.registeredDecorations[typeOfDecoration][filePath] = [] + if (!this.registeredDecorations[typeOfDecoration][filePath]) this.registeredDecorations[typeOfDecoration][filePath] = [] this.registeredDecorations[typeOfDecoration][filePath].push(...registeredDecorations) if (!this.currentDecorations[typeOfDecoration][filePath]) this.currentDecorations[typeOfDecoration][filePath] = [] this.currentDecorations[typeOfDecoration][filePath].push(...currentDecorations) @@ -601,5 +601,3 @@ class Editor extends Plugin { return this.api.getPositionAt(offset) } } - -module.exports = Editor diff --git a/apps/remix-ide/src/app/files/dgitProvider.ts b/apps/remix-ide/src/app/files/dgitProvider.ts index cdb863b4b7..4a8778c0ef 100644 --- a/apps/remix-ide/src/app/files/dgitProvider.ts +++ b/apps/remix-ide/src/app/files/dgitProvider.ts @@ -28,7 +28,7 @@ const profile: LibraryProfile = { , 'getGitHubUser', 'remotebranches', 'remotecommits', 'repositories', 'getCommitChanges', 'compareBranches'], kind: 'file-system' } -class DGitProvider extends Plugin { +export default class DGitProvider extends Plugin { constructor() { super(profile) } diff --git a/apps/remix-ide/src/app/files/fileManager.ts b/apps/remix-ide/src/app/files/fileManager.ts index 707c14bb30..5b3e70ae4a 100644 --- a/apps/remix-ide/src/app/files/fileManager.ts +++ b/apps/remix-ide/src/app/files/fileManager.ts @@ -40,7 +40,7 @@ const errorMsg = { const createError = (err) => { return new Error(`${errorMsg[err.code]} ${err.message || ''}`) } -class FileManager extends Plugin { +export default class FileManager extends Plugin { mode: string openedFiles: any editor: any diff --git a/apps/remix-ide/src/app/files/remixDProvider.js b/apps/remix-ide/src/app/files/remixDProvider.js index 62171fdc5b..f13ccbaa0c 100644 --- a/apps/remix-ide/src/app/files/remixDProvider.js +++ b/apps/remix-ide/src/app/files/remixDProvider.js @@ -1,7 +1,7 @@ 'use strict' import FileProvider from "./fileProvider" -module.exports = class RemixDProvider extends FileProvider { +export default class RemixDProvider extends FileProvider { constructor (appManager) { super('localhost') this._appManager = appManager diff --git a/apps/remix-ide/src/app/files/workspaceFileProvider.js b/apps/remix-ide/src/app/files/workspaceFileProvider.js index 900ad8ccba..c7e33862c4 100644 --- a/apps/remix-ide/src/app/files/workspaceFileProvider.js +++ b/apps/remix-ide/src/app/files/workspaceFileProvider.js @@ -3,7 +3,7 @@ const EventManager = require('events') import FileProvider from "./fileProvider" -class WorkspaceFileProvider extends FileProvider { +export default class WorkspaceFileProvider extends FileProvider { constructor () { super('') this.workspacesPath = '.workspaces' @@ -18,10 +18,10 @@ class WorkspaceFileProvider extends FileProvider { }) }).catch((e) => { console.log(e) - }) + }) } catch (e) { // we don't need to log error if this throws an error - } + } } setWorkspace (workspace) { diff --git a/apps/remix-ide/src/app/panels/file-panel.js b/apps/remix-ide/src/app/panels/file-panel.js index 2b3946bca1..6277bffcc9 100644 --- a/apps/remix-ide/src/app/panels/file-panel.js +++ b/apps/remix-ide/src/app/panels/file-panel.js @@ -55,7 +55,7 @@ const profile = { version: packageJson.version, maintainedBy: 'Remix' } -module.exports = class Filepanel extends ViewPlugin { +export default class Filepanel extends ViewPlugin { constructor(appManager, contentImport) { super(profile) this.registry = Registry.getInstance() diff --git a/apps/remix-ide/src/app/panels/layout.ts b/apps/remix-ide/src/app/panels/layout.ts index 539a9b1c48..2ed6541d9e 100644 --- a/apps/remix-ide/src/app/panels/layout.ts +++ b/apps/remix-ide/src/app/panels/layout.ts @@ -12,7 +12,7 @@ const profile: Profile = { interface panelState { active: boolean plugin: Plugin - minimized: boolean + minimized?: boolean } interface panels { tabs: panelState diff --git a/apps/remix-ide/src/app/panels/tab-proxy.js b/apps/remix-ide/src/app/panels/tab-proxy.js index d71bd3ec6a..8c90ca8b8e 100644 --- a/apps/remix-ide/src/app/panels/tab-proxy.js +++ b/apps/remix-ide/src/app/panels/tab-proxy.js @@ -10,7 +10,7 @@ const profile = { kind: 'other' } -export class TabProxy extends Plugin { +export default class TabProxy extends Plugin { constructor (fileManager, editor) { super(profile) this.event = new EventEmitter() diff --git a/apps/remix-ide/src/app/panels/terminal.tsx b/apps/remix-ide/src/app/panels/terminal.tsx index a30cf085bd..3623a592cb 100644 --- a/apps/remix-ide/src/app/panels/terminal.tsx +++ b/apps/remix-ide/src/app/panels/terminal.tsx @@ -24,7 +24,7 @@ const profile = { version: packageJson.version } -class Terminal extends Plugin { +export default class Terminal extends Plugin { fileImport: CompilerImports event: any globalRegistry: Registry @@ -163,4 +163,3 @@ class Terminal extends Plugin { } } -module.exports = Terminal diff --git a/apps/remix-ide/src/app/tabs/analysis-tab.js b/apps/remix-ide/src/app/tabs/analysis-tab.js index 77080b1770..90d0900fb8 100644 --- a/apps/remix-ide/src/app/tabs/analysis-tab.js +++ b/apps/remix-ide/src/app/tabs/analysis-tab.js @@ -22,7 +22,7 @@ const profile = { maintainedBy: 'Remix' } -class AnalysisTab extends ViewPlugin { +export default class AnalysisTab extends ViewPlugin { constructor () { super(profile) this.event = new EventManager() diff --git a/apps/remix-ide/src/app/tabs/compile-tab.js b/apps/remix-ide/src/app/tabs/compile-tab.js index 70f0d498a7..eed9cb6818 100644 --- a/apps/remix-ide/src/app/tabs/compile-tab.js +++ b/apps/remix-ide/src/app/tabs/compile-tab.js @@ -28,7 +28,7 @@ const profile = { // - events: ['compilationFinished'], // - methods: ['getCompilationResult'] -class CompileTab extends CompilerApiMixin(ViewPlugin) { // implements ICompilerApi +export default class CompileTab extends CompilerApiMixin(ViewPlugin) { // implements ICompilerApi constructor (config, fileManager) { super(profile) this.fileManager = fileManager diff --git a/apps/remix-ide/src/app/tabs/debugger-tab.js b/apps/remix-ide/src/app/tabs/debugger-tab.js index 9560713ffe..0e30f19b2f 100644 --- a/apps/remix-ide/src/app/tabs/debugger-tab.js +++ b/apps/remix-ide/src/app/tabs/debugger-tab.js @@ -22,7 +22,7 @@ const profile = { maintainedBy: 'Remix' } -export class DebuggerTab extends DebuggerApiMixin(ViewPlugin) { +export default class DebuggerTab extends DebuggerApiMixin(ViewPlugin) { constructor () { super(profile) this.el = document.createElement('div') diff --git a/apps/remix-ide/src/app/tabs/settings-tab.tsx b/apps/remix-ide/src/app/tabs/settings-tab.tsx index 08557e3a31..8a5ac39a94 100644 --- a/apps/remix-ide/src/app/tabs/settings-tab.tsx +++ b/apps/remix-ide/src/app/tabs/settings-tab.tsx @@ -27,7 +27,7 @@ const profile = { maintainedBy: 'Remix' } -module.exports = class SettingsTab extends ViewPlugin { +export default class SettingsTab extends ViewPlugin { config: any = {} editor: any private _deps: { diff --git a/apps/remix-ide/src/app/tabs/test-tab.js b/apps/remix-ide/src/app/tabs/test-tab.js index 6a317cdacd..8d695366fd 100644 --- a/apps/remix-ide/src/app/tabs/test-tab.js +++ b/apps/remix-ide/src/app/tabs/test-tab.js @@ -22,7 +22,7 @@ const profile = { maintainedBy: 'Remix' } -module.exports = class TestTab extends ViewPlugin { +export default class TestTab extends ViewPlugin { constructor (fileManager, offsetToLineColumnConverter, filePanel, compileTab, appManager, contentImport) { super(profile) this.compileTab = compileTab diff --git a/libs/remix-ui/plugin-manager/src/types.d.ts b/libs/remix-ui/plugin-manager/src/types.d.ts index cfe333c636..2e16627e8a 100644 --- a/libs/remix-ui/plugin-manager/src/types.d.ts +++ b/libs/remix-ui/plugin-manager/src/types.d.ts @@ -34,14 +34,11 @@ export class RemixAppManager extends PluginManager { event: EventEmitter pluginsDirectory: string pluginLoader: PluginLoader // eslint-disable-line no-use-before-define - permissionHandler: PermissionHandler getAll(): import('@remixproject/plugin-utils').Profile[] getIds(): string[] isDependent(name: any): any isRequired(name: any): any registeredPlugins(): Promise - turnPluginOn(name: string | string[]) - turnPluginOff(name: string) } export class PluginManagerSettings { @@ -67,7 +64,7 @@ export type PluginPermissions = { } } -export class PluginManagerComponent extends ViewPlugin extends Plugin implements PluginBase { +export class PluginManagerComponent extends ViewPlugin implements PluginBase { constructor(appManager: RemixAppManager, engine: Engine) appManager: RemixAppManager pluginSettings: PluginManagerSettings @@ -154,14 +151,6 @@ declare class PluginLoader { set(plugin: any, actives: any): void get(): any } -// eslint-disable-next-line no-redeclare -export type PluginManagerSettings = { - openDialog: () => void - onValidation: () => void - clearPermission: (from: any, to: any, method: any) => void - settings: () => HTMLElement - render: () => HTMLElement -} export interface DefaultLocalPlugin extends Profile { name: string @@ -198,14 +187,5 @@ export type PluginManagerProfile = Profile & { type: 'iframe' | 'ws' hash: string } -// eslint-disable-next-line no-redeclare -export type LocalPlugin = { - create: () => Profile - updateName: (target: string) => void - updateDisplayName: (displayName: string) => void - updateProfile: (key: string, e: Event) => void - updateMethods: (target: any) => void - form: () => HTMLElement -} export { } diff --git a/libs/remix-ui/run-tab/src/lib/actions/deploy.ts b/libs/remix-ui/run-tab/src/lib/actions/deploy.ts index ed66b6128b..f8ba1ae56e 100644 --- a/libs/remix-ui/run-tab/src/lib/actions/deploy.ts +++ b/libs/remix-ui/run-tab/src/lib/actions/deploy.ts @@ -42,7 +42,7 @@ const loadContractFromAddress = (plugin: RunTab, address, confirmCb, cb) => { export const getSelectedContract = (contractName: string, compiler: CompilerAbstractType): ContractData => { if (!contractName) return null - // const compiler = plugin.compilersArtefacts[compilerAtributeName] + // const compiler = plugin.compilersArtefacts[compilerAttributeName] if (!compiler) return null diff --git a/libs/remix-ui/search/src/lib/components/results/ResultSummary.tsx b/libs/remix-ui/search/src/lib/components/results/ResultSummary.tsx index 2878b491c6..cb1e28495a 100644 --- a/libs/remix-ui/search/src/lib/components/results/ResultSummary.tsx +++ b/libs/remix-ui/search/src/lib/components/results/ResultSummary.tsx @@ -13,10 +13,10 @@ interface ResultSummaryProps { export const ResultSummary = (props: ResultSummaryProps) => { const intl = useIntl() - const { hightLightInPath, replaceText, state } = useContext(SearchContext) + const { highlightInPath, replaceText, state } = useContext(SearchContext) const { modal } = useDialogDispatchers() const selectLine = async (line: SearchResultLineLine) => { - await hightLightInPath(props.searchResult, line) + await highlightInPath(props.searchResult, line) } const confirmReplace = async (line: SearchResultLineLine) => { diff --git a/libs/remix-ui/search/src/lib/context/context.tsx b/libs/remix-ui/search/src/lib/context/context.tsx index 336955c744..e0d7933042 100644 --- a/libs/remix-ui/search/src/lib/context/context.tsx +++ b/libs/remix-ui/search/src/lib/context/context.tsx @@ -19,7 +19,7 @@ export interface SearchingStateInterface { setWholeWord: (value: boolean) => void setSearchResults: (value: SearchResult[]) => void findText: (path: string) => Promise - hightLightInPath: (result: SearchResult, line: SearchResultLineLine) => void + highlightInPath: (result: SearchResult, line: SearchResultLineLine) => void replaceText: (result: SearchResult, line: SearchResultLineLine) => Promise reloadFile: (file: string) => void toggleCaseSensitive: () => void @@ -194,7 +194,7 @@ export const SearchProvider = ({ children = [], reducer = SearchReducer, initial // do nothing } }, - hightLightInPath: async (result: SearchResult, line: SearchResultLineLine) => { + highlightInPath: async (result: SearchResult, line: SearchResultLineLine) => { await plugin.call('editor', 'discardHighlight') await plugin.call('editor', 'highlight', line.position, result.path) await plugin.call('editor', 'revealRange', line.position.start.line, line.position.start.column, line.position.end.line, line.position.end.column) diff --git a/libs/remix-ui/tabs/src/lib/remix-ui-tabs.tsx b/libs/remix-ui/tabs/src/lib/remix-ui-tabs.tsx index d9f9b44955..0d279961a3 100644 --- a/libs/remix-ui/tabs/src/lib/remix-ui-tabs.tsx +++ b/libs/remix-ui/tabs/src/lib/remix-ui-tabs.tsx @@ -88,7 +88,12 @@ export const TabsUI = (props: TabsUIProps) => { const getAI = async () => { try { - return await props.plugin.call('settings', 'getCopilotSetting') + const init_state = await props.plugin.call('settings', 'getCopilotSetting') + if (init_state === undefined || init_state === null) { + await props.plugin.call('settings', 'updateCopilotChoice', ai_switch) + return ai_switch + } + return init_state } catch (e) { return false } diff --git a/libs/remix-ui/workspace/src/lib/types/index.ts b/libs/remix-ui/workspace/src/lib/types/index.ts index ba23f4cdc2..e98dbd2075 100644 --- a/libs/remix-ui/workspace/src/lib/types/index.ts +++ b/libs/remix-ui/workspace/src/lib/types/index.ts @@ -70,7 +70,7 @@ export interface FilePanelType extends ViewPlugin { setWorkspace: ({ name, isLocalhost }, setEvent: boolean) => void createWorkspace: (name: string, workspaceTemplateName: string) => void renameWorkspace: (oldName: string, newName: string) => void - compileContractForUml: (path: string) => void + compileContractForUml?: (path: string) => void workspaceRenamed: ({ name }) => void workspaceCreated: ({ name }) => void workspaceDeleted: ({ name }) => void @@ -81,7 +81,7 @@ export interface FilePanelType extends ViewPlugin { appManager: RemixAppManager registry?: any // registry pluginApi?: any - request: { + request?: { createWorkspace: () => void setWorkspace: (workspaceName: string) => void createNewFile: () => void @@ -89,10 +89,10 @@ export interface FilePanelType extends ViewPlugin { getCurrentWorkspace: () => void } // api request, workspaces: any - registeredMenuItems: MenuItems // menu items - removedMenuItems: MenuItems - initialWorkspace: string - resetNewFile: () => void + registeredMenuItems?: MenuItems // menu items + removedMenuItems?: MenuItems + initialWorkspace?: string + resetNewFile?: () => void getWorkspaces: () => string[] expandPath: string[] }