ende 0.5.20 → 0.5.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +1 -1
  3. data/components/indefinido/indemma/master/.gitignore +17 -0
  4. data/components/indefinido/indemma/master/.ruby-gemset +1 -0
  5. data/components/indefinido/indemma/master/.ruby-version +1 -0
  6. data/components/indefinido/indemma/master/Gemfile +12 -0
  7. data/components/indefinido/indemma/master/Guardfile +39 -0
  8. data/components/indefinido/indemma/master/History.md +0 -0
  9. data/components/indefinido/indemma/master/Readme.md +445 -0
  10. data/components/indefinido/indemma/master/build/development.js +26123 -0
  11. data/components/indefinido/indemma/master/build/release.js +16741 -0
  12. data/components/indefinido/indemma/master/build/test.js +26123 -0
  13. data/components/indefinido/indemma/master/component.json +1 -1
  14. data/components/indefinido/indemma/master/components/chaijs/assertion-error/1.0.0/component.json +18 -0
  15. data/components/indefinido/indemma/master/components/chaijs/assertion-error/1.0.0/index.js +110 -0
  16. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.gitignore +22 -0
  17. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.mailmap +1 -0
  18. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.npmignore +14 -0
  19. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.travis.yml +14 -0
  20. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/CONTRIBUTING.md +173 -0
  21. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/History.md +895 -0
  22. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/Makefile +93 -0
  23. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/README.md +99 -0
  24. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/ReleaseNotes.md +482 -0
  25. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/bower.json +27 -0
  26. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/chai.js +4782 -0
  27. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/component.json +50 -0
  28. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/index.js +1 -0
  29. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/karma.conf.js +28 -0
  30. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/karma.sauce.js +41 -0
  31. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/assertion.js +130 -0
  32. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/config.js +50 -0
  33. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/core/assertions.js +1314 -0
  34. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/assert.js +1056 -0
  35. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/expect.js +12 -0
  36. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/should.js +78 -0
  37. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addChainableMethod.js +111 -0
  38. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addMethod.js +43 -0
  39. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addProperty.js +40 -0
  40. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/flag.js +32 -0
  41. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getActual.js +18 -0
  42. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getEnumerableProperties.js +25 -0
  43. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getMessage.js +49 -0
  44. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getName.js +20 -0
  45. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getPathValue.js +102 -0
  46. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getProperties.js +35 -0
  47. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/index.js +114 -0
  48. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/inspect.js +320 -0
  49. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/objDisplay.js +49 -0
  50. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteChainableMethod.js +53 -0
  51. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteMethod.js +51 -0
  52. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteProperty.js +54 -0
  53. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/test.js +26 -0
  54. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/transferFlags.js +44 -0
  55. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/type.js +45 -0
  56. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai.js +87 -0
  57. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/package.json +42 -0
  58. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/sauce.browsers.js +128 -0
  59. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_block.sh +7 -0
  60. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_setup.sh +53 -0
  61. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/assert.js +638 -0
  62. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/auth/.gitkeep +0 -0
  63. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/bootstrap/index.js +22 -0
  64. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/bootstrap/karma.js +22 -0
  65. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/configuration.js +133 -0
  66. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/display/errors.js +14 -0
  67. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/display/message.js +47 -0
  68. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/expect.js +814 -0
  69. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/globalShould.js +15 -0
  70. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/plugins.js +24 -0
  71. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/should.js +744 -0
  72. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/utilities.js +309 -0
  73. data/components/indefinido/indemma/master/components/chaijs/deep-eql/0.1.3/component.json +20 -0
  74. data/components/indefinido/indemma/master/components/chaijs/deep-eql/0.1.3/lib/eql.js +257 -0
  75. data/components/indefinido/indemma/master/components/chaijs/type-detect/0.1.1/component.json +18 -0
  76. data/components/indefinido/indemma/master/components/chaijs/type-detect/0.1.1/lib/type.js +142 -0
  77. data/components/indefinido/indemma/master/components/component/bind/1.0.0/component.json +14 -0
  78. data/components/indefinido/indemma/master/components/component/bind/1.0.0/index.js +23 -0
  79. data/components/indefinido/indemma/master/components/component/jquery/1.0.0/component.json +10 -0
  80. data/components/indefinido/indemma/master/components/component/jquery/1.0.0/index.js +10308 -0
  81. data/components/indefinido/indemma/master/components/component/type/1.0.0/component.json +20 -0
  82. data/components/indefinido/indemma/master/components/component/type/1.0.0/index.js +32 -0
  83. data/components/indefinido/indemma/master/components/indefinido/advisable/master/component.json +21 -0
  84. data/components/indefinido/indemma/master/components/indefinido/advisable/master/index.js +1 -0
  85. data/components/indefinido/indemma/master/components/indefinido/advisable/master/lib/advisable.js +60 -0
  86. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/component.json +39 -0
  87. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/index.js +1 -0
  88. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/adapters/rivets.js +40 -0
  89. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
  90. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +147 -0
  91. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
  92. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
  93. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
  94. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
  95. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
  96. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable.js +97 -0
  97. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
  98. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
  99. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/accessors-legacy.js +92 -0
  100. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/accessors.js +248 -0
  101. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/array.indexOf.js +8 -0
  102. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/object.create.js +77 -0
  103. data/components/indefinido/indemma/master/components/pluma/assimilate/0.4.0/component.json +25 -0
  104. data/components/indefinido/indemma/master/components/pluma/assimilate/0.4.0/dist/assimilate.js +127 -0
  105. data/components/indefinido/indemma/master/karma.conf.js +75 -0
  106. data/components/indefinido/indemma/master/lib/record/associable.js +4 -2
  107. data/components/indefinido/indemma/master/lib/record/dirtyable.js +1 -1
  108. data/components/indefinido/indemma/master/package.json +9 -0
  109. data/components/indefinido/indemma/master/spec/record/associable_spec.js +211 -0
  110. data/components/indefinido/indemma/master/spec/record/dirtyable_spec.js +57 -0
  111. data/components/indefinido/indemma/master/spec/record/maid_spec.js +40 -0
  112. data/components/indefinido/indemma/master/spec/record/persistable_spec.js +46 -0
  113. data/components/indefinido/indemma/master/spec/record/queryable_spec.js +39 -0
  114. data/components/indefinido/indemma/master/spec/record/resource_spec.js +93 -0
  115. data/components/indefinido/indemma/master/spec/record/rest_spec.js +32 -0
  116. data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +346 -0
  117. data/components/indefinido/indemma/master/spec/record/scopable_spec.js +242 -0
  118. data/components/indefinido/indemma/master/spec/record/storable_spec.js +44 -0
  119. data/components/indefinido/indemma/master/spec/record/translationable.js +28 -0
  120. data/components/indefinido/indemma/master/spec/record/validatable_spec.js +142 -0
  121. data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +43 -0
  122. data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +36 -0
  123. data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +34 -0
  124. data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +28 -0
  125. data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +87 -0
  126. data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +48 -0
  127. data/components/indefinido/indemma/master/spec/record_spec.js +49 -0
  128. data/components/indefinido/indemma/master/spec/spec_helper.js +15 -0
  129. data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +45 -0
  130. data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +17 -0
  131. data/components/indefinido/indemma/master/src/lib/record/associable.coffee +419 -0
  132. data/components/indefinido/indemma/master/src/lib/record/dirtyable.coffee +47 -0
  133. data/components/indefinido/indemma/master/src/lib/record/errors.coffee +20 -0
  134. data/components/indefinido/indemma/master/src/lib/record/maid.coffee +16 -0
  135. data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +34 -0
  136. data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +29 -0
  137. data/components/indefinido/indemma/master/src/lib/record/resource.coffee +107 -0
  138. data/components/indefinido/indemma/master/src/lib/record/rest.coffee +34 -0
  139. data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +487 -0
  140. data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +279 -0
  141. data/components/indefinido/indemma/master/src/lib/record/storable.coffee +49 -0
  142. data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +18 -0
  143. data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +241 -0
  144. data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +34 -0
  145. data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +17 -0
  146. data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +57 -0
  147. data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +16 -0
  148. data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +61 -0
  149. data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +31 -0
  150. data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +5 -0
  151. data/components/indefinido/indemma/master/src/lib/record.coffee +143 -0
  152. data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +205 -0
  153. data/components/indefinido/indemma/master/src/spec/record/dirtyable_spec.coffee +47 -0
  154. data/components/indefinido/indemma/master/src/spec/record/maid_spec.coffee +34 -0
  155. data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +39 -0
  156. data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +33 -0
  157. data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +69 -0
  158. data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +22 -0
  159. data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +257 -0
  160. data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +227 -0
  161. data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +39 -0
  162. data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +19 -0
  163. data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +127 -0
  164. data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +35 -0
  165. data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +25 -0
  166. data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +27 -0
  167. data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +24 -0
  168. data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +74 -0
  169. data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +33 -0
  170. data/components/indefinido/indemma/master/src/spec/record_spec.coffee +29 -0
  171. data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +11 -0
  172. data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +30 -0
  173. data/components/indefinido/indemma/master/vendor/object/mixin.js +196 -0
  174. data/components/indefinido/indemma/master/vendor/spec/sinon/assert.js +199 -0
  175. data/components/indefinido/indemma/master/vendor/spec/sinon/behavior.js +334 -0
  176. data/components/indefinido/indemma/master/vendor/spec/sinon/call.js +205 -0
  177. data/components/indefinido/indemma/master/vendor/spec/sinon/collection.js +155 -0
  178. data/components/indefinido/indemma/master/vendor/spec/sinon/match.js +245 -0
  179. data/components/indefinido/indemma/master/vendor/spec/sinon/mock.js +451 -0
  180. data/components/indefinido/indemma/master/vendor/spec/sinon/sandbox.js +144 -0
  181. data/components/indefinido/indemma/master/vendor/spec/sinon/spy.js +413 -0
  182. data/components/indefinido/indemma/master/vendor/spec/sinon/stub.js +161 -0
  183. data/components/indefinido/indemma/master/vendor/spec/sinon/test.js +77 -0
  184. data/components/indefinido/indemma/master/vendor/spec/sinon/test_case.js +99 -0
  185. data/components/indefinido/indemma/master/vendor/spec/sinon/util/event.js +94 -0
  186. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_server.js +212 -0
  187. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_server_with_clock.js +83 -0
  188. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_timers.js +405 -0
  189. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_xdomain_request.js +206 -0
  190. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_xml_http_request.js +575 -0
  191. data/components/indefinido/indemma/master/vendor/spec/sinon/util/timers_ie.js +31 -0
  192. data/components/indefinido/indemma/master/vendor/spec/sinon/util/xdr_ie.js +14 -0
  193. data/components/indefinido/indemma/master/vendor/spec/sinon/util/xhr_ie.js +19 -0
  194. data/components/indefinido/indemma/master/vendor/spec/sinon.js +383 -0
  195. data/lib/assets/javascripts/value_objects/phone.js.coffee +3 -1
  196. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +5 -5
  197. data/lib/ende/version.rb +1 -1
  198. data/vendor/assets/components/ende_build.css +4 -4
  199. data/vendor/assets/components/ende_build.js +7974 -7889
  200. metadata +191 -5
  201. data/vendor/assets/component/build.css +0 -112
  202. data/vendor/assets/components/build.css +0 -112
  203. data/vendor/assets/components/indemma_with_none.js +0 -30553
