netstack.js 1.1.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/README.md +12 -6
  2. package/images/flags/AD - Andorra.svg +43 -0
  3. package/images/flags/AE - United Arab Emirates.svg +21 -0
  4. package/images/flags/AF - Afghanistan.svg +30 -0
  5. package/images/flags/AG - Antigua and Barbuda.svg +24 -0
  6. package/images/flags/AI - Anguilla.svg +60 -0
  7. package/images/flags/AL - Albania.svg +21 -0
  8. package/images/flags/AM - Armenia.svg +24 -0
  9. package/images/flags/AMS.svg +30 -0
  10. package/images/flags/AO - Angola.svg +49 -0
  11. package/images/flags/AQ - Antarctica.svg +27 -0
  12. package/images/flags/AR - Argentina.svg +37 -0
  13. package/images/flags/AS - American Samoa.svg +28 -0
  14. package/images/flags/AT - Austria.svg +24 -0
  15. package/images/flags/AU - Australia.svg +56 -0
  16. package/images/flags/AW - Aruba.svg +28 -0
  17. package/images/flags/AX - Aland Islands.svg +25 -0
  18. package/images/flags/AZ - Azerbaijan.svg +29 -0
  19. package/images/flags/African Union.svg +78 -0
  20. package/images/flags/BA - Bosnia and Herzegovina.svg +29 -0
  21. package/images/flags/BB - Barbados.svg +21 -0
  22. package/images/flags/BD - Bangladesh.svg +19 -0
  23. package/images/flags/BE - Belgium.svg +20 -0
  24. package/images/flags/BF - Burkina Faso.svg +24 -0
  25. package/images/flags/BG - Bulgaria.svg +24 -0
  26. package/images/flags/BH - Bahrain.svg +19 -0
  27. package/images/flags/BI - Burundi.svg +23 -0
  28. package/images/flags/BJ - Benin.svg +20 -0
  29. package/images/flags/BL - Saint Barth/303/251lemy.svg" +20 -0
  30. package/images/flags/BM - Bermuda.svg +73 -0
  31. package/images/flags/BN - Brunei Darussalam.svg +34 -0
  32. package/images/flags/BO - Bolivia.svg +93 -0
  33. package/images/flags/BQ-BO - Bonaire.svg +22 -0
  34. package/images/flags/BQ-SA - Saba.svg +23 -0
  35. package/images/flags/BQ-SE - Sint Eustatius.svg +28 -0
  36. package/images/flags/BR - Brazil.svg +53 -0
  37. package/images/flags/BS - Bahamas.svg +21 -0
  38. package/images/flags/BT - Bhutan.svg +32 -0
  39. package/images/flags/BV - Bouvet Island.svg +25 -0
  40. package/images/flags/BW - Botswana.svg +24 -0
  41. package/images/flags/BY - Belarus.svg +53 -0
  42. package/images/flags/BZ - Belize.svg +87 -0
  43. package/images/flags/CA - Canada.svg +21 -0
  44. package/images/flags/CC - Cocos (Keeling) Islands.svg +34 -0
  45. package/images/flags/CD - Democratic Republic of the Congo.svg +26 -0
  46. package/images/flags/CF - Central African Republic.svg +27 -0
  47. package/images/flags/CG - Republic of the Congo.svg +26 -0
  48. package/images/flags/CH - Switzerland.svg +23 -0
  49. package/images/flags/CI - C/303/264te d'Ivoire (Ivory Coast).svg" +20 -0
  50. package/images/flags/CK - Cook Islands.svg +51 -0
  51. package/images/flags/CL - Chile.svg +25 -0
  52. package/images/flags/CM - Cameroon.svg +21 -0
  53. package/images/flags/CN - China.svg +25 -0
  54. package/images/flags/CO - Colombia.svg +24 -0
  55. package/images/flags/CR - Costa Rica.svg +23 -0
  56. package/images/flags/CU - Cuba.svg +33 -0
  57. package/images/flags/CV - Cabo Verde.svg +33 -0
  58. package/images/flags/CW - Cura/303/247ao.svg" +25 -0
  59. package/images/flags/CX - Christmas Island.svg +32 -0
  60. package/images/flags/CY - Cyprus.svg +28 -0
  61. package/images/flags/CZ - Czech Republic.svg +28 -0
  62. package/images/flags/DE - Germany.svg +20 -0
  63. package/images/flags/DJ - Djibouti.svg +29 -0
  64. package/images/flags/DK - Denmark.svg +25 -0
  65. package/images/flags/DM - Dominica.svg +36 -0
  66. package/images/flags/DO - Dominican Republic.svg +61 -0
  67. package/images/flags/DZ - Algeria.svg +22 -0
  68. package/images/flags/EC - Ecuador.svg +74 -0
  69. package/images/flags/EE - Estonia.svg +24 -0
  70. package/images/flags/EG - Egypt.svg +51 -0
  71. package/images/flags/EH - Western Sahara.svg +24 -0
  72. package/images/flags/ER - Eritrea.svg +21 -0
  73. package/images/flags/ES - Spain.svg +99 -0
  74. package/images/flags/ET - Ethiopia.svg +34 -0
  75. package/images/flags/EUROPE.svg +24 -0
  76. package/images/flags/FI - Finland.svg +27 -0
  77. package/images/flags/FJ - Fiji.svg +110 -0
  78. package/images/flags/FK - Falkland Islands.svg +71 -0
  79. package/images/flags/FM - Federated States of Micronesia.svg +30 -0
  80. package/images/flags/FO - Faroe Islands.svg +25 -0
  81. package/images/flags/FR - France.svg +20 -0
  82. package/images/flags/GA - Gabon.svg +20 -0
  83. package/images/flags/GB - England.svg +19 -0
  84. package/images/flags/GB-NIR_ - Northern Ireland.svg +44 -0
  85. package/images/flags/GB-SCT - Scotland.svg +27 -0
  86. package/images/flags/GB-UKM - United Kingdom.svg +44 -0
  87. package/images/flags/GB-WLS - Wales.svg +25 -0
  88. package/images/flags/GD - Grenada.svg +46 -0
  89. package/images/flags/GE - Georgia.svg +33 -0
  90. package/images/flags/GF - French Guiana.svg +20 -0
  91. package/images/flags/GG - Guernsey.svg +26 -0
  92. package/images/flags/GH - Ghana.svg +21 -0
  93. package/images/flags/GI - Gibraltar.svg +42 -0
  94. package/images/flags/GL - Greenland.svg +33 -0
  95. package/images/flags/GM - Gambia.svg +20 -0
  96. package/images/flags/GN - Guinea.svg +20 -0
  97. package/images/flags/GP - Guadeloupe-1.svg +61 -0
  98. package/images/flags/GP - Guadeloupe.svg +20 -0
  99. package/images/flags/GQ - Equatorial Guinea.svg +43 -0
  100. package/images/flags/GR - Greece.svg +23 -0
  101. package/images/flags/GS - S. Georgia and S. Sandwich Islands.svg +93 -0
  102. package/images/flags/GT - Guatemala.svg +34 -0
  103. package/images/flags/GU - Guam.svg +41 -0
  104. package/images/flags/GW - Guinea-Bissau.svg +21 -0
  105. package/images/flags/GY - Guyana.svg +22 -0
  106. package/images/flags/HK - Hong Kong.svg +33 -0
  107. package/images/flags/HM - Heard and McDonald Islands.svg +56 -0
  108. package/images/flags/HN - Honduras.svg +33 -0
  109. package/images/flags/HR - Croatia (Hrvatska).svg +80 -0
  110. package/images/flags/HT - Haiti.svg +72 -0
  111. package/images/flags/HU - Hungary.svg +24 -0
  112. package/images/flags/ID - Indonesia.svg +23 -0
  113. package/images/flags/IE - Ireland.svg +20 -0
  114. package/images/flags/IL - Isreal.svg +26 -0
  115. package/images/flags/IM - Isle of Man.svg +43 -0
  116. package/images/flags/IN - India.svg +30 -0
  117. package/images/flags/IO - British Indian Ocean Territory.svg +68 -0
  118. package/images/flags/IQ - Iraq.svg +29 -0
  119. package/images/flags/IR - Iran.svg +35 -0
  120. package/images/flags/IS - Iceland.svg +25 -0
  121. package/images/flags/IT - Italy.svg +20 -0
  122. package/images/flags/JE - Jersey.svg +37 -0
  123. package/images/flags/JM - Jamaica.svg +22 -0
  124. package/images/flags/JO - Jordan.svg +30 -0
  125. package/images/flags/JP - Japan.svg +23 -0
  126. package/images/flags/KG - Kyrgyzstan.svg +27 -0
  127. package/images/flags/KH - Cambodia.svg +88 -0
  128. package/images/flags/KI - Kiribati.svg +38 -0
  129. package/images/flags/KM - Comoros.svg +27 -0
  130. package/images/flags/KN - Kenia.svg +36 -0
  131. package/images/flags/KN-SK - Saint Kitts and Nevis.svg +28 -0
  132. package/images/flags/KP - Korea (North).svg +29 -0
  133. package/images/flags/KR - Korea (South).svg +38 -0
  134. package/images/flags/KW - Kuwait.svg +29 -0
  135. package/images/flags/KY - Cayman Islands.svg +82 -0
  136. package/images/flags/KZ - Kazakhstan.svg +82 -0
  137. package/images/flags/LA - Laos.svg +21 -0
  138. package/images/flags/LB - Lebanon.svg +22 -0
  139. package/images/flags/LC - Saint Lucia.svg +21 -0
  140. package/images/flags/LI - Liechtenstein.svg +32 -0
  141. package/images/flags/LK - Sri Lanka.svg +26 -0
  142. package/images/flags/LR - Liberia.svg +29 -0
  143. package/images/flags/LS - Lesotho.svg +23 -0
  144. package/images/flags/LT - Lithuania.svg +24 -0
  145. package/images/flags/LU - Luxembourg.svg +24 -0
  146. package/images/flags/LV - Latvia.svg +20 -0
  147. package/images/flags/LY - Libya.svg +23 -0
  148. package/images/flags/MA - Morocco.svg +23 -0
  149. package/images/flags/MC - Monaco.svg +23 -0
  150. package/images/flags/MD - Moldova.svg +47 -0
  151. package/images/flags/ME - Montenegro.svg +45 -0
  152. package/images/flags/MF - Saint Martin.svg +20 -0
  153. package/images/flags/MG - Madagascar.svg +20 -0
  154. package/images/flags/MH - Marshall Islands.svg +25 -0
  155. package/images/flags/MK - Former Yugoslav Republic of Macedonia.svg +24 -0
  156. package/images/flags/ML - Mali.svg +20 -0
  157. package/images/flags/MM - Myanmar.svg +23 -0
  158. package/images/flags/MN - Mongolia.svg +24 -0
  159. package/images/flags/MO - Macao.svg +46 -0
  160. package/images/flags/MP - Northern Mariana Islands.svg +33 -0
  161. package/images/flags/MQ - Martinique.svg +20 -0
  162. package/images/flags/MQ-UNF - Martinique.svg +10 -0
  163. package/images/flags/MR - Mauritania.svg +30 -0
  164. package/images/flags/MS - Montserrat.svg +71 -0
  165. package/images/flags/MT - Malta.svg +26 -0
  166. package/images/flags/MU - Mauritius.svg +25 -0
  167. package/images/flags/MV - Maldives.svg +25 -0
  168. package/images/flags/MW - Malawi.svg +29 -0
  169. package/images/flags/MX - Mexico.svg +31 -0
  170. package/images/flags/MY - Malaysia.svg +28 -0
  171. package/images/flags/MZ - Mozambique.svg +40 -0
  172. package/images/flags/NA - Namibia.svg +29 -0
  173. package/images/flags/NC - New Caledonia.svg +20 -0
  174. package/images/flags/NE - Niger.svg +25 -0
  175. package/images/flags/NF - Norfolk Island.svg +23 -0
  176. package/images/flags/NG - Nigeria.svg +20 -0
  177. package/images/flags/NI - Nicaragua.svg +45 -0
  178. package/images/flags/NL - Netherlands.svg +24 -0
  179. package/images/flags/NO - Norway.svg +25 -0
  180. package/images/flags/NP - Nepal.svg +21 -0
  181. package/images/flags/NR - Nauru.svg +28 -0
  182. package/images/flags/NU - Niue.svg +58 -0
  183. package/images/flags/NZ - New Zealand (Aotearoa).svg +51 -0
  184. package/images/flags/OM - Oman.svg +28 -0
  185. package/images/flags/PA - Panama.svg +26 -0
  186. package/images/flags/PE - Peru.svg +51 -0
  187. package/images/flags/PF - French Polynesia.svg +61 -0
  188. package/images/flags/PG - Papua New Guinea.svg +27 -0
  189. package/images/flags/PH - Philippines.svg +33 -0
  190. package/images/flags/PK - Pakistan.svg +22 -0
  191. package/images/flags/PL - Poland.svg +23 -0
  192. package/images/flags/PM - Saint Pierre and Miquelon.svg +20 -0
  193. package/images/flags/PM-UNF - St. Pierre & Miquelon.svg +29 -0
  194. package/images/flags/PN - Pitcairn Islands.svg +88 -0
  195. package/images/flags/PR - Puerto Rico.svg +33 -0
  196. package/images/flags/PS - Palestinian Territory.svg +21 -0
  197. package/images/flags/PT - Portugal.svg +150 -0
  198. package/images/flags/PW - Palau.svg +23 -0
  199. package/images/flags/PY - Paraguay.svg +34 -0
  200. package/images/flags/QA - Qatar.svg +19 -0
  201. package/images/flags/RAINBOW.svg +28 -0
  202. package/images/flags/RE - Reunion.svg +20 -0
  203. package/images/flags/RO - Romania.svg +20 -0
  204. package/images/flags/RS - Serbia.svg +57 -0
  205. package/images/flags/RU - Russian Federation.svg +24 -0
  206. package/images/flags/RW - Rwanda.svg +29 -0
  207. package/images/flags/SA - Saudi Arabia.svg +22 -0
  208. package/images/flags/SB - Solomon Islands.svg +30 -0
  209. package/images/flags/SC - Seychelles.svg +26 -0
  210. package/images/flags/SD - Sudan.svg +21 -0
  211. package/images/flags/SE - Sweden.svg +25 -0
  212. package/images/flags/SG - Singapore.svg +24 -0
  213. package/images/flags/SH - Saint Helena.svg +127 -0
  214. package/images/flags/SI - Slovenia.svg +34 -0
  215. package/images/flags/SJ - Svalbard and Jan Mayen.svg +25 -0
  216. package/images/flags/SK - Slovakia.svg +35 -0
  217. package/images/flags/SL - Slovenia.svg +24 -0
  218. package/images/flags/SM - San Marino.svg +57 -0
  219. package/images/flags/SN - Senegal.svg +21 -0
  220. package/images/flags/SO - Somalia.svg +21 -0
  221. package/images/flags/SR - Suriname.svg +21 -0
  222. package/images/flags/SS - South Sudan.svg +23 -0
  223. package/images/flags/ST - Sao Tome and Principe.svg +23 -0
  224. package/images/flags/SV - El Salvador.svg +34 -0
  225. package/images/flags/SX - Sint Maarten.svg +45 -0
  226. package/images/flags/SY - Syria.svg +22 -0
  227. package/images/flags/SZ - Swaziland.svg +47 -0
  228. package/images/flags/TC - Turks and Caicos Islands.svg +57 -0
  229. package/images/flags/TD - Chad.svg +20 -0
  230. package/images/flags/TF - French Southern and Antarctic Lands.svg +37 -0
  231. package/images/flags/TG - Togo.svg +22 -0
  232. package/images/flags/TH - Thailand.svg +20 -0
  233. package/images/flags/TJ - Tajikistan.svg +24 -0
  234. package/images/flags/TK - Tokelau.svg +27 -0
  235. package/images/flags/TL - Timor-Leste.svg +21 -0
  236. package/images/flags/TM - Turkmenistan.svg +121 -0
  237. package/images/flags/TN - Tunisia.svg +24 -0
  238. package/images/flags/TO - Tonga.svg +24 -0
  239. package/images/flags/TR - Turkey.svg +23 -0
  240. package/images/flags/TT - Trinidad and Tobago.svg +23 -0
  241. package/images/flags/TV - Tuvalu.svg +51 -0
  242. package/images/flags/TW - Taiwan.svg +26 -0
  243. package/images/flags/TZ - Tanzania.svg +24 -0
  244. package/images/flags/UA - Ukraine.svg +23 -0
  245. package/images/flags/UG - Uganda.svg +38 -0
  246. package/images/flags/UM - United States Minor Outlying Islands.svg +27 -0
  247. package/images/flags/US - United States.svg +27 -0
  248. package/images/flags/UY - Uruguay.svg +41 -0
  249. package/images/flags/UZ - Uzbekistan.svg +25 -0
  250. package/images/flags/Union of South American nations.svg +21 -0
  251. package/images/flags/VA - Vatican City State.svg +37 -0
  252. package/images/flags/VC - Saint Vincent and the Grenadines.svg +23 -0
  253. package/images/flags/VE - Venezuela.svg +31 -0
  254. package/images/flags/VG - Virgin Islands (British).svg +63 -0
  255. package/images/flags/VI - Virgin Islands (U.S.).svg +38 -0
  256. package/images/flags/VN - Vietnam.svg +28 -0
  257. package/images/flags/VU - Vanuatu.svg +29 -0
  258. package/images/flags/WF - Wallis and Futuna.svg +20 -0
  259. package/images/flags/WS - Samoa.svg +30 -0
  260. package/images/flags/XK - Kosovo.svg +20 -0
  261. package/images/flags/YE - Yemen.svg +24 -0
  262. package/images/flags/ZA - South Africa.svg +24 -0
  263. package/images/flags/ZM - Zambia.svg +31 -0
  264. package/images/flags/ZW - Zimbabwe.svg +37 -0
  265. package/netstack.js +195 -156
  266. package/package.json +8 -6
  267. package/images/flags/Denmark-flag.png +0 -0
  268. package/images/flags/Germany-flag.png +0 -0
  269. package/images/flags/Russia-flag.png +0 -0
  270. package/images/flags/USA-flag.png +0 -0
