2525
2626namespace lv {
2727
28+ class CompilerAddonData {
29+ public:
30+ Napi::FunctionReference CompilerHandleConstructor;
31+ };
32+
33+
2834void convertToMLNode (const Napi::Value& v, MLNode& n){
2935 if ( v.IsArray () ){
3036 n = MLNode (MLNode::Type::Array);
@@ -322,7 +328,6 @@ Napi::Value createCompilerWrap(const Napi::CallbackInfo &info){
322328 lv::el::Compiler::Config config;
323329 config.initialize (compilerOptions);
324330 lv::el::Compiler::Ptr compiler = lv::el::Compiler::create (config);
325-
326331
327332 auto externalCompilerPtr = Napi::External<lv::el::Compiler::Ptr>::New (
328333 env,
@@ -332,8 +337,9 @@ Napi::Value createCompilerWrap(const Napi::CallbackInfo &info){
332337 }
333338 );
334339
340+ CompilerAddonData* compilerData = info.Env ().GetInstanceData <CompilerAddonData>();
335341
336- Napi::Object obj = CompilerHandle::constructor .New ({ externalCompilerPtr });
342+ Napi::Object obj = compilerData-> CompilerHandleConstructor .New ({ externalCompilerPtr });
337343 Napi::Object result = Napi::Object::New (env);
338344 result.Set (" value" , obj);
339345 return result;
@@ -458,12 +464,22 @@ void runCompilerWrap(const Napi::CallbackInfo &info){
458464}
459465
460466Napi::Object Init (Napi::Env env, Napi::Object exports) {
461- CompilerHandle::Init (env, exports );
467+ auto addonData = new CompilerAddonData ( );
462468
469+ // Export CompilerHandle
470+ Napi::Function funcCompilerHandle = CompilerHandle::Init (env, exports);
471+ addonData->CompilerHandleConstructor = Napi::Persistent (funcCompilerHandle);
472+ exports.Set (" CompilerHandle" , funcCompilerHandle);
473+
474+ // Export functions
463475 exports.Set (" compile" , Napi::Function::New (env, lv::compileWrap));
464476 exports.Set (" compileModule" , Napi::Function::New (env, lv::compileModuleWrap));
465477 exports.Set (" createCompiler" , Napi::Function::New (env, lv::createCompilerWrap));
466478 exports.Set (" runCompiler" , Napi::Function::New (env, lv::runCompilerWrap));
479+
480+ // Set AddonData to instance data
481+ env.SetInstanceData <CompilerAddonData>(addonData);
482+
467483 return exports;
468484}
469485
0 commit comments