diff --git a/.github/workflows/pr-reminder.yml b/.github/workflows/pr-reminder.yml index eaedd511252..ee24eebb0b4 100644 --- a/.github/workflows/pr-reminder.yml +++ b/.github/workflows/pr-reminder.yml @@ -14,4 +14,4 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }} - freeze-date: '2024-09-09T18:00:00Z' + freeze-date: '2024-10-07T18:00:00Z' diff --git a/apps/remix-ide-e2e/src/githttpbackend/package.json b/apps/remix-ide-e2e/src/githttpbackend/package.json index 23c5fdb3fd0..4d3ff111858 100644 --- a/apps/remix-ide-e2e/src/githttpbackend/package.json +++ b/apps/remix-ide-e2e/src/githttpbackend/package.json @@ -3,9 +3,9 @@ "start:server": "tsc && node ./dist/server.js" }, "dependencies": { - "body-parser": "^1.20.2", + "body-parser": "^1.20.3", "child_process": "^1.0.2", - "express": "^4.19.2", + "express": "^4.20.0", "git-http-backend": "^1.1.2", "path": "^0.12.7", "zlib": "^1.0.5" diff --git a/apps/remix-ide-e2e/src/githttpbackend/yarn.lock b/apps/remix-ide-e2e/src/githttpbackend/yarn.lock index b426315cd15..7151d6aded6 100644 --- a/apps/remix-ide-e2e/src/githttpbackend/yarn.lock +++ b/apps/remix-ide-e2e/src/githttpbackend/yarn.lock @@ -22,10 +22,10 @@ array-flatten@1.1.1: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -body-parser@1.20.2, body-parser@^1.20.2: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3, body-parser@^1.20.2: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -35,7 +35,25 @@ body-parser@1.20.2, body-parser@^1.20.2: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +body-parser@^1.20.3: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -119,6 +137,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + es-define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" @@ -141,37 +164,37 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -express@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== +express@^4.20.0: + version "4.20.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48" + integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" finalhandler "1.2.0" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.0" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -299,10 +322,10 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== methods@~1.1.2: version "1.1.2" @@ -358,10 +381,10 @@ parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== path@^0.12.7: version "0.12.7" @@ -391,6 +414,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -435,10 +465,29 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serve-static@1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92" + integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -462,7 +511,7 @@ setprototypeof@1.2.0: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== -side-channel@^1.0.4: +side-channel@^1.0.4, side-channel@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== diff --git a/apps/remix-ide/src/app/components/vertical-icons.tsx b/apps/remix-ide/src/app/components/vertical-icons.tsx index eb5ea60863e..865c4fa4684 100644 --- a/apps/remix-ide/src/app/components/vertical-icons.tsx +++ b/apps/remix-ide/src/app/components/vertical-icons.tsx @@ -16,8 +16,6 @@ const profile = { events: ['toggleContent', 'showContent'] } -const toMaximize = ['LearnEth'] - export class VerticalIcons extends Plugin { events: EventEmitter htmlElement: HTMLDivElement @@ -128,11 +126,6 @@ export class VerticalIcons extends Plugin { // TODO: Only keep `this.emit` (issue#2210) this.emit('showContent', name) this.events.emit('showContent', name) - if (toMaximize.includes(name)) { - setTimeout(_ => { - this.call('layout', 'maximiseSidePanel') - }, 500) - } } /** diff --git a/apps/remix-ide/src/app/panels/layout.ts b/apps/remix-ide/src/app/panels/layout.ts index 51149c38590..539a9b1c486 100644 --- a/apps/remix-ide/src/app/panels/layout.ts +++ b/apps/remix-ide/src/app/panels/layout.ts @@ -30,11 +30,14 @@ export type PanelConfiguration = { export class Layout extends Plugin { event: any panels: panels - maximised: { [key: string]: boolean } + enhanced: { [key: string]: boolean } + maximized: { [key: string]: boolean } constructor () { super(profile) - this.maximised = { - 'dgit': true + this.maximized = {} + this.enhanced = { + 'dgit': true, + 'LearnEth': true } this.event = new EventEmitter() } @@ -80,18 +83,30 @@ export class Layout extends Plugin { }) this.on('sidePanel', 'focusChanged', async (name) => { const current = await this.call('sidePanel', 'currentFocus') - if (this.maximised[current]) { + if (this.enhanced[current]) { + this.event.emit('enhancesidepanel') + } + + if (this.maximized[current]) { this.event.emit('maximisesidepanel') - } else { + } + + if (!this.enhanced[current] && !this.maximized[current]) { this.event.emit('resetsidepanel') } }) this.on('pinnedPanel', 'pinnedPlugin', async (name) => { const current = await this.call('pinnedPanel', 'currentFocus') - if (this.maximised[current]) { + if (this.enhanced[current]) { + this.event.emit('enhancepinnedpanel') + } + + if (this.maximized[current]) { this.event.emit('maximisepinnedpanel') - } else { + } + + if (!this.enhanced[current] && !this.maximized[current]) { this.event.emit('resetpinnedpanel') } }) @@ -128,13 +143,13 @@ export class Layout extends Plugin { async maximiseSidePanel () { const current = await this.call('sidePanel', 'currentFocus') - this.maximised[current] = true + this.maximized[current] = true this.event.emit('maximisesidepanel') } async maximisePinnedPanel () { const current = await this.call('pinnedPanel', 'currentFocus') - this.maximised[current] = true + this.maximized[current] = true this.event.emit('maximisepinnedpanel') } @@ -146,13 +161,13 @@ export class Layout extends Plugin { async resetSidePanel () { const current = await this.call('sidePanel', 'currentFocus') - this.maximised[current] = false + this.enhanced[current] = false this.event.emit('resetsidepanel') } async resetPinnedPanel () { const current = await this.call('pinnedPanel', 'currentFocus') - this.maximised[current] = false + this.enhanced[current] = false this.event.emit('resetpinnedpanel') } } diff --git a/apps/remix-ide/src/app/plugins/templates-selection/templates-selection-plugin.tsx b/apps/remix-ide/src/app/plugins/templates-selection/templates-selection-plugin.tsx index 138ac3a7a44..943021b3ae9 100644 --- a/apps/remix-ide/src/app/plugins/templates-selection/templates-selection-plugin.tsx +++ b/apps/remix-ide/src/app/plugins/templates-selection/templates-selection-plugin.tsx @@ -157,8 +157,6 @@ export class TemplatesSelectionPlugin extends ViewPlugin { key={template.name} title={template.name} tooltipTitle={template.tooltip} - onClick={template.onClick} - onClickLabel={template.onClickLabel} hScrollable={false} > {template.items.map(item => { @@ -169,14 +167,14 @@ export class TemplatesSelectionPlugin extends ViewPlugin { id={item.name} searchKeywords={[item.displayName, item.description, template.name]} tagList={item.tagList} - classList='TSCellStyle' + classList={'TSCellStyle'} >
{item.description && {item.description}}
-
+
{(item.opts && item.opts.upgradeable && item.opts.upgradeable === 'uupds') && Upgradeable-UUPS} {(item.opts && item.opts.mintable) && mintable} {(item.opts && item.opts.burnable) && burnable} @@ -214,6 +212,20 @@ export class TemplatesSelectionPlugin extends ViewPlugin {
})} + { template.name === 'Cookbook' && +
+ { template.description } + template.onClick() }>{ template.onClickLabel } +
+
} })} diff --git a/apps/remix-ide/src/app/plugins/templates-selection/templates.ts b/apps/remix-ide/src/app/plugins/templates-selection/templates.ts index 1a70bcd9062..2a6ae5fc15d 100644 --- a/apps/remix-ide/src/app/plugins/templates-selection/templates.ts +++ b/apps/remix-ide/src/app/plugins/templates-selection/templates.ts @@ -47,13 +47,13 @@ export const templates = (intl, plugin) => { }, { value: "ozerc721", - displayName: "ERC721", + displayName: "ERC721 (NFT)", tagList: ["ERC721", "Solidity"], description: 'A simple non-fungible token (NFT) contract' }, { value: "ozerc721", - displayName: "ERC721", + displayName: "ERC721 (NFT)", description: "An ERC721 contract with:", tagList: ["Solidity", "ERC721"], opts: { @@ -132,7 +132,7 @@ export const templates = (intl, plugin) => { { value: "ozerc20", displayName: "UUPS ERC20", - description: "UUSP ERC20 contract with:", + description: "UUPS ERC20 contract with:", opts: { upgradeable: 'uups', mintable: true @@ -142,7 +142,7 @@ export const templates = (intl, plugin) => { { value: "ozerc20", displayName: "UUPS ERC20", - description: "UUSP ERC20 contract with:", + description: "UUPS ERC20 contract with:", opts: { upgradeable: 'uups', mintable: true, @@ -153,7 +153,7 @@ export const templates = (intl, plugin) => { { value: "ozerc20", displayName: "UUPS ERC20", - description: "UUSP ERC20 contract with:", + description: "UUPS ERC20 contract with:", opts: { upgradeable: 'uups', mintable: true, @@ -163,7 +163,7 @@ export const templates = (intl, plugin) => { }, { value: "ozerc721", - displayName: "UUPS ERC721", + displayName: "UUPS ERC721 (NFT)", description: "A simple UUPS ERC721 contract", opts: { upgradeable: 'uups' @@ -172,7 +172,7 @@ export const templates = (intl, plugin) => { }, { value: "ozerc721", - displayName: "UUPS ERC721", + displayName: "UUPS ERC721 (NFT)", description: "UUPS ERC721 contract with:", opts: { upgradeable: 'uups', @@ -183,7 +183,7 @@ export const templates = (intl, plugin) => { { value: "ozerc721", displayName: "UUPS ERC721 (NFT)", - description: "Non-fungible Token Standard", + description: "UUPS ERC721 contract with:", opts: { upgradeable: 'uups', mintable: true, @@ -194,7 +194,7 @@ export const templates = (intl, plugin) => { { value: "ozerc721", displayName: "UUPS ERC721 (NFT)", - description: "UUPS ERC721 with: ", + description: "UUPS ERC721 contract with:", opts: { upgradeable: 'uups', mintable: true, @@ -265,23 +265,59 @@ export const templates = (intl, plugin) => { plugin.call('menuicons', 'showContent', 'cookbookdev') }, onClickLabel: 'Open Cookbook Plugin', + description: 'Discover more templates!', items: [ - { value: "token-sale", displayName: 'Token Sale' }, - { value: "simple-nft-sale", displayName: 'Simple Nft Sale' }, - { value: "Azuki-ERC721A-NFT-Sale-basic", displayName: 'Azuki ERC721A NFT Sale basic' }, - { value: "Azuki-ERC721A-ERC721A", displayName: 'Azuki ERC721A' }, - { value: "token-staking-with-infinite-rewards", displayName: 'Token Staking with infinite rewards' }, - { value: "nft-staking-with-infinite-rewards", displayName: 'Nft Staking with infinite rewards' }, - { value: "basic-dao", displayName: 'Basic DAO' }, - { value: "soulbound-nft", displayName: 'Soulbound Nft' }, - { value: "multi-collection-nft-with-burnable-nfts-and-pausable-transfers", displayName: 'Multi collection NFT', description: "Multi collection NFT with:", opts: { - burnable: true, - pausable: true - }, }, + { + value: "token-sale", + displayName: 'Token Sale', + description: "ERC20 token sale contact. Sell tokens for ETH" + }, + { + value: "simple-nft-sale", + displayName: 'Simple Nft Sale', + description: "ERC721 NFT with an adjustable price & to mint free NFTs" + }, + { + value: "Azuki-ERC721A-NFT-Sale-basic", + displayName: 'Azuki ERC721A NFT Sale basic', + description: "An implementation of the ERC721A standard" + }, + { + value: "Azuki-ERC721A-NFT-Sale", + displayName: 'Azuki ERC721A NFT Sale', + description: "An extension of the ERC721A standard with wallet limit" + }, + { + value: "token-staking-with-infinite-rewards", + displayName: 'Token Staking with infinite rewards', + description: "Token staking contract to reward ERC20 tokens for every token staked" + }, + { + value: "nft-staking-with-infinite-rewards", + displayName: 'NFT Staking with infinite rewards', + description: "NFT staking contract to reward exact number of ERC20 tokens per day" + }, + { + value: "basic-dao", + displayName: 'Basic DAO', + description: "A very simple implementation of a DAO" + }, + { + value: "soulbound-nft", + displayName: 'Soulbound NFT', + description: "ERC721 Soulbound NFT with no transfer capability" + }, + { value: "multi-collection-nft-with-burnable-nfts-and-pausable-transfers", + displayName: 'Multi collection NFT', + description: "Multi collection NFT with:", + opts: { + burnable: true, + pausable: true + }, }, ] }, { - name: "OxProject", + name: "0xProject", items: [ { value: "zeroxErc20", displayName: "ERC20", tagList: ["ERC20", "Solidity"], description: "A fungible token contract by 0xProject" } ] @@ -289,7 +325,7 @@ export const templates = (intl, plugin) => { { name: "Gnosis Safe", items: [ - { value: "gnosisSafeMultisig", tagList: ["Solidity"], displayName: intl.formatMessage({ id: 'filePanel.multiSigWallet' }), description: 'Deploy or customize the Gnosis Safe.' } + { value: "gnosisSafeMultisig", tagList: ["Solidity"], displayName: intl.formatMessage({ id: 'filePanel.multiSigWallet' }), description: 'Deploy or customize the Gnosis Safe MultiSig Wallet' } ] }, { @@ -316,12 +352,12 @@ export const templates = (intl, plugin) => { items: [ { value: "uniswapV4Template", displayName: intl.formatMessage({ id: 'filePanel.uniswapV4Template' }), - description: 'Use an Uniswap hook' + description: 'Use a Uniswap hook' }, { value: "breakthroughLabsUniswapv4Hooks", displayName: intl.formatMessage({ id: 'filePanel.breakthroughLabsUniswapv4Hooks' }), - description: 'Use an Uniswap hook developed by Breakthrough Labs' + description: 'Use a Uniswap hook developed by Breakthrough Labs' }, { value: "uniswapV4HookBookMultiSigSwapHook", @@ -352,25 +388,25 @@ export const templates = (intl, plugin) => { { value: "etherscanScripts", displayName: intl.formatMessage({ id: 'filePanel.addscriptetherscan' }), - description: 'Script for verifying a Contract in Etherscan.' + description: 'Script for verifying a Contract in Etherscan' }, ], }, { - name: 'Github Actions', + name: 'GitHub Actions', items: [ { value: "runJsTestAction", displayName: intl.formatMessage({ id: 'filePanel.tssoltestghaction' }), - description: 'A Mocha Chai test workflow in a GitHub CI.' + description: 'A Mocha Chai test workflow in a GitHub CI' }, { value: "runSolidityUnittestingAction", displayName: intl.formatMessage({ id: 'filePanel.solghaction' }), - description: 'Run a Solidity unit test workflow in a GitHub CI.' + description: 'Run a Solidity unit test workflow in a GitHub CI' }, { value: "runSlitherAction", displayName: intl.formatMessage({ id: 'filePanel.slitherghaction' }), - description: 'Run a Slither security analysis in a GitHub CI.' + description: 'Run a Slither security analysis in a GitHub CI' } ], IsArtefact: true diff --git a/apps/remix-ide/src/app/tabs/locales/en/filePanel.json b/apps/remix-ide/src/app/tabs/locales/en/filePanel.json index ae518d686f9..6b02520e94d 100644 --- a/apps/remix-ide/src/app/tabs/locales/en/filePanel.json +++ b/apps/remix-ide/src/app/tabs/locales/en/filePanel.json @@ -12,7 +12,7 @@ "filePanel.restore": "Restore", "filePanel.name": "Name", "filePanel.save": "Save", - "filePanel.workspace.create": "Create Workspace using template", + "filePanel.workspace.create": "Create Workspace Using Template", "filePanel.workspace.createBlank": "Create Blank Workspace", "filePanel.workspace.create.desktop": "Create project in new folder", "filePanel.workspace.rename": "Rename Workspace", @@ -71,7 +71,7 @@ "filePanel.createNewFile": "Create new file", "filePanel.createNewFolder": "Create new folder", "filePanel.publishToGist": "Publish to Gist", - "filePanel.workspace.publishToGist": "Publish workspace to GitHub gist", + "filePanel.workspace.publishToGist": "Publish Workspace to GitHub Gist", "filePanel.uploadFile": "Open a File from your File System", "filePanel.uploadFolder": "Upload folder", "filePanel.updateGist": "Update Gist", diff --git a/apps/remix-ide/src/remixAppManager.js b/apps/remix-ide/src/remixAppManager.js index 9be8b16c22a..8f6ca32cc1d 100644 --- a/apps/remix-ide/src/remixAppManager.js +++ b/apps/remix-ide/src/remixAppManager.js @@ -93,6 +93,8 @@ const dependentModules = ['foundry', 'hardhat', 'truffle', 'slither'] const loadLocalPlugins = ['doc-gen', 'doc-viewer', 'etherscan', 'vyper', 'solhint', 'walletconnect', 'circuit-compiler', 'learneth', 'quick-dapp'] +const partnerPlugins = ['cookbookdev'] + const sensitiveCalls = { fileManager: ['writeFile', 'copyFile', 'rename', 'copyDir'], contentImport: ['resolveAndSave'], @@ -206,6 +208,11 @@ export class RemixAppManager extends PluginManager { return true } + // skipping partner plugins' requests + if (partnerPlugins[from]) { + return true + } + // ask the user for permission return await this.call('permissionhandler', 'askPermission', this.profiles[from], this.profiles[to], method, message, isSensitiveCall) } diff --git a/apps/remixdesktop/package.json b/apps/remixdesktop/package.json index 264dc9792d8..edbeb7e2631 100644 --- a/apps/remixdesktop/package.json +++ b/apps/remixdesktop/package.json @@ -76,7 +76,7 @@ "byline": "^5.0.0", "chokidar": "^3.5.3", "electron-updater": "^6.1.8", - "express": "^4.19.2", + "express": "^4.20.0", "isomorphic-git": "^1.24.2", "matomo-tracker": "^2.2.4", "node-pty": "^1.0.0", diff --git a/apps/remixdesktop/yarn.lock b/apps/remixdesktop/yarn.lock index ca1a8366d64..83d6645f63d 100644 --- a/apps/remixdesktop/yarn.lock +++ b/apps/remixdesktop/yarn.lock @@ -1926,10 +1926,10 @@ bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@1.20.2, body-parser@^1.16.0: - version "1.20.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" - integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== +body-parser@1.20.3, body-parser@^1.16.0: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== dependencies: bytes "3.1.2" content-type "~1.0.5" @@ -1939,7 +1939,7 @@ body-parser@1.20.2, body-parser@^1.16.0: http-errors "2.0.0" iconv-lite "0.4.24" on-finished "2.4.1" - qs "6.11.0" + qs "6.13.0" raw-body "2.5.2" type-is "~1.6.18" unpipe "1.0.0" @@ -2950,6 +2950,11 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" @@ -3411,37 +3416,37 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -express@^4.14.0, express@^4.19.2: - version "4.19.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465" - integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q== +express@^4.14.0, express@^4.20.0: + version "4.20.0" + resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48" + integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.20.2" + body-parser "1.20.3" content-disposition "0.5.4" content-type "~1.0.4" cookie "0.6.0" cookie-signature "1.0.6" debug "2.6.9" depd "2.0.0" - encodeurl "~1.0.2" + encodeurl "~2.0.0" escape-html "~1.0.3" etag "~1.8.1" finalhandler "1.2.0" fresh "0.5.2" http-errors "2.0.0" - merge-descriptors "1.0.1" + merge-descriptors "1.0.3" methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.7" + path-to-regexp "0.1.10" proxy-addr "~2.0.7" qs "6.11.0" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" + send "0.19.0" + serve-static "1.16.0" setprototypeof "1.2.0" statuses "2.0.1" type-is "~1.6.18" @@ -4971,10 +4976,10 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== merge-stream@^2.0.0: version "2.0.0" @@ -5606,10 +5611,10 @@ path-scurry@^1.11.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== +path-to-regexp@0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" + integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== pathval@1.1.1: version "1.1.1" @@ -5771,12 +5776,12 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -qs@^6.11.2: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== +qs@6.13.0, qs@^6.11.2: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: - side-channel "^1.0.4" + side-channel "^1.0.6" qs@~6.5.2: version "6.5.3" @@ -6159,6 +6164,25 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + serialize-error@^7.0.1: version "7.0.1" resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz" @@ -6180,10 +6204,10 @@ serialize-javascript@^6.0.1: dependencies: randombytes "^2.1.0" -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== +serve-static@1.16.0: + version "1.16.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92" + integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" @@ -6278,6 +6302,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" diff --git a/libs/ghaction-helper/package.json b/libs/ghaction-helper/package.json index d3ee5050b87..1292b907b44 100644 --- a/libs/ghaction-helper/package.json +++ b/libs/ghaction-helper/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/ghaction-helper", - "version": "0.1.36", + "version": "0.1.37", "description": "Solidity Tests GitHub Action Helper", "main": "src/index.js", "scripts": { @@ -19,17 +19,17 @@ }, "homepage": "https://github.com/ethereum/remix-project#readme", "devDependencies": { - "@remix-project/remix-solidity": "^0.5.42", + "@remix-project/remix-solidity": "^0.5.43", "@types/chai": "^4.3.4", "typescript": "^4.9.3" }, "dependencies": { "@ethereum-waffle/chai": "^3.4.4", - "@remix-project/remix-simulator": "^0.2.56", + "@remix-project/remix-simulator": "^0.2.57", "chai": "^4.3.7", "ethers": "^5.7.2", "web3": "^4.1.1" }, "types": "./src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444" + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01" } \ No newline at end of file diff --git a/libs/remix-analyzer/package.json b/libs/remix-analyzer/package.json index 3e39770dc43..3a44ff1ebfb 100644 --- a/libs/remix-analyzer/package.json +++ b/libs/remix-analyzer/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-analyzer", - "version": "0.5.65", + "version": "0.5.66", "description": "Tool to perform static analysis on Solidity smart contracts", "scripts": { "test": "./../../node_modules/.bin/ts-node --project ../../tsconfig.base.json --require tsconfig-paths/register ./../../node_modules/.bin/tape ./test/tests.ts" @@ -25,8 +25,8 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-astwalker": "^0.0.86", - "@remix-project/remix-lib": "^0.5.63", + "@remix-project/remix-astwalker": "^0.0.87", + "@remix-project/remix-lib": "^0.5.64", "async": "^2.6.2", "ethers": "^5.4.2", "ethjs-util": "^0.1.6", @@ -50,6 +50,6 @@ "typescript": "^3.7.5" }, "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444", + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01", "main": "./src/index.js" } \ No newline at end of file diff --git a/libs/remix-astwalker/package.json b/libs/remix-astwalker/package.json index 9780d528f94..8414467d033 100644 --- a/libs/remix-astwalker/package.json +++ b/libs/remix-astwalker/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-astwalker", - "version": "0.0.86", + "version": "0.0.87", "description": "Tool to walk through Solidity AST", "main": "src/index.js", "scripts": { @@ -37,7 +37,7 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-lib": "^0.5.63", + "@remix-project/remix-lib": "^0.5.64", "@types/tape": "^4.2.33", "async": "^2.6.2", "ethers": "^5.4.2", @@ -53,6 +53,6 @@ "tap-spec": "^5.0.0" }, "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444", + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-debug/package.json b/libs/remix-debug/package.json index 46d64c7e8fc..4f37b7bcac7 100644 --- a/libs/remix-debug/package.json +++ b/libs/remix-debug/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-debug", - "version": "0.5.56", + "version": "0.5.57", "description": "Tool to debug Ethereum transactions", "contributors": [ { @@ -26,10 +26,10 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-astwalker": "^0.0.86", - "@remix-project/remix-lib": "^0.5.63", - "@remix-project/remix-simulator": "^0.2.56", - "@remix-project/remix-solidity": "^0.5.42", + "@remix-project/remix-astwalker": "^0.0.87", + "@remix-project/remix-lib": "^0.5.64", + "@remix-project/remix-simulator": "^0.2.57", + "@remix-project/remix-solidity": "^0.5.43", "ansi-gray": "^0.1.1", "async": "^2.6.2", "color-support": "^1.1.3", @@ -69,6 +69,6 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-debug#readme", "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444", + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-lib/package.json b/libs/remix-lib/package.json index 3dc590e3e80..2f5f7d89385 100644 --- a/libs/remix-lib/package.json +++ b/libs/remix-lib/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-lib", - "version": "0.5.63", + "version": "0.5.64", "description": "Library to various Remix tools", "contributors": [ { @@ -55,6 +55,6 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-lib#readme", "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444", + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-simulator/package.json b/libs/remix-simulator/package.json index 9095287fd49..689dfd9055e 100644 --- a/libs/remix-simulator/package.json +++ b/libs/remix-simulator/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-simulator", - "version": "0.2.56", + "version": "0.2.57", "description": "Ethereum IDE and tools for the web", "contributors": [ { @@ -23,7 +23,7 @@ "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", "@metamask/eth-sig-util": "^7.0.2", - "@remix-project/remix-lib": "^0.5.63", + "@remix-project/remix-lib": "^0.5.64", "ansi-gray": "^0.1.1", "async": "^3.1.0", "body-parser": "^1.18.2", @@ -71,6 +71,6 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-simulator#readme", "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444", + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01", "types": "./src/index.d.ts" } \ No newline at end of file diff --git a/libs/remix-solidity/package.json b/libs/remix-solidity/package.json index 00d89faf89d..382c41bf518 100644 --- a/libs/remix-solidity/package.json +++ b/libs/remix-solidity/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-solidity", - "version": "0.5.42", + "version": "0.5.43", "description": "Tool to load and run Solidity compiler", "main": "src/index.js", "types": "src/index.d.ts", @@ -19,7 +19,7 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-lib": "^0.5.63", + "@remix-project/remix-lib": "^0.5.64", "async": "^2.6.2", "eslint-scope": "^5.0.0", "ethers": "^5.4.2", @@ -57,5 +57,5 @@ }, "homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-solidity#readme", "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444" + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01" } \ No newline at end of file diff --git a/libs/remix-tests/package.json b/libs/remix-tests/package.json index b4942a7a400..3628384bc14 100644 --- a/libs/remix-tests/package.json +++ b/libs/remix-tests/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-tests", - "version": "0.2.56", + "version": "0.2.57", "description": "Tool to test Solidity smart contracts", "main": "src/index.js", "types": "./src/index.d.ts", @@ -41,9 +41,9 @@ "@ethereumjs/tx": "5.4.0", "@ethereumjs/util": "9.1.0", "@ethereumjs/vm": "8.1.1", - "@remix-project/remix-lib": "^0.5.63", - "@remix-project/remix-simulator": "^0.2.56", - "@remix-project/remix-solidity": "^0.5.42", + "@remix-project/remix-lib": "^0.5.64", + "@remix-project/remix-simulator": "^0.2.57", + "@remix-project/remix-solidity": "^0.5.43", "@remix-project/remix-url-resolver": "^0.0.42", "ansi-gray": "^0.1.1", "async": "^2.6.0", @@ -89,5 +89,5 @@ "@ethereumjs/trie": "6.2.1" }, "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444" + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01" } \ No newline at end of file diff --git a/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx b/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx index 009cb410b66..7bab81df793 100644 --- a/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx +++ b/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx @@ -8,6 +8,7 @@ interface IRemixDragBarUi { hidden: boolean minWidth: number maximiseTrigger: number + enhanceTrigger: number resetTrigger: number layoutPosition: 'left' | 'right' } @@ -40,32 +41,36 @@ const DragBar = (props: IRemixDragBarUi) => { } }, [props.hidden, offset]) - useEffect(() => { - if (props.maximiseTrigger > 0) { - if (props.layoutPosition === 'left') { - const width = 0.4 * window.innerWidth + const triggerWidth = (maximiseTrigger, layoutPosition, refObject, coeff) => { + if (maximiseTrigger > 0) { + if (layoutPosition === 'left') { + const width = coeff * window.innerWidth - if (width > props.refObject.current.offsetWidth) { - props.refObject.current.style.width = width + 'px' - setTimeout(() => { - setDragBarPosX(offset + width) - }, 300) - } - } else if (props.layoutPosition === 'right') { - const width = 0.4 * window.innerWidth + props.refObject.current.style.width = width + 'px' + setTimeout(() => { + setDragBarPosX(offset + width) + }, 300) + } else if (layoutPosition === 'right') { + const width = coeff * window.innerWidth - if (width > props.refObject.current.offsetWidth) { - props.refObject.current.style.width = width + 'px' - setTimeout(() => { - setDragBarPosX(window.innerWidth - width) - }, 300) - } + refObject.current.style.width = width + 'px' + setTimeout(() => { + setDragBarPosX(window.innerWidth - width) + }, 300) } } + } + + useEffect(() => { + triggerWidth(props.maximiseTrigger, props.layoutPosition, props.refObject, 0.4) }, [props.maximiseTrigger]) useEffect(() => { - if (props.maximiseTrigger > 0) { + triggerWidth(props.enhanceTrigger, props.layoutPosition, props.refObject, 0.25) + }, [props.enhanceTrigger]) + + useEffect(() => { + if (props.maximiseTrigger > 0 || props.enhanceTrigger) { if (props.layoutPosition === 'left') { props.refObject.current.style.width = initialWidth.current + 'px' setTimeout(() => { 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 07e57d50516..805f8f3407e 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 @@ -32,8 +32,10 @@ const RemixApp = (props: IRemixAppUi) => { const [hideSidePanel, setHideSidePanel] = useState(false) const [hidePinnedPanel, setHidePinnedPanel] = useState(true) const [maximiseLeftTrigger, setMaximiseLeftTrigger] = useState(0) + const [enhanceLeftTrigger, setEnhanceLeftTrigger] = useState(0) const [resetLeftTrigger, setResetLeftTrigger] = useState(0) const [maximiseRightTrigger, setMaximiseRightTrigger] = useState(0) + const [enhanceRightTrigger, setEnhanceRightTrigger] = useState(0) const [resetRightTrigger, setResetRightTrigger] = useState(0) const [online, setOnline] = useState(true) const [locale, setLocale] = useState<{ code: string; messages: any }>({ @@ -98,6 +100,12 @@ const RemixApp = (props: IRemixAppUi) => { }) }) + props.app.layout.event.on('enhancesidepanel', () => { + setEnhanceLeftTrigger((prev) => { + return prev + 1 + }) + }) + props.app.layout.event.on('resetsidepanel', () => { setResetLeftTrigger((prev) => { return prev + 1 @@ -110,6 +118,12 @@ const RemixApp = (props: IRemixAppUi) => { }) }) + props.app.layout.event.on('enhancepinnedpanel', () => { + setEnhanceRightTrigger((prev) => { + return prev + 1 + }) + }) + props.app.layout.event.on('resetpinnedpanel', () => { setResetRightTrigger((prev) => { return prev + 1 @@ -205,6 +219,7 @@ const RemixApp = (props: IRemixAppUi) => { {props.app.sidePanel.render()}
{ { !hidePinnedPanel && { } export const gitlog = async (depth: number) => { - + dispatch(setLoading(true)) let commits = [] try { commits = await getCommits(depth) diff --git a/libs/remix-ui/grid-view/src/lib/remix-ui-grid-cell.tsx b/libs/remix-ui/grid-view/src/lib/remix-ui-grid-cell.tsx index 3055d0d4e71..96deee23989 100644 --- a/libs/remix-ui/grid-view/src/lib/remix-ui-grid-cell.tsx +++ b/libs/remix-ui/grid-view/src/lib/remix-ui-grid-cell.tsx @@ -47,7 +47,7 @@ export const RemixUIGridCell = (props: RemixUIGridCellProps) => { // check for filter if (filterCon.filter != '') enabled = (props.title?.toLowerCase().includes(filterCon.filter?.toLowerCase()) || - props.searchKeywords?.map(keyword => keyword.toLowerCase()).some(searchKeyword => searchKeyword.toLowerCase().includes(filterCon.filter.toLocaleLowerCase()))) + props.searchKeywords?.map(keyword => keyword?.toLowerCase()).some(searchKeyword => searchKeyword?.toLowerCase().includes(filterCon.filter?.toLocaleLowerCase()))) setAnyEnabled(enabled) }, [filterCon, props.tagList]) diff --git a/libs/remix-ui/grid-view/src/lib/remix-ui-grid-section.tsx b/libs/remix-ui/grid-view/src/lib/remix-ui-grid-section.tsx index 5947db70b16..33fb25fb484 100644 --- a/libs/remix-ui/grid-view/src/lib/remix-ui-grid-section.tsx +++ b/libs/remix-ui/grid-view/src/lib/remix-ui-grid-section.tsx @@ -14,8 +14,6 @@ const _paq = window._paq = window._paq || [] interface RemixUIGridSectionProps { plugin: any title?: string - onClick?: () => void - onClickLabel?: string tooltipTitle?: string hScrollable: boolean classList?: string @@ -67,7 +65,6 @@ export const RemixUIGridSection = (props: RemixUIGridSectionProps) => { >
{ props.title &&
{ props.title }
} - { props.onClick && props.onClick() }>{ props.onClickLabel } }
{ !hasChildCell(children) && No items found } { props.children } diff --git a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx index 981bc2e29b7..3673851d110 100644 --- a/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx +++ b/libs/remix-ui/workspace/src/lib/remix-ui-workspace.tsx @@ -988,7 +988,7 @@ export function Workspace() { } - + { (!appContext.appState.gitHubUser || !appContext.appState.gitHubUser.isConnected) &&
logInGithub() } className="fa-brands fa-github-alt ml-2 align-self-center" style={{ fontSize: '1.1rem', cursor: 'pointer' }} aria-hidden="true"> - logInGithub() } className="ml-1 style={{ cursor: 'pointer' }} "> Sign in + logInGithub() } className="ml-1"> Sign in
} @@ -1255,22 +1255,32 @@ export function Workspace() {
GIT
{ selectedWorkspace.hasGitSubmodules? - } - > -
- { global.fs.browser.isRequestingCloning ? : + +
+ { global.fs.browser.isRequestingCloning ? + + + : + } + > } -
- + Update submodules + + + } +
: null } = { name: 'cookbookdev', endpoint: 'openContract', params: ['multi-collection-nft-with-burnable-nfts-and-pausable-transfers'] + }, + 'OpenSea-Seaport': { + type: 'plugin', + name: 'cookbookdev', + endpoint: 'openProtocol', + params: ['OpenSea-Seaport'] + }, + 'Ethereum-Name-Service': { + type: 'plugin', + name: 'cookbookdev', + endpoint: 'openProtocol', + params: ['Ethereum-Name-Service'] + }, + 'Umbra-Cash': { + type: 'plugin', + name: 'cookbookdev', + endpoint: 'openProtocol', + params: ['Umbra-Cash'] + }, + 'Aave-V3': { + type: 'plugin', + name: 'cookbookdev', + endpoint: 'openProtocol', + params: ['Aave-V3'] + }, + 'ChainLink': { + type: 'plugin', + name: 'cookbookdev', + endpoint: 'openProtocol', + params: ['ChainLink'] } } diff --git a/libs/remix-url-resolver/package.json b/libs/remix-url-resolver/package.json index 415143f95d9..f775b724581 100644 --- a/libs/remix-url-resolver/package.json +++ b/libs/remix-url-resolver/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-url-resolver", - "version": "0.0.85", + "version": "0.0.86", "description": "Solidity import url resolver engine", "main": "src/index.js", "types": "src/index.d.ts", @@ -41,5 +41,5 @@ "typescript": "^3.1.6" }, "typings": "src/index.d.ts", - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444" + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01" } \ No newline at end of file diff --git a/libs/remix-ws-templates/package.json b/libs/remix-ws-templates/package.json index c26118f5635..1787101d439 100644 --- a/libs/remix-ws-templates/package.json +++ b/libs/remix-ws-templates/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remix-ws-templates", - "version": "1.0.50", + "version": "1.0.51", "description": "Create a Remix IDE workspace using different templates", "main": "src/index.js", "types": "src/index.d.ts", @@ -24,5 +24,5 @@ "ethers": "^5.4.2", "web3": "^4.1.1" }, - "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444" + "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01" } \ No newline at end of file diff --git a/libs/remixd/package.json b/libs/remixd/package.json index 118affc9434..0da157670c4 100644 --- a/libs/remixd/package.json +++ b/libs/remixd/package.json @@ -1,6 +1,6 @@ { "name": "@remix-project/remixd", - "version": "0.6.36", + "version": "0.6.37", "description": "remix server: allow accessing file system from remix.ethereum.org and start a dev environment (see help section)", "main": "index.js", "types": "./index.d.ts", diff --git a/package.json b/package.json index 193212f484e..83fe8b0130f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "remix-project", - "version": "0.54.0-dev", + "version": "0.55.0-dev", "license": "MIT", "description": "Ethereum Remix Monorepo", "main": "index.js", diff --git a/yarn.lock b/yarn.lock index 3dd9582bcf8..47629edbb22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14025,9 +14025,9 @@ domhandler@^4.2.0: domelementtype "^2.2.0" dompurify@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.1.tgz#f9cb1a275fde9af6f2d0a2644ef648dd6847b631" - integrity sha512-ewwFzHzrrneRjxzmK6oVz/rZn9VWspGFRDb4/rRtIsM1n36t9AKma/ye8syCpcw+XJ25kOK/hOG7t1j2I2yBqA== + version "2.5.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.5.6.tgz#8402b501611eaa7fb3786072297fcbe2787f8592" + integrity sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ== domutils@^2.6.0: version "2.8.0"