From a94eb941cf545381a24c0d0d873efb4ff0b5c0c6 Mon Sep 17 00:00:00 2001 From: Saw-mon-and-Natalie Date: Tue, 21 Jun 2022 17:24:35 -0700 Subject: [PATCH 1/4] adding Huff language support to playground code editor. --- components/Editor/examples.ts | 6 ++++ components/Editor/index.tsx | 9 +++++ components/Editor/types.ts | 1 + package.json | 1 + util/string.ts | 3 ++ yarn.lock | 65 ++++++++++++++++------------------- 6 files changed, 49 insertions(+), 36 deletions(-) diff --git a/components/Editor/examples.ts b/components/Editor/examples.ts index 7b642880..e11e619f 100644 --- a/components/Editor/examples.ts +++ b/components/Editor/examples.ts @@ -93,6 +93,12 @@ PUSH1 32 PUSH1 0 RETURN`, ], + Huff: [ + `#define macro MAIN() = takes (0) returns (0) { + 0x5361772d6d6f6e2026204e6174616c6965 0x00 mstore // Store a value in memory. + 0x11 0x0f return // Return 17 bytes starting from memory pointer 15. +}`, + ], } export default examples diff --git a/components/Editor/index.tsx b/components/Editor/index.tsx index 324bcf54..cd938285 100644 --- a/components/Editor/index.tsx +++ b/components/Editor/index.tsx @@ -14,6 +14,7 @@ import { bufferToHex } from '@ethereumjs/util' import { encode, decode } from '@kunigi/string-compression' import cn from 'classnames' import copy from 'copy-to-clipboard' +import compileHuff from 'huffc' import { useRouter } from 'next/router' import Select, { OnChangeValue } from 'react-select' import SCEditor from 'react-simple-code-editor' @@ -398,6 +399,14 @@ const Editor = ({ readOnly = false }: Props) => { } loadInstructions(cleanBytecode) startExecution(cleanBytecode, _callValue, _callData) + } else if (codeType === CodeType.Huff) { + const { runtimeBytecode: bytecode } = compileHuff({ + filePath: '', + generateAbi: true, + content: code, + }) + loadInstructions(bytecode) + startExecution(bytecode, _callValue, _callData) } else { setIsCompiling(true) log('Starting compilation...') diff --git a/components/Editor/types.ts b/components/Editor/types.ts index 8088a862..dd128956 100644 --- a/components/Editor/types.ts +++ b/components/Editor/types.ts @@ -3,6 +3,7 @@ export enum CodeType { Solidity = 'Solidity', Bytecode = 'Bytecode', Mnemonic = 'Mnemonic', + Huff = 'Huff', } export enum ValueUnit { diff --git a/package.json b/package.json index e4911a44..3d820164 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "gray-matter": "^4.0.3", "highlight.js": "^11.3.1", "highlightjs-solidity": "^2.0.1", + "huffc": "Saw-mon-and-Natalie/huffc.git#fileless-parser", "kbar": "^0.1.0-beta.16", "lodash.debounce": "^4.0.8", "next": "12", diff --git a/util/string.ts b/util/string.ts index 1ff1debc..dd7e06e4 100644 --- a/util/string.ts +++ b/util/string.ts @@ -12,6 +12,9 @@ hljsDefineSolidity(hljs) hljs.registerLanguage('mnemonic', hljsDefineMnemonic) hljs.registerLanguage('bytecode', hljsDefineBytecode) +// Add Huff to Highlight +hljs.registerLanguage('huff', hljsDefineMnemonic) + /** * Checks whether text is empty. */ diff --git a/yarn.lock b/yarn.lock index 70717907..2b03d3ec 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2171,8 +2171,8 @@ resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + jsonparse "^1.2.0" + through ">=2.2.7 <3" "@webassemblyjs/floating-point-hex-parser@1.11.1": version "1.11.1" @@ -2194,9 +2194,11 @@ resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" "@webassemblyjs/helper-wasm-bytecode@1.11.1": version "1.11.1" @@ -2208,24 +2210,25 @@ resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" + xtend "~4.0.0" "@webassemblyjs/ieee754@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== dependencies: - "@xtuc/ieee754" "^1.2.0" + xtend "~4.0.0" "@webassemblyjs/leb128@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== dependencies: - "@xtuc/long" "4.2.2" + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" "@webassemblyjs/utf8@1.11.1": version "1.11.1" @@ -2237,55 +2240,45 @@ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" "@webassemblyjs/wasm-gen@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" + acorn "^7.0.0" + acorn-walk "^7.0.0" + xtend "^4.0.2" "@webassemblyjs/wasm-opt@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" "@webassemblyjs/wast-printer@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" + color-convert "^1.9.0" "@xtuc/ieee754@^1.2.0": version "1.2.0" From 446f0526a8e0c4c9d5e0ffe14880d4aa6eba2311 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 27 Feb 2023 04:33:29 +0000 Subject: [PATCH 2/4] feat: huff-rs wasm backend --- components/Editor/index.tsx | 13 ++++++++----- next.config.js | 7 +++++-- package.json | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/components/Editor/index.tsx b/components/Editor/index.tsx index cd938285..d4dfc38e 100644 --- a/components/Editor/index.tsx +++ b/components/Editor/index.tsx @@ -14,7 +14,7 @@ import { bufferToHex } from '@ethereumjs/util' import { encode, decode } from '@kunigi/string-compression' import cn from 'classnames' import copy from 'copy-to-clipboard' -import compileHuff from 'huffc' +import { compile } from 'huffc-js' import { useRouter } from 'next/router' import Select, { OnChangeValue } from 'react-select' import SCEditor from 'react-simple-code-editor' @@ -400,11 +400,14 @@ const Editor = ({ readOnly = false }: Props) => { loadInstructions(cleanBytecode) startExecution(cleanBytecode, _callValue, _callData) } else if (codeType === CodeType.Huff) { - const { runtimeBytecode: bytecode } = compileHuff({ - filePath: '', - generateAbi: true, - content: code, + const huffFileName = 'main.huff' + const compiledHuff = compile({ + files: { + [huffFileName]: code, + }, + sources: [huffFileName], }) + const { bytecode } = compiledHuff.contracts.get(huffFileName) loadInstructions(bytecode) startExecution(bytecode, _callValue, _callData) } else { diff --git a/next.config.js b/next.config.js index cbcade71..6edc70e7 100644 --- a/next.config.js +++ b/next.config.js @@ -18,9 +18,12 @@ module.exports = withPlausibleProxy()({ include: [dir], use: [ defaultLoaders.babel, - { loader: 'ts-loader', options: { transpileOnly: true } } - ] + { loader: 'ts-loader', options: { transpileOnly: true } }, + ], }) + config.experiments = { + asyncWebAssembly: true, + } config.resolve.fallback = { fs: false, diff --git a/package.json b/package.json index 3d820164..dbe5bcee 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "gray-matter": "^4.0.3", "highlight.js": "^11.3.1", "highlightjs-solidity": "^2.0.1", - "huffc": "Saw-mon-and-Natalie/huffc.git#fileless-parser", + "huffc-js": "^0.3.0", "kbar": "^0.1.0-beta.16", "lodash.debounce": "^4.0.8", "next": "12", From 3ec2bb354c35bb151e745f5aa29102faf2e80493 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 27 Feb 2023 04:46:56 +0000 Subject: [PATCH 3/4] fix: conflict resolution --- yarn.lock | 132 +++++++++--------------------------------------------- 1 file changed, 21 insertions(+), 111 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2b03d3ec..51d8cf4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2171,124 +2171,34 @@ resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz" integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== dependencies: - jsonparse "^1.2.0" - through ">=2.2.7 <3" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - xtend "~4.0.0" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - xtend "~4.0.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" "@webassemblyjs/wasm-edit@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz" integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - acorn "^7.0.0" - acorn-walk "^7.0.0" - xtend "^4.0.2" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" "@webassemblyjs/wasm-parser@1.11.1": version "1.11.1" resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz" integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - color-convert "^1.9.0" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" JSONStream@^1.0.3, JSONStream@^1.3.2: version "1.3.5" @@ -4545,6 +4455,11 @@ html-void-elements@^1.0.0: resolved "https://package-cluster.production.groovehq.com/html-void-elements/-/html-void-elements-1.0.5.tgz" integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== +huffc-js@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/huffc-js/-/huffc-js-0.3.0.tgz#2c7a39dedc39d04bffffe36e96df1c40c8337b36" + integrity sha512-x5eWC3oUNZjszBQbrdcgew5oEKxYujDiTLkeYr/sVtVsSG/Kv323PlieajccDHoNgaNE0VL1RyZkoPu6pLA+jA== + husky@^7.0.2: version "7.0.2" resolved "https://package-cluster.production.groovehq.com/husky/-/husky-7.0.2.tgz" @@ -5900,11 +5815,6 @@ react-transition-group@^4.3.0: loose-envify "^1.4.0" prop-types "^15.6.2" -react-usestateref@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/react-usestateref/-/react-usestateref-1.0.8.tgz#b40519af0d6f3b3822c70eb5db80f7d47f1b1ff5" - integrity sha512-whaE6H0XGarFKwZ3EYbpHBsRRCLZqdochzg/C7e+b6VFMTA3LS3K4ZfpI4NT40iy83jG89rGXrw70P9iDfOdsA== - react-virtual@^2.8.2: version "2.8.2" resolved "https://package-cluster.production.groovehq.com/react-virtual/-/react-virtual-2.8.2.tgz" From cf39428db12e49c980ba4cccb362a1ee2264b6f9 Mon Sep 17 00:00:00 2001 From: Cheethas <47148561+cheethas@users.noreply.github.com> Date: Mon, 27 Feb 2023 05:01:52 +0000 Subject: [PATCH 4/4] fix: build issues --- next.config.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/next.config.js b/next.config.js index 6edc70e7..0e64f5b9 100644 --- a/next.config.js +++ b/next.config.js @@ -23,6 +23,7 @@ module.exports = withPlausibleProxy()({ }) config.experiments = { asyncWebAssembly: true, + layers: true, } config.resolve.fallback = { @@ -38,3 +39,22 @@ module.exports = withPlausibleProxy()({ return config }, }) + +class WasmChunksFixPlugin { + apply(compiler) { + compiler.hooks.thisCompilation.tap('WasmChunksFixPlugin', (compilation) => { + compilation.hooks.processAssets.tap( + { name: 'WasmChunksFixPlugin' }, + (assets) => + Object.entries(assets).forEach(([pathname, source]) => { + if (!pathname.match(/\.wasm$/)) return + compilation.deleteAsset(pathname) + + const name = pathname.split('/')[1] + const info = compilation.assetsInfo.get(pathname) + compilation.emitAsset(name, source, info) + }), + ) + }) + } +}