Пример #1
0
    /// <summary>
    /// https://tc39.es/ecma262/#sec-getmodulenamespace
    /// </summary>
    public static ObjectInstance GetModuleNamespace(ModuleRecord module)
    {
        var ns = module._namespace;

        if (ns is null)
        {
            var exportedNames    = module.GetExportedNames();
            var unambiguousNames = new List <string>();
            for (var i = 0; i < exportedNames.Count; i++)
            {
                var name       = exportedNames[i];
                var resolution = module.ResolveExport(name);
                if (resolution is not null && resolution != ResolvedBinding.Ambiguous)
                {
                    unambiguousNames.Add(name);
                }
            }

            ns = CreateModuleNamespace(module, unambiguousNames);
        }

        return(ns);
    }