Hi Jochen,
Snippet of relevant portions for WrapHTTPBodyMap:
Local<ObjectTemplate> HTTPBody::MakeHTTPBodyMapTemplate(
Isolate* isolate) {
EscapableHandleScope handle_scope(isolate);
Local<ObjectTemplate> result = ObjectTemplate::New(isolate);
result->SetInternalFieldCount(1);
result->SetHandler(NamedPropertyHandlerConfiguration(NULL,
HTTPBodySet));
return handle_scope.Escape(result);
}
Local<Object> HTTPBody::WrapHTTPBodyMap() {
EscapableHandleScope handle_scope(GetIsolate());
if (http_body_map_template_.IsEmpty()) {
Local<ObjectTemplate> raw_template = MakeHTTPBodyMapTemplate(GetIsolate());
http_body_map_template_.Reset(GetIsolate(), raw_template);
}
Local<ObjectTemplate> templ =
Local<ObjectTemplate>::New(GetIsolate(), http_body_map_template_);
Local<Object> result =
templ->NewInstance(GetIsolate()->GetCurrentContext()).ToLocalChecked();
Local<External> map_ptr = External::New(GetIsolate(), &http_body);
result->SetInternalField(0, map_ptr);
return handle_scope.Escape(result);