Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions NativeScript/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ if(ENABLE_JS_RUNTIME)
runtime/modules/node/FS.cpp
runtime/modules/node/Path.cpp
runtime/modules/node/Process.cpp
runtime/modules/node/VM.cpp
runtime/modules/performance/Performance.cpp
runtime/ThreadSafeFunction.mm
runtime/Bundle.mm
Expand Down
17 changes: 17 additions & 0 deletions NativeScript/napi/quickjs/quickjs-api.c
Original file line number Diff line number Diff line change
Expand Up @@ -4328,3 +4328,20 @@ napi_status qjs_update_stack_top(napi_env env) {
JS_UpdateStackTop(env->runtime->runtime);
return napi_clear_last_error(env);
}

napi_status qjs_create_scoped_value(napi_env env, JSValue value,
napi_value *result) {
return CreateScopedResult(env, value, result);
}

JSContext *qjs_get_context(napi_env env) {
return env != NULL ? env->context : NULL;
}

JSRuntime *qjs_get_runtime(napi_env env) {
if (env == NULL || env->runtime == NULL) {
return NULL;
}

return env->runtime->runtime;
}
27 changes: 19 additions & 8 deletions NativeScript/napi/quickjs/quicks-runtime.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,42 @@
#ifndef TEST_APP_QUICKS_RUNTIME_H
#define TEST_APP_QUICKS_RUNTIME_H
#include "js_native_api.h"
#include "quickjs.h"

EXTERN_C_START

NAPI_EXTERN napi_status NAPI_CDECL qjs_create_runtime(napi_runtime *runtime);
NAPI_EXTERN napi_status NAPI_CDECL qjs_create_runtime(napi_runtime* runtime);

NAPI_EXTERN napi_status NAPI_CDECL qjs_create_napi_env(napi_env *env, napi_runtime runtime);
NAPI_EXTERN napi_status NAPI_CDECL qjs_create_napi_env(napi_env* env,
napi_runtime runtime);

NAPI_EXTERN napi_status NAPI_CDECL qjs_free_napi_env(napi_env env);

NAPI_EXTERN napi_status NAPI_CDECL qjs_free_runtime(napi_runtime runtime);

NAPI_EXTERN napi_status NAPI_CDECL qjs_execute_script(napi_env env,
napi_value script,
const char *file,
napi_value *result);
const char* file,
napi_value* result);

NAPI_EXTERN napi_status NAPI_CDECL qjs_runtime_before_gc_callback(napi_env env, napi_finalize cb, void *data);

NAPI_EXTERN napi_status NAPI_CDECL qjs_runtime_after_gc_callback(napi_env env, napi_finalize cb, void *data);
NAPI_EXTERN napi_status NAPI_CDECL
qjs_runtime_before_gc_callback(napi_env env, napi_finalize cb, void* data);

NAPI_EXTERN napi_status NAPI_CDECL
qjs_runtime_after_gc_callback(napi_env env, napi_finalize cb, void* data);

NAPI_EXTERN napi_status NAPI_CDECL qjs_execute_pending_jobs(napi_env env);

NAPI_EXTERN napi_status NAPI_CDECL qjs_update_stack_top(napi_env env);

NAPI_EXTERN JSContext* NAPI_CDECL qjs_get_context(napi_env env);

NAPI_EXTERN JSRuntime* NAPI_CDECL qjs_get_runtime(napi_env env);

NAPI_EXTERN napi_status NAPI_CDECL qjs_create_scoped_value(napi_env env,
JSValue value,
napi_value* result);

EXTERN_C_END

#endif //TEST_APP_QUICKS_RUNTIME_H
#endif // TEST_APP_QUICKS_RUNTIME_H
3 changes: 2 additions & 1 deletion NativeScript/napi/quickjs/source/quickjs.c
Original file line number Diff line number Diff line change
Expand Up @@ -33614,7 +33614,8 @@ static JSValue __JS_EvalInternal(JSContext *ctx, JSValue this_obj,
/* Could add a flag to avoid resolution if necessary */
if (m) {
m->func_obj = fun_obj;
if (js_resolve_module(ctx, m) < 0)
if (!(flags & JS_EVAL_FLAG_COMPILE_ONLY_NO_RESOLVE) &&
js_resolve_module(ctx, m) < 0)
goto fail1;
fun_obj = JS_NewModuleValue(ctx, m);
}
Expand Down
2 changes: 2 additions & 0 deletions NativeScript/napi/quickjs/source/quickjs.h
Original file line number Diff line number Diff line change
Expand Up @@ -312,6 +312,8 @@ static inline bool JS_VALUE_IS_NAN(JSValue v)
JS_TAG_FUNCTION_BYTECODE or JS_TAG_MODULE tag. It can be executed
with JS_EvalFunction(). */
#define JS_EVAL_FLAG_COMPILE_ONLY (1 << 5)
/* compile a module without resolving its imports yet */
#define JS_EVAL_FLAG_COMPILE_ONLY_NO_RESOLVE JS_EVAL_FLAG_UNUSED
/* don't include the stack frames before this eval in the Error() backtraces */
#define JS_EVAL_FLAG_BACKTRACE_BARRIER (1 << 6)
/* allow top-level await in normal script. JS_Eval() returns a
Expand Down
9 changes: 6 additions & 3 deletions NativeScript/runtime/modules/node/Node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@
#include "FS.h"
#include "Path.h"
#include "Process.h"
#include "VM.h"
#include "native_api_util.h"

namespace nativescript {

void Node::Init(napi_env env, napi_value global) {
Process::Init(env, global);
}
void Node::Init(napi_env env, napi_value global) { Process::Init(env, global); }

napi_value Node::LoadInternalModule(napi_env env,
const std::string& moduleName) {
Expand All @@ -25,6 +24,10 @@ napi_value Node::LoadInternalModule(napi_env env,
return Process::CreateModule(env);
}

if (moduleName == "vm" || moduleName == "node:vm") {
return VM::CreateModule(env);
}

if (moduleName == "fs/promises" || moduleName == "node:fs/promises") {
napi_value fsModule = FS::CreateModule(env);
if (napi_util::is_null_or_undefined(env, fsModule)) {
Expand Down
Loading
Loading