diff --git a/zokrates_js/.gitignore b/zokrates_js/.gitignore index 43a1f54c..3a63e0e3 100644 --- a/zokrates_js/.gitignore +++ b/zokrates_js/.gitignore @@ -4,4 +4,5 @@ target pkg wasm-pack.log stdlib -stdlib.json \ No newline at end of file +stdlib.json +metadata.json \ No newline at end of file diff --git a/zokrates_js/gulpfile.js b/zokrates_js/gulpfile.js index 4129b607..abb8560a 100644 --- a/zokrates_js/gulpfile.js +++ b/zokrates_js/gulpfile.js @@ -3,10 +3,11 @@ const gulp = require('gulp'); const dree = require('dree'); const fs = require('fs'); const path = require('path'); +const toml = require('toml'); /** stdlib constants */ const stdlibRoot = '../zokrates_stdlib/stdlib'; -const output = 'stdlib.json'; +const stdlibOutput = 'stdlib.json'; const options = { extensions: ['zok'] @@ -22,6 +23,17 @@ gulp.task('stdlib', (done) => { stdlib[file.relativePath] = content; }); - fs.writeFileSync(path.resolve(__dirname, output), JSON.stringify(stdlib)); + fs.writeFileSync(path.resolve(__dirname, stdlibOutput), JSON.stringify(stdlib)); done(); -}); \ No newline at end of file +}); + +gulp.task('metadata', (done) => { + const config = toml.parse(fs.readFileSync('../zokrates_cli/Cargo.toml').toString()); + const metadata = JSON.stringify({ + version: config.package.version + }); + fs.writeFileSync(path.resolve(__dirname, 'metadata.json'), metadata); + done(); +}); + +gulp.task('setup', gulp.series('stdlib', 'metadata')); \ No newline at end of file diff --git a/zokrates_js/index.d.ts b/zokrates_js/index.d.ts index 263cc255..52ba4cee 100644 --- a/zokrates_js/index.d.ts +++ b/zokrates_js/index.d.ts @@ -60,5 +60,10 @@ declare module 'zokrates-js' { generateProof(program: Uint8Array, witness: string, provingKey: Uint8Array): Proof; } + export interface Metadata { + version: string + } + export function initialize(): Promise; + export var metadata: Metadata; } diff --git a/zokrates_js/index.js b/zokrates_js/index.js index 4f8b8ba0..f4d10ac1 100644 --- a/zokrates_js/index.js +++ b/zokrates_js/index.js @@ -1,9 +1,10 @@ import wrapper from './wrapper'; import stdlib from './stdlib.json'; +import metadata from './metadata.json'; const initialize = async () => { const zokrates = await import('./pkg/index.js'); return wrapper({ zokrates, stdlib }); } -export { initialize }; \ No newline at end of file +export { initialize, metadata }; \ No newline at end of file diff --git a/zokrates_js/node/index.js b/zokrates_js/node/index.js index 681e3ade..1d356ba5 100644 --- a/zokrates_js/node/index.js +++ b/zokrates_js/node/index.js @@ -1,5 +1,6 @@ const wrapper = require('../wrapper.js'); const stdlib = require('../stdlib.json'); +const metadata = require('../metadata.json'); const initialize = async () => { return wrapper({ @@ -8,4 +9,4 @@ const initialize = async () => { }); } -module.exports = { initialize }; \ No newline at end of file +module.exports = { initialize, metadata }; \ No newline at end of file diff --git a/zokrates_js/package-lock.json b/zokrates_js/package-lock.json index c9e24433..8f7f717c 100644 --- a/zokrates_js/package-lock.json +++ b/zokrates_js/package-lock.json @@ -4572,6 +4572,12 @@ "through2": "^2.0.3" } }, + "toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==", + "dev": true + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", diff --git a/zokrates_js/package.json b/zokrates_js/package.json index e9b3d302..d101a284 100644 --- a/zokrates_js/package.json +++ b/zokrates_js/package.json @@ -16,12 +16,13 @@ "index.d.ts", "wrapper.js", "stdlib.json", + "metadata.json", "README.md" ], "types": "index.d.ts", "scripts": { "wasm-pack": "wasm-pack build --out-name index --release", - "setup": "npm install && gulp stdlib", + "setup": "npm install && gulp setup", "prebuild": "npm run setup", "build": "npm run build:bundler && npm run build:node", "build:bundler": "rimraf pkg && npm run wasm-pack -- --target bundler && npm run clean-pkg", @@ -39,7 +40,8 @@ "mocha": "^7.1.1", "rimraf": "^3.0.2", "serve": "^11.3.2", - "text-encoding": "^0.7.0" + "text-encoding": "^0.7.0", + "toml": "^3.0.0" }, "dependencies": {} }