@@ -54,7 +54,8 @@ Worker::Worker(Environment* env,
54
54
std::shared_ptr<PerIsolateOptions> per_isolate_opts,
55
55
std::vector<std::string>&& exec_argv,
56
56
std::shared_ptr<KVStore> env_vars,
57
- const SnapshotData* snapshot_data)
57
+ const SnapshotData* snapshot_data,
58
+ const bool is_internal)
58
59
: AsyncWrap(env, wrap, AsyncWrap::PROVIDER_WORKER),
59
60
per_isolate_opts_ (per_isolate_opts),
60
61
exec_argv_(exec_argv),
@@ -63,7 +64,8 @@ Worker::Worker(Environment* env,
63
64
name_(name),
64
65
env_vars_(env_vars),
65
66
embedder_preload_(env->embedder_preload ()),
66
- snapshot_data_(snapshot_data) {
67
+ snapshot_data_(snapshot_data),
68
+ is_internal_(is_internal) {
67
69
Debug (this , " Creating new worker instance with thread id %llu" ,
68
70
thread_id_.id );
69
71
@@ -687,7 +689,8 @@ void Worker::New(const FunctionCallbackInfo<Value>& args) {
687
689
per_isolate_opts,
688
690
std::move (exec_argv_out),
689
691
env_vars,
690
- snapshot_data);
692
+ snapshot_data,
693
+ is_internal);
691
694
692
695
CHECK (args[3 ]->IsFloat64Array ());
693
696
Local<Float64Array> limit_info = args[3 ].As <Float64Array>();
@@ -1030,6 +1033,16 @@ void CreateWorkerPerContextProperties(Local<Object> target,
1030
1033
Boolean::New (isolate, env->is_main_thread ()))
1031
1034
.Check ();
1032
1035
1036
+ Worker* worker = env->isolate_data ()->worker_context ();
1037
+ bool is_internal = worker != nullptr && worker->is_internal ();
1038
+
1039
+ // Set the is_internal property
1040
+ target
1041
+ ->Set (env->context (),
1042
+ FIXED_ONE_BYTE_STRING (isolate, " isInternalThread" ),
1043
+ Boolean::New (isolate, is_internal))
1044
+ .Check ();
1045
+
1033
1046
target
1034
1047
->Set (env->context (),
1035
1048
FIXED_ONE_BYTE_STRING (isolate, " ownsProcessState" ),
0 commit comments