@@ -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
@@ -685,7 +687,8 @@ void Worker::New(const FunctionCallbackInfo<Value>& args) {
685
687
per_isolate_opts,
686
688
std::move (exec_argv_out),
687
689
env_vars,
688
- snapshot_data);
690
+ snapshot_data,
691
+ is_internal);
689
692
690
693
CHECK (args[3 ]->IsFloat64Array ());
691
694
Local<Float64Array> limit_info = args[3 ].As <Float64Array>();
@@ -1028,6 +1031,16 @@ void CreateWorkerPerContextProperties(Local<Object> target,
1028
1031
Boolean::New (isolate, env->is_main_thread ()))
1029
1032
.Check ();
1030
1033
1034
+ Worker* worker = env->isolate_data ()->worker_context ();
1035
+ bool is_internal = worker != nullptr && worker->is_internal ();
1036
+
1037
+ // Set the is_internal property
1038
+ target
1039
+ ->Set (env->context (),
1040
+ FIXED_ONE_BYTE_STRING (isolate, " isInternalThread" ),
1041
+ Boolean::New (isolate, is_internal))
1042
+ .Check ();
1043
+
1031
1044
target
1032
1045
->Set (env->context (),
1033
1046
FIXED_ONE_BYTE_STRING (isolate, " ownsProcessState" ),
0 commit comments