unpoly-rails 0.32.0 → 0.33.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of unpoly-rails might be problematic. Click here for more details.

Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +106 -76
  3. data/README.md +8 -5
  4. data/README_RAILS.md +1 -1
  5. data/design/test_rejected_promise.txt +5 -0
  6. data/dist/unpoly-bootstrap3.js +1 -1
  7. data/dist/unpoly-bootstrap3.min.js +1 -1
  8. data/dist/unpoly.js +814 -417
  9. data/dist/unpoly.min.js +3 -3
  10. data/lib/assets/javascripts/unpoly/{browser.js.coffee → browser.coffee} +15 -6
  11. data/lib/assets/javascripts/unpoly/{bus.js.coffee → bus.coffee} +13 -13
  12. data/lib/assets/javascripts/unpoly/dom/extract_cascade.coffee +73 -0
  13. data/lib/assets/javascripts/unpoly/dom/extract_plan.coffee +65 -0
  14. data/lib/assets/javascripts/unpoly/{flow.js.coffee → dom.coffee} +109 -114
  15. data/lib/assets/javascripts/unpoly/{navigation.js.coffee → feedback.coffee} +11 -11
  16. data/lib/assets/javascripts/unpoly/{form.js.coffee → form.coffee} +35 -24
  17. data/lib/assets/javascripts/unpoly/{history.js.coffee → history.coffee} +9 -10
  18. data/lib/assets/javascripts/unpoly/{layout.js.coffee → layout.coffee} +53 -21
  19. data/lib/assets/javascripts/unpoly/{link.js.coffee → link.coffee} +46 -40
  20. data/lib/assets/javascripts/unpoly/{log.js.coffee → log.coffee} +2 -2
  21. data/lib/assets/javascripts/unpoly/{modal.js.coffee → modal.coffee} +17 -14
  22. data/lib/assets/javascripts/unpoly/{motion.js.coffee → motion.coffee} +28 -31
  23. data/lib/assets/javascripts/unpoly/namespace.coffee.erb +10 -0
  24. data/lib/assets/javascripts/unpoly/{popup.js.coffee → popup.coffee} +22 -10
  25. data/lib/assets/javascripts/unpoly/{proxy.js.coffee → proxy.coffee} +34 -12
  26. data/lib/assets/javascripts/unpoly/{rails.js.coffee → rails.coffee} +0 -0
  27. data/lib/assets/javascripts/unpoly/{syntax.js.coffee → syntax.coffee} +32 -21
  28. data/lib/assets/javascripts/unpoly/{toast.js.coffee → toast.coffee} +0 -0
  29. data/lib/assets/javascripts/unpoly/{tooltip.js.coffee → tooltip.coffee} +2 -2
  30. data/lib/assets/javascripts/unpoly/{util.js.coffee → util.coffee} +122 -35
  31. data/lib/assets/javascripts/unpoly-bootstrap3/{form-ext.js.coffee → form-ext.coffee} +0 -0
  32. data/lib/assets/javascripts/unpoly-bootstrap3/{layout-ext.js.coffee → layout-ext.coffee} +0 -0
  33. data/lib/assets/javascripts/unpoly-bootstrap3/{modal-ext.js.coffee → modal-ext.coffee} +0 -0
  34. data/lib/assets/javascripts/unpoly-bootstrap3/{navigation-ext.js.coffee → navigation-ext.coffee} +1 -1
  35. data/lib/assets/javascripts/{unpoly-bootstrap3.js.coffee → unpoly-bootstrap3.coffee} +0 -0
  36. data/lib/assets/javascripts/unpoly.coffee +22 -0
  37. data/lib/assets/stylesheets/unpoly/{close.css.sass → close.sass} +0 -0
  38. data/lib/assets/stylesheets/unpoly/{flow.css.sass → flow.sass} +0 -0
  39. data/lib/assets/stylesheets/unpoly/{link.css.sass → link.sass} +0 -0
  40. data/lib/assets/stylesheets/unpoly/{modal.css.sass → modal.sass} +0 -0
  41. data/lib/assets/stylesheets/unpoly/{popup.css.sass → popup.sass} +0 -0
  42. data/lib/assets/stylesheets/unpoly/{toast.css.sass → toast.sass} +0 -0
  43. data/lib/assets/stylesheets/unpoly/{tooltip.css.sass → tooltip.sass} +0 -0
  44. data/lib/assets/stylesheets/unpoly-bootstrap3/{modal-ext.css.sass → modal-ext.sass} +0 -0
  45. data/lib/assets/stylesheets/{unpoly-bootstrap3.css.sass → unpoly-bootstrap3.sass} +0 -0
  46. data/lib/assets/stylesheets/{unpoly.css.sass → unpoly.sass} +0 -0
  47. data/lib/unpoly/rails/version.rb +1 -1
  48. data/package.json +1 -1
  49. data/spec_app/Gemfile.lock +11 -13
  50. data/spec_app/app/assets/javascripts/jasmine_specs.coffee +1 -1
  51. data/spec_app/app/assets/stylesheets/_helpers.sass +1 -1
  52. data/spec_app/config/initializers/assets.rb +1 -5
  53. data/spec_app/spec/javascripts/up/{flow_spec.js.coffee → dom_spec.js.coffee} +294 -44
  54. data/spec_app/spec/javascripts/up/{navigation_spec.js.coffee → feedback_spec.js.coffee} +2 -2
  55. data/spec_app/spec/javascripts/up/form_spec.js.coffee +1 -0
  56. data/spec_app/spec/javascripts/up/layout_spec.js.coffee +10 -0
  57. data/spec_app/spec/javascripts/up/link_spec.js.coffee +28 -0
  58. data/spec_app/spec/javascripts/up/modal_spec.js.coffee +46 -9
  59. data/spec_app/spec/javascripts/up/motion_spec.js.coffee +32 -2
  60. data/spec_app/spec/javascripts/up/popup_spec.js.coffee +5 -4
  61. data/spec_app/spec/javascripts/up/util_spec.js.coffee +75 -0
  62. data/spec_app/vendor/{assets/bower_components/jasmine-ajax → asset-libs/jasmine-ajax-3.3.1}/.bower.json +0 -0
  63. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.gitignore +6 -0
  64. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.npmignore +10 -0
  65. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.pairs +6 -0
  66. data/spec_app/vendor/asset-libs/jasmine-ajax-3.3.1/.travis.yml +56 -0
  67. data/spec_app/vendor/{assets/bower_components/jasmine-ajax/lib/mock-ajax.js → asset-libs/jasmine-ajax-3.3.1/jasmine-ajax.js} +83 -26
  68. data/spec_app/vendor/{assets/bower_components/jasmine-fixture/dist → asset-libs/jasmine-fixture-1.3.4}/jasmine-fixture.js +13 -13
  69. data/spec_app/vendor/{assets/bower_components/jasmine-jquery → asset-libs/jasmine-jquery-2.1.1}/.bower.json +0 -0
  70. data/spec_app/vendor/{assets/bower_components/jasmine-jquery/lib → asset-libs/jasmine-jquery-2.1.1}/jasmine-jquery.js +0 -0
  71. data/spec_app/vendor/assets/{javascripts/.keep → .keep} +0 -0
  72. metadata +52 -203
  73. data/lib/assets/javascripts/unpoly/module.js.coffee.erb +0 -8
  74. data/lib/assets/javascripts/unpoly.js.coffee +0 -21
  75. data/spec_app/Bowerfile +0 -3
  76. data/spec_app/vendor/assets/.bowerrc +0 -3
  77. data/spec_app/vendor/assets/bower.json +0 -8
  78. data/spec_app/vendor/assets/bower_components/jasmine/.bower.json +0 -50
  79. data/spec_app/vendor/assets/bower_components/jasmine/CONTRIBUTING.md +0 -130
  80. data/spec_app/vendor/assets/bower_components/jasmine/GOALS_2.0.md +0 -64
  81. data/spec_app/vendor/assets/bower_components/jasmine/MANIFEST.in +0 -5
  82. data/spec_app/vendor/assets/bower_components/jasmine/MIT.LICENSE +0 -20
  83. data/spec_app/vendor/assets/bower_components/jasmine/README.md +0 -73
  84. data/spec_app/vendor/assets/bower_components/jasmine/RELEASE.md +0 -73
  85. data/spec_app/vendor/assets/bower_components/jasmine/bower.json +0 -41
  86. data/spec_app/vendor/assets/bower_components/jasmine/images/jasmine-horizontal.png +0 -0
  87. data/spec_app/vendor/assets/bower_components/jasmine/images/jasmine-horizontal.svg +0 -102
  88. data/spec_app/vendor/assets/bower_components/jasmine/images/jasmine_favicon.png +0 -0
  89. data/spec_app/vendor/assets/bower_components/jasmine/lib/console/console.js +0 -190
  90. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/boot.js +0 -143
  91. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/example/node_example/lib/jasmine_examples/Player.js +0 -24
  92. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/example/node_example/lib/jasmine_examples/Song.js +0 -9
  93. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/jasmine-html.js +0 -446
  94. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/jasmine.css +0 -58
  95. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/jasmine.js +0 -3298
  96. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/json2.js +0 -489
  97. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core/node_boot.js +0 -41
  98. data/spec_app/vendor/assets/bower_components/jasmine/lib/jasmine-core.js +0 -37
  99. data/spec_app/vendor/assets/bower_components/jasmine/package.json +0 -34
  100. data/spec_app/vendor/assets/bower_components/jasmine/requirements.txt +0 -1
  101. data/spec_app/vendor/assets/bower_components/jasmine-ajax/MIT.LICENSE +0 -20
  102. data/spec_app/vendor/assets/bower_components/jasmine-ajax/README.markdown +0 -289
  103. data/spec_app/vendor/assets/bower_components/jasmine-ajax/bower.json +0 -35
  104. data/spec_app/vendor/assets/bower_components/jasmine-ajax/package.json +0 -26
  105. data/spec_app/vendor/assets/bower_components/jasmine-ajax/release_notes/2.0.2.md +0 -50
  106. data/spec_app/vendor/assets/bower_components/jasmine-ajax/release_notes/2.99.md +0 -14
  107. data/spec_app/vendor/assets/bower_components/jasmine-ajax/release_notes/3.0.md +0 -28
  108. data/spec_app/vendor/assets/bower_components/jasmine-ajax/release_notes/3.1.0.md +0 -24
  109. data/spec_app/vendor/assets/bower_components/jasmine-ajax/release_notes/3.1.1.md +0 -23
  110. data/spec_app/vendor/assets/bower_components/jasmine-ajax/release_notes/3.2.0.md +0 -20
  111. data/spec_app/vendor/assets/bower_components/jasmine-fixture/.bower.json +0 -27
  112. data/spec_app/vendor/assets/bower_components/jasmine-fixture/.gitignore +0 -8
  113. data/spec_app/vendor/assets/bower_components/jasmine-fixture/.npmignore +0 -8
  114. data/spec_app/vendor/assets/bower_components/jasmine-fixture/LICENSE.txt +0 -24
  115. data/spec_app/vendor/assets/bower_components/jasmine-fixture/README.md +0 -118
  116. data/spec_app/vendor/assets/bower_components/jasmine-fixture/bower.json +0 -17
  117. data/spec_app/vendor/assets/bower_components/jasmine-fixture/dist/jasmine-fixture.min.js +0 -5
  118. data/spec_app/vendor/assets/bower_components/jasmine-fixture/spec-e2e/basic-usage-spec.coffee +0 -14
  119. data/spec_app/vendor/assets/bower_components/jasmine-fixture/spec-e2e/helpers/invariants.coffee +0 -17
  120. data/spec_app/vendor/assets/bower_components/jasmine-fixture/spec-e2e/helpers/spec-within-a-spec.coffee +0 -24
  121. data/spec_app/vendor/assets/bower_components/jasmine-fixture/spec-e2e/helpers/tmp-files.coffee +0 -8
  122. data/spec_app/vendor/assets/bower_components/jasmine-fixture/spec-e2e/support/jasmine1-testem-config.json +0 -11
  123. data/spec_app/vendor/assets/bower_components/jasmine-fixture/spec-e2e/support/jasmine2-testem-config.json +0 -11
  124. data/spec_app/vendor/assets/bower_components/jasmine-fixture/vendor/js/jquery-1.11.0.js +0 -10337
  125. data/spec_app/vendor/assets/bower_components/jasmine-fixture/vendor/js/jquery-1.8.3.js +0 -9472
  126. data/spec_app/vendor/assets/bower_components/jasmine-fixture/vendor/js/jquery-2.1.0.js +0 -9111
  127. data/spec_app/vendor/assets/bower_components/jasmine-jquery/CONTRIBUTING.md +0 -28
  128. data/spec_app/vendor/assets/bower_components/jasmine-jquery/Gruntfile.js +0 -49
  129. data/spec_app/vendor/assets/bower_components/jasmine-jquery/LICENSE +0 -20
  130. data/spec_app/vendor/assets/bower_components/jasmine-jquery/README.md +0 -367
  131. data/spec_app/vendor/assets/bower_components/jasmine-jquery/bower.json +0 -15
  132. data/spec_app/vendor/assets/bower_components/jasmine-jquery/package.json +0 -35
  133. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/fixture_with_checkbox_with_checked.html +0 -6
  134. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/fixture_with_javascript.html +0 -1
  135. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/fixture_with_javascript_block.html +0 -1
  136. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/javascripts/jasmine_javascript_click.js +0 -1
  137. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/javascripts/jasmine_javascript_hover.js +0 -1
  138. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/json/jasmine_json_test.json +0 -1
  139. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/real_non_mocked_fixture.html +0 -1
  140. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/fixtures/real_non_mocked_fixture_style.css +0 -1
  141. data/spec_app/vendor/assets/bower_components/jasmine-jquery/spec/suites/jasmine-jquery-spec.js +0 -1842
  142. data/spec_app/vendor/assets/bower_components/jquery/.bower.json +0 -38
  143. data/spec_app/vendor/assets/bower_components/jquery/MIT-LICENSE.txt +0 -21
  144. data/spec_app/vendor/assets/bower_components/jquery/bower.json +0 -28
  145. data/spec_app/vendor/assets/bower_components/jquery/dist/jquery.js +0 -9210
  146. data/spec_app/vendor/assets/bower_components/jquery/dist/jquery.min.js +0 -5
  147. data/spec_app/vendor/assets/bower_components/jquery/dist/jquery.min.map +0 -1
  148. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/jsonp.js +0 -89
  149. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/load.js +0 -75
  150. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/parseJSON.js +0 -13
  151. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/parseXML.js +0 -28
  152. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/script.js +0 -64
  153. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/var/nonce.js +0 -5
  154. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/var/rquery.js +0 -3
  155. data/spec_app/vendor/assets/bower_components/jquery/src/ajax/xhr.js +0 -136
  156. data/spec_app/vendor/assets/bower_components/jquery/src/ajax.js +0 -786
  157. data/spec_app/vendor/assets/bower_components/jquery/src/attributes/attr.js +0 -141
  158. data/spec_app/vendor/assets/bower_components/jquery/src/attributes/classes.js +0 -158
  159. data/spec_app/vendor/assets/bower_components/jquery/src/attributes/prop.js +0 -94
  160. data/spec_app/vendor/assets/bower_components/jquery/src/attributes/support.js +0 -35
  161. data/spec_app/vendor/assets/bower_components/jquery/src/attributes/val.js +0 -161
  162. data/spec_app/vendor/assets/bower_components/jquery/src/attributes.js +0 -11
  163. data/spec_app/vendor/assets/bower_components/jquery/src/callbacks.js +0 -205
  164. data/spec_app/vendor/assets/bower_components/jquery/src/core/access.js +0 -60
  165. data/spec_app/vendor/assets/bower_components/jquery/src/core/init.js +0 -123
  166. data/spec_app/vendor/assets/bower_components/jquery/src/core/parseHTML.js +0 -39
  167. data/spec_app/vendor/assets/bower_components/jquery/src/core/ready.js +0 -97
  168. data/spec_app/vendor/assets/bower_components/jquery/src/core/var/rsingleTag.js +0 -4
  169. data/spec_app/vendor/assets/bower_components/jquery/src/core.js +0 -502
  170. data/spec_app/vendor/assets/bower_components/jquery/src/css/addGetHookIf.js +0 -22
  171. data/spec_app/vendor/assets/bower_components/jquery/src/css/curCSS.js +0 -57
  172. data/spec_app/vendor/assets/bower_components/jquery/src/css/defaultDisplay.js +0 -70
  173. data/spec_app/vendor/assets/bower_components/jquery/src/css/hiddenVisibleSelectors.js +0 -15
  174. data/spec_app/vendor/assets/bower_components/jquery/src/css/support.js +0 -96
  175. data/spec_app/vendor/assets/bower_components/jquery/src/css/swap.js +0 -28
  176. data/spec_app/vendor/assets/bower_components/jquery/src/css/var/cssExpand.js +0 -3
  177. data/spec_app/vendor/assets/bower_components/jquery/src/css/var/getStyles.js +0 -12
  178. data/spec_app/vendor/assets/bower_components/jquery/src/css/var/isHidden.js +0 -13
  179. data/spec_app/vendor/assets/bower_components/jquery/src/css/var/rmargin.js +0 -3
  180. data/spec_app/vendor/assets/bower_components/jquery/src/css/var/rnumnonpx.js +0 -5
  181. data/spec_app/vendor/assets/bower_components/jquery/src/css.js +0 -450
  182. data/spec_app/vendor/assets/bower_components/jquery/src/data/Data.js +0 -181
  183. data/spec_app/vendor/assets/bower_components/jquery/src/data/accepts.js +0 -20
  184. data/spec_app/vendor/assets/bower_components/jquery/src/data/var/data_priv.js +0 -5
  185. data/spec_app/vendor/assets/bower_components/jquery/src/data/var/data_user.js +0 -5
  186. data/spec_app/vendor/assets/bower_components/jquery/src/data.js +0 -178
  187. data/spec_app/vendor/assets/bower_components/jquery/src/deferred.js +0 -149
  188. data/spec_app/vendor/assets/bower_components/jquery/src/deprecated.js +0 -13
  189. data/spec_app/vendor/assets/bower_components/jquery/src/dimensions.js +0 -50
  190. data/spec_app/vendor/assets/bower_components/jquery/src/effects/Tween.js +0 -114
  191. data/spec_app/vendor/assets/bower_components/jquery/src/effects/animatedSelector.js +0 -13
  192. data/spec_app/vendor/assets/bower_components/jquery/src/effects.js +0 -648
  193. data/spec_app/vendor/assets/bower_components/jquery/src/event/ajax.js +0 -13
  194. data/spec_app/vendor/assets/bower_components/jquery/src/event/alias.js +0 -39
  195. data/spec_app/vendor/assets/bower_components/jquery/src/event/support.js +0 -9
  196. data/spec_app/vendor/assets/bower_components/jquery/src/event.js +0 -868
  197. data/spec_app/vendor/assets/bower_components/jquery/src/exports/amd.js +0 -24
  198. data/spec_app/vendor/assets/bower_components/jquery/src/exports/global.js +0 -32
  199. data/spec_app/vendor/assets/bower_components/jquery/src/intro.js +0 -44
  200. data/spec_app/vendor/assets/bower_components/jquery/src/jquery.js +0 -37
  201. data/spec_app/vendor/assets/bower_components/jquery/src/manipulation/_evalUrl.js +0 -18
  202. data/spec_app/vendor/assets/bower_components/jquery/src/manipulation/support.js +0 -32
  203. data/spec_app/vendor/assets/bower_components/jquery/src/manipulation/var/rcheckableType.js +0 -3
  204. data/spec_app/vendor/assets/bower_components/jquery/src/manipulation.js +0 -580
  205. data/spec_app/vendor/assets/bower_components/jquery/src/offset.js +0 -207
  206. data/spec_app/vendor/assets/bower_components/jquery/src/outro.js +0 -1
  207. data/spec_app/vendor/assets/bower_components/jquery/src/queue/delay.js +0 -22
  208. data/spec_app/vendor/assets/bower_components/jquery/src/queue.js +0 -142
  209. data/spec_app/vendor/assets/bower_components/jquery/src/selector-native.js +0 -172
  210. data/spec_app/vendor/assets/bower_components/jquery/src/selector-sizzle.js +0 -14
  211. data/spec_app/vendor/assets/bower_components/jquery/src/selector.js +0 -1
  212. data/spec_app/vendor/assets/bower_components/jquery/src/serialize.js +0 -111
  213. data/spec_app/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.js +0 -2067
  214. data/spec_app/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.js +0 -3
  215. data/spec_app/vendor/assets/bower_components/jquery/src/sizzle/dist/sizzle.min.map +0 -1
  216. data/spec_app/vendor/assets/bower_components/jquery/src/traversing/findFilter.js +0 -100
  217. data/spec_app/vendor/assets/bower_components/jquery/src/traversing/var/rneedsContext.js +0 -6
  218. data/spec_app/vendor/assets/bower_components/jquery/src/traversing.js +0 -199
  219. data/spec_app/vendor/assets/bower_components/jquery/src/var/arr.js +0 -3
  220. data/spec_app/vendor/assets/bower_components/jquery/src/var/class2type.js +0 -4
  221. data/spec_app/vendor/assets/bower_components/jquery/src/var/concat.js +0 -5
  222. data/spec_app/vendor/assets/bower_components/jquery/src/var/hasOwn.js +0 -5
  223. data/spec_app/vendor/assets/bower_components/jquery/src/var/indexOf.js +0 -5
  224. data/spec_app/vendor/assets/bower_components/jquery/src/var/pnum.js +0 -3
  225. data/spec_app/vendor/assets/bower_components/jquery/src/var/push.js +0 -5
  226. data/spec_app/vendor/assets/bower_components/jquery/src/var/rnotwhite.js +0 -3
  227. data/spec_app/vendor/assets/bower_components/jquery/src/var/slice.js +0 -5
  228. data/spec_app/vendor/assets/bower_components/jquery/src/var/strundefined.js +0 -3
  229. data/spec_app/vendor/assets/bower_components/jquery/src/var/support.js +0 -4
  230. data/spec_app/vendor/assets/bower_components/jquery/src/var/toString.js +0 -5
  231. data/spec_app/vendor/assets/bower_components/jquery/src/wrap.js +0 -79
  232. data/spec_app/vendor/assets/stylesheets/.keep +0 -0
