ende 0.5.20 → 0.5.21

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 (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;