@@ -84,11 +84,56 @@ Napi::Value IsExternalGcFinalizerCalled(const Napi::CallbackInfo& info) {
84
84
return Napi::Boolean::New (info.Env (), externalGcFinalizerCalled);
85
85
}
86
86
87
+ Napi::Value AddPostFinalizer (const Napi::CallbackInfo& info) {
88
+ auto env = info.Env ();
89
+
90
+ env.AddPostFinalizer (
91
+ [callback = Napi::Persistent (info[0 ].As <Napi::Function>())](
92
+ Napi::Env /* env*/ ) { callback.Call ({}); });
93
+
94
+ return env.Undefined ();
95
+ }
96
+
97
+ Napi::Value AddPostFinalizerWithData (const Napi::CallbackInfo& info) {
98
+ auto env = info.Env ();
99
+
100
+ env.AddPostFinalizer (
101
+ [callback = Napi::Persistent (info[0 ].As <Napi::Function>())](
102
+ Napi::Env /* env*/ , Napi::Reference<Napi::Value>* data) {
103
+ callback.Call ({data->Value ()});
104
+ delete data;
105
+ },
106
+ new Napi::Reference<Napi::Value>(Napi::Persistent (info[1 ])));
107
+ return env.Undefined ();
108
+ }
109
+
110
+ Napi::Value AddPostFinalizerWithDataAndHint (const Napi::CallbackInfo& info) {
111
+ auto env = info.Env ();
112
+
113
+ env.AddPostFinalizer (
114
+ [callback = Napi::Persistent (info[0 ].As <Napi::Function>())](
115
+ Napi::Env /* env*/ ,
116
+ Napi::Reference<Napi::Value>* data,
117
+ Napi::Reference<Napi::Value>* hint) {
118
+ callback.Call ({data->Value (), hint->Value ()});
119
+ delete data;
120
+ delete hint;
121
+ },
122
+ new Napi::Reference<Napi::Value>(Napi::Persistent (info[1 ])),
123
+ new Napi::Reference<Napi::Value>(Napi::Persistent (info[2 ])));
124
+ return env.Undefined ();
125
+ }
126
+
87
127
} // namespace
88
128
89
129
Napi::Object InitFinalizerOrder (Napi::Env env) {
90
130
Napi::Object exports = Napi::Object::New (env);
91
131
Test::Initialize (env, exports);
132
+ exports[" AddPostFinalizer" ] = Napi::Function::New (env, AddPostFinalizer);
133
+ exports[" AddPostFinalizerWithData" ] =
134
+ Napi::Function::New (env, AddPostFinalizerWithData);
135
+ exports[" AddPostFinalizerWithDataAndHint" ] =
136
+ Napi::Function::New (env, AddPostFinalizerWithDataAndHint);
92
137
exports[" CreateExternalNogc" ] = Napi::Function::New (env, CreateExternalNogc);
93
138
exports[" CreateExternalGc" ] = Napi::Function::New (env, CreateExternalGc);
94
139
exports[" isExternalNogcFinalizerCalled" ] =
0 commit comments