Esempio n. 1
0
        public JsValue Load(string moduleName, Module parent = null)
        {
            IModule mod;

            if (string.IsNullOrEmpty(moduleName))
            {
                throw new System.ArgumentException("moduleName is required.", nameof(moduleName));
            }

            if (ModuleCache.ContainsKey(moduleName))
            {
                mod = ModuleCache[moduleName];
                parent.Children.Add(mod);
                return(mod.Exports);
            }

            var requestedModule = new ModuleRequestedEventArgs(moduleName);

            ModuleRequested?.Invoke(this, requestedModule);

            if (requestedModule.Exports != null && requestedModule.Exports != JsValue.Undefined)
            {
                ModuleCache.Add(moduleName, (mod = new InternalModule(moduleName, requestedModule.Exports)));
                return(mod.Exports);
            }

            return(new Module(this, moduleName, parent).Exports);
        }
Esempio n. 2
0
 protected ModuleLoadingEngine RegisterInternalModule(InternalModule mod)
 {
     ModuleCache.Add(mod.Id, mod);
     return(this);
 }