@@ -0,0 +1,575 @@
1
+ /**
2
+ * @depend ../../sinon.js
3
+ * @depend event.js
4
+ */
5
+ /*jslint eqeqeq: false, onevar: false*/
6
+ /*global sinon, module, require, ActiveXObject, XMLHttpRequest, DOMParser*/
7
+ /**
8
+ * Fake XMLHttpRequest object
9
+ *
10
+ * @author Christian Johansen (christian@cjohansen.no)
11
+ * @license BSD
12
+ *
13
+ * Copyright (c) 2010-2013 Christian Johansen
14
+ */
15
+ "use strict";
16
+
17
+ // wrapper for global
18
+ (function(global) {
19
+ if (typeof sinon === "undefined") {
20
+ global.sinon = {};
21
+ }
22
+
23
+ var supportsProgress = typeof ProgressEvent !== "undefined";
24
+ var supportsCustomEvent = typeof CustomEvent !== "undefined";
25
+ sinon.xhr = { XMLHttpRequest: global.XMLHttpRequest };
26
+ var xhr = sinon.xhr;
27
+ xhr.GlobalXMLHttpRequest = global.XMLHttpRequest;
28
+ xhr.GlobalActiveXObject = global.ActiveXObject;
29
+ xhr.supportsActiveX = typeof xhr.GlobalActiveXObject != "undefined";
30
+ xhr.supportsXHR = typeof xhr.GlobalXMLHttpRequest != "undefined";
31
+ xhr.workingXHR = xhr.supportsXHR ? xhr.GlobalXMLHttpRequest : xhr.supportsActiveX
32
+ ? function() { return new xhr.GlobalActiveXObject("MSXML2.XMLHTTP.3.0") } : false;
33
+ xhr.supportsCORS = 'withCredentials' in (new sinon.xhr.GlobalXMLHttpRequest());
34
+
35
+ /*jsl:ignore*/
36
+ var unsafeHeaders = {
37
+ "Accept-Charset": true,
38
+ "Accept-Encoding": true,
39
+ "Connection": true,
40
+ "Content-Length": true,
41
+ "Cookie": true,
42
+ "Cookie2": true,
43
+ "Content-Transfer-Encoding": true,
44
+ "Date": true,
45
+ "Expect": true,
46
+ "Host": true,
47
+ "Keep-Alive": true,
48
+ "Referer": true,
49
+ "TE": true,
50
+ "Trailer": true,
51
+ "Transfer-Encoding": true,
52
+ "Upgrade": true,
53
+ "User-Agent": true,
54
+ "Via": true
55
+ };
56
+ /*jsl:end*/
57
+
58
+ function FakeXMLHttpRequest() {
59
+ this.readyState = FakeXMLHttpRequest.UNSENT;
60
+ this.requestHeaders = {};
61
+ this.requestBody = null;
62
+ this.status = 0;
63
+ this.statusText = "";
64
+ this.upload = new UploadProgress();
65
+ if (sinon.xhr.supportsCORS) {
66
+ this.withCredentials = false;
67
+ }
68
+
69
+
70
+ var xhr = this;
71
+ var events = ["loadstart", "load", "abort", "loadend"];
72
+
73
+ function addEventListener(eventName) {
74
+ xhr.addEventListener(eventName, function (event) {
75
+ var listener = xhr["on" + eventName];
76
+
77
+ if (listener && typeof listener == "function") {
78
+ listener.call(this, event);
79
+ }
80
+ });
81
+ }
82
+
83
+ for (var i = events.length - 1; i >= 0; i--) {
84
+ addEventListener(events[i]);
85
+ }
86
+
87
+ if (typeof FakeXMLHttpRequest.onCreate == "function") {
88
+ FakeXMLHttpRequest.onCreate(this);
89
+ }
90
+ }
91
+
92
+ // An upload object is created for each
93
+ // FakeXMLHttpRequest and allows upload
94
+ // events to be simulated using uploadProgress
95
+ // and uploadError.
96
+ function UploadProgress() {
97
+ this.eventListeners = {
98
+ "progress": [],
99
+ "load": [],
100
+ "abort": [],
101
+ "error": []
102
+ }
103
+ }
104
+
105
+ UploadProgress.prototype.addEventListener = function(event, listener) {
106
+ this.eventListeners[event].push(listener);
107
+ };
108
+
109
+ UploadProgress.prototype.removeEventListener = function(event, listener) {
110
+ var listeners = this.eventListeners[event] || [];
111
+
112
+ for (var i = 0, l = listeners.length; i < l; ++i) {
113
+ if (listeners[i] == listener) {
114
+ return listeners.splice(i, 1);
115
+ }
116
+ }
117
+ };
118
+
119
+ UploadProgress.prototype.dispatchEvent = function(event) {
120
+ var listeners = this.eventListeners[event.type] || [];
121
+
122
+ for (var i = 0, listener; (listener = listeners[i]) != null; i++) {
123
+ listener(event);
124
+ }
125
+ };
126
+
127
+ function verifyState(xhr) {
128
+ if (xhr.readyState !== FakeXMLHttpRequest.OPENED) {
129
+ throw new Error("INVALID_STATE_ERR");
130
+ }
131
+
132
+ if (xhr.sendFlag) {
133
+ throw new Error("INVALID_STATE_ERR");
134
+ }
135
+ }
136
+
137
+ // filtering to enable a white-list version of Sinon FakeXhr,
138
+ // where whitelisted requests are passed through to real XHR
139
+ function each(collection, callback) {
140
+ if (!collection) return;
141
+ for (var i = 0, l = collection.length; i < l; i += 1) {
142
+ callback(collection[i]);
143
+ }
144
+ }
145
+ function some(collection, callback) {
146
+ for (var index = 0; index < collection.length; index++) {
147
+ if(callback(collection[index]) === true) return true;
148
+ }
149
+ return false;
150
+ }
151
+ // largest arity in XHR is 5 - XHR#open
152
+ var apply = function(obj,method,args) {
153
+ switch(args.length) {
154
+ case 0: return obj[method]();
155
+ case 1: return obj[method](args[0]);
156
+ case 2: return obj[method](args[0],args[1]);
157
+ case 3: return obj[method](args[0],args[1],args[2]);
158
+ case 4: return obj[method](args[0],args[1],args[2],args[3]);
159
+ case 5: return obj[method](args[0],args[1],args[2],args[3],args[4]);
160
+ }
161
+ };
162
+
163
+ FakeXMLHttpRequest.filters = [];
164
+ FakeXMLHttpRequest.addFilter = function(fn) {
165
+ this.filters.push(fn)
166
+ };
167
+ var IE6Re = /MSIE 6/;
168
+ FakeXMLHttpRequest.defake = function(fakeXhr,xhrArgs) {
169
+ var xhr = new sinon.xhr.workingXHR();
170
+ each(["open","setRequestHeader","send","abort","getResponseHeader",
171
+ "getAllResponseHeaders","addEventListener","overrideMimeType","removeEventListener"],
172
+ function(method) {
173
+ fakeXhr[method] = function() {
174
+ return apply(xhr,method,arguments);
175
+ };
176
+ });
177
+
178
+ var copyAttrs = function(args) {
179
+ each(args, function(attr) {
180
+ try {
181
+ fakeXhr[attr] = xhr[attr]
182
+ } catch(e) {
183
+ if(!IE6Re.test(navigator.userAgent)) throw e;
184
+ }
185
+ });
186
+ };
187
+
188
+ var stateChange = function() {
189
+ fakeXhr.readyState = xhr.readyState;
190
+ if(xhr.readyState >= FakeXMLHttpRequest.HEADERS_RECEIVED) {
191
+ copyAttrs(["status","statusText"]);
192
+ }
193
+ if(xhr.readyState >= FakeXMLHttpRequest.LOADING) {
194
+ copyAttrs(["responseText"]);
195
+ }
196
+ if(xhr.readyState === FakeXMLHttpRequest.DONE) {
197
+ copyAttrs(["responseXML"]);
198
+ }
199
+ if(fakeXhr.onreadystatechange) fakeXhr.onreadystatechange.call(fakeXhr, { target: fakeXhr });
200
+ };
201
+ if(xhr.addEventListener) {
202
+ for(var event in fakeXhr.eventListeners) {
203
+ if(fakeXhr.eventListeners.hasOwnProperty(event)) {
204
+ each(fakeXhr.eventListeners[event],function(handler) {
205
+ xhr.addEventListener(event, handler);
206
+ });
207
+ }
208
+ }
209
+ xhr.addEventListener("readystatechange",stateChange);
210
+ } else {
211
+ xhr.onreadystatechange = stateChange;
212
+ }
213
+ apply(xhr,"open",xhrArgs);
214
+ };
215
+ FakeXMLHttpRequest.useFilters = false;
216
+
217
+ function verifyRequestOpened(xhr) {
218
+ if (xhr.readyState != FakeXMLHttpRequest.OPENED) {
219
+ throw new Error("INVALID_STATE_ERR - " + xhr.readyState);
220
+ }
221
+ }
222
+
223
+ function verifyRequestSent(xhr) {
224
+ if (xhr.readyState == FakeXMLHttpRequest.DONE) {
225
+ throw new Error("Request done");
226
+ }
227
+ }
228
+
229
+ function verifyHeadersReceived(xhr) {
230
+ if (xhr.async && xhr.readyState != FakeXMLHttpRequest.HEADERS_RECEIVED) {
231
+ throw new Error("No headers received");
232
+ }
233
+ }
234
+
235
+ function verifyResponseBodyType(body) {
236
+ if (typeof body != "string") {
237
+ var error = new Error("Attempted to respond to fake XMLHttpRequest with " +
238
+ body + ", which is not a string.");
239
+ error.name = "InvalidBodyException";
240
+ throw error;
241
+ }
242
+ }
243
+
244
+ sinon.extend(FakeXMLHttpRequest.prototype, sinon.EventTarget, {
245
+ async: true,
246
+
247
+ open: function open(method, url, async, username, password) {
248
+ this.method = method;
249
+ this.url = url;
250
+ this.async = typeof async == "boolean" ? async : true;
251
+ this.username = username;
252
+ this.password = password;
253
+ this.responseText = null;
254
+ this.responseXML = null;
255
+ this.requestHeaders = {};
256
+ this.sendFlag = false;
257
+ if(sinon.FakeXMLHttpRequest.useFilters === true) {
258
+ var xhrArgs = arguments;
259
+ var defake = some(FakeXMLHttpRequest.filters,function(filter) {
260
+ return filter.apply(this,xhrArgs)
261
+ });
262
+ if (defake) {
263
+ return sinon.FakeXMLHttpRequest.defake(this,arguments);
264
+ }
265
+ }
266
+ this.readyStateChange(FakeXMLHttpRequest.OPENED);
267
+ },
268
+
269
+ readyStateChange: function readyStateChange(state) {
270
+ this.readyState = state;
271
+
272
+ if (typeof this.onreadystatechange == "function") {
273
+ try {
274
+ this.onreadystatechange();
275
+ } catch (e) {
276
+ sinon.logError("Fake XHR onreadystatechange handler", e);
277
+ }
278
+ }
279
+
280
+ this.dispatchEvent(new sinon.Event("readystatechange"));
281
+
282
+ switch (this.readyState) {
283
+ case FakeXMLHttpRequest.DONE:
284
+ this.dispatchEvent(new sinon.Event("load", false, false, this));
285
+ this.dispatchEvent(new sinon.Event("loadend", false, false, this));
286
+ this.upload.dispatchEvent(new sinon.Event("load", false, false, this));
287
+ if (supportsProgress) {
288
+ this.upload.dispatchEvent(new sinon.ProgressEvent('progress', {loaded: 100, total: 100}));
289
+ }
290
+ break;
291
+ }
292
+ },
293
+
294
+ setRequestHeader: function setRequestHeader(header, value) {
295
+ verifyState(this);
296
+
297
+ if (unsafeHeaders[header] || /^(Sec-|Proxy-)/.test(header)) {
298
+ throw new Error("Refused to set unsafe header \"" + header + "\"");
299
+ }
300
+
301
+ if (this.requestHeaders[header]) {
302
+ this.requestHeaders[header] += "," + value;
303
+ } else {
304
+ this.requestHeaders[header] = value;
305
+ }
306
+ },
307
+
308
+ // Helps testing
309
+ setResponseHeaders: function setResponseHeaders(headers) {
310
+ verifyRequestOpened(this);
311
+ this.responseHeaders = {};
312
+
313
+ for (var header in headers) {
314
+ if (headers.hasOwnProperty(header)) {
315
+ this.responseHeaders[header] = headers[header];
316
+ }
317
+ }
318
+
319
+ if (this.async) {
320
+ this.readyStateChange(FakeXMLHttpRequest.HEADERS_RECEIVED);
321
+ } else {
322
+ this.readyState = FakeXMLHttpRequest.HEADERS_RECEIVED;
323
+ }
324
+ },
325
+
326
+ // Currently treats ALL data as a DOMString (i.e. no Document)
327
+ send: function send(data) {
328
+ verifyState(this);
329
+
330
+ if (!/^(get|head)$/i.test(this.method)) {
331
+ if (this.requestHeaders["Content-Type"]) {
332
+ var value = this.requestHeaders["Content-Type"].split(";");
333
+ this.requestHeaders["Content-Type"] = value[0] + ";charset=utf-8";
334
+ } else {
335
+ this.requestHeaders["Content-Type"] = "text/plain;charset=utf-8";
336
+ }
337
+
338
+ this.requestBody = data;
339
+ }
340
+
341
+ this.errorFlag = false;
342
+ this.sendFlag = this.async;
343
+ this.readyStateChange(FakeXMLHttpRequest.OPENED);
344
+
345
+ if (typeof this.onSend == "function") {
346
+ this.onSend(this);
347
+ }
348
+
349
+ this.dispatchEvent(new sinon.Event("loadstart", false, false, this));
350
+ },
351
+
352
+ abort: function abort() {
353
+ this.aborted = true;
354
+ this.responseText = null;
355
+ this.errorFlag = true;
356
+ this.requestHeaders = {};
357
+
358
+ if (this.readyState > sinon.FakeXMLHttpRequest.UNSENT && this.sendFlag) {
359
+ this.readyStateChange(sinon.FakeXMLHttpRequest.DONE);
360
+ this.sendFlag = false;
361
+ }
362
+
363
+ this.readyState = sinon.FakeXMLHttpRequest.UNSENT;
364
+
365
+ this.dispatchEvent(new sinon.Event("abort", false, false, this));
366
+
367
+ this.upload.dispatchEvent(new sinon.Event("abort", false, false, this));
368
+
369
+ if (typeof this.onerror === "function") {
370
+ this.onerror();
371
+ }
372
+ },
373
+
374
+ getResponseHeader: function getResponseHeader(header) {
375
+ if (this.readyState < FakeXMLHttpRequest.HEADERS_RECEIVED) {
376
+ return null;
377
+ }
378
+
379
+ if (/^Set-Cookie2?$/i.test(header)) {
380
+ return null;
381
+ }
382
+
383
+ header = header.toLowerCase();
384
+
385
+ for (var h in this.responseHeaders) {
386
+ if (h.toLowerCase() == header) {
387
+ return this.responseHeaders[h];
388
+ }
389
+ }
390
+
391
+ return null;
392
+ },
393
+
394
+ getAllResponseHeaders: function getAllResponseHeaders() {
395
+ if (this.readyState < FakeXMLHttpRequest.HEADERS_RECEIVED) {
396
+ return "";
397
+ }
398
+
399
+ var headers = "";
400
+
401
+ for (var header in this.responseHeaders) {
402
+ if (this.responseHeaders.hasOwnProperty(header) &&
403
+ !/^Set-Cookie2?$/i.test(header)) {
404
+ headers += header + ": " + this.responseHeaders[header] + "\r\n";
405
+ }
406
+ }
407
+
408
+ return headers;
409
+ },
410
+
411
+ setResponseBody: function setResponseBody(body) {
412
+ verifyRequestSent(this);
413
+ verifyHeadersReceived(this);
414
+ verifyResponseBodyType(body);
415
+
416
+ var chunkSize = this.chunkSize || 10;
417
+ var index = 0;
418
+ this.responseText = "";
419
+
420
+ do {
421
+ if (this.async) {
422
+ this.readyStateChange(FakeXMLHttpRequest.LOADING);
423
+ }
424
+
425
+ this.responseText += body.substring(index, index + chunkSize);
426
+ index += chunkSize;
427
+ } while (index < body.length);
428
+
429
+ var type = this.getResponseHeader("Content-Type");
430
+
431
+ if (this.responseText &&
432
+ (!type || /(text\/xml)|(application\/xml)|(\+xml)/.test(type))) {
433
+ try {
434
+ this.responseXML = FakeXMLHttpRequest.parseXML(this.responseText);
435
+ } catch (e) {
436
+ // Unable to parse XML - no biggie
437
+ }
438
+ }
439
+
440
+ if (this.async) {
441
+ this.readyStateChange(FakeXMLHttpRequest.DONE);
442
+ } else {
443
+ this.readyState = FakeXMLHttpRequest.DONE;
444
+ }
445
+ },
446
+
447
+ respond: function respond(status, headers, body) {
448
+ this.status = typeof status == "number" ? status : 200;
449
+ this.statusText = FakeXMLHttpRequest.statusCodes[this.status];
450
+ this.setResponseHeaders(headers || {});
451
+ this.setResponseBody(body || "");
452
+ },
453
+
454
+ uploadProgress: function uploadProgress(progressEventRaw) {
455
+ if (supportsProgress) {
456
+ this.upload.dispatchEvent(new sinon.ProgressEvent("progress", progressEventRaw));
457
+ }
458
+ },
459
+
460
+ uploadError: function uploadError(error) {
461
+ if (supportsCustomEvent) {
462
+ this.upload.dispatchEvent(new sinon.CustomEvent("error", {"detail": error}));
463
+ }
464
+ }
465
+ });
466
+
467
+ sinon.extend(FakeXMLHttpRequest, {
468
+ UNSENT: 0,
469
+ OPENED: 1,
470
+ HEADERS_RECEIVED: 2,
471
+ LOADING: 3,
472
+ DONE: 4
473
+ });
474
+
475
+ // Borrowed from JSpec
476
+ FakeXMLHttpRequest.parseXML = function parseXML(text) {
477
+ var xmlDoc;
478
+
479
+ if (typeof DOMParser != "undefined") {
480
+ var parser = new DOMParser();
481
+ xmlDoc = parser.parseFromString(text, "text/xml");
482
+ } else {
483
+ xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
484
+ xmlDoc.async = "false";
485
+ xmlDoc.loadXML(text);
486
+ }
487
+
488
+ return xmlDoc;
489
+ };
490
+
491
+ FakeXMLHttpRequest.statusCodes = {
492
+ 100: "Continue",
493
+ 101: "Switching Protocols",
494
+ 200: "OK",
495
+ 201: "Created",
496
+ 202: "Accepted",
497
+ 203: "Non-Authoritative Information",
498
+ 204: "No Content",
499
+ 205: "Reset Content",
500
+ 206: "Partial Content",
501
+ 300: "Multiple Choice",
502
+ 301: "Moved Permanently",
503
+ 302: "Found",
504
+ 303: "See Other",
505
+ 304: "Not Modified",
506
+ 305: "Use Proxy",
507
+ 307: "Temporary Redirect",
508
+ 400: "Bad Request",
509
+ 401: "Unauthorized",
510
+ 402: "Payment Required",
511
+ 403: "Forbidden",
512
+ 404: "Not Found",
513
+ 405: "Method Not Allowed",
514
+ 406: "Not Acceptable",
515
+ 407: "Proxy Authentication Required",
516
+ 408: "Request Timeout",
517
+ 409: "Conflict",
518
+ 410: "Gone",
519
+ 411: "Length Required",
520
+ 412: "Precondition Failed",
521
+ 413: "Request Entity Too Large",
522
+ 414: "Request-URI Too Long",
523
+ 415: "Unsupported Media Type",
524
+ 416: "Requested Range Not Satisfiable",
525
+ 417: "Expectation Failed",
526
+ 422: "Unprocessable Entity",
527
+ 500: "Internal Server Error",
528
+ 501: "Not Implemented",
529
+ 502: "Bad Gateway",
530
+ 503: "Service Unavailable",
531
+ 504: "Gateway Timeout",
532
+ 505: "HTTP Version Not Supported"
533
+ };
534
+
535
+ sinon.useFakeXMLHttpRequest = function () {
536
+ sinon.FakeXMLHttpRequest.restore = function restore(keepOnCreate) {
537
+ if (xhr.supportsXHR) {
538
+ global.XMLHttpRequest = xhr.GlobalXMLHttpRequest;
539
+ }
540
+
541
+ if (xhr.supportsActiveX) {
542
+ global.ActiveXObject = xhr.GlobalActiveXObject;
543
+ }
544
+
545
+ delete sinon.FakeXMLHttpRequest.restore;
546
+
547
+ if (keepOnCreate !== true) {
548
+ delete sinon.FakeXMLHttpRequest.onCreate;
549
+ }
550
+ };
551
+ if (xhr.supportsXHR) {
552
+ global.XMLHttpRequest = sinon.FakeXMLHttpRequest;
553
+ }
554
+
555
+ if (xhr.supportsActiveX) {
556
+ global.ActiveXObject = function ActiveXObject(objId) {
557
+ if (objId == "Microsoft.XMLHTTP" || /^Msxml2\.XMLHTTP/i.test(objId)) {
558
+
559
+ return new sinon.FakeXMLHttpRequest();
560
+ }
561
+
562
+ return new xhr.GlobalActiveXObject(objId);
563
+ };
564
+ }
565
+
566
+ return sinon.FakeXMLHttpRequest;
567
+ };
568
+
569
+ sinon.FakeXMLHttpRequest = FakeXMLHttpRequest;
570
+
571
+ })(typeof global === "object" ? global : this);
572
+
573
+ if (typeof module !== 'undefined' && module.exports) {
574
+ module.exports = sinon;
575
+ }
@@ -0,0 +1,31 @@
1
+ /*global sinon, setTimeout, setInterval, clearTimeout, clearInterval, Date*/
2
+ /**
3
+ * Helps IE run the fake timers. By defining global functions, IE allows
4
+ * them to be overwritten at a later point. If these are not defined like
5
+ * this, overwriting them will result in anything from an exception to browser
6
+ * crash.
7
+ *
8
+ * If you don't require fake timers to work in IE, don't include this file.
9
+ *
10
+ * @author Christian Johansen (christian@cjohansen.no)
11
+ * @license BSD
12
+ *
13
+ * Copyright (c) 2010-2013 Christian Johansen
14
+ */
15
+ function setTimeout() {}
16
+ function clearTimeout() {}
17
+ function setImmediate() {}
18
+ function clearImmediate() {}
19
+ function setInterval() {}
20
+ function clearInterval() {}
21
+ function Date() {}
22
+
23
+ // Reassign the original functions. Now their writable attribute
24
+ // should be true. Hackish, I know, but it works.
25
+ setTimeout = sinon.timers.setTimeout;
26
+ clearTimeout = sinon.timers.clearTimeout;
27
+ setImmediate = sinon.timers.setImmediate;
28
+ clearImmediate = sinon.timers.clearImmediate;
29
+ setInterval = sinon.timers.setInterval;
30
+ clearInterval = sinon.timers.clearInterval;
31
+ Date = sinon.timers.Date;
@@ -0,0 +1,14 @@
1
+ /*global sinon*/
2
+ /**
3
+ * Helps IE run the fake XDomainRequest. By defining global functions, IE allows
4
+ * them to be overwritten at a later point. If these are not defined like
5
+ * this, overwriting them will result in anything from an exception to browser
6
+ * crash.
7
+ *
8
+ * If you don't require fake XDR to work in IE, don't include this file.
9
+ */
10
+ function XDomainRequest() {}
11
+
12
+ // Reassign the original function. Now its writable attribute
13
+ // should be true. Hackish, I know, but it works.
14
+ XDomainRequest = sinon.xdr.XDomainRequest || undefined;
@@ -0,0 +1,19 @@
1
+ /*global sinon*/
2
+ /**
3
+ * Helps IE run the fake XMLHttpRequest. By defining global functions, IE allows
4
+ * them to be overwritten at a later point. If these are not defined like
5
+ * this, overwriting them will result in anything from an exception to browser
6
+ * crash.
7
+ *
8
+ * If you don't require fake XHR to work in IE, don't include this file.
9
+ *
10
+ * @author Christian Johansen (christian@cjohansen.no)
11
+ * @license BSD
12
+ *
13
+ * Copyright (c) 2010-2013 Christian Johansen
14
+ */
15
+ function XMLHttpRequest() {}
16
+
17
+ // Reassign the original function. Now its writable attribute
18
+ // should be true. Hackish, I know, but it works.
19
+ XMLHttpRequest = sinon.xhr.XMLHttpRequest || undefined;