Skip to content

Commit 9ac3f9d

Browse files
committed
feat: generate binding automatically
1 parent 67b6b5d commit 9ac3f9d

File tree

3 files changed

+207
-123
lines changed

3 files changed

+207
-123
lines changed

bun/bun.lock

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

bun/package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"module": "src/index.ts",
55
"type": "module",
66
"dependencies": {
7-
"@chainsafe/bun-ffi-z": "^1.0.0"
7+
"@chainsafe/bun-ffi-z": "https://github.com/ChainSafe/bun-ffi-z.git#cayman/generate-binding"
88
},
99
"devDependencies": {
1010
"@types/bun": "latest",
@@ -23,6 +23,7 @@
2323
},
2424
"scripts": {
2525
"build": "bun ./node_modules/.bin/bun-ffi-z build",
26+
"generate": "bun ./node_modules/.bin/bun-ffi-z generate-binding",
2627
"prepublishOnly": "bun ./node_modules/.bin/bun-ffi-z prepublish --artifacts artifacts",
2728
"publish": "bun ./node_modules/.bin/bun-ffi-z publish",
2829
"test:unit": "bun test test/unit",
@@ -42,6 +43,9 @@
4243
"darwin-arm64"
4344
],
4445
"optimize": "ReleaseSafe",
45-
"zigCwd": ".."
46+
"zigCwd": "..",
47+
"zigExportFiles": [
48+
"src/root_c_abi.zig"
49+
]
4650
}
4751
}

bun/src/binding.ts

Lines changed: 199 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,207 @@
1+
2+
// This file is auto-generated by @chainsafe/bun-ffi-z. Do not edit.
3+
14
import path from "node:path";
25
import { openLibrary } from "@chainsafe/bun-ffi-z";
36

