UNPKG

koffi

Version:

Fast and simple C FFI (foreign function interface) for Node.js

53 lines (45 loc) 1.51 kB
'use strict'; const { resolve: resolvePath, join: joinPath } = require('path'); const { writeFile, mkdir } = require('fs/promises'); const { symbols } = require('..'); function getNodeApiDef() { const symbolsSet = new Set(); for (const ver of Object.values(symbols)) { for (const sym of ver.node_api_symbols) { symbolsSet.add(sym); } for (const sym of ver.js_native_api_symbols) { symbolsSet.add(sym); } } return 'NAME NODE.EXE\nEXPORTS\n' + Array.from(symbolsSet).join('\n'); } function getJsNativeApiDef() { const symbolsSet = new Set(); for (const ver of Object.values(symbols)) { for (const sym of ver.js_native_api_symbols) { symbolsSet.add(sym); } } return 'NAME NODE.EXE\nEXPORTS\n' + Array.from(symbolsSet).join('\n'); } async function main() { const def = resolvePath(__dirname, '../def'); try { await mkdir(def) } catch (e) { if (e.code !== 'EEXIST') { throw e; } } const nodeApiDefPath = joinPath(def, 'node_api.def'); console.log(`Writing Windows .def file to ${nodeApiDefPath}`); await writeFile(nodeApiDefPath, getNodeApiDef()); const jsNativeApiDefPath = joinPath(def, 'js_native_api.def'); console.log(`Writing Windows .def file to ${jsNativeApiDefPath}`); await writeFile(jsNativeApiDefPath, getJsNativeApiDef()); } main().catch(e => { console.error(e); process.exitCode = 1; });