From 0c91c325be5d2038367f438f0820d0cc06c6bded Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Mon, 22 Jul 2019 11:31:19 +0200 Subject: [PATCH] Simple hello world working with node-addon-api (C++) --- src/runtime/javascript/.gitignore | 3 + src/runtime/javascript/README.md | 12 + src/runtime/javascript/binding.cpp | 28 + src/runtime/javascript/binding.gyp | 22 + src/runtime/javascript/index.js | 16 + src/runtime/javascript/package-lock.json | 824 +++++++++++++++++++++++ src/runtime/javascript/package.json | 21 + 7 files changed, 926 insertions(+) create mode 100644 src/runtime/javascript/.gitignore create mode 100644 src/runtime/javascript/binding.cpp create mode 100644 src/runtime/javascript/binding.gyp create mode 100644 src/runtime/javascript/index.js create mode 100644 src/runtime/javascript/package-lock.json create mode 100644 src/runtime/javascript/package.json diff --git a/src/runtime/javascript/.gitignore b/src/runtime/javascript/.gitignore new file mode 100644 index 000000000..85fc3d879 --- /dev/null +++ b/src/runtime/javascript/.gitignore @@ -0,0 +1,3 @@ +build +node_modules +*.log diff --git a/src/runtime/javascript/README.md b/src/runtime/javascript/README.md index a2ebeb08f..8b1c5815c 100644 --- a/src/runtime/javascript/README.md +++ b/src/runtime/javascript/README.md @@ -2,6 +2,18 @@ A Node.js package for accessing the C runtime. +## Dev notes + +- Assumes runtime is already installed on system (does not compile itself) +- ~~`npm install`~~ `npm run build` will create `./build/Release/native.node` (see `binding.gyp > target_name` +- not sure if `--napi-modules` flag is necessary when running node +- test with: `npm run build && node index.js` + +### Resources + +https://medium.com/@tarkus/how-to-call-c-c-code-from-node-js-86a773033892 +https://medium.com/@atulanand94/beginners-guide-to-writing-nodejs-addons-using-c-and-n-api-node-addon-api-9b3b718a9a7f + --- **What about the pure JS runtime?** diff --git a/src/runtime/javascript/binding.cpp b/src/runtime/javascript/binding.cpp new file mode 100644 index 000000000..b4cf48310 --- /dev/null +++ b/src/runtime/javascript/binding.cpp @@ -0,0 +1,28 @@ +#include + +// #include +// #include +// #include +// #include +// #include +// #include +// #include +// #include + +Napi::Value readPGF(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + + if (info.Length() < 1) { + Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException(); + return env.Null(); + } + + return info[0].As(); +} + +Napi::Object initAll(Napi::Env env, Napi::Object exports) { + exports.Set("readPGF", Napi::Function::New(env, readPGF)); + return exports; +} + +NODE_API_MODULE(pgf, initAll) diff --git a/src/runtime/javascript/binding.gyp b/src/runtime/javascript/binding.gyp new file mode 100644 index 000000000..38957a277 --- /dev/null +++ b/src/runtime/javascript/binding.gyp @@ -0,0 +1,22 @@ +{ + "targets": [ + { + "target_name": "pgf", + "sources": [ + "binding.cpp" + ], + "include_dirs": [ + "