package/netstack.js CHANGED
@@ -1,57 +1,38 @@
1
1
  /*!
2
- * netStack v1.1.2
3
- * A simple and easy jQuery plugin for highlighting .NET stack traces
4
- * License : Apache 2
5
- * Author : https://elmah.io
2
+ * netStack v2.0.0
3
+ * A simple and easy JavaScript library for highlighting .NET stack traces
4
+ * License: Apache 2
5
+ * Author: https://elmah.io
6
6
  */
7
- (function($) {
8
- 'use strict';
9
7
 
10
- $.fn.netStack = function(options) {
11
-
12
- var self = this;
13
-
14
- function search(nameKey, myArray){
15
- for (var i=0; i < myArray.length; i++) {
16
- if (myArray[i].name === nameKey) {
17
- return myArray[i];
18
- }
19
- }
20
- }
21
-
22
- function replacer(args, at_language) {
23
- if(args[0].substr(0).match(/(-{3})/)) {
24
- return '\r\n\ ' + args[0];
8
+ (function(root, factory) {
9
+ if (typeof define === 'function' && define.amd) {
10
+ // AMD
11
+ define([], factory);
12
+ } else if (typeof module === 'object' && module.exports) {
13
+ // Node, CommonJS-like
14
+ module.exports = factory();
15
+ } else {
16
+ // Browser globals (root is window)
17
+ root.netStack = factory();
18
+ }
19
+ }(typeof self !== 'undefined' ? self : this, function() {
20
+
21
+ function netStack(element, options) {
22
+ if (typeof document !== 'undefined') {
23
+ if (typeof element === 'string') {
24
+ this.element = document.querySelector(element);
25
+ } else if (element instanceof HTMLElement) {
26
+ this.element = element;
25
27
  } else {
26
- return '\r\n\ ' + at_language + ' ' + args[2] + '(' + args[3] + ')';
28
+ throw new Error('The element parameter must be a selector string or an HTMLElement.');
27
29
  }
30
+ } else {
31
+ throw new Error('netStack requires a DOM environment');
28
32
  }
29
-
30
- function formatException(exceptionMessage, at_language){
31
- var result = exceptionMessage || '';
32
- var searchReplaces = [
33
- {
34
- find: /(-{3}\s)(.*?)(-{3})/gm,
35
- repl: null
36
- },
37
- {
38
- find: new RegExp('(\\s)'+at_language+' ([^-:]*?)\\((.*?)\\)', 'g'),
39
- repl: null
40
- }
41
- ]
42
- searchReplaces.forEach(function(item){
43
- if(item.repl == null) {
44
- result = result.replace(item.find, function(){ return replacer(arguments, at_language); });
45
- } else {
46
- result = result.replace(item.find, item.repl);
47
- }
48
- });
49
- return result;
50
- };
51
-
52
- var settings = $.extend({
53
-
54
- // Default values for classes
33
+
34
+ // Default values for classes
35
+ this.settings = extend({
55
36
  prettyprint: false,
56
37
  frame: 'st-frame',
57
38
  type: 'st-type',
@@ -61,158 +42,216 @@
61
42
  paramName: 'st-param-name',
62
43
  file: 'st-file',
63
44
  line: 'st-line'
64
-
65
45
  }, options);
66
46
 
67
- var languages = [
47
+ this.languages = [
68
48
  { name: 'english', at: 'at', in: 'in', line: 'line' },
69
49
  { name: 'danish', at: 'ved', in: 'i', line: 'linje' },
70
50
  { name: 'german', at: 'bei', in: 'in', line: 'Zeile' },
71
- { name: 'russian', at: 'в', in: 'в', line: 'строка' }
51
+ { name: 'russian', at: 'в', in: 'в', line: 'строка' },
52
+ { name: 'chinese', at: '在', in: '位置', line: '行号' }
72
53
  ];
73
54
 
74
- return this.each(function() {
75
-
76
- // Get the stacktrace, sanitize it, and split it into lines
77
-
78
- var stacktrace = $(this).text(),
79
- sanitizedStack = stacktrace.replace(/</g, '&lt;').replace(/>/g, '&gt;'),
80
- lines = sanitizedStack.split('\n'),
81
- lang = '',
82
- clone = '';
83
-
84
- // search for language
85
- for (var i = 0, j = lines.length; i < j; ++i) {
86
- if(lang === '') {
87
- var line = lines[i];
88
- var english = new RegExp('(\\s+)at .*\\)'),
89
- danish = new RegExp('(\\s+)ved .*\\)'),
90
- german = new RegExp('(\\s+)bei .*\\)'),
91
- russian = new RegExp('(\\s+)в .*\\)');
92
-
93
- if(english.test(lines[i])) {
94
- lang = 'english';
95
- } else if (danish.test(lines[i])) {
96
- lang = 'danish';
97
- } else if (german.test(lines[i])) {
98
- lang = 'german';
99
- } else if (russian.test(lines[i])) {
100
- lang = 'russian';
101
- }
55
+ this.init();
56
+ }
57
+
58
+ function extend() {
59
+ for (var i = 1; i < arguments.length; i++) {
60
+ for (var key in arguments[i]) {
61
+ if (arguments[i].hasOwnProperty(key)) {
62
+ arguments[0][key] = arguments[i][key];
102
63
  }
103
64
  }
65
+ }
66
+ return arguments[0];
67
+ }
104
68
 
105
- if (lang === '') return;
69
+ netStack.prototype.search = function(nameKey, myArray) {
70
+ for (var i = 0; i < myArray.length; i++) {
71
+ if (myArray[i].name === nameKey) {
72
+ return myArray[i];
73
+ }
74
+ }
75
+ return null;
76
+ };
106
77
 
107
- var selectedLanguage = search(lang, languages);
78
+ netStack.prototype.replacer = function(args, at_language) {
79
+ if (args[0].substring(0).match(/(-{3}&gt;)/)) {
80
+ return '\r\n ' + args[0];
81
+ } else if (args[0].substring(0).match(/(-{3})/)) {
82
+ return '\r\n ' + args[0];
83
+ } else {
84
+ return '\r\n ' + at_language + ' ' + args[2] + '(' + args[3] + ')';
85
+ }
86
+ };
87
+
88
+ netStack.prototype.formatException = function(exceptionMessage, at_language) {
89
+ var result = exceptionMessage || '';
90
+ var searchReplaces = [
91
+ {
92
+ find: new RegExp('(-{3}&gt;\\s)(.*?)(?=\\s-{3}|(\\s)+' + at_language + ')', 'g'),
93
+ repl: null
94
+ },
95
+ {
96
+ find: /(-{3}\s)(.*?)(-{3})/gm,
97
+ repl: null
98
+ },
99
+ {
100
+ find: new RegExp('(\\s)' + at_language + ' ([^-:]*?)\\((.*?)\\)', 'g'),
101
+ repl: null
102
+ }
103
+ ];
104
+
105
+ var self = this;
106
+ searchReplaces.forEach(function(item) {
107
+ if (item.repl == null) {
108
+ result = result.replace(item.find, function() {
109
+ return self.replacer(arguments, at_language);
110
+ });
111
+ } else {
112
+ result = result.replace(item.find, item.repl);
113
+ }
114
+ });
115
+ return result;
116
+ };
108
117
 
109
- // Pritty print result if is set to true
110
- if (settings.prettyprint) {
111
- sanitizedStack = formatException(sanitizedStack, selectedLanguage['at']);
112
- lines = sanitizedStack.split('\n');
118
+ netStack.prototype.init = function() {
119
+ // Get the stacktrace, sanitize it, and split it into lines
120
+ var stacktrace = this.element.textContent,
121
+ sanitizedStack = stacktrace.replace(/</g, '&lt;').replace(/>/g, '&gt;'),
122
+ lines = sanitizedStack.split('\n'),
123
+ lang = '',
124
+ clone = '';
125
+
126
+ // look for the language
127
+ for (var i = 0; i < lines.length; ++i) {
128
+ if (lang === '') {
129
+ var regexes = {
130
+ english: /\s+at .*\)/,
131
+ danish: /\s+ved .*\)/,
132
+ german: /\s+bei .*\)/,
133
+ russian: /\s+в .*\)/,
134
+ chinese: /\s+在 .*\)/
135
+ };
136
+
137
+ for (var key in regexes) {
138
+ if (regexes[key].test(lines[i])) {
139
+ lang = key;
140
+ break;
141
+ }
142
+ }
113
143
  }
144
+ }
114
145
 
115
- for (var i = 0, j = lines.length; i < j; ++i) {
146
+ if (lang === '') return;
116
147
 
117
- var li = lines[i],
118
- hli = new RegExp('(\\S*)'+selectedLanguage['at']+' .*\\)');
148
+ var selectedLanguage = this.search(lang, this.languages);
149
+ this.language = selectedLanguage.name;
119
150
 
151
+ // Pritty print result if is set to true
152
+ if (this.settings.prettyprint) {
153
+ sanitizedStack = this.formatException(sanitizedStack, selectedLanguage.at);
154
+ lines = sanitizedStack.split('\n');
155
+ }
120
156
 
121
- if (hli.test(lines[i])) {
157
+ for (var i = 0; i < lines.length; ++i) {
158
+ var li = lines[i],
159
+ hli = new RegExp('(\\S*)' + selectedLanguage.at + ' .*\\)');
122
160
 
123
- // Frame
124
- var regFrame = new RegExp('(\\S*)'+selectedLanguage['at']+' .*?\\)'),
125
- partsFrame = String(regFrame.exec(lines[i]));
161
+ if (hli.test(lines[i])) {
162
+
163
+ // Frame
164
+ var regFrame = new RegExp('(\\S*)' + selectedLanguage.at + ' .*?\\)'),
165
+ partsFrame = String(regFrame.exec(lines[i]));
126
166
 
127
- if(partsFrame.substr(partsFrame.length - 1) == ',') {
128
- partsFrame = partsFrame.slice(0, -1);
129
- }
167
+ if (partsFrame.substring(partsFrame.length - 1) == ',') {
168
+ partsFrame = partsFrame.slice(0, -1);
169
+ }
130
170
 
131
- partsFrame = partsFrame.replace(selectedLanguage['at']+' ', '');
171
+ partsFrame = partsFrame.replace(selectedLanguage.at + ' ', '');
132
172
 
133
- // Frame -> ParameterList
134
- var regParamList = new RegExp('\\(.*\\)'),
135
- partsParamList = String(regParamList.exec(lines[i]));
173
+ // Frame -> ParameterList
174
+ var regParamList = /\(.*\)/,
175
+ partsParamList = String(regParamList.exec(lines[i]));
136
176
 
137
- // Frame -> Params
138
- var partsParams = partsParamList.replace('(', '').replace(')', ''),
139
- arrParams = partsParams.split(', '),
140
- stringParam = '';
177
+ // Frame -> Params
178
+ var partsParams = partsParamList.replace('(', '').replace(')', ''),
179
+ arrParams = partsParams.split(', '),
180
+ stringParam = '';
141
181
 
142
- for (var x = 0, y = arrParams.length; x < y; ++x) {
143
- var theParam = '',
144
- param = arrParams[x].split(' '),
145
- paramType = param[0],
146
- paramName = param[1];
182
+ for (var x = 0; x < arrParams.length; ++x) {
183
+ var param = arrParams[x].split(' '),
184
+ paramType = param[0],
185
+ paramName = param[1];
147
186
 
148
- if (param[0] !== "null" && param[0] !== '') {
149
- theParam = '<span class="' + settings.paramType + '">' + paramType + '</span>' + ' ' + '<span class="' + settings.paramName + '">' + paramName + '</span>';
150
- stringParam += String(theParam) + ', ';
151
- }
187
+ if (param[0] !== "null" && param[0] !== '') {
188
+ var theParam = '<span class="' + this.settings.paramType + '">' + paramType + '</span>' + ' ' + '<span class="' + this.settings.paramName + '">' + paramName + '</span>';
189
+ stringParam += String(theParam) + ', ';
152
190
  }
191
+ }
153
192
 
154
- stringParam = stringParam.replace(/,\s*$/, "");
155
- stringParam = '<span class="' + settings.paramsList + '">' + '(' + stringParam + ')' + '</span>';
193
+ stringParam = stringParam.replace(/,\s*$/, "");
194
+ stringParam = '<span class="' + this.settings.paramsList + '">' + '(' + stringParam + ')' + '</span>';
156
195
 
157
- // Frame -> Type & Method
158
- var partsTypeMethod = partsFrame.replace(partsParamList, ''),
159
- arrTypeMethod = partsTypeMethod.split('.'),
160
- method = arrTypeMethod.pop(),
161
- type = partsTypeMethod.replace('.' + method, ''),
162
- stringTypeMethod = '<span class="' + settings.type + '">' + type + '</span>.' + '<span class="' + settings.method + '">' + method + '</span>';
196
+ // Frame -> Type & Method
197
+ var partsTypeMethod = partsFrame.replace(partsParamList, ''),
198
+ arrTypeMethod = partsTypeMethod.split('.'),
199
+ method = arrTypeMethod.pop(),
200
+ type = partsTypeMethod.replace('.' + method, ''),
201
+ stringTypeMethod = '<span class="' + this.settings.type + '">' + type + '</span>.' + '<span class="' + this.settings.method + '">' + method + '</span>';
163
202
 
164
- // Construct Frame
165
- var newPartsFrame = partsFrame.replace(partsParamList, stringParam).replace(partsTypeMethod, stringTypeMethod);
203
+ // Construct Frame
204
+ var newPartsFrame = partsFrame.replace(partsParamList, stringParam).replace(partsTypeMethod, stringTypeMethod);
166
205
 
167
- // Line
168
- var regLine = new RegExp('\\b:'+selectedLanguage['line']+'.*'),
169
- partsLine = String(regLine.exec(lines[i]));
170
- partsLine = partsLine.replace(':', '').trim();
206
+ // Line
207
+ var regLine = new RegExp('\\b:' + selectedLanguage.line + ' \\d+'),
208
+ partsLine = String(regLine.exec(lines[i]));
171
209
 
172
- var fileLi = li.replace(selectedLanguage['at'] + " " + partsFrame, '').trim();
210
+ partsLine = partsLine.replace(':', '').trim();
173
211
 
174
- // File => (!) text requires multiline to exec regex, otherwise it will return null.
175
- var regFile = new RegExp(selectedLanguage['in']+'\\s.*$', 'm'),
176
- partsFile = String(regFile.exec(fileLi));
212
+ var fileLi = li.replace(selectedLanguage.at + " " + partsFrame, '').trim();
177
213
 
178
- partsFile = partsFile.replace(selectedLanguage['in']+' ', '').replace(':' + partsLine, '');
214
+ // File => (!) text requires multiline to exec regex, otherwise it will return null.
215
+ var regFile = new RegExp(selectedLanguage.in + '\\s.*$', 'm'),
216
+ partsFile = String(regFile.exec(fileLi));
179
217
 
180
- li = li.replace(partsFrame, '<span class="' + settings.frame + '">' + newPartsFrame + '</span>')
181
- .replace(partsFile, '<span class="' + settings.file + '">' + partsFile + '</span>')
182
- .replace(partsLine, '<span class="' + settings.line + '">' + partsLine + '</span>');
218
+ partsFile = partsFile.replace(selectedLanguage.in + ' ', '').replace(':' + partsLine, '').replace('&lt;---', '');
183
219
 
184
- li = li.replace(/&lt;/g, '<span>&lt;</span>').replace(/&gt;/g, '<span>&gt;</span>');
220
+ li = li.replace(partsFrame, '<span class="' + this.settings.frame + '">' + newPartsFrame + '</span>')
221
+ .replace(partsFile, '<span class="' + this.settings.file + '">' + partsFile + '</span>')
222
+ .replace(partsLine, '<span class="' + this.settings.line + '">' + partsLine + '</span>');
223
+
224
+ li = li.replace(/&lt;/g, '<span>&lt;</span>').replace(/&gt;/g, '<span>&gt;</span>');
225
+
226
+ if (lines.length - 1 == i) {
227
+ clone += li;
228
+ } else {
229
+ clone += li + '\n';
230
+ }
231
+ } else {
232
+ if ((lines[i].trim()).length) {
233
+ li = lines[i];
185
234
 
186
235
  if (lines.length - 1 == i) {
187
236
  clone += li;
188
237
  } else {
189
238
  clone += li + '\n';
190
239
  }
191
- } else {
192
- if((lines[i].trim()).length) {
193
- li = lines[i];
194
-
195
- if (lines.length - 1 == i) {
196
- clone += li;
197
- } else {
198
- clone += li + '\n';
199
- }
200
- }
201
240
  }
202
241
  }
242
+ }
203
243
 
204
- self.getJSON = function () {
205
- return JSON.stringify(clone);
206
- }
207
-
208
- self.getLanguage = function () {
209
- return selectedLanguage ? selectedLanguage.name : null;
210
- }
211
-
212
- return $(this).html(clone);
244
+ this.element.innerHTML = clone;
245
+ };
213
246
 
214
- });
247
+ netStack.prototype.getJSON = function() {
248
+ return JSON.stringify(this.element.innerHTML);
249
+ };
215
250
 
251
+ netStack.prototype.getLanguage = function() {
252
+ return this.language;
216
253
  };
217
254
 
218
- }(jQuery));
255
+ return netStack;
256
+
257
+ }));
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "netstack.js",
3
- "version": "1.1.2",
4
- "description": "A simple and easy jQuery plugin for highlighting .NET stack traces",
3
+ "version": "2.0.0",
4
+ "description": "A simple and easy JavaScript library for highlighting .NET stack traces",
5
5
  "main": "netstack.js",
6
6
  "scripts": {
7
7
  "test": "mocha"
@@ -20,15 +20,17 @@
20
20
  ".NET",
21
21
  "stacktrace",
22
22
  "formatter",
23
- "jQuery",
24
- "plugin",
23
+ "JavaScript",
24
+ "library",
25
25
  "elmah.io"
26
26
  ],
27
27
  "devDependencies": {
28
28
  "assert": "^2.0.0",
29
29
  "chai": "^4.3.4",
30
- "jquery": "^3.6.0",
31
30
  "jsdom": "^17.0.0",
32
31
  "mocha": "^9.1.2"
32
+ },
33
+ "dependencies": {
34
+ "gulp": "^5.0.0"
33
35
  }
34
- }
36
+ }
Binary file
Binary file
Binary file
Binary file