@@ -1,289 +0,0 @@
1
- [![Build Status](https://travis-ci.org/jasmine/jasmine-ajax.png?branch=master)](https://travis-ci.org/jasmine/jasmine-ajax)
2
-
3
- If you are using the updated version of this library, there is some additional documentation located at [jasmine.github.io](http://jasmine.github.io/2.0/ajax.html) that is up-to-date.
4
-
5
- This branch is now version 2.0, if you need jasmine-ajax for Jasmine 1.3.x please grab the last release from that tag.
6
-
7
- jasmine-ajax - Faking Ajax responses in your Jasmine suite.
8
- ============
9
- jasmine-ajax is a library that lets you define a set of fake responses for Ajax
10
- requests made by your application, specify per spec which response should be
11
- used, and keep track of the Ajax requests you make so you can make assertions
12
- about the results.
13
-
14
- Libraries Supported
15
- -------------------
16
- jasmine-ajax is currently compatible with any library that uses XMLHttpRequest. Tested with jQuery and Zepto.
17
-
18
- Installing
19
- ----------
20
- Download [mock-ajax.js](https://raw.github.com/jasmine/jasmine-ajax/master/lib/mock-ajax.js) and add it to your project. If you are using the jasmine gem, be sure the location you put mock-ajax.js is included in your src_files path in jasmine.yml. If you are using Jasmine standalone, make sure you add it to your spec runner.
21
-
22
- Setup
23
- -----
24
- Using the library in your Jasmine specs consists of four parts:
25
-
26
- 1. Defining test responses
27
- 2. Installing the mock
28
- 3. Triggering the ajax request code
29
- 3. Defining the response for each request
30
- 4. Inspecting Ajax requests and setting expectations on them
31
-
32
- Example
33
- -------
34
- Let's use a simple Foursquare venue search app to show each of these steps.
35
-
36
- ### 1. Defining Test Responses ###
37
- After signing up for an API key and playing around with curl a bit you should have an idea of what API resources you are interested in and what sample responses look like. Once you do, you can define simple JavaScripts objects that will be used to build XMLHttpRequest objects later.
38
-
39
- For example, if you have a response that looks like this:
40
- ```json
41
- {
42
- "meta":{
43
- "code":200,
44
- "errorType":"deprecated",
45
- "errorDetail":"This endpoint will stop returning groups in the future. Please use a current version, see http://bit.ly/lZx3NU."
46
- },
47
- "response":{
48
- "groups":[{
49
- "type":"nearby",
50
- "name":"Nearby",
51
- "items":[{
52
- "id":"4bb9fd9f3db7b7138dbd229a",
53
- "name":"Pivotal Labs",
54
- "contact":{
55
- "twitter":"pivotalboulder"
56
- },
57
- "location":{
58
- "address":"1701 Pearl St.",
59
- "crossStreet":"at 17th St.",
60
- "city":"Boulder",
61
- "state":"CO",
62
- "lat":40.019461,
63
- "lng":-105.273296,
64
- "distance":0
65
- },
66
- "categories":[{
67
- "id":"4bf58dd8d48988d124941735",
68
- "name":"Office",
69
- "pluralName":"Offices",
70
- "icon":"https://foursquare.com/img/categories/building/default.png",
71
- "parents":["Homes, Work, Others"
72
- ],
73
- "primary":true
74
- }
75
- ],
76
- "verified":false,
77
- "stats":{
78
- "checkinsCount":223,
79
- "usersCount":62
80
- },
81
- "hereNow":{
82
- "count":0
83
- }
84
- }
85
- ]
86
- }
87
- ]
88
- }
89
- }
90
- ```
91
-
92
- Then you'd define a mock response that looks something like this:
93
-
94
- ```javascript
95
- var TestResponses = {
96
- search: {
97
- success: {
98
- status: 200,
99
- responseText: '{"response":{"groups":[{"type":"nearby","name":"Nearby","items":[{"id":"4bb9fd9f3db7b7138dbd229a","name":"Pivotal Labs","contact":{"twitter":"pivotalboulder"},"location":{"address":"1701 Pearl St.","crossStreet":"at 17th St.","city":"Boulder","state":"CO","lat":40.019461,"lng":-105.273296,"distance":0},"categories":[{"id":"4bf58dd8d48988d124941735","name":"Office","pluralName":"Offices","icon":"https://foursquare.com/img/categories/building/default.png","parents":["Homes, Work, Others"],"primary":true}],"verified":false,"stats":{"checkinsCount":223,"usersCount":62},"hereNow":{"count":0}},{"id":"4af2eccbf964a5203ae921e3","name":"Laughing Goat Café","contact":{},"location":{"address":"1709 Pearl St.","crossStreet":"btw 16th & 17th","city":"Boulder","state":"CO","postalCode":"80302","country":"USA","lat":40.019321,"lng":-105.27311982,"distance":21},"categories":[{"id":"4bf58dd8d48988d1e0931735","name":"Coffee Shop","pluralName":"Coffee Shops","icon":"https://foursquare.com/img/categories/food/coffeeshop.png","parents":["Food"],"primary":true},{"id":"4bf58dd8d48988d1a7941735","name":"College Library","pluralName":"College Libraries","icon":"https://foursquare.com/img/categories/education/default.png","parents":["Colleges & Universities"]}],"verified":false,"stats":{"checkinsCount":1314,"usersCount":517},"hereNow":{"count":0}},{"id":"4ca777a597c8a1cdf7bc7aa5","name":"Ted\'s Montana Grill","contact":{"phone":"3034495546","formattedPhone":"(303) 449-5546","twitter":"TedMontanaGrill"},"location":{"address":"1701 Pearl St.","crossStreet":"17th and Pearl","city":"Boulder","state":"CO","postalCode":"80302","country":"USA","lat":40.019376,"lng":-105.273311,"distance":9},"categories":[{"id":"4bf58dd8d48988d1cc941735","name":"Steakhouse","pluralName":"Steakhouses","icon":"https://foursquare.com/img/categories/food/steakhouse.png","parents":["Food"],"primary":true}],"verified":true,"stats":{"checkinsCount":197,"usersCount":150},"url":"http://www.tedsmontanagrill.com/","hereNow":{"count":0}},{"id":"4d3cac5a8edf3704e894b2a5","name":"Pizzeria Locale","contact":{},"location":{"address":"1730 Pearl St","city":"Boulder","state":"CO","postalCode":"80302","country":"USA","lat":40.0193746,"lng":-105.2726744,"distance":53},"categories":[{"id":"4bf58dd8d48988d1ca941735","name":"Pizza Place","pluralName":"Pizza Places","icon":"https://foursquare.com/img/categories/food/pizza.png","parents":["Food"],"primary":true}],"verified":false,"stats":{"checkinsCount":511,"usersCount":338},"hereNow":{"count":2}},{"id":"4d012cd17c56370462a6b4f0","name":"The Pinyon","contact":{},"location":{"address":"1710 Pearl St.","city":"Boulder","state":"CO","country":"USA","lat":40.019219,"lng":-105.2730563,"distance":33},"categories":[{"id":"4bf58dd8d48988d14e941735","name":"American Restaurant","pluralName":"American Restaurants","icon":"https://foursquare.com/img/categories/food/default.png","parents":["Food"],"primary":true}],"verified":true,"stats":{"checkinsCount":163,"usersCount":98},"hereNow":{"count":1}}]}]}}'
100
- }
101
- }
102
- };
103
- ```
104
-
105
- A good place to define this is in `spec/javascripts/helpers/test_responses`. You can also define failure responses, for whatever status codes the API you are working with supports.
106
-
107
- ### 2. Installing the mock ###
108
- Install the mock using `jasmine.Ajax.install()`:
109
-
110
- ```javascript
111
- beforeEach(function() {
112
- jasmine.Ajax.install();
113
- ...
114
- });
115
- ```
116
- After this, all Ajax requests will be captured by jasmine-ajax. If you want to do things like load fixtures, do it before you install the mock (see below).
117
-
118
- ### 3. Trigger ajax request code ###
119
- Before you can specify that a request uses your test response, you must have a handle to the request itself. This means that the request is made first by the code under test and then you will set your test response (see next step).
120
-
121
- ```javascript
122
- foursquare.search('40.019461,-105.273296', {
123
- onSuccess: onSuccess,
124
- onFailure: onFailure
125
- });
126
-
127
- request = jasmine.Ajax.requests.mostRecent();
128
- ```
129
-
130
- The onreadystatechange event isn't fired to complete the ajax request until you set the response in the next step.
131
-
132
- ### 4. Set responses ###
133
- Now that you've defined some test responses and installed the mock, you need to tell jasmine-ajax which response to use for a given spec. If you want to use your success response for a set of related success specs, you might use:
134
-
135
- ```javascript
136
- describe("on success", function() {
137
- beforeEach(function() {
138
- request.respondWith(TestResponses.search.success);
139
- });
140
- });
141
- ```
142
-
143
- Now for all the specs in this example group, whenever an Ajax response is sent, it will use the `TestResponses.search.success` object defined in your test responses to build the XMLHttpRequest object.
144
-
145
- ### 5. Inspect Ajax requests ###
146
- Putting it all together, you can install the mock, pass some spies as callbacks to your search object, and make expectations about the expected behavior.
147
-
148
- ```javascript
149
- describe("FoursquareVenueSearch", function() {
150
- var foursquare, request;
151
- var onSuccess, onFailure;
152
-
153
- beforeEach(function() {
154
- jasmine.Ajax.install();
155
-
156
- onSuccess = jasmine.createSpy('onSuccess');
157
- onFailure = jasmine.createSpy('onFailure');
158
-
159
- foursquare = new FoursquareVenueSearch();
160
-
161
- foursquare.search('40.019461,-105.273296', {
162
- onSuccess: onSuccess,
163
- onFailure: onFailure
164
- });
165
-
166
- request = jasmine.Ajax.requests.mostRecent();
167
- expect(request.url).toBe('venues/search');
168
- expect(request.method).toBe('POST');
169
- expect(request.data()).toEqual({latLng: ['40.019461, -105.273296']});
170
- });
171
-
172
- describe("on success", function() {
173
- beforeEach(function() {
174
- request.respondWith(TestResponses.search.success);
175
- });
176
-
177
- it("calls onSuccess with an array of Locations", function() {
178
- expect(onSuccess).toHaveBeenCalled();
179
-
180
- var successArgs = onSuccess.calls.mostRecent().args[0];
181
-
182
- expect(successArgs.length).toEqual(1);
183
- expect(successArgs[0]).toEqual(jasmine.any(Venue));
184
- });
185
- });
186
- });
187
- ```
188
-
189
- By default the `data` function is very naive about parsing form data being sent.
190
-
191
- The provided parsers are:
192
-
193
- 1. If the XHR has a content-type of application/json, JSON.parse
194
- 1. Otherwise simply split query string by '&' and '='
195
-
196
- If you need more control over how your data is presented, you can supply a custom param parser. Custom parsers will be prepended to the list of parsers to try.
197
-
198
- ```javascript
199
- describe("custom params", function() {
200
- beforeEach(function() {
201
- jasmine.Ajax.install();
202
- jasmine.Ajax.addCustomParamParser({
203
- test: function(xhr) {
204
- // return true if you can parse
205
- },
206
- parse: function(params) {
207
- // parse and return
208
- }
209
- });
210
- });
211
- });
212
- ```
213
-
214
-
215
- Loading Fixtures
216
- ----------------
217
- Most third-party Jasmine extensions use Ajax to load HTML fixtures into the DOM. Since jasmine-ajax intercepts all Ajax calls after it is installed, you need to load your fixtures before installing the mock. If you are using jasmine-jquery, that looks like this:
218
-
219
- ```javascript
220
- beforeEach(function(){
221
- // first load your fixtures
222
- loadFixtures('fixture.html');
223
-
224
- // then install the mock
225
- jasmine.Ajax.install();
226
- });
227
- ```
228
-
229
-
230
- Complex Requests
231
- ----------------
232
- Third-party frameworks may do many requests you can not simply respond to.
233
- Let's assume that you are talking to a SOAP service. SOAP services mostly have identical URL's, but responses differ by the XML request that was send using a POST request.
234
- Let's register a response that will be used if the request body was matched against a RegExp.
235
-
236
- ```javascript
237
- beforeEach(function(){
238
- // first install the mock
239
- jasmine.Ajax.install();
240
-
241
- // Than register a request to which automatically will be responded
242
- jasmine.Ajax.stubRequest(
243
- 'https://soap.domain.tld/ws/UserManager',
244
- /.*\<registrationRequest\>.*/
245
- ).andReturn({
246
- status: 200,
247
- statusText: 'HTTP/1.1 200 OK',
248
- contentType: 'text/xml;charset=UTF-8',
249
- responseText: '<soap:Envelope><soap:Body><registrationResponse><username>foo</username><password>bar</password></registrationResponse></soap:Body></soap:Envelope>'
250
- });
251
-
252
- // Register another response for the same URL, but with different SOAP request
253
- jasmine.Ajax.stubRequest(
254
- 'https://soap.domain.tld/ws/UserManager',
255
- /.*\<loginRequest\>.*/
256
- ).andReturn({
257
- status: 200,
258
- statusText: 'HTTP/1.1 200 OK',
259
- contentType: 'text/xml;charset=UTF-8',
260
- responseText: '<soap:Envelope><soap:Body><loginResponse><success>true</success></loginResponse></soap:Body></soap:Envelope>'
261
- });
262
- });
263
- ```
264
-
265
- Or if you also want to avoid the host part of the URL, you can register it using a RegExp for the URL, too.
266
-
267
- ```javascript
268
- beforeEach(function(){
269
- // first install the mock
270
- jasmine.Ajax.install();
271
-
272
- // Than register a request to which automatically will be responded
273
- jasmine.Ajax.stubRequest(
274
- /.*\/ws\/UserManager/,
275
- /.*\<registrationRequest\>.*/
276
- ).andReturn({
277
- status: 200,
278
- statusText: 'HTTP/1.1 200 OK',
279
- contentType: 'text/xml;charset=UTF-8',
280
- responseText: '<soap:Envelope><soap:Body><registrationResponse><username>foo</username><password>bar</password></registrationResponse></soap:Body></soap:Envelope>'
281
- });
282
- });
283
- ```
284
-
285
- Jasmine
286
- -------
287
- http://github.com/jasmine/jasmine
288
-
289
- Copyright (c) 2015 Pivotal Labs. This software is licensed under the MIT License.
@@ -1,35 +0,0 @@
1
- {
2
- "name": "jasmine-ajax",
3
- "description": "A library for faking Ajax responses in your Jasmine suite.",
4
- "version": "3.2.0",
5
- "main": "lib/mock-ajax.js",
6
- "license": "MIT",
7
-
8
- "homepage": "https://github.com/jasmine/jasmine-ajax",
9
- "authors": [
10
- "JR Boyens <jboyens@fooninja.org>",
11
- "Gregg Van Hove <gregg@slackersoft.net>"
12
- ],
13
- "dependencies": {
14
- "jasmine" : "~2"
15
- },
16
- "moduleType": [
17
- "globals"
18
- ],
19
- "keywords": [
20
- "jasmine",
21
- "ajax"
22
- ],
23
- "ignore": [
24
- "**/.*",
25
- "Gemfile",
26
- "Gemfile.lock",
27
- "Gruntfile.js",
28
- "Rakefile",
29
- "bower_components",
30
- "node_modules",
31
- "spec",
32
- "src",
33
- "travis-script.sh"
34
- ]
35
- }
@@ -1,26 +0,0 @@
1
- {
2
- "name": "jasmine-ajax",
3
- "description": "A library for faking Ajax responses in your Jasmine suite",
4
- "version": "3.2.0",
5
- "main": "lib/mock-ajax.js",
6
- "license": "MIT",
7
-
8
- "url": "https://github.com/jasmine/jasmine-ajax",
9
- "contributors": [
10
- "Gregg Van Hove <gregg@slackersoft.net>",
11
- "JR Boyens <jboyens@fooninja.org>"
12
- ],
13
- "private": false,
14
- "repository": {
15
- "type": "git",
16
- "url": "https://github.com/jasmine/jasmine-ajax"
17
- },
18
- "dependencies": {},
19
- "devDependencies": {
20
- "grunt": "0.4.0",
21
- "grunt-cli": "~0.1.13",
22
- "grunt-contrib-concat": "~0.5.0",
23
- "grunt-contrib-jshint": "~0.1.1",
24
- "grunt-shell": "~0.2.1"
25
- }
26
- }
@@ -1,50 +0,0 @@
1
- # Jasmine-Ajax 2.0.2 Release Notes
2
-
3
- ## Summary
4
-
5
- Release of jasmine-ajax with many fixes to be more compatible with the full XHR spec.
6
-
7
- ## Changes
8
-
9
- - Combine request headers with the same name
10
- - Find response case-insensitively
11
- - Split into multiple files for development
12
- - We use the `getJasmineRequireObj()` for loading dependencies
13
- - CI runs specs against both separate and concatenated files
14
-
15
- ## Pull Requests and Issues
16
- - Allow progress event callbacks to be null instead of just empty functions.
17
- - Fixes [#85](http://github.com/pivotal/jasmine-ajax/issues/85)
18
-
19
- - Support listening to XHR progress events via `addEventListener`
20
- - Fixes [#79](http://github.com/pivotal/jasmine-ajax/issues/79)
21
-
22
- - Support all XHR events
23
- - Fixes [#81](http://github.com/pivotal/jasmine-ajax/issues/81)
24
- - Fixes [#82](http://github.com/pivotal/jasmine-ajax/issues/82)
25
-
26
- - Parse `responseText` into a `responseXML` if the contentType is xml-ish
27
- - Fixes [#55](http://github.com/pivotal/jasmine-ajax/issues/55)
28
-
29
- - Un-pin jasmine dependency from version 2.0.0
30
- - Merges [#76](http://github.com/pivotal/jasmine-ajax/issues/76) from @macroeyes
31
-
32
- - added support for multiple headers with same name
33
- - Merges [#72](http://github.com/pivotal/jasmine-ajax/issues/72) from @resident-uhlig
34
-
35
- - Record overridden mime types
36
- - Fixes [#74](http://github.com/pivotal/jasmine-ajax/issues/74)
37
-
38
- - Throw an error if response() is called more than once on requests
39
- - Fixes [#70](http://github.com/pivotal/jasmine-ajax/issues/70)
40
- - Merges [#71](http://github.com/pivotal/jasmine-ajax/issues/71) from @kmontag
41
-
42
- - Allow stubs to match only a particular http method (GET, POST, PUT, etc.)
43
- - Fixes [#36](http://github.com/pivotal/jasmine-ajax/issues/36)
44
-
45
- - Add some files to the bower.json ignore list
46
- - Merges [#69](http://github.com/pivotal/jasmine-ajax/issues/69 ) from @lencioni
47
-
48
- ------
49
-
50
- _Release Notes generated with _[Anchorman](http://github.com/infews/anchorman)_
@@ -1,14 +0,0 @@
1
- # Jasmine-Ajax 2.99 Release Notes
2
-
3
- ## Summary
4
-
5
- Release of jasmine-ajax to provide a non-breaking upgrade path as we move to support XHR 2.
6
-
7
- ## Changes
8
-
9
- - Deprecate the `response` function on fake request in favor of `respondWith`.
10
-
11
-
12
- ------
13
-
14
- _Release Notes generated with _[Anchorman](http://github.com/infews/anchorman)_
@@ -1,28 +0,0 @@
1
- # Jasmine-Ajax 3.0 Release Notes
2
-
3
- ## Summary
4
-
5
- Support XHR 2
6
-
7
- This release contains a breaking change. The `response` method is no longer supported, you should use `respondWith` instead.
8
-
9
- ## Changes
10
-
11
- * Add grunt tasks for releasing packages
12
- * Bring npm and bower configurations in line with each other
13
- * Also test in IE 11 on travis
14
-
15
- ## Pull Requests & Issues
16
-
17
- * Include trailing newline in response headers to match browsers.
18
- - Fixes [#91](https://github.com/jasmine/jasmine-ajax/issues/91)
19
-
20
- * modify example code 'response' method is deprecated. use 'respondWith' instead
21
- - Merges [#87](https://github.com/jasmine/jasmine-ajax/issues/87) from @Mstudio-Ishikawa
22
-
23
- * Support for XHR 2
24
- - Merges [#60](https://github.com/jasmine/jasmine-ajax/issues/60) from @albertyw
25
-
26
- ------
27
-
28
- _Release Notes generated with _[Anchorman](http://github.com/infews/anchorman)_
@@ -1,24 +0,0 @@
1
- # Jasmine-Ajax 3.1 Release Notes
2
-
3
- ## Summary
4
-
5
- This is a maintenance release.
6
-
7
- ## Changes
8
-
9
- * Add safari 7 & 8 to browser matrix
10
-
11
- ## Pull Requests & Issues
12
-
13
- * Add version number to combined file
14
- - Fixes #93
15
-
16
- * Implement `removeEventListener`
17
- - Merges #89 from @illiptic
18
-
19
- * Add `responseHeaders` to `andReturn` s options
20
- - Merges #94 from @tomalec
21
-
22
- ------
23
-
24
- _Release Notes generated with _[Anchorman](http://github.com/infews/anchorman)_
@@ -1,23 +0,0 @@
1
- # Jasmine-Ajax 3.1 Release Notes
2
-
3
- ## Pull Requests & Issues
4
-
5
- * Loosen bower dependency on jasmine
6
- - Fixes [#106](https://github.com/jasmine/jasmine-ajax/issues/106)
7
-
8
- * Event readystatechange is triggered when headers are available
9
- - Merges [#104](https://github.com/jasmine/jasmine-ajax/issues/104) from @mjeanroy
10
- - Fixes [#97](https://github.com/jasmine/jasmine-ajax/issues/97)
11
- - Fixes [#103](https://github.com/jasmine/jasmine-ajax/issues/103)
12
- - Fixes [#102](https://github.com/jasmine/jasmine-ajax/issues/102)
13
-
14
- * Throw error on duplicate calls to MockAjax#install.
15
- - Merges [#98](https://github.com/jasmine/jasmine-ajax/issues/98) from @jhamon
16
- - Fixes [#96](https://github.com/jasmine/jasmine-ajax/issues/96)
17
-
18
- * Readme tweaks and updated links
19
- - Merges [#99](https://github.com/jasmine/jasmine-ajax/issues/99) from @jhamon
20
-
21
- ------
22
-
23
- _Release Notes generated with _[Anchorman](http://github.com/infews/anchorman)_
@@ -1,20 +0,0 @@
1
- # Jasmine-Ajax 3.2.0 Release Notes
2
-
3
- ## Pull Requests & Issues
4
-
5
- * Set the `this` context for event handler to the current XHR and pass proper ProgressEvent arguments
6
- - Merges [#114](https://github.com/jasmine/jasmine-ajax/issues/114) from @mjeanroy
7
- - Fixes [#108](https://github.com/jasmine/jasmine-ajax/issues/108)
8
-
9
- * added feature to match data/query against RegExp
10
- - Merges [#116](https://github.com/jasmine/jasmine-ajax/issues/116) from @SunboX
11
- - Fixes [#115](https://github.com/jasmine/jasmine-ajax/issues/115)
12
-
13
- * Allow error and timeout using RequestStub
14
- - Merges [#112](https://github.com/jasmine/jasmine-ajax/issues/112) from @Mordred
15
- - Fixes [#111](https://github.com/jasmine/jasmine-ajax/issues/111)
16
-
17
-
18
- ------
19
-
20
- _Release Notes generated with _[Anchorman](http://github.com/infews/anchorman)_
@@ -1,27 +0,0 @@
1
- {
2
- "name": "jasmine-fixture",
3
- "version": "1.3.3",
4
- "main": "dist/jasmine-fixture.js",
5
- "ignore": [
6
- "app",
7
- "config",
8
- "spec",
9
- "tasks",
10
- ".travis.yml",
11
- "Gruntfile.js",
12
- "main.js",
13
- "package.json"
14
- ],
15
- "dependencies": {},
16
- "devDependencies": {},
17
- "homepage": "https://github.com/searls/jasmine-fixture",
18
- "_release": "1.3.3",
19
- "_resolution": {
20
- "type": "version",
21
- "tag": "1.3.3",
22
- "commit": "688c26fd5f56d7c843ae18f45f8cf87e4ebd7cb8"
23
- },
24
- "_source": "git://github.com/searls/jasmine-fixture.git",
25
- "_target": "*",
26
- "_originalSource": "jasmine-fixture"
27
- }
@@ -1,8 +0,0 @@
1
- .DS_Store
2
-
3
- #ignore node_modules, as the node project is not "deployed" per se: http://www.mikealrogers.com/posts/nodemodules-in-git.html
4
- /node_modules
5
-
6
- /generated
7
-
8
- .sass-cache
@@ -1,8 +0,0 @@
1
- .DS_Store
2
-
3
- #ignore node_modules, as the node project is not "deployed" per se: http://www.mikealrogers.com/posts/nodemodules-in-git.html
4
- /node_modules
5
-
6
- /generated
7
-
8
- .sass-cache
@@ -1,24 +0,0 @@
1
- =================================================
2
- jasmine-fixture is licensed under the MIT License
3
- =================================================
4
-
5
- Copyright (c) 2013 Test Double, Inc.
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining
8
- a copy of this software and associated documentation files (the
9
- "Software"), to deal in the Software without restriction, including
10
- without limitation the rights to use, copy, modify, merge, publish,
11
- distribute, sublicense, and/or sell copies of the Software, and to
12
- permit persons to whom the Software is furnished to do so, subject to
13
- the following conditions:
14
-
15
- The above copyright notice and this permission notice shall be
16
- included in all copies or substantial portions of the Software.
17
-
18
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.