logster 0.0.1

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 (245) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/Gemfile +4 -0
  4. data/Guardfile +8 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +38 -0
  7. data/Rakefile +18 -0
  8. data/assets/javascript/app.js +377 -0
  9. data/assets/javascript/external/ember.js +44267 -0
  10. data/assets/javascript/external/ember.min.js +19 -0
  11. data/assets/javascript/external/handlebars.min.js +28 -0
  12. data/assets/javascript/external/jquery.min.js +5 -0
  13. data/assets/javascript/external/lodash.min.js +56 -0
  14. data/assets/javascript/external/moment.min.js +6 -0
  15. data/assets/javascript/templates/application.handlebars +1 -0
  16. data/assets/javascript/templates/index.handlebars +48 -0
  17. data/assets/javascript/templates/message.handlebars +7 -0
  18. data/assets/stylesheets/app.css +188 -0
  19. data/bower_components/ember/.bower.json +22 -0
  20. data/bower_components/ember/.gitignore +5 -0
  21. data/bower_components/ember/Makefile +9 -0
  22. data/bower_components/ember/README.md +12 -0
  23. data/bower_components/ember/bower.json +11 -0
  24. data/bower_components/ember/component.json +13 -0
  25. data/bower_components/ember/composer.json +27 -0
  26. data/bower_components/ember/ember-template-compiler.js +320 -0
  27. data/bower_components/ember/ember.js +44267 -0
  28. data/bower_components/ember/ember.min.js +19 -0
  29. data/bower_components/ember/ember.prod.js +42649 -0
  30. data/bower_components/ember/package.json +11 -0
  31. data/bower_components/handlebars/.bower.json +16 -0
  32. data/bower_components/handlebars/.gitignore +2 -0
  33. data/bower_components/handlebars/README.md +11 -0
  34. data/bower_components/handlebars/bower.json +6 -0
  35. data/bower_components/handlebars/component.json +9 -0
  36. data/bower_components/handlebars/composer.json +35 -0
  37. data/bower_components/handlebars/handlebars-source.gemspec +21 -0
  38. data/bower_components/handlebars/handlebars.amd.js +2719 -0
  39. data/bower_components/handlebars/handlebars.amd.min.js +28 -0
  40. data/bower_components/handlebars/handlebars.js +2746 -0
  41. data/bower_components/handlebars/handlebars.js.nuspec +17 -0
  42. data/bower_components/handlebars/handlebars.min.js +28 -0
  43. data/bower_components/handlebars/handlebars.runtime.amd.js +515 -0
  44. data/bower_components/handlebars/handlebars.runtime.amd.min.js +27 -0
  45. data/bower_components/handlebars/handlebars.runtime.js +530 -0
  46. data/bower_components/handlebars/handlebars.runtime.min.js +27 -0
  47. data/bower_components/handlebars/lib/handlebars/source.rb +11 -0
  48. data/bower_components/jquery/.bower.json +37 -0
  49. data/bower_components/jquery/MIT-LICENSE.txt +21 -0
  50. data/bower_components/jquery/bower.json +27 -0
  51. data/bower_components/jquery/dist/jquery.js +9111 -0
  52. data/bower_components/jquery/dist/jquery.min.js +5 -0
  53. data/bower_components/jquery/dist/jquery.min.map +1 -0
  54. data/bower_components/jquery/src/ajax.js +806 -0
  55. data/bower_components/jquery/src/ajax/jsonp.js +89 -0
  56. data/bower_components/jquery/src/ajax/load.js +75 -0
  57. data/bower_components/jquery/src/ajax/parseJSON.js +13 -0
  58. data/bower_components/jquery/src/ajax/parseXML.js +28 -0
  59. data/bower_components/jquery/src/ajax/script.js +64 -0
  60. data/bower_components/jquery/src/ajax/var/nonce.js +5 -0
  61. data/bower_components/jquery/src/ajax/var/rquery.js +3 -0
  62. data/bower_components/jquery/src/ajax/xhr.js +130 -0
  63. data/bower_components/jquery/src/attributes.js +11 -0
  64. data/bower_components/jquery/src/attributes/attr.js +143 -0
  65. data/bower_components/jquery/src/attributes/classes.js +158 -0
  66. data/bower_components/jquery/src/attributes/prop.js +96 -0
  67. data/bower_components/jquery/src/attributes/support.js +35 -0
  68. data/bower_components/jquery/src/attributes/val.js +153 -0
  69. data/bower_components/jquery/src/callbacks.js +205 -0
  70. data/bower_components/jquery/src/core.js +500 -0
  71. data/bower_components/jquery/src/core/access.js +60 -0
  72. data/bower_components/jquery/src/core/init.js +123 -0
  73. data/bower_components/jquery/src/core/parseHTML.js +39 -0
  74. data/bower_components/jquery/src/core/ready.js +96 -0
  75. data/bower_components/jquery/src/core/var/rsingleTag.js +4 -0
  76. data/bower_components/jquery/src/css.js +455 -0
  77. data/bower_components/jquery/src/css/addGetHookIf.js +24 -0
  78. data/bower_components/jquery/src/css/curCSS.js +57 -0
  79. data/bower_components/jquery/src/css/defaultDisplay.js +69 -0
  80. data/bower_components/jquery/src/css/hiddenVisibleSelectors.js +15 -0
  81. data/bower_components/jquery/src/css/support.js +83 -0
  82. data/bower_components/jquery/src/css/swap.js +28 -0
  83. data/bower_components/jquery/src/css/var/cssExpand.js +3 -0
  84. data/bower_components/jquery/src/css/var/getStyles.js +5 -0
  85. data/bower_components/jquery/src/css/var/isHidden.js +13 -0
  86. data/bower_components/jquery/src/css/var/rmargin.js +3 -0
  87. data/bower_components/jquery/src/css/var/rnumnonpx.js +5 -0
  88. data/bower_components/jquery/src/data.js +175 -0
  89. data/bower_components/jquery/src/data/Data.js +181 -0
  90. data/bower_components/jquery/src/data/accepts.js +20 -0
  91. data/bower_components/jquery/src/data/var/data_priv.js +5 -0
  92. data/bower_components/jquery/src/data/var/data_user.js +5 -0
  93. data/bower_components/jquery/src/deferred.js +149 -0
  94. data/bower_components/jquery/src/deprecated.js +13 -0
  95. data/bower_components/jquery/src/dimensions.js +50 -0
  96. data/bower_components/jquery/src/effects.js +642 -0
  97. data/bower_components/jquery/src/effects/Tween.js +114 -0
  98. data/bower_components/jquery/src/effects/animatedSelector.js +13 -0
  99. data/bower_components/jquery/src/event.js +859 -0
  100. data/bower_components/jquery/src/event/alias.js +39 -0
  101. data/bower_components/jquery/src/event/support.js +9 -0
  102. data/bower_components/jquery/src/exports/amd.js +18 -0
  103. data/bower_components/jquery/src/exports/global.js +32 -0
  104. data/bower_components/jquery/src/intro.js +44 -0
  105. data/bower_components/jquery/src/jquery.js +36 -0
  106. data/bower_components/jquery/src/manipulation.js +583 -0
  107. data/bower_components/jquery/src/manipulation/_evalUrl.js +18 -0
  108. data/bower_components/jquery/src/manipulation/support.js +24 -0
  109. data/bower_components/jquery/src/manipulation/var/rcheckableType.js +3 -0
  110. data/bower_components/jquery/src/offset.js +204 -0
  111. data/bower_components/jquery/src/outro.js +1 -0
  112. data/bower_components/jquery/src/queue.js +142 -0
  113. data/bower_components/jquery/src/queue/delay.js +22 -0
  114. data/bower_components/jquery/src/selector-native.js +171 -0
  115. data/bower_components/jquery/src/selector-sizzle.js +14 -0
  116. data/bower_components/jquery/src/selector.js +1 -0
  117. data/bower_components/jquery/src/serialize.js +111 -0
  118. data/bower_components/jquery/src/sizzle/dist/sizzle.js +2015 -0
  119. data/bower_components/jquery/src/sizzle/dist/sizzle.min.js +3 -0
  120. data/bower_components/jquery/src/sizzle/dist/sizzle.min.map +1 -0
  121. data/bower_components/jquery/src/traversing.js +200 -0
  122. data/bower_components/jquery/src/traversing/findFilter.js +100 -0
  123. data/bower_components/jquery/src/traversing/var/rneedsContext.js +6 -0
  124. data/bower_components/jquery/src/var/arr.js +3 -0
  125. data/bower_components/jquery/src/var/class2type.js +4 -0
  126. data/bower_components/jquery/src/var/concat.js +5 -0
  127. data/bower_components/jquery/src/var/hasOwn.js +5 -0
  128. data/bower_components/jquery/src/var/indexOf.js +5 -0
  129. data/bower_components/jquery/src/var/pnum.js +3 -0
  130. data/bower_components/jquery/src/var/push.js +5 -0
  131. data/bower_components/jquery/src/var/rnotwhite.js +3 -0
  132. data/bower_components/jquery/src/var/slice.js +5 -0
  133. data/bower_components/jquery/src/var/strundefined.js +3 -0
  134. data/bower_components/jquery/src/var/support.js +4 -0
  135. data/bower_components/jquery/src/var/toString.js +5 -0
  136. data/bower_components/jquery/src/var/trim.js +3 -0
  137. data/bower_components/jquery/src/wrap.js +78 -0
  138. data/bower_components/lodash/.bower.json +34 -0
  139. data/bower_components/lodash/LICENSE.txt +22 -0
  140. data/bower_components/lodash/bower.json +23 -0
  141. data/bower_components/lodash/dist/lodash.compat.js +7157 -0
  142. data/bower_components/lodash/dist/lodash.compat.min.js +61 -0
  143. data/bower_components/lodash/dist/lodash.js +6785 -0
  144. data/bower_components/lodash/dist/lodash.min.js +56 -0
  145. data/bower_components/lodash/dist/lodash.underscore.js +4979 -0
  146. data/bower_components/lodash/dist/lodash.underscore.min.js +39 -0
  147. data/bower_components/moment/.bower.json +31 -0
  148. data/bower_components/moment/LICENSE +22 -0
  149. data/bower_components/moment/bower.json +20 -0
  150. data/bower_components/moment/lang/ar-ma.js +56 -0
  151. data/bower_components/moment/lang/ar.js +56 -0
  152. data/bower_components/moment/lang/bg.js +86 -0
  153. data/bower_components/moment/lang/br.js +107 -0
  154. data/bower_components/moment/lang/bs.js +139 -0
  155. data/bower_components/moment/lang/ca.js +66 -0
  156. data/bower_components/moment/lang/cs.js +155 -0
  157. data/bower_components/moment/lang/cv.js +59 -0
  158. data/bower_components/moment/lang/cy.js +77 -0
  159. data/bower_components/moment/lang/da.js +56 -0
  160. data/bower_components/moment/lang/de.js +71 -0
  161. data/bower_components/moment/lang/el.js +79 -0
  162. data/bower_components/moment/lang/en-au.js +62 -0
  163. data/bower_components/moment/lang/en-ca.js +59 -0
  164. data/bower_components/moment/lang/en-gb.js +63 -0
  165. data/bower_components/moment/lang/eo.js +65 -0
  166. data/bower_components/moment/lang/es.js +75 -0
  167. data/bower_components/moment/lang/et.js +76 -0
  168. data/bower_components/moment/lang/eu.js +60 -0
  169. data/bower_components/moment/lang/fa.js +97 -0
  170. data/bower_components/moment/lang/fi.js +103 -0
  171. data/bower_components/moment/lang/fo.js +56 -0
  172. data/bower_components/moment/lang/fr-ca.js +54 -0
  173. data/bower_components/moment/lang/fr.js +58 -0
  174. data/bower_components/moment/lang/gl.js +71 -0
  175. data/bower_components/moment/lang/he.js +77 -0
  176. data/bower_components/moment/lang/hi.js +105 -0
  177. data/bower_components/moment/lang/hr.js +140 -0
  178. data/bower_components/moment/lang/hu.js +105 -0
  179. data/bower_components/moment/lang/hy-am.js +113 -0
  180. data/bower_components/moment/lang/id.js +67 -0
  181. data/bower_components/moment/lang/is.js +124 -0
  182. data/bower_components/moment/lang/it.js +59 -0
  183. data/bower_components/moment/lang/ja.js +58 -0
  184. data/bower_components/moment/lang/ka.js +108 -0
  185. data/bower_components/moment/lang/km.js +55 -0
  186. data/bower_components/moment/lang/ko.js +63 -0
  187. data/bower_components/moment/lang/lb.js +160 -0
  188. data/bower_components/moment/lang/lt.js +118 -0
  189. data/bower_components/moment/lang/lv.js +77 -0
  190. data/bower_components/moment/lang/mk.js +86 -0
  191. data/bower_components/moment/lang/ml.js +64 -0
  192. data/bower_components/moment/lang/mr.js +104 -0
  193. data/bower_components/moment/lang/ms-my.js +66 -0
  194. data/bower_components/moment/lang/nb.js +57 -0
  195. data/bower_components/moment/lang/ne.js +105 -0
  196. data/bower_components/moment/lang/nl.js +67 -0
  197. data/bower_components/moment/lang/nn.js +56 -0
  198. data/bower_components/moment/lang/pl.js +98 -0
  199. data/bower_components/moment/lang/pt-br.js +56 -0
  200. data/bower_components/moment/lang/pt.js +60 -0
  201. data/bower_components/moment/lang/ro.js +72 -0
  202. data/bower_components/moment/lang/ru.js +163 -0
  203. data/bower_components/moment/lang/sk.js +156 -0
  204. data/bower_components/moment/lang/sl.js +144 -0
  205. data/bower_components/moment/lang/sq.js +61 -0
  206. data/bower_components/moment/lang/sr-cyr.js +106 -0
  207. data/bower_components/moment/lang/sr.js +106 -0
  208. data/bower_components/moment/lang/sv.js +63 -0
  209. data/bower_components/moment/lang/ta.js +112 -0
  210. data/bower_components/moment/lang/th.js +58 -0
  211. data/bower_components/moment/lang/tl-ph.js +58 -0
  212. data/bower_components/moment/lang/tr.js +93 -0
  213. data/bower_components/moment/lang/tzm-la.js +55 -0
  214. data/bower_components/moment/lang/tzm.js +55 -0
  215. data/bower_components/moment/lang/uk.js +157 -0
  216. data/bower_components/moment/lang/uz.js +55 -0
  217. data/bower_components/moment/lang/vi.js +62 -0
  218. data/bower_components/moment/lang/zh-cn.js +108 -0
  219. data/bower_components/moment/lang/zh-tw.js +84 -0
  220. data/bower_components/moment/min/langs.js +5991 -0
  221. data/bower_components/moment/min/langs.min.js +3 -0
  222. data/bower_components/moment/min/moment-with-langs.js +7993 -0
  223. data/bower_components/moment/min/moment-with-langs.min.js +9 -0
  224. data/bower_components/moment/min/moment.min.js +6 -0
  225. data/bower_components/moment/moment.js +2489 -0
  226. data/bower_components/moment/readme.md +368 -0
  227. data/lib/logster.rb +9 -0
  228. data/lib/logster/logger.rb +31 -0
  229. data/lib/logster/message.rb +42 -0
  230. data/lib/logster/middleware/reporter.rb +13 -0
  231. data/lib/logster/middleware/viewer.rb +122 -0
  232. data/lib/logster/rails/railtie.rb +39 -0
  233. data/lib/logster/redis_store.rb +124 -0
  234. data/lib/logster/version.rb +3 -0
  235. data/logster.gemspec +30 -0
  236. data/test/logster/middleware/test_viewer.rb +34 -0
  237. data/test/logster/test_redis_store.rb +112 -0
  238. data/test/test_helper.rb +6 -0
  239. data/website/Gemfile +6 -0
  240. data/website/config.ru +2 -0
  241. data/website/data/data.json +1 -0
  242. data/website/docker_container/logster.yml +95 -0
  243. data/website/sample.rb +85 -0
  244. data/website/scripts/persist_logs.rb +13 -0
  245. metadata +375 -0
