Skip to content

Commit 74d8976

Browse files
authored
Merge pull request #20 from ETHCF/eip7594
Eip7594
2 parents e1e4024 + e179a63 commit 74d8976

File tree

15 files changed

+3937
-3261
lines changed

15 files changed

+3937
-3261
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
runs-on: ubuntu-latest
2020
strategy:
2121
matrix:
22-
node-version: [18, 20]
22+
node-version: [20]
2323
steps:
2424
- uses: actions/checkout@v4
2525
with:

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
This module implements a JS wrapper around a WASM compilation of the [`c-kzg-4844`](https://github.com/ethereum/c-kzg-4844) C library built for use with EIP-4844.
44

5-
This library is produced by building the original C code to WASM using the [`empscripten`](https://empscripten.org) toolchain in [this fork and branch](https://github.com/acolytec3/c-kzg-4844/tree/wasm) of `c-kzg-4844`.
5+
This library is produced by building the original C code to WASM using the [`empscripten`](https://empscripten.org) toolchain in [this fork](https://github.com/ETHCF/c-kzg-4844) of `c-kzg-4844`.
66

77
## Usage
88

browser/kzg.js

Lines changed: 4 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package-lock.json

Lines changed: 3451 additions & 3178 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{
22
"name": "kzg-wasm",
3-
"version": "0.5.0",
3+
"version": "1.0.0",
44
"description": "a WASM compilation of c-kzg-4844",
55
"scripts": {
6-
"build": "npm run build:ts && npm run transpileCJS && npm run fixRequire",
6+
"build": "npm run build:ts && npm run transpileCJS && npm run fixRequire ",
77
"build:ts": "scripts/ts-build.sh",
88
"transpileCJS": "rm dist/cjs/kzg.js && babel src/kzg.js -d dist/cjs",
99
"fixRequire": "sed -i.bak \"s/\\_require('url')/require('url')/g\" dist/cjs/kzg.js && rm dist/cjs/kzg.js.bak",
10-
"fixWasmDirInNode": "sed -i.bak 's#kzg.wasm#../wasm/kzg.wasm#g' src/kzg.js && rm src/kzg.js.bak",
11-
"fixWasmDirInWeb": "sed -i.bak 's#kzg.wasm#../wasm/kzg.wasm#g' browser/kzg.js && rm browser/kzg.js.bak",
10+
"fixWasmDirInNode": "sed -i.bak 's#kzg-node.wasm#kzg.wasm#g' src/kzg.js && rm src/kzg.js.bak && sed -i.bak 's#kzg.wasm#../wasm/kzg.wasm#g' src/kzg.js && rm src/kzg.js.bak",
11+
"fixWasmDirInWeb": "sed -i.bak 's#kzg-web.wasm#../wasm/kzg.wasm#g' browser/kzg.js && rm browser/kzg.js.bak",
1212
"clean": "rm -rf dist && rm -rf node_modules",
1313
"test": "vitest run test/*",
1414
"test:browser": "npx vitest run -c vitest.config.browser.ts test/*",
@@ -25,21 +25,21 @@
2525
},
2626
"import": "./dist/esm/index.js",
2727
"require": "./dist/cjs/index.js"
28-
}
28+
}
2929
},
3030
"license": "MIT",
3131
"devDependencies": {
3232
"@babel/cli": "^7.23.9",
3333
"@babel/core": "^7.23.9",
3434
"@babel/preset-env": "^7.23.9",
35-
"@vitest/browser": "^1.3.1",
36-
"@vitest/utils": "^1.3.1",
35+
"@vitest/browser": "^3.2.4",
36+
"@vitest/utils": "^3.2.4",
3737
"babel-plugin-transform-import-meta": "^2.2.1",
3838
"prettier": "^3.2.5",
3939
"tsx": "^4.7.1",
4040
"typescript": "^5.3.3",
4141
"vite-plugin-wasm": "^3.3.0",
42-
"vitest": "^1.3.1",
43-
"webdriverio": "^8.32.3"
42+
"vitest": "^3.2.4",
43+
"webdriverio": "^9.20.0"
4444
}
4545
}

scripts/ts-build.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,26 @@ build_esm() {
7878
"type": "module"
7979
}
8080
EOT
81+
sed -i.bak 's#./loader.cjs#./loader.mjs#g' src/index.ts
82+
8183
echo "> tsc --build ./tsconfig.esm.json"
8284
printf "${BLUE}[ESM build] Working... "
8385

8486
npx tsc --build ./tsconfig.esm.json
87+
sed -i.bak 's#./loader.mjs#./loader.cjs#g' src/index.ts
88+
rm ./src/index.ts.bak
89+
cat <<EOT >> ./dist/esm/kzg.js.tmp
90+
import { createRequire } from 'node:module';
91+
import { dirname } from "path";
92+
import { fileURLToPath } from 'url';
93+
94+
const require = createRequire(import.meta.url);
95+
const __filename = fileURLToPath(import.meta.url);
96+
const __dirname = dirname(__filename);
97+
98+
EOT
99+
cat ./dist/esm/kzg.js >> ./dist/esm/kzg.js.tmp
100+
mv ./dist/esm/kzg.js.tmp ./dist/esm/kzg.js
85101
green "DONE"
86102
else
87103
echo "Skipping ESM build (no config available)."

src/index.ts

Lines changed: 219 additions & 23 deletions
Large diffs are not rendered by default.

src/kzg.js

Lines changed: 4 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/loader.cjs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
2+
3+
export async function loadWasmModule() {
4+
let wasmBinary = undefined
5+
if (typeof process !== 'undefined' && typeof process.cwd === 'function') {
6+
// Dynamically import Node.js modules only when in Node.js environment
7+
const { resolve } = await import('path')
8+
const { readFileSync } = await import('fs')
9+
const wasmPath = resolve(__dirname, '../wasm/kzg.wasm')
10+
const buffer = readFileSync(wasmPath)
11+
// Convert Node.js Buffer to ArrayBuffer
12+
wasmBinary = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)
13+
}
14+
return wasmBinary
15+
}
16+

src/loader.mjs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { fileURLToPath } from 'url';
2+
3+
4+
export async function loadWasmModule() {
5+
let wasmBinary = undefined
6+
if (typeof process !== 'undefined' && typeof process.cwd === 'function') {
7+
// Dynamically import Node.js modules only when in Node.js environment
8+
const { resolve, dirname } = await import('path')
9+
const { readFileSync } = await import('fs')
10+
const __filename = fileURLToPath(import.meta.url);
11+
const __dirname = dirname(__filename);
12+
const wasmPath = resolve(__dirname, '../wasm/kzg.wasm')
13+
const buffer = readFileSync(wasmPath)
14+
// Convert Node.js Buffer to ArrayBuffer
15+
wasmBinary = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)
16+
}
17+
return wasmBinary
18+
}

0 commit comments

Comments
 (0)