| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 415fb56 commit ec51688
4 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,10 +2,7 @@ | |||
| 2 | 2 | ||
| 3 | 3 | const { getURLFromFilePath } = require('internal/url'); | |
| 4 | 4 | ||
| 5 | - const { | ||
| 6 | - getNamespaceOfModuleWrap, | ||
| 7 | - createDynamicModule | ||
| 8 | - } = require('internal/loader/ModuleWrap'); | ||
| 5 | + const { createDynamicModule } = require('internal/loader/ModuleWrap'); | ||
| 9 | 6 | ||
| 10 | 7 | const ModuleMap = require('internal/loader/ModuleMap'); | |
| 11 | 8 | const ModuleJob = require('internal/loader/ModuleJob'); | |
@@ -100,7 +97,7 @@ class Loader { | |||
| 100 | 97 | async import(specifier, parentURL = this.base) { | |
| 101 | 98 | const job = await this.getModuleJob(specifier, parentURL); | |
| 102 | 99 | const module = await job.run(); | |
| 103 | - return getNamespaceOfModuleWrap(module); | ||
| 100 | + return module.namespace(); | ||
| 104 | 101 | } | |
| 105 | 102 | } | |
| 106 | 103 | Object.setPrototypeOf(Loader.prototype, null); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,13 +6,6 @@ const debug = require('util').debuglog('esm'); | |||
| 6 | 6 | const ArrayJoin = Function.call.bind(Array.prototype.join); | |
| 7 | 7 | const ArrayMap = Function.call.bind(Array.prototype.map); | |
| 8 | 8 | ||
| 9 | - const getNamespaceOfModuleWrap = (m) => { | ||
| 10 | - const tmp = new ModuleWrap('import * as _ from "";_;', ''); | ||
| 11 | - tmp.link(async () => m); | ||
| 12 | - tmp.instantiate(); | ||
| 13 | - return tmp.evaluate(); | ||
| 14 | - }; | ||
| 15 | - | ||
| 16 | 9 | const createDynamicModule = (exports, url = '', evaluate) => { | |
| 17 | 10 | debug( | |
| 18 | 11 | `creating ESM facade for ${url} with exports: ${ArrayJoin(exports, ', ')}` | |
@@ -57,6 +50,5 @@ const createDynamicModule = (exports, url = '', evaluate) => { | |||
| 57 | 50 | ||
| 58 | 51 | module.exports = { | |
| 59 | 52 | createDynamicModule, | |
| 60 | - getNamespaceOfModuleWrap, | ||
| 61 | 53 | ModuleWrap | |
| 62 | 54 | }; | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -207,6 +207,29 @@ void ModuleWrap::Evaluate(const FunctionCallbackInfo<Value>& args) { | |||
| 207 | 207 | args.GetReturnValue().Set(ret); | |
| 208 | 208 | } | |
| 209 | 209 | ||
| 210 | + void ModuleWrap::Namespace(const FunctionCallbackInfo<Value>& args) { | ||
| 211 | + Environment* env = Environment::GetCurrent(args); | ||
| 212 | + auto isolate = args.GetIsolate(); | ||
| 213 | + auto that = args.This(); | ||
| 214 | + ModuleWrap* obj = Unwrap<ModuleWrap>(that); | ||
| 215 | + CHECK_NE(obj, nullptr); | ||
| 216 | + | ||
| 217 | + auto module = obj->module_.Get(isolate); | ||
| 218 | + | ||
| 219 | + switch (module->GetStatus()) { | ||
| 220 | + default: | ||
| 221 | + return env->ThrowError( | ||
| 222 | + "cannot get namespace, Module has not been instantiated"); | ||
| 223 | + case v8::Module::Status::kInstantiated: | ||
| 224 | + case v8::Module::Status::kEvaluating: | ||
| 225 | + case v8::Module::Status::kEvaluated: | ||
| 226 | + break; | ||
| 227 | + } | ||
| 228 | + | ||
| 229 | + auto result = module->GetModuleNamespace(); | ||
| 230 | + args.GetReturnValue().Set(result); | ||
| 231 | + } | ||
| 232 | + | ||
| 210 | 233 | MaybeLocal<Module> ModuleWrap::ResolveCallback(Local<Context> context, | |
| 211 | 234 | Local<String> specifier, | |
| 212 | 235 | Local<Module> referrer) { | |
@@ -520,6 +543,7 @@ void ModuleWrap::Initialize(Local<Object> target, | |||
| 520 | 543 | env->SetProtoMethod(tpl, "link", Link); | |
| 521 | 544 | env->SetProtoMethod(tpl, "instantiate", Instantiate); | |
| 522 | 545 | env->SetProtoMethod(tpl, "evaluate", Evaluate); | |
| 546 | + env->SetProtoMethod(tpl, "namespace", Namespace); | ||
| 523 | 547 | ||
| 524 | 548 | target->Set(FIXED_ONE_BYTE_STRING(isolate, "ModuleWrap"), tpl->GetFunction()); | |
| 525 | 549 | env->SetMethod(target, "resolve", node::loader::ModuleWrap::Resolve); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -34,6 +34,7 @@ class ModuleWrap : public BaseObject { | |||
| 34 | 34 | static void Link(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 35 | 35 | static void Instantiate(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 36 | 36 | static void Evaluate(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| 37 | + static void Namespace(const v8::FunctionCallbackInfo<v8::Value>& args); | ||
| 37 | 38 | static void GetUrl(v8::Local<v8::String> property, | |
| 38 | 39 | const v8::PropertyCallbackInfo<v8::Value>& info); | |
| 39 | 40 | static void Resolve(const v8::FunctionCallbackInfo<v8::Value>& args); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments