private void LoadSymbols() { this.bootSlabSymbolsMap = new ConsolidationSymbolsMap(this.symbolsFolderPath, this.OwaVersion); string[] files = Directory.GetFiles(this.symbolsFolderPath, "*_obfuscate.xml"); ScriptSharpSourceMapLoader scriptSharpSourceMapLoader = new ScriptSharpSourceMapLoader(files); this.obfuscationSymbolsMap = scriptSharpSourceMapLoader.Load(); List <string> list = new List <string>(); List <string> list2 = new List <string>(); string[] files2 = Directory.GetFiles(this.symbolsFolderPath, "**_minify.xml"); int length = "*_minify.xml".Length; foreach (string text in files2) { string fileName = Path.GetFileName(text); string scriptName = fileName.Substring(0, fileName.Length - length + 1); if (this.obfuscationSymbolsMap.HasSymbolsLoadedForScript(scriptName)) { list.Add(text); } else { list2.Add(text); } } AjaxMinSourceMapLoader <AjaxMinSymbolForJavaScript> ajaxMinSourceMapLoader = new AjaxMinSourceMapLoader <AjaxMinSymbolForJavaScript>(list2, new AjaxMinSymbolParserForJavaScript()); AjaxMinSourceMapLoader <AjaxMinSymbolForScriptSharp> ajaxMinSourceMapLoader2 = new AjaxMinSourceMapLoader <AjaxMinSymbolForScriptSharp>(list, new AjaxMinSymbolParserForScriptSharp()); this.minificationSymbolsMapForJavaScript = ajaxMinSourceMapLoader.Load(); this.minificationSymbolsMapForScriptSharp = ajaxMinSourceMapLoader2.Load(); }
private static ScriptSharpSourceMapLoader.ParentContext PopNonParentSymbolsOut(Stack <ScriptSharpSourceMapLoader.ParentContext> parentCandidateStack, ScriptSharpSymbol newSymbol, List <ScriptSharpSymbolWrapper> symbolList) { while (parentCandidateStack.Count > 0) { ScriptSharpSourceMapLoader.ParentContext parentContext = parentCandidateStack.Peek(); if (parentContext.Symbol.ScriptEndPosition >= newSymbol.ScriptEndPosition) { return(parentContext); } ScriptSharpSourceMapLoader.PopItemAndAddToList(parentCandidateStack, symbolList); } return(null); }
protected override void LoadSymbolsMapFromFile(string filePath, Dictionary <string, List <ScriptSharpSymbolWrapper> > symbolMaps, Dictionary <uint, string> sourceFileIdMap, ClientWatsonFunctionNamePool functionNamePool) { Dictionary <string, int> dictionary = new Dictionary <string, int>(); Dictionary <int, List <ScriptSharpSymbolWrapper> > dictionary2 = new Dictionary <int, List <ScriptSharpSymbolWrapper> >(); Stack <ScriptSharpSourceMapLoader.ContainingMethodContext> stack = new Stack <ScriptSharpSourceMapLoader.ContainingMethodContext>(); Stack <ScriptSharpSourceMapLoader.ParentContext> stack2 = new Stack <ScriptSharpSourceMapLoader.ParentContext>(); string arg = null; string arg2 = null; int num = -1; int key = -1; int count = sourceFileIdMap.Count; using (XmlReader xmlReader = XmlReader.Create(filePath)) { while (xmlReader.Read()) { XmlNodeType xmlNodeType = xmlReader.MoveToContent(); if (xmlNodeType == XmlNodeType.Element) { if (xmlReader.Name == "Statement") { ScriptSharpSourceMapLoader.ContainingMethodContext containingMethodContext = stack.Peek(); ScriptSharpSymbol scriptSharpSymbol; if (ScriptSharpSourceMapLoader.TryParseSymbol(xmlReader, containingMethodContext.ScriptOffset, containingMethodContext.FunctionNameIndex, num, out scriptSharpSymbol)) { ScriptSharpSourceMapLoader.PopNonParentSymbolsOut(stack2, scriptSharpSymbol, dictionary2[key]); stack2.Push(new ScriptSharpSourceMapLoader.ParentContext(scriptSharpSymbol)); } } else if (xmlReader.Name == "Method") { string attribute = xmlReader.GetAttribute("SourceFile"); if (string.IsNullOrEmpty(attribute)) { ScriptSharpSourceMapLoader.SkipSubTree(xmlReader, "Method"); } else { if (!dictionary.TryGetValue(attribute, out num)) { num = dictionary.Count + count; dictionary.Add(attribute, num); } arg2 = xmlReader.GetAttribute("Name"); string name = string.Format("{0}.{1}", arg, arg2); int orAddFunctionNameIndex = functionNamePool.GetOrAddFunctionNameIndex(name); ScriptSharpSymbol symbol; if (!ScriptSharpSourceMapLoader.TryParseSymbol(xmlReader, 0, orAddFunctionNameIndex, num, out symbol)) { ScriptSharpSourceMapLoader.SkipSubTree(xmlReader, "Method"); } else if (!xmlReader.IsEmptyElement) { stack.Push(new ScriptSharpSourceMapLoader.ContainingMethodContext(symbol.ScriptStartPosition, orAddFunctionNameIndex)); stack2.Push(new ScriptSharpSourceMapLoader.ParentContext(symbol, true)); } else { dictionary2[key].Add(new ScriptSharpSymbolWrapper(symbol)); } } } else if (xmlReader.Name == "AnonymousMethod") { ScriptSharpSourceMapLoader.ContainingMethodContext containingMethodContext2 = stack.Peek(); string name2 = string.Format("{0}.<{1}>anonymous", arg, arg2); int orAddFunctionNameIndex2 = functionNamePool.GetOrAddFunctionNameIndex(name2); ScriptSharpSymbol scriptSharpSymbol2; if (!ScriptSharpSourceMapLoader.TryParseSymbol(xmlReader, containingMethodContext2.ScriptOffset, orAddFunctionNameIndex2, num, out scriptSharpSymbol2)) { ScriptSharpSourceMapLoader.SkipSubTree(xmlReader, "AnonymousMethod"); } else { List <ScriptSharpSymbolWrapper> list = dictionary2[key]; ScriptSharpSourceMapLoader.ParentContext parentContext = ScriptSharpSourceMapLoader.PopNonParentSymbolsOut(stack2, scriptSharpSymbol2, list); if (!xmlReader.IsEmptyElement) { stack.Push(new ScriptSharpSourceMapLoader.ContainingMethodContext(scriptSharpSymbol2.ScriptStartPosition, orAddFunctionNameIndex2)); stack2.Push(new ScriptSharpSourceMapLoader.ParentContext(scriptSharpSymbol2, true)); } else { parentContext.Children.Add(list.Count); list.Add(new ScriptSharpSymbolWrapper(scriptSharpSymbol2)); } } } else if (xmlReader.Name == "Type") { arg = xmlReader.GetAttribute("Name"); string attribute2 = xmlReader.GetAttribute("SegmentRef"); if (string.IsNullOrEmpty(attribute2) || !int.TryParse(attribute2, out key)) { ScriptSharpSourceMapLoader.SkipSubTree(xmlReader, "Type"); } else if (!dictionary2.ContainsKey(key)) { dictionary2.Add(key, new List <ScriptSharpSymbolWrapper>(1024)); } } else if (xmlReader.Name == "Segments") { IL_3CE: while (xmlReader.Read()) { if (xmlReader.IsStartElement("Segment")) { string attribute3 = xmlReader.GetAttribute("Id"); int key2; List <ScriptSharpSymbolWrapper> list2; if (int.TryParse(attribute3, out key2) && dictionary2.TryGetValue(key2, out list2)) { string packageName = ScriptSharpSourceMapLoader.GetPackageName(xmlReader, filePath); try { symbolMaps.Add(packageName, list2); list2.TrimExcess(); } catch (ArgumentException exception) { string extraData = string.Format("Package: {0}, File name: {1}", packageName, filePath); ExWatson.SendReport(exception, ReportOptions.DoNotCollectDumps, extraData); } } } } goto IL_3E5; } } else if (xmlNodeType == XmlNodeType.EndElement && (xmlReader.Name == "Method" || xmlReader.Name == "AnonymousMethod")) { stack.Pop(); List <ScriptSharpSymbolWrapper> symbolList = dictionary2[key]; bool flag = false; while (stack2.Count > 0 && !flag) { ScriptSharpSourceMapLoader.ParentContext parentContext2 = ScriptSharpSourceMapLoader.PopItemAndAddToList(stack2, symbolList); flag = parentContext2.IsMethod; } } } goto IL_3CE; } IL_3E5: foreach (KeyValuePair <string, int> keyValuePair in dictionary) { sourceFileIdMap.Add((uint)keyValuePair.Value, keyValuePair.Key); } }