@@ -0,0 +1,60 @@
1
+ define([
2
+ "../core"
3
+ ], function( jQuery ) {
4
+
5
+ // Multifunctional method to get and set values of a collection
6
+ // The value/s can optionally be executed if it's a function
7
+ var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
8
+ var i = 0,
9
+ len = elems.length,
10
+ bulk = key == null;
11
+
12
+ // Sets many values
13
+ if ( jQuery.type( key ) === "object" ) {
14
+ chainable = true;
15
+ for ( i in key ) {
16
+ jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
17
+ }
18
+
19
+ // Sets one value
20
+ } else if ( value !== undefined ) {
21
+ chainable = true;
22
+
23
+ if ( !jQuery.isFunction( value ) ) {
24
+ raw = true;
25
+ }
26
+
27
+ if ( bulk ) {
28
+ // Bulk operations run against the entire set
29
+ if ( raw ) {
30
+ fn.call( elems, value );
31
+ fn = null;
32
+
33
+ // ...except when executing function values
34
+ } else {
35
+ bulk = fn;
36
+ fn = function( elem, key, value ) {
37
+ return bulk.call( jQuery( elem ), value );
38
+ };
39
+ }
40
+ }
41
+
42
+ if ( fn ) {
43
+ for ( ; i < len; i++ ) {
44
+ fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
45
+ }
46
+ }
47
+ }
48
+
49
+ return chainable ?
50
+ elems :
51
+
52
+ // Gets
53
+ bulk ?
54
+ fn.call( elems ) :
55
+ len ? fn( elems[0], key ) : emptyGet;
56
+ };
57
+
58
+ return access;
59
+
60
+ });
@@ -0,0 +1,123 @@
1
+ // Initialize a jQuery object
2
+ define([
3
+ "../core",
4
+ "./var/rsingleTag",
5
+ "../traversing/findFilter"
6
+ ], function( jQuery, rsingleTag ) {
7
+
8
+ // A central reference to the root jQuery(document)
9
+ var rootjQuery,
10
+
11
+ // A simple way to check for HTML strings
12
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
13
+ // Strict HTML recognition (#11290: must start with <)
14
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
15
+
16
+ init = jQuery.fn.init = function( selector, context ) {
17
+ var match, elem;
18
+
19
+ // HANDLE: $(""), $(null), $(undefined), $(false)
20
+ if ( !selector ) {
21
+ return this;
22
+ }
23
+
24
+ // Handle HTML strings
25
+ if ( typeof selector === "string" ) {
26
+ if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
27
+ // Assume that strings that start and end with <> are HTML and skip the regex check
28
+ match = [ null, selector, null ];
29
+
30
+ } else {
31
+ match = rquickExpr.exec( selector );
32
+ }
33
+
34
+ // Match html or make sure no context is specified for #id
35
+ if ( match && (match[1] || !context) ) {
36
+
37
+ // HANDLE: $(html) -> $(array)
38
+ if ( match[1] ) {
39
+ context = context instanceof jQuery ? context[0] : context;
40
+
41
+ // scripts is true for back-compat
42
+ // Intentionally let the error be thrown if parseHTML is not present
43
+ jQuery.merge( this, jQuery.parseHTML(
44
+ match[1],
45
+ context && context.nodeType ? context.ownerDocument || context : document,
46
+ true
47
+ ) );
48
+
49
+ // HANDLE: $(html, props)
50
+ if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
51
+ for ( match in context ) {
52
+ // Properties of context are called as methods if possible
53
+ if ( jQuery.isFunction( this[ match ] ) ) {
54
+ this[ match ]( context[ match ] );
55
+
56
+ // ...and otherwise set as attributes
57
+ } else {
58
+ this.attr( match, context[ match ] );
59
+ }
60
+ }
61
+ }
62
+
63
+ return this;
64
+
65
+ // HANDLE: $(#id)
66
+ } else {
67
+ elem = document.getElementById( match[2] );
68
+
69
+ // Check parentNode to catch when Blackberry 4.6 returns
70
+ // nodes that are no longer in the document #6963
71
+ if ( elem && elem.parentNode ) {
72
+ // Inject the element directly into the jQuery object
73
+ this.length = 1;
74
+ this[0] = elem;
75
+ }
76
+
77
+ this.context = document;
78
+ this.selector = selector;
79
+ return this;
80
+ }
81
+
82
+ // HANDLE: $(expr, $(...))
83
+ } else if ( !context || context.jquery ) {
84
+ return ( context || rootjQuery ).find( selector );
85
+
86
+ // HANDLE: $(expr, context)
87
+ // (which is just equivalent to: $(context).find(expr)
88
+ } else {
89
+ return this.constructor( context ).find( selector );
90
+ }
91
+
92
+ // HANDLE: $(DOMElement)
93
+ } else if ( selector.nodeType ) {
94
+ this.context = this[0] = selector;
95
+ this.length = 1;
96
+ return this;
97
+
98
+ // HANDLE: $(function)
99
+ // Shortcut for document ready
100
+ } else if ( jQuery.isFunction( selector ) ) {
101
+ return typeof rootjQuery.ready !== "undefined" ?
102
+ rootjQuery.ready( selector ) :
103
+ // Execute immediately if ready is not present
104
+ selector( jQuery );
105
+ }
106
+
107
+ if ( selector.selector !== undefined ) {
108
+ this.selector = selector.selector;
109
+ this.context = selector.context;
110
+ }
111
+
112
+ return jQuery.makeArray( selector, this );
113
+ };
114
+
115
+ // Give the init function the jQuery prototype for later instantiation
116
+ init.prototype = jQuery.fn;
117
+
118
+ // Initialize central reference
119
+ rootjQuery = jQuery( document );
120
+
121
+ return init;
122
+
123
+ });
@@ -0,0 +1,39 @@
1
+ define([
2
+ "../core",
3
+ "./var/rsingleTag",
4
+ "../manipulation" // buildFragment
5
+ ], function( jQuery, rsingleTag ) {
6
+
7
+ // data: string of html
8
+ // context (optional): If specified, the fragment will be created in this context, defaults to document
9
+ // keepScripts (optional): If true, will include scripts passed in the html string
10
+ jQuery.parseHTML = function( data, context, keepScripts ) {
11
+ if ( !data || typeof data !== "string" ) {
12
+ return null;
13
+ }
14
+ if ( typeof context === "boolean" ) {
15
+ keepScripts = context;
16
+ context = false;
17
+ }
18
+ context = context || document;
19
+
20
+ var parsed = rsingleTag.exec( data ),
21
+ scripts = !keepScripts && [];
22
+
23
+ // Single tag
24
+ if ( parsed ) {
25
+ return [ context.createElement( parsed[1] ) ];
26
+ }
27
+
28
+ parsed = jQuery.buildFragment( [ data ], context, scripts );
29
+
30
+ if ( scripts && scripts.length ) {
31
+ jQuery( scripts ).remove();
32
+ }
33
+
34
+ return jQuery.merge( [], parsed.childNodes );
35
+ };
36
+
37
+ return jQuery.parseHTML;
38
+
39
+ });
@@ -0,0 +1,96 @@
1
+ define([
2
+ "../core",
3
+ "../core/init",
4
+ "../deferred"
5
+ ], function( jQuery ) {
6
+
7
+ // The deferred used on DOM ready
8
+ var readyList;
9
+
10
+ jQuery.fn.ready = function( fn ) {
11
+ // Add the callback
12
+ jQuery.ready.promise().done( fn );
13
+
14
+ return this;
15
+ };
16
+
17
+ jQuery.extend({
18
+ // Is the DOM ready to be used? Set to true once it occurs.
19
+ isReady: false,
20
+
21
+ // A counter to track how many items to wait for before
22
+ // the ready event fires. See #6781
23
+ readyWait: 1,
24
+
25
+ // Hold (or release) the ready event
26
+ holdReady: function( hold ) {
27
+ if ( hold ) {
28
+ jQuery.readyWait++;
29
+ } else {
30
+ jQuery.ready( true );
31
+ }
32
+ },
33
+
34
+ // Handle when the DOM is ready
35
+ ready: function( wait ) {
36
+
37
+ // Abort if there are pending holds or we're already ready
38
+ if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
39
+ return;
40
+ }
41
+
42
+ // Remember that the DOM is ready
43
+ jQuery.isReady = true;
44
+
45
+ // If a normal DOM Ready event fired, decrement, and wait if need be
46
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
47
+ return;
48
+ }
49
+
50
+ // If there are functions bound, to execute
51
+ readyList.resolveWith( document, [ jQuery ] );
52
+
53
+ // Trigger any bound ready events
54
+ if ( jQuery.fn.trigger ) {
55
+ jQuery( document ).trigger("ready").off("ready");
56
+ }
57
+ }
58
+ });
59
+
60
+ /**
61
+ * The ready event handler and self cleanup method
62
+ */
63
+ function completed() {
64
+ document.removeEventListener( "DOMContentLoaded", completed, false );
65
+ window.removeEventListener( "load", completed, false );
66
+ jQuery.ready();
67
+ }
68
+
69
+ jQuery.ready.promise = function( obj ) {
70
+ if ( !readyList ) {
71
+
72
+ readyList = jQuery.Deferred();
73
+
74
+ // Catch cases where $(document).ready() is called after the browser event has already occurred.
75
+ // we once tried to use readyState "interactive" here, but it caused issues like the one
76
+ // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
77
+ if ( document.readyState === "complete" ) {
78
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
79
+ setTimeout( jQuery.ready );
80
+
81
+ } else {
82
+
83
+ // Use the handy event callback
84
+ document.addEventListener( "DOMContentLoaded", completed, false );
85
+
86
+ // A fallback to window.onload, that will always work
87
+ window.addEventListener( "load", completed, false );
88
+ }
89
+ }
90
+ return readyList.promise( obj );
91
+ };
92
+
93
+ // Kick off the DOM ready check even if the user does not
94
+ jQuery.ready.promise();
95
+
96
+ });
@@ -0,0 +1,4 @@
1
+ define(function() {
2
+ // Match a standalone tag
3
+ return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
4
+ });
@@ -0,0 +1,455 @@
1
+ define([
2
+ "./core",
3
+ "./var/pnum",
4
+ "./core/access",
5
+ "./css/var/rmargin",
6
+ "./css/var/rnumnonpx",
7
+ "./css/var/cssExpand",
8
+ "./css/var/isHidden",
9
+ "./css/var/getStyles",
10
+ "./css/curCSS",
11
+ "./css/defaultDisplay",
12
+ "./css/addGetHookIf",
13
+ "./css/support",
14
+ "./data/var/data_priv",
15
+
16
+ "./core/init",
17
+ "./css/swap",
18
+ "./core/ready",
19
+ "./selector" // contains
20
+ ], function( jQuery, pnum, access, rmargin, rnumnonpx, cssExpand, isHidden,
21
+ getStyles, curCSS, defaultDisplay, addGetHookIf, support, data_priv ) {
22
+
23
+ var
24
+ // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
25
+ // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
26
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
27
+ rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
28
+ rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
29
+
30
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
31
+ cssNormalTransform = {
32
+ letterSpacing: 0,
33
+ fontWeight: 400
34
+ },
35
+
36
+ cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
37
+
38
+ // return a css property mapped to a potentially vendor prefixed property
39
+ function vendorPropName( style, name ) {
40
+
41
+ // shortcut for names that are not vendor prefixed
42
+ if ( name in style ) {
43
+ return name;
44
+ }
45
+
46
+ // check for vendor prefixed names
47
+ var capName = name[0].toUpperCase() + name.slice(1),
48
+ origName = name,
49
+ i = cssPrefixes.length;
50
+
51
+ while ( i-- ) {
52
+ name = cssPrefixes[ i ] + capName;
53
+ if ( name in style ) {
54
+ return name;
55
+ }
56
+ }
57
+
58
+ return origName;
59
+ }
60
+
61
+ function setPositiveNumber( elem, value, subtract ) {
62
+ var matches = rnumsplit.exec( value );
63
+ return matches ?
64
+ // Guard against undefined "subtract", e.g., when used as in cssHooks
65
+ Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
66
+ value;
67
+ }
68
+
69
+ function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
70
+ var i = extra === ( isBorderBox ? "border" : "content" ) ?
71
+ // If we already have the right measurement, avoid augmentation
72
+ 4 :
73
+ // Otherwise initialize for horizontal or vertical properties
74
+ name === "width" ? 1 : 0,
75
+
76
+ val = 0;
77
+
78
+ for ( ; i < 4; i += 2 ) {
79
+ // both box models exclude margin, so add it if we want it
80
+ if ( extra === "margin" ) {
81
+ val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
82
+ }
83
+
84
+ if ( isBorderBox ) {
85
+ // border-box includes padding, so remove it if we want content
86
+ if ( extra === "content" ) {
87
+ val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
88
+ }
89
+
90
+ // at this point, extra isn't border nor margin, so remove border
91
+ if ( extra !== "margin" ) {
92
+ val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
93
+ }
94
+ } else {
95
+ // at this point, extra isn't content, so add padding
96
+ val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
97
+
98
+ // at this point, extra isn't content nor padding, so add border
99
+ if ( extra !== "padding" ) {
100
+ val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
101
+ }
102
+ }
103
+ }
104
+
105
+ return val;
106
+ }
107
+
108
+ function getWidthOrHeight( elem, name, extra ) {
109
+
110
+ // Start with offset property, which is equivalent to the border-box value
111
+ var valueIsBorderBox = true,
112
+ val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
113
+ styles = getStyles( elem ),
114
+ isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
115
+
116
+ // some non-html elements return undefined for offsetWidth, so check for null/undefined
117
+ // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
118
+ // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
119
+ if ( val <= 0 || val == null ) {
120
+ // Fall back to computed then uncomputed css if necessary
121
+ val = curCSS( elem, name, styles );
122
+ if ( val < 0 || val == null ) {
123
+ val = elem.style[ name ];
124
+ }
125
+
126
+ // Computed unit is not pixels. Stop here and return.
127
+ if ( rnumnonpx.test(val) ) {
128
+ return val;
129
+ }
130
+
131
+ // we need the check for style in case a browser which returns unreliable values
132
+ // for getComputedStyle silently falls back to the reliable elem.style
133
+ valueIsBorderBox = isBorderBox &&
134
+ ( support.boxSizingReliable() || val === elem.style[ name ] );
135
+
136
+ // Normalize "", auto, and prepare for extra
137
+ val = parseFloat( val ) || 0;
138
+ }
139
+
140
+ // use the active box-sizing model to add/subtract irrelevant styles
141
+ return ( val +
142
+ augmentWidthOrHeight(
143
+ elem,
144
+ name,
145
+ extra || ( isBorderBox ? "border" : "content" ),
146
+ valueIsBorderBox,
147
+ styles
148
+ )
149
+ ) + "px";
150
+ }
151
+
152
+ function showHide( elements, show ) {
153
+ var display, elem, hidden,
154
+ values = [],
155
+ index = 0,
156
+ length = elements.length;
157
+
158
+ for ( ; index < length; index++ ) {
159
+ elem = elements[ index ];
160
+ if ( !elem.style ) {
161
+ continue;
162
+ }
163
+
164
+ values[ index ] = data_priv.get( elem, "olddisplay" );
165
+ display = elem.style.display;
166
+ if ( show ) {
167
+ // Reset the inline display of this element to learn if it is
168
+ // being hidden by cascaded rules or not
169
+ if ( !values[ index ] && display === "none" ) {
170
+ elem.style.display = "";
171
+ }
172
+
173
+ // Set elements which have been overridden with display: none
174
+ // in a stylesheet to whatever the default browser style is
175
+ // for such an element
176
+ if ( elem.style.display === "" && isHidden( elem ) ) {
177
+ values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
178
+ }
179
+ } else {
180
+
181
+ if ( !values[ index ] ) {
182
+ hidden = isHidden( elem );
183
+
184
+ if ( display && display !== "none" || !hidden ) {
185
+ data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") );
186
+ }
187
+ }
188
+ }
189
+ }
190
+
191
+ // Set the display of most of the elements in a second loop
192
+ // to avoid the constant reflow
193
+ for ( index = 0; index < length; index++ ) {
194
+ elem = elements[ index ];
195
+ if ( !elem.style ) {
196
+ continue;
197
+ }
198
+ if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
199
+ elem.style.display = show ? values[ index ] || "" : "none";
200
+ }
201
+ }
202
+
203
+ return elements;
204
+ }
205
+
206
+ jQuery.extend({
207
+ // Add in style property hooks for overriding the default
208
+ // behavior of getting and setting a style property
209
+ cssHooks: {
210
+ opacity: {
211
+ get: function( elem, computed ) {
212
+ if ( computed ) {
213
+ // We should always get a number back from opacity
214
+ var ret = curCSS( elem, "opacity" );
215
+ return ret === "" ? "1" : ret;
216
+ }
217
+ }
218
+ }
219
+ },
220
+
221
+ // Don't automatically add "px" to these possibly-unitless properties
222
+ cssNumber: {
223
+ "columnCount": true,
224
+ "fillOpacity": true,
225
+ "fontWeight": true,
226
+ "lineHeight": true,
227
+ "opacity": true,
228
+ "order": true,
229
+ "orphans": true,
230
+ "widows": true,
231
+ "zIndex": true,
232
+ "zoom": true
233
+ },
234
+
235
+ // Add in properties whose names you wish to fix before
236
+ // setting or getting the value
237
+ cssProps: {
238
+ // normalize float css property
239
+ "float": "cssFloat"
240
+ },
241
+
242
+ // Get and set the style property on a DOM Node
243
+ style: function( elem, name, value, extra ) {
244
+ // Don't set styles on text and comment nodes
245
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
246
+ return;
247
+ }
248
+
249
+ // Make sure that we're working with the right name
250
+ var ret, type, hooks,
251
+ origName = jQuery.camelCase( name ),
252
+ style = elem.style;
253
+
254
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
255
+
256
+ // gets hook for the prefixed version
257
+ // followed by the unprefixed version
258
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
259
+
260
+ // Check if we're setting a value
261
+ if ( value !== undefined ) {
262
+ type = typeof value;
263
+
264
+ // convert relative number strings (+= or -=) to relative numbers. #7345
265
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
266
+ value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
267
+ // Fixes bug #9237
268
+ type = "number";
269
+ }
270
+
271
+ // Make sure that null and NaN values aren't set. See: #7116
272
+ if ( value == null || value !== value ) {
273
+ return;
274
+ }
275
+
276
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
277
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
278
+ value += "px";
279
+ }
280
+
281
+ // Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
282
+ // but it would mean to define eight (for every problematic property) identical functions
283
+ if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
284
+ style[ name ] = "inherit";
285
+ }
286
+
287
+ // If a hook was provided, use that value, otherwise just set the specified value
288
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
289
+ // Support: Chrome, Safari
290
+ // Setting style to blank string required to delete "style: x !important;"
291
+ style[ name ] = "";
292
+ style[ name ] = value;
293
+ }
294
+
295
+ } else {
296
+ // If a hook was provided get the non-computed value from there
297
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
298
+ return ret;
299
+ }
300
+
301
+ // Otherwise just get the value from the style object
302
+ return style[ name ];
303
+ }
304
+ },
305
+
306
+ css: function( elem, name, extra, styles ) {
307
+ var val, num, hooks,
308
+ origName = jQuery.camelCase( name );
309
+
310
+ // Make sure that we're working with the right name
311
+ name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
312
+
313
+ // gets hook for the prefixed version
314
+ // followed by the unprefixed version
315
+ hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
316
+
317
+ // If a hook was provided get the computed value from there
318
+ if ( hooks && "get" in hooks ) {
319
+ val = hooks.get( elem, true, extra );
320
+ }
321
+
322
+ // Otherwise, if a way to get the computed value exists, use that
323
+ if ( val === undefined ) {
324
+ val = curCSS( elem, name, styles );
325
+ }
326
+
327
+ //convert "normal" to computed value
328
+ if ( val === "normal" && name in cssNormalTransform ) {
329
+ val = cssNormalTransform[ name ];
330
+ }
331
+
332
+ // Return, converting to number if forced or a qualifier was provided and val looks numeric
333
+ if ( extra === "" || extra ) {
334
+ num = parseFloat( val );
335
+ return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
336
+ }
337
+ return val;
338
+ }
339
+ });
340
+
341
+ jQuery.each([ "height", "width" ], function( i, name ) {
342
+ jQuery.cssHooks[ name ] = {
343
+ get: function( elem, computed, extra ) {
344
+ if ( computed ) {
345
+ // certain elements can have dimension info if we invisibly show them
346
+ // however, it must have a current display style that would benefit from this
347
+ return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
348
+ jQuery.swap( elem, cssShow, function() {
349
+ return getWidthOrHeight( elem, name, extra );
350
+ }) :
351
+ getWidthOrHeight( elem, name, extra );
352
+ }
353
+ },
354
+
355
+ set: function( elem, value, extra ) {
356
+ var styles = extra && getStyles( elem );
357
+ return setPositiveNumber( elem, value, extra ?
358
+ augmentWidthOrHeight(
359
+ elem,
360
+ name,
361
+ extra,
362
+ jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
363
+ styles
364
+ ) : 0
365
+ );
366
+ }
367
+ };
368
+ });
369
+
370
+ // Support: Android 2.3
371
+ jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
372
+ function( elem, computed ) {
373
+ if ( computed ) {
374
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
375
+ // Work around by temporarily setting element display to inline-block
376
+ return jQuery.swap( elem, { "display": "inline-block" },
377
+ curCSS, [ elem, "marginRight" ] );
378
+ }
379
+ }
380
+ );
381
+
382
+ // These hooks are used by animate to expand properties
383
+ jQuery.each({
384
+ margin: "",
385
+ padding: "",
386
+ border: "Width"
387
+ }, function( prefix, suffix ) {
388
+ jQuery.cssHooks[ prefix + suffix ] = {
389
+ expand: function( value ) {
390
+ var i = 0,
391
+ expanded = {},
392
+
393
+ // assumes a single number if not a string
394
+ parts = typeof value === "string" ? value.split(" ") : [ value ];
395
+
396
+ for ( ; i < 4; i++ ) {
397
+ expanded[ prefix + cssExpand[ i ] + suffix ] =
398
+ parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
399
+ }
400
+
401
+ return expanded;
402
+ }
403
+ };
404
+
405
+ if ( !rmargin.test( prefix ) ) {
406
+ jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
407
+ }
408
+ });
409
+
410
+ jQuery.fn.extend({
411
+ css: function( name, value ) {
412
+ return access( this, function( elem, name, value ) {
413
+ var styles, len,
414
+ map = {},
415
+ i = 0;
416
+
417
+ if ( jQuery.isArray( name ) ) {
418
+ styles = getStyles( elem );
419
+ len = name.length;
420
+
421
+ for ( ; i < len; i++ ) {
422
+ map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
423
+ }
424
+
425
+ return map;
426
+ }
427
+
428
+ return value !== undefined ?
429
+ jQuery.style( elem, name, value ) :
430
+ jQuery.css( elem, name );
431
+ }, name, value, arguments.length > 1 );
432
+ },
433
+ show: function() {
434
+ return showHide( this, true );
435
+ },
436
+ hide: function() {
437
+ return showHide( this );
438
+ },
439
+ toggle: function( state ) {
440
+ if ( typeof state === "boolean" ) {
441
+ return state ? this.show() : this.hide();
442
+ }
443
+
444
+ return this.each(function() {
445
+ if ( isHidden( this ) ) {
446
+ jQuery( this ).show();
447
+ } else {
448
+ jQuery( this ).hide();
449
+ }
450
+ });
451
+ }
452
+ });
453
+
454
+ return jQuery;
455
+ });