47
const fns = {
5-
createPubkeyIndexMap: {
6-
args: [],
7-
returns: "ptr",
8-
},
9-
destroyPubkeyIndexMap: {
10-
args: ["ptr"],
11-
returns: "void",
12-
},
13-
getNotFoundIndex: {
14-
args: [],
15-
returns: "u32",
16-
},
17-
getErrorIndex: {
18-
args: [],
19-
returns: "u32",
20-
},
21-
pubkeyIndexMapSet: {
22-
args: ["ptr", "ptr", "u32", "u32"],
23-
returns: "u32",
24-
},
25-
pubkeyIndexMapGet: {
26-
args: ["ptr", "ptr", "u32"],
27-
returns: "u32",
28-
},
29-
pubkeyIndexMapClear: {
30-
args: ["ptr"],
31-
returns: "void",
32-
},
33-
pubkeyIndexMapClone: {
34-
args: ["ptr"],
35-
returns: "ptr",
36-
},
37-
pubkeyIndexMapHas: {
38-
args: ["ptr", "ptr", "u32"],
39-
returns: "bool",
40-
},
41-
pubkeyIndexMapDelete: {
42-
args: ["ptr", "ptr", "u32"],
43-
returns: "bool",
44-
},
45-
pubkeyIndexMapSize: {
46-
args: ["ptr"],
47-
returns: "u32",
48-
},
49-
// binding for shuffe
50-
shuffleList: {
51-
args: ["ptr", "u32", "ptr", "u32", "u8"],
52-
returns: "u32",
53-
},
54-
unshuffleList: {
55-
args: ["ptr", "u32", "ptr", "u32", "u8"],
56-
returns: "u32",
57-
},
58-
asyncShuffleList: {
59-
args: ["ptr", "u32", "ptr", "u32", "u8"],
60-
returns: "u32",
61-
},
62-
asyncUnshuffleList: {
63-
args: ["ptr", "u32", "ptr", "u32", "u8"],
64-
returns: "u32",
65-
},
66-
pollAsyncResult: {
67-
args: ["u32"],
68-
returns: "u32",
69-
},
70-
releaseAsyncResult: {
71-
args: ["u32"],
72-
returns: "void",
73-
},
74-
computeProposerIndexElectra: {
75-
args: ["ptr", "u32", "ptr", "u32", "ptr", "u32", "u64", "u32", "u32"],
76-
returns: "u32",
77-
},
78-
computeProposerIndex: {
79-
args: ["ptr", "u32", "ptr", "u32", "ptr", "u32", "u8", "u64", "u32", "u32"],
80-
returns: "u32",
81-
},
82-
computeSyncCommitteeIndicesElectra: {
83-
args: [
84-
"ptr",
85-
"u32",
86-
"ptr",
87-
"u32",
88-
"ptr",
89-
"u32",
90-
"u64",
91-
"u32",
92-
"u32",
93-
"ptr",
94-
"u32",
95-
],
96-
returns: "u32",
97-
},
98-
computeSyncCommitteeIndices: {
99-
arts: [
100-
"ptr",
101-
"u32",
102-
"ptr",
103-
"u32",
104-
"ptr",
105-
"u32",
106-
"u8",
107-
"u64",
108-
"u32",
109-
"u32",
110-
"ptr",
111-
"u32",
112-
],
113-
returns: "u32",
114-
},
8+
"createPubkeyIndexMap": {
9+
"args": [],
10+
"returns": "u64"
11+
},
12+
"destroyPubkeyIndexMap": {
13+
"args": [
14+
"u64"
15+
],
16+
"returns": "void"
17+
},
18+
"getNotFoundIndex": {
19+
"args": [],
20+
"returns": "u32"
21+
},
22+
"getErrorIndex": {
23+
"args": [],
24+
"returns": "u32"
25+
},
26+
"pubkeyIndexMapSet": {
27+
"args": [
28+
"u64",
29+
"ptr",
30+
"u32",
31+
"u32"
32+
],
33+
"returns": "u32"
34+
},
35+
"pubkeyIndexMapGet": {
36+
"args": [
37+
"u64",
38+
"ptr",
39+
"u32"
40+
],
41+
"returns": "u32"
42+
},
43+
"pubkeyIndexMapClear": {
44+
"args": [
45+
"u64"
46+
],
47+
"returns": "void"
48+
},
49+
"pubkeyIndexMapClone": {
50+
"args": [
51+
"u64"
52+
],
53+
"returns": "u64"
54+
},
55+
"pubkeyIndexMapHas": {
56+
"args": [
57+
"u64",
58+
"ptr",
59+
"u32"
60+
],
61+
"returns": "bool"
62+
},
63+
"pubkeyIndexMapDelete": {
64+
"args": [
65+
"u64",
66+
"ptr",
67+
"u32"
68+
],
69+
"returns": "bool"
70+
},
71+
"pubkeyIndexMapSize": {
72+
"args": [
73+
"u64"
74+
],
75+
"returns": "u32"
76+
},
77+
"asyncShuffleList": {
78+
"args": [
79+
"ptr",
80+
"u64",
81+
"ptr",
82+
"u64",
83+
"u8"
84+
],
85+
"returns": "u64"
86+
},
87+
"asyncUnshuffleList": {
88+
"args": [
89+
"ptr",
90+
"u64",
91+
"ptr",
92+
"u64",
93+
"u8"
94+
],
95+
"returns": "u64"
96+
},
97+
"releaseAsyncResult": {
98+
"args": [
99+
"u64"
100+
],
101+
"returns": "void"
102+
},
103+
"pollAsyncResult": {
104+
"args": [
105+
"u64"
106+
],
107+
"returns": "u32"
108+
},
109+
"shuffleList": {
110+
"args": [
111+
"ptr",
112+
"u64",
113+
"ptr",
114+
"u64",
115+
"u8"
116+
],
117+
"returns": "u32"
118+
},
119+
"unshuffleList": {
120+
"args": [
121+
"ptr",
122+
"u64",
123+
"ptr",
124+
"u64",
125+
"u8"
126+
],
127+
"returns": "u32"
128+
},
129+
"doShuffleList": {
130+
"args": [
131+
"ptr",
132+
"u64",
133+
"ptr",
134+
"u64",
135+
"u8",
136+
"bool"
137+
],
138+
"returns": "u32"
139+
},
140+
"computeProposerIndexElectra": {
141+
"args": [
142+
"ptr",
143+
"u64",
144+
"ptr",
145+
"u64",
146+
"ptr",
147+
"u64",
148+
"u64",
149+
"u32",
150+
"u32"
151+
],
152+
"returns": "u32"
153+
},
154+
"computeProposerIndex": {
155+
"args": [
156+
"ptr",
157+
"u64",
158+
"ptr",
159+
"u64",
160+
"ptr",
161+
"u64",
162+
"u8",
163+
"u64",
164+
"u32",
165+
"u32"
166+
],
167+
"returns": "u32"
168+
},
169+
"computeSyncCommitteeIndicesElectra": {
170+
"args": [
171+
"ptr",
172+
"u64",
173+
"ptr",
174+
"u64",
175+
"ptr",
176+
"u64",
177+
"u64",
178+
"u32",
179+
"u32",
180+
"ptr",
181+
"u64"
182+
],
183+
"returns": "u32"
184+
},
185+
"computeSyncCommitteeIndices": {
186+
"args": [
187+
"ptr",
188+
"u64",
189+
"ptr",
190+
"u64",
191+
"ptr",
192+
"u64",
193+
"u8",
194+
"u64",
195+
"u32",
196+
"u32",
197+
"ptr",
198+
"u64"
199+
],
200+
"returns": "u32"
201+
}
115202
};
116-
117-
// Load the compiled Zig shared library
118-
// the first param is bun's cwd
119-
// - on dev env it's the cwd which is `./bun`
120-
// - on prod env it does not matter because bun-ffi-z will load platfrom-specific package like @chainsafe/state-transition-bun-linux-x64-gnu/libstate-transition-utils.so instead
121203
const lib = await openLibrary(path.join(import.meta.dirname, ".."), fns);
122-
export const binding = lib.symbols;
123204

124-
/**
125-
* Call this api to close the binding.
126-
*/
205+
export const binding = lib.symbols;
127206
export const close = lib.close;
207+

0 commit comments

Comments
 (0)