ende 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (314) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-gemset +1 -0
  3. data/.ruby-version +1 -0
  4. data/build/build.css +112 -0
  5. data/build/build.js +36465 -0
  6. data/component.json +11 -15
  7. data/components/chaijs/assertion-error/1.0.0/component.json +18 -0
  8. data/components/chaijs/chai/1.9.1/.gitignore +22 -0
  9. data/components/chaijs/chai/1.9.1/.mailmap +1 -0
  10. data/components/chaijs/chai/1.9.1/.npmignore +14 -0
  11. data/components/chaijs/chai/1.9.1/.travis.yml +14 -0
  12. data/components/chaijs/chai/1.9.1/CONTRIBUTING.md +173 -0
  13. data/components/chaijs/chai/1.9.1/History.md +895 -0
  14. data/components/chaijs/chai/1.9.1/Makefile +93 -0
  15. data/components/chaijs/chai/1.9.1/README.md +99 -0
  16. data/components/chaijs/chai/1.9.1/ReleaseNotes.md +482 -0
  17. data/components/chaijs/chai/1.9.1/bower.json +27 -0
  18. data/components/chaijs/chai/1.9.1/chai.js +4782 -0
  19. data/components/chaijs/chai/1.9.1/component.json +50 -0
  20. data/components/chaijs/chai/1.9.1/karma.conf.js +28 -0
  21. data/components/chaijs/chai/1.9.1/karma.sauce.js +41 -0
  22. data/components/chaijs/chai/1.9.1/lib/chai/assertion.js +130 -0
  23. data/components/chaijs/chai/1.9.1/lib/chai/config.js +50 -0
  24. data/components/chaijs/chai/1.9.1/lib/chai/core/assertions.js +1314 -0
  25. data/components/chaijs/chai/1.9.1/lib/chai/interface/assert.js +1056 -0
  26. data/components/chaijs/chai/1.9.1/lib/chai/interface/expect.js +12 -0
  27. data/components/chaijs/chai/1.9.1/lib/chai/interface/should.js +78 -0
  28. data/components/chaijs/chai/1.9.1/lib/chai/utils/addChainableMethod.js +111 -0
  29. data/components/chaijs/chai/1.9.1/lib/chai/utils/addMethod.js +43 -0
  30. data/components/chaijs/chai/1.9.1/lib/chai/utils/addProperty.js +40 -0
  31. data/components/chaijs/chai/1.9.1/lib/chai/utils/flag.js +32 -0
  32. data/components/chaijs/chai/1.9.1/lib/chai/utils/getActual.js +18 -0
  33. data/components/chaijs/chai/1.9.1/lib/chai/utils/getEnumerableProperties.js +25 -0
  34. data/components/chaijs/chai/1.9.1/lib/chai/utils/getMessage.js +49 -0
  35. data/components/chaijs/chai/1.9.1/lib/chai/utils/getName.js +20 -0
  36. data/components/chaijs/chai/1.9.1/lib/chai/utils/getPathValue.js +102 -0
  37. data/components/chaijs/chai/1.9.1/lib/chai/utils/getProperties.js +35 -0
  38. data/components/chaijs/chai/1.9.1/lib/chai/utils/index.js +114 -0
  39. data/components/chaijs/chai/1.9.1/lib/chai/utils/objDisplay.js +49 -0
  40. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteChainableMethod.js +53 -0
  41. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteMethod.js +51 -0
  42. data/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteProperty.js +54 -0
  43. data/components/chaijs/chai/1.9.1/lib/chai/utils/test.js +26 -0
  44. data/components/chaijs/chai/1.9.1/lib/chai/utils/transferFlags.js +44 -0
  45. data/components/chaijs/chai/1.9.1/lib/chai/utils/type.js +45 -0
  46. data/components/chaijs/chai/1.9.1/lib/chai.js +87 -0
  47. data/components/chaijs/chai/1.9.1/package.json +42 -0
  48. data/components/chaijs/chai/1.9.1/sauce.browsers.js +128 -0
  49. data/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_block.sh +7 -0
  50. data/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_setup.sh +53 -0
  51. data/components/chaijs/chai/1.9.1/test/assert.js +638 -0
  52. data/components/chaijs/chai/1.9.1/test/bootstrap/index.js +22 -0
  53. data/components/chaijs/chai/1.9.1/test/bootstrap/karma.js +22 -0
  54. data/components/chaijs/chai/1.9.1/test/configuration.js +133 -0
  55. data/components/chaijs/chai/1.9.1/test/display/errors.js +14 -0
  56. data/components/chaijs/chai/1.9.1/test/display/message.js +47 -0
  57. data/components/chaijs/chai/1.9.1/test/expect.js +814 -0
  58. data/components/chaijs/chai/1.9.1/test/globalShould.js +15 -0
  59. data/components/chaijs/chai/1.9.1/test/plugins.js +24 -0
  60. data/components/chaijs/chai/1.9.1/test/should.js +744 -0
  61. data/components/chaijs/chai/1.9.1/test/utilities.js +309 -0
  62. data/components/chaijs/deep-eql/0.1.3/component.json +20 -0
  63. data/components/chaijs/deep-eql/0.1.3/lib/eql.js +257 -0
  64. data/components/chaijs/type-detect/0.1.1/component.json +18 -0
  65. data/components/chaijs/type-detect/0.1.1/lib/type.js +142 -0
  66. data/{vendor/components/indefinido-indemma/components/component-bind → components/component/bind/0.0.1}/component.json +1 -1
  67. data/{vendor/components/component-classes → components/component/classes/1.1.2}/component.json +1 -1
  68. data/components/component/classes/1.2.1/component.json +19 -0
  69. data/components/component/classes/1.2.1/index.js +184 -0
  70. data/{vendor/components/component-css → components/component/css/0.0.2}/component.json +2 -2
  71. data/{vendor/components/component-delegate → components/component/delegate/0.1.0}/component.json +2 -2
  72. data/components/component/dialog/0.2.0/component.json +35 -0
  73. data/{vendor/components/component-dialog → components/component/dialog/0.2.0}/index.js +74 -40
  74. data/components/component/dialog/0.2.0/template.html +9 -0
  75. data/{vendor/components/component-dom → components/component/dom/0.7.1}/component.json +6 -4
  76. data/{vendor/components/component-domify → components/component/domify/1.0.0}/component.json +6 -4
  77. data/components/component/domify/1.2.2/component.json +22 -0
  78. data/components/component/domify/1.2.2/index.js +87 -0
  79. data/{vendor/components/component-emitter → components/component/emitter/1.0.0}/component.json +1 -1
  80. data/{vendor/components/component-event → components/component/event/0.1.0}/component.json +3 -3
  81. data/components/component/event/0.1.0/index.js +40 -0
  82. data/components/component/event/0.1.3/component.json +13 -0
  83. data/{vendor/components/component-event → components/component/event/0.1.3}/index.js +3 -5
  84. data/{vendor/components/component-indexof → components/component/indexof/0.0.1}/component.json +1 -1
  85. data/{vendor/components/indefinido-indemma/components/component-jquery → components/component/jquery/1.9.1}/component.json +1 -1
  86. data/{vendor/components/component-matches-selector → components/component/matches-selector/0.1.2}/component.json +6 -4
  87. data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/component.json +1 -1
  88. data/{vendor/components/component-query → components/component/query/0.0.1}/component.json +6 -4
  89. data/components/component/query/0.0.3/component.json +23 -0
  90. data/components/component/query/0.0.3/index.js +21 -0
  91. data/{vendor/components/component-querystring → components/component/querystring/1.3.0}/component.json +4 -3
  92. data/{vendor/components/component-querystring → components/component/querystring/1.3.0}/index.js +26 -2
  93. data/{vendor/components/component-sort → components/component/sort/0.0.3}/component.json +2 -2
  94. data/{vendor/components/component-trim → components/component/trim/0.0.1}/component.json +1 -1
  95. data/{vendor/components/indefinido-indemma/components/component-type → components/component/type/1.0.0}/component.json +4 -2
  96. data/{vendor/components/component-value → components/component/value/1.1.0}/component.json +6 -4
  97. data/{vendor/components/components-modernizr → components/components/modernizr/2.6.2}/component.json +2 -3
  98. data/{vendor/components/indefinido-indemma/components/indefinido-advisable → components/indefinido/advisable/master}/component.json +2 -2
  99. data/components/indefinido/indemma/master/History.md +0 -0
  100. data/components/indefinido/indemma/master/build/build.js +26288 -0
  101. data/components/indefinido/indemma/master/build/development.js +22200 -0
  102. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/build/release.js +264 -273
  103. data/components/indefinido/indemma/master/build/test.js +22200 -0
  104. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/component.json +6 -6
  105. data/components/indefinido/indemma/master/components/chaijs-assertion-error/index.js +110 -0
  106. data/components/indefinido/indemma/master/components/chaijs-chai/index.js +1 -0
  107. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/inspect.js +320 -0
  108. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/associable.js +2 -14
  109. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/rest.js +2 -7
  110. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/restfulable.js +9 -33
  111. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/scopable.js +45 -16
  112. data/components/indefinido/indemma/master/lib/record/validatable.js +1100 -0
  113. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/associable_spec.js +2 -3
  114. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/scopable_spec.js +53 -83
  115. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/cpf_spec.js +6 -5
  116. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/associable.coffee +0 -6
  117. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/persistable.coffee +0 -2
  118. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/queryable.coffee +2 -1
  119. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/resource.coffee +2 -3
  120. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/rest.coffee +1 -7
  121. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/restfulable.coffee +8 -34
  122. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/scopable.coffee +31 -32
  123. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validatable.coffee +1 -12
  124. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/associable_spec.coffee +2 -3
  125. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/scopable_spec.coffee +43 -76
  126. data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/cpf_spec.coffee +4 -3
  127. data/{vendor/components/mikeric-rivets → components/mikeric/rivets/v0.5.12}/component.json +2 -2
  128. data/{vendor/components/paulmillr-es6-shim → components/paulmillr/es6-shim/0.10.1}/component.json +11 -4
  129. data/components/paulmillr/es6-shim/0.10.1/es6-shim.js +1833 -0
  130. data/{vendor/components/pluma-assimilate → components/pluma/assimilate/0.3.0}/component.json +3 -3
  131. data/{vendor/components/segmentio-extend → components/segmentio/extend/1.0.0}/component.json +3 -3
  132. data/lib/assets/javascripts/aura/extensions/models.js.coffee.erb +14 -14
  133. data/lib/assets/javascripts/aura/extensions/rivets/accounting.js.coffee +1 -1
  134. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +3 -3
  135. data/lib/assets/javascripts/aura/extensions/stamps/stampit.js +568 -242
  136. data/lib/assets/javascripts/aura/extensions/widget/#composable.js.coffee# +135 -0
  137. data/lib/assets/javascripts/aura/extensions/widget/composable.js.coffee +2 -2
  138. data/lib/assets/javascripts/config/load_components.js.coffee +10 -10
  139. data/lib/assets/javascripts/ende.js.coffee +21 -18
  140. data/lib/assets/javascripts/widgets/support/adapters/olark.js +1 -4
  141. data/lib/assets/javascripts/widgets/viewer/main.js.coffee +8 -4
  142. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +6 -7
  143. data/lib/ende/version.rb +1 -1
  144. data/vendor/assets/components/build.css +4 -3
  145. data/vendor/assets/components/ende_build.js +29772 -21943
  146. metadata +284 -217
  147. data/vendor/components/KapIT-observe-utils/component.json +0 -16
  148. data/vendor/components/KapIT-observe-utils/lib/observe-utils.js +0 -780
  149. data/vendor/components/component-dialog/component.json +0 -23
  150. data/vendor/components/component-dialog/template.js +0 -1
  151. data/vendor/components/indefinido-indemma/build/development.js +0 -343
  152. data/vendor/components/indefinido-indemma/build/test.js +0 -343
  153. data/vendor/components/indefinido-indemma/lib/record/validatable.js +0 -224
  154. data/vendor/components/indefinido-observable/component.json +0 -24
  155. data/vendor/components/indefinido-observable/index.js +0 -1
  156. data/vendor/components/indefinido-observable/lib/adapters/rivets.js +0 -28
  157. data/vendor/components/indefinido-observable/lib/observable.js +0 -390
  158. data/vendor/components/indefinido-observable/vendor/shims/accessors-legacy.js +0 -92
  159. data/vendor/components/indefinido-observable/vendor/shims/accessors.js +0 -248
  160. data/vendor/components/indefinido-observable/vendor/shims/array.indexOf.js +0 -8
  161. data/vendor/components/indefinido-observable/vendor/shims/object.create.js +0 -77
  162. data/vendor/components/paulmillr-es6-shim/es6-shim.js +0 -996
  163. /data/{vendor/components/indefinido-indemma/components/chaijs-assertion-error → components/chaijs/assertion-error/1.0.0}/index.js +0 -0
  164. /data/{vendor/components/indefinido-indemma/components/chaijs-chai → components/chaijs/chai/1.9.1}/index.js +0 -0
  165. /data/{vendor/components/indefinido-indemma/components/chaijs-chai → components/chaijs/chai/1.9.1}/lib/chai/utils/inspect.js +0 -0
  166. /data/{vendor/components/indefinido-indemma/History.md → components/chaijs/chai/1.9.1/test/auth/.gitkeep} +0 -0
  167. /data/{vendor/components/component-bind → components/component/bind/0.0.1}/index.js +0 -0
  168. /data/{vendor/components/component-classes → components/component/classes/1.1.2}/index.js +0 -0
  169. /data/{vendor/components/component-css → components/component/css/0.0.2}/index.js +0 -0
  170. /data/{vendor/components/component-delegate → components/component/delegate/0.1.0}/index.js +0 -0
  171. /data/{vendor/components/component-dialog → components/component/dialog/0.2.0}/dialog.css +0 -0
  172. /data/{vendor/components/component-dom → components/component/dom/0.7.1}/index.js +0 -0
  173. /data/{vendor/components/component-domify → components/component/domify/1.0.0}/index.js +0 -0
  174. /data/{vendor/components/component-emitter → components/component/emitter/1.0.0}/index.js +0 -0
  175. /data/{vendor/components/component-indexof → components/component/indexof/0.0.1}/index.js +0 -0
  176. /data/{vendor/components/component-jquery → components/component/jquery/1.9.1}/index.js +0 -0
  177. /data/{vendor/components/component-matches-selector → components/component/matches-selector/0.1.2}/index.js +0 -0
  178. /data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/index.js +0 -0
  179. /data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/overlay.css +0 -0
  180. /data/{vendor/components/component-overlay → components/component/overlay/0.1.1}/template.js +0 -0
  181. /data/{vendor/components/component-query → components/component/query/0.0.1}/index.js +0 -0
  182. /data/{vendor/components/component-sort → components/component/sort/0.0.3}/index.js +0 -0
  183. /data/{vendor/components/component-trim → components/component/trim/0.0.1}/index.js +0 -0
  184. /data/{vendor/components/component-type → components/component/type/1.0.0}/index.js +0 -0
  185. /data/{vendor/components/component-value → components/component/value/1.1.0}/index.js +0 -0
  186. /data/{vendor/components/components-modernizr → components/components/modernizr/2.6.2}/modernizr.js +0 -0
  187. /data/{vendor/components/indefinido-advisable → components/indefinido/advisable/master}/index.js +0 -0
  188. /data/{vendor/components/indefinido-advisable → components/indefinido/advisable/master}/lib/advisable.js +0 -0
  189. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/.gitignore +0 -0
  190. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/.ruby-gemset +0 -0
  191. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/.ruby-version +0 -0
  192. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/Gemfile +0 -0
  193. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/Guardfile +0 -0
  194. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/Readme.md +0 -0
  195. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-assertion-error/component.json +0 -0
  196. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/component.json +0 -0
  197. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/assertion.js +0 -0
  198. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/core/assertions.js +0 -0
  199. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/interface/assert.js +0 -0
  200. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/interface/expect.js +0 -0
  201. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/interface/should.js +0 -0
  202. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -0
  203. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -0
  204. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -0
  205. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/eql.js +0 -0
  206. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/flag.js +0 -0
  207. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getActual.js +0 -0
  208. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -0
  209. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -0
  210. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getName.js +0 -0
  211. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -0
  212. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -0
  213. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/index.js +0 -0
  214. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -0
  215. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -0
  216. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -0
  217. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/test.js +0 -0
  218. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -0
  219. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai/utils/type.js +0 -0
  220. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/chaijs-chai/lib/chai.js +0 -0
  221. /data/{vendor → components/indefinido/indemma/master}/components/component-bind/component.json +0 -0
  222. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/component-bind/index.js +0 -0
  223. /data/{vendor → components/indefinido/indemma/master}/components/component-jquery/component.json +0 -0
  224. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/component-jquery/index.js +0 -0
  225. /data/{vendor → components/indefinido/indemma/master}/components/component-type/component.json +0 -0
  226. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/component-type/index.js +0 -0
  227. /data/{vendor → components/indefinido/indemma/master}/components/indefinido-advisable/component.json +0 -0
  228. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-advisable/index.js +0 -0
  229. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-advisable/lib/advisable.js +0 -0
  230. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/component.json +0 -0
  231. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -0
  232. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/index.js +0 -0
  233. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/lib/adapters/rivets.js +0 -0
  234. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/lib/observable.js +0 -0
  235. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/accessors-legacy.js +0 -0
  236. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/accessors.js +0 -0
  237. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/array.indexOf.js +0 -0
  238. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/indefinido-observable/vendor/shims/object.create.js +0 -0
  239. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/kapit-observe-utils/component.json +0 -0
  240. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/paulmillr-es6-shim/component.json +0 -0
  241. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/paulmillr-es6-shim/es6-shim.js +0 -0
  242. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/pluma-assimilate/component.json +0 -0
  243. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/components/pluma-assimilate/dist/assimilate.js +0 -0
  244. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/index.js +0 -0
  245. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/karma.conf.js +0 -0
  246. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/extensions/rivets.js +0 -0
  247. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/errors.js +0 -0
  248. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/maid.js +0 -0
  249. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/persistable.js +0 -0
  250. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/queryable.js +0 -0
  251. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/resource.js +0 -0
  252. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/storable.js +0 -0
  253. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/translationable.js +0 -0
  254. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/associated.js +0 -0
  255. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/confirmation.js +0 -0
  256. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/cpf.js +0 -0
  257. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/presence.js +0 -0
  258. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/remote.js +0 -0
  259. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/type.js +0 -0
  260. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record/validations/validatorable.js +0 -0
  261. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/lib/record.js +0 -0
  262. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/package.json +0 -0
  263. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/persistable_spec.js +0 -0
  264. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/queryable_spec.js +0 -0
  265. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/resource_spec.js +0 -0
  266. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/rest_spec.js +0 -0
  267. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/restfulable_spec.js +0 -0
  268. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/storable_spec.js +0 -0
  269. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/translationable.js +0 -0
  270. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validatable_spec.js +0 -0
  271. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/associated_spec.js +0 -0
  272. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/confirmation_spec.js +0 -0
  273. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/presence_spec.js +0 -0
  274. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/remote_spec.js +0 -0
  275. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record/validations/type_spec.js +0 -0
  276. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/record_spec.js +0 -0
  277. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/spec_helper.js +0 -0
  278. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/spec/support/value_objects/phone.js +0 -0
  279. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/extensions/rivets.coffee +0 -0
  280. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/errors.coffee +0 -0
  281. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/maid.coffee +0 -0
  282. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/storable.coffee +0 -0
  283. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/translationable.coffee +0 -0
  284. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/associated.coffee +0 -0
  285. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/confirmation.coffee +0 -0
  286. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/cpf.coffee +0 -0
  287. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/presence.coffee +0 -0
  288. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/remote.coffee +0 -0
  289. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/type.coffee +0 -0
  290. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record/validations/validatorable.coffee +0 -0
  291. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/lib/record.coffee +0 -0
  292. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/persistable_spec.coffee +0 -0
  293. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/queryable_spec.coffee +0 -0
  294. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/resource_spec.coffee +0 -0
  295. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/rest_spec.coffee +0 -0
  296. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/restfulable_spec.coffee +0 -0
  297. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/storable_spec.coffee +0 -0
  298. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/translationable.coffee +0 -0
  299. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validatable_spec.coffee +0 -0
  300. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/associated_spec.coffee +0 -0
  301. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/confirmation_spec.coffee +0 -0
  302. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/presence_spec.coffee +0 -0
  303. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/remote_spec.coffee +0 -0
  304. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record/validations/type_spec.coffee +0 -0
  305. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/record_spec.coffee +0 -0
  306. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/spec_helper.coffee +0 -0
  307. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/src/spec/support/value_objects/phone.coffee +0 -0
  308. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/object/mixin.js +0 -0
  309. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/owl/pluralize.js +0 -0
  310. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/sinon.js +0 -0
  311. /data/{vendor/components/indefinido-indemma → components/indefinido/indemma/master}/vendor/stampit.js +0 -0
  312. /data/{vendor/components/mikeric-rivets → components/mikeric/rivets/v0.5.12}/dist/rivets.js +0 -0
  313. /data/{vendor/components/pluma-assimilate → components/pluma/assimilate/0.3.0}/dist/assimilate.js +0 -0
  314. /data/{vendor/components/segmentio-extend → components/segmentio/extend/1.0.0}/index.js +0 -0
@@ -1,224 +0,0 @@
1
- var errorsable, extensions, initializers, manager, messages, observable, root, stampit, type;
2
-
3
- require('./translationable');
4
-
5
- root = typeof exports !== "undefined" && exports !== null ? exports : this;
6
-
7
- stampit = require('../../vendor/stampit');
8
-
9
- observable = require('observable').mixin;
10
-
11
- type = require('type');
12
-
13
- messages = {
14
- blank: function(attribute_name) {
15
- attribute_name = this.human_attribute_name(attribute_name);
16
- return "O campo " + attribute_name + " não pode ficar em branco.";
17
- },
18
- cpf: function(attribute_name) {
19
- attribute_name = this.human_attribute_name(attribute_name);
20
- return "O campo " + attribute_name + " não está válido.";
21
- },
22
- confirmation: function(attribute_name) {
23
- var confirmation_attribute_name;
24
-
25
- confirmation_attribute_name = this.human_attribute_name(attribute_name);
26
- attribute_name = this.human_attribute_name(attribute_name.replace('_confirmation', ''));
27
- return "O campo " + attribute_name + " não está de acordo com o campo " + confirmation_attribute_name + ".";
28
- },
29
- associated: function(attribute_name) {
30
- attribute_name = this.human_attribute_name(attribute_name);
31
- return "O registro associado " + attribute_name + " não é válido.";
32
- },
33
- server: function(attribute_name, options) {
34
- if (attribute_name === 'base') {
35
- return options.server_message;
36
- } else {
37
- attribute_name = this.human_attribute_name(attribute_name);
38
- return "" + attribute_name + " " + options.server_message + ".";
39
- }
40
- },
41
- type: function(attribute_name, options) {
42
- attribute_name = this.human_attribute_name(attribute_name);
43
- return "O campo " + attribute_name + " não está válido.";
44
- }
45
- };
46
-
47
- errorsable = stampit({
48
- add: function(attribute_name, message_key, options) {
49
- var translator;
50
-
51
- this.push([attribute_name, message_key, options]);
52
- this.messages[attribute_name] = '';
53
- translator = messages[message_key];
54
- if (translator != null) {
55
- return this.messages[attribute_name] += translator.call(this.model, attribute_name, options);
56
- } else {
57
- return this.messages[attribute_name] += message_key;
58
- }
59
- },
60
- clear: function() {
61
- var attribute_name, _results;
62
-
63
- if (this.length) {
64
- this.length = 0;
65
- _results = [];
66
- for (attribute_name in this.messages) {
67
- _results.push(this.messages[attribute_name] = null);
68
- }
69
- return _results;
70
- }
71
- },
72
- push: Array.prototype.push,
73
- splice: Array.prototype.splice,
74
- indexOf: Array.prototype.indexOf
75
- }, {
76
- model: null,
77
- messages: null,
78
- length: 0
79
- }, function() {
80
- this.messages = {};
81
- return this;
82
- });
83
-
84
- initializers = {
85
- define_triggers: function() {
86
- this.errors = errorsable({
87
- model: model[this.resource]
88
- });
89
- this.before('save', function() {
90
- if (this.save) {
91
- return this.validate();
92
- }
93
- });
94
- this.validated = false;
95
- this.subscribe('dirty', function(value) {
96
- return value && (this.validated = false);
97
- });
98
- return Object.defineProperty(this, 'valid', {
99
- get: function() {
100
- this.validate();
101
- if (this.validation.state() === 'resolved') {
102
- return !this.errors.length;
103
- } else {
104
- return null;
105
- }
106
- },
107
- set: function() {
108
- throw new TypeError("You can't set the value for the valid property.");
109
- },
110
- enumerable: false
111
- });
112
- },
113
- create_validators: function(definitions) {
114
- var definition, name, validator, validator_options, _ref, _results;
115
-
116
- this.validators = [];
117
- _ref = manager.validators;
118
- _results = [];
119
- for (name in _ref) {
120
- validator = _ref[name];
121
- definition = definitions[validator.definition_key];
122
- if (definition) {
123
- if (type(definition) !== 'array') {
124
- definition = [definition];
125
- }
126
- _results.push((function() {
127
- var _i, _len, _results1;
128
-
129
- _results1 = [];
130
- for (_i = 0, _len = definition.length; _i < _len; _i++) {
131
- validator_options = definition[_i];
132
- if (type(validator_options) !== 'object') {
133
- validator_options = {
134
- attribute_name: validator_options
135
- };
136
- }
137
- validator_options.model = this;
138
- this.validators.push(validator(validator_options));
139
- _results1.push(delete definitions[validator.definition_key]);
140
- }
141
- return _results1;
142
- }).call(this));
143
- } else {
144
- _results.push(void 0);
145
- }
146
- }
147
- return _results;
148
- }
149
- };
150
-
151
- extensions = {
152
- model: {
153
- validators: null
154
- },
155
- record: {
156
- validate_attribute: function(attribute, doned, failed) {
157
- var results, validation, validator, _i, _len, _ref;
158
-
159
- this.errors.messages[attribute] = null;
160
- results = [this, attribute];
161
- _ref = model[this.resource.toString()].validators;
162
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
163
- validator = _ref[_i];
164
- if (validator.attribute_name === attribute) {
165
- results.push(validator.validate_each(this, validator.attribute_name, this[validator.attribute_name]));
166
- }
167
- }
168
- validation = jQuery.when.apply(jQuery, results);
169
- validation.done(doned);
170
- validation.fail(failed);
171
- return validation;
172
- },
173
- validate: function(doned, failed) {
174
- var results, validator, _i, _len, _ref;
175
-
176
- if (this.validated && !this.dirty) {
177
- return this.validation;
178
- }
179
- this.errors.clear();
180
- results = [this];
181
- _ref = model[this.resource.toString()].validators;
182
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
183
- validator = _ref[_i];
184
- results.push(validator.validate_each(this, validator.attribute_name, this[validator.attribute_name]));
185
- }
186
- this.validation = jQuery.when.apply(jQuery, results);
187
- this.validation.done(doned);
188
- this.validation.fail(failed);
189
- return this.validation.done(function(record) {
190
- var old_dirty;
191
-
192
- old_dirty = record.dirty;
193
- record.dirty = null;
194
- record.validated || (record.validated = true);
195
- record.dirty = old_dirty;
196
- return record;
197
- });
198
- }
199
- }
200
- };
201
-
202
- manager = {
203
- validators: {}
204
- };
205
-
206
- model.mix(function(modelable) {
207
- jQuery.extend(modelable, extensions.model);
208
- jQuery.extend(modelable.record, extensions.record);
209
- modelable.after_mix.unshift(initializers.create_validators);
210
- modelable.record.after_initialize.push(initializers.define_triggers);
211
- return model.validators = manager.validators;
212
- });
213
-
214
- manager.validators.confirmation = require('./validations/confirmation');
215
-
216
- manager.validators.associated = require('./validations/associated');
217
-
218
- manager.validators.presence = require('./validations/presence');
219
-
220
- manager.validators.remote = require('./validations/remote');
221
-
222
- manager.validators.type = require('./validations/type');
223
-
224
- manager.validators.cpf = require('./validations/cpf');
@@ -1,24 +0,0 @@
1
- {
2
- "name": "observable",
3
- "repo": "indefinido/observable",
4
- "description": "Observable capabilities built upon observable shim.",
5
- "version": "0.1.4",
6
- "keywords": [],
7
- "dependencies": {
8
- "component/jquery": "*"
9
- },
10
- "development": {
11
- "chaijs/chai": "*",
12
- "components/cjohansen-sinon/sinon.js": "*"
13
- },
14
- "license": "WTFPL",
15
- "scripts": [
16
- "index.js",
17
- "lib/observable.js",
18
- "lib/adapters/rivets.js",
19
- "vendor/shims/accessors.js",
20
- "vendor/shims/accessors-legacy.js",
21
- "vendor/shims/array.indexOf.js",
22
- "vendor/shims/object.create.js"
23
- ]
24
- }
@@ -1 +0,0 @@
1
- module.exports = require('./lib/observable');
@@ -1,28 +0,0 @@
1
- exports.adapter = {
2
- subscribe: function(record, attribute_path, callback) {
3
- if (record == null) {
4
- throw new TypeError('observable.adapters.rivets.subscribe: No record provided for subscription');
5
- }
6
- if (attribute_path) {
7
- return record.subscribe(attribute_path, callback);
8
- }
9
- },
10
- unsubscribe: function(record, attribute_path, callback) {
11
- if (record == null) {
12
- throw new TypeError('observable.adapters.rivets.unsubscribe: No record provided for subscription');
13
- }
14
- return record.unsubscribe(attribute_path, callback);
15
- },
16
- read: function(record, attribute_path) {
17
- if (record == null) {
18
- throw new TypeError('observable.adapters.rivets.read: No record provided for subscription');
19
- }
20
- return record[attribute_path];
21
- },
22
- publish: function(record, attribute_path, value) {
23
- if (record == null) {
24
- throw new TypeError('observable.adapters.rivets.publish: No record provided for subscription');
25
- }
26
- return record[attribute_path] = value;
27
- }
28
- };
@@ -1,390 +0,0 @@
1
- // TODO Better keypath support
2
- // TODO Convert to coffeescript
3
-
4
- // Shim older browsers
5
- if (!Object.create ) require('../vendor/shims/object.create');
6
- if (!Array.prototype.indexOf) require('../vendor/shims/array.indexOf');
7
-
8
- // Object.defineProperty (for ie5+)
9
- if (typeof require != 'undefined') {
10
- // __lookup*__ and __define*__ for browsers with defineProperty support
11
- // TODO Figure out why gives an infinity loop
12
- require('../vendor/shims/accessors-legacy.js');
13
-
14
- // Creates Object.defineProperty
15
- require('../vendor/shims/accessors.js');
16
- }
17
-
18
- // Require Dependencies
19
- if (!window['jQuery']) jQuery = $ = require('jquery');
20
-
21
- // Observable Implementation
22
- var observable, requiresDomElement, check, lookup, mixin, generator, mutations;
23
-
24
- // Support objects
25
-
26
- // TODO implement Object.getOwnPropertyDescriptor
27
- lookup = {
28
- setter: Object.prototype.__lookupSetter__ || function (property) {
29
- return this.observed && this.observed[property + '_setter'];
30
- },
31
- getter: Object.prototype.__lookupGetter__ || function (property) {
32
- var default_getter;
33
- return this.observed && this.observed[property + '_getter'] || (
34
- (default_getter = $.proxy(lookup.default_getter, this, property)) &&
35
- (default_getter.is_default = true) &&
36
- (default_getter)
37
- );
38
- },
39
- types: {
40
- 'undefined': undefined,
41
- 'null': null,
42
- 'true': true,
43
- 'false': false,
44
- 'NaN': NaN
45
- },
46
- // overrides: [Object.prototype.toString, String.prototype.toString, Array.prototype.toString, Number.prototype.toString],
47
- basic_types: [undefined, null],
48
- default_getter: function (property) {
49
- var possible_value = this[property];
50
-
51
- // Getter is the toString property of object
52
- if (possible_value && possible_value.hasOwnProperty('toString')) {
53
-
54
- if (possible_value.toString.is_default) return this.observed[property];
55
-
56
- return possible_value.toString.call(this);
57
-
58
- } else if (possible_value in lookup.types) {
59
-
60
- return lookup.types[possible_value];
61
-
62
- } else return possible_value;
63
- }
64
- };
65
-
66
-
67
- // Core Implementation
68
-
69
- requiresDomElement = Object.defineProperty['requiresDomElement'];
70
-
71
- mixin = {
72
- subscribe: function observable_subscribe (keypath, callback) {
73
- if (keypath == 'observed') throw new TypeError('observable.subscribe: cannot observe reserved property observed');
74
- if ($.isArray(this[keypath])) generator.mutations.call(this, keypath);
75
- generator.observe.call(this, keypath, callback);
76
- return true;
77
- },
78
- unsubscribe: function (object, keypath, callback) {
79
- console.error("observable.unsubscribe not implemented yet.");
80
- console.log(object, keypath, callback);
81
- },
82
- publish: function observable_publish (keypath, value) {
83
- // TODO actually call callbacks
84
- return this[keypath] = value;
85
- }
86
- };
87
-
88
-
89
- if (requiresDomElement) {
90
-
91
- observable = function (object) {
92
- var fix;
93
-
94
- // observable() or observable(object)
95
- if (this.document && this.location) {
96
- if (!object) {
97
- object = {};
98
- }
99
- // observable.call(...)
100
- } else {
101
- // observable.call(param, param)
102
- if (object) {
103
- throw new TypeError('Two objects provided! Call either with observable.call(object) or observable(object), not with observable.call(param, param)');
104
- // observable.call(object)
105
- } else {
106
- object = this;
107
- }
108
- }
109
-
110
- // TODO better documentation
111
- if (!jQuery.isReady) throw new Error('observable.call: For compatibility reasons, observable can only be called when dom is loaded.');
112
-
113
- // Create dom element if object isn't one
114
- if (!(typeof object.nodeName === 'string')) {
115
- fix = document.createElement('fix');
116
-
117
- if (!jQuery.isReady) $(function () {document.body.appendChild(fix);});
118
- else document.body.appendChild(fix);
119
-
120
- // Replace object with dom node
121
- object = $.extend(fix, object);
122
- }
123
-
124
- // Observe element if it is not observed
125
- // TODO remove jquery dependency
126
- if (!object.observed) {
127
- generator.observable_for(object);
128
- object = $.extend(object, mixin);
129
- }
130
-
131
- return object;
132
- };
133
-
134
- var ignores = document.createElement('fix'), fix_ignores = [], property;
135
-
136
- for (property in ignores) {
137
- fix_ignores.push(property);
138
- }
139
-
140
- observable.ignores = fix_ignores;
141
-
142
- } else {
143
-
144
- observable = function (object) {
145
- // observable() or observable(object)
146
- if (this === window) {
147
- if (!object) {
148
- object = {};
149
- }
150
- // observable.call(...)
151
- } else if (this !== window) {
152
- // observable.call(param, param)
153
- if (object) {
154
- throw new TypeError('Two objects provided! Call either with observable.call(object) or observable(object), not with observable.call(param, param)');
155
- // observable.call(object)
156
- } else {
157
- object = this;
158
- }
159
- }
160
-
161
- if (!object.observed) generator.observable_for(object);
162
-
163
- return $.extend(object, mixin);
164
- };
165
-
166
- observable.ignores = [];
167
- }
168
-
169
- observable.unobserve = function (object) {
170
- var name, value, subname, unobserved = {};
171
-
172
- // TODO remove root setter and root getter and callbacks from
173
- // callback thread
174
-
175
- // Remove mixed in properties
176
- for (name in mixin) {
177
- delete object[name];
178
- }
179
-
180
- // Remove array properties overrides
181
- for (name in object) {
182
- value = object[name];
183
-
184
- if ($.type(value) == 'array') {
185
- delete value.thread;
186
- delete value.object;
187
- delete value.key;
188
-
189
- for (subname in mutations.overrides) {
190
- delete value[subname];
191
- }
192
- }
193
- }
194
-
195
- for (name in object) {
196
- // TODO put Array.indexOf as a dependency
197
- if (observable.ignores && observable.ignores.indexOf(name) == -1) {
198
- unobserved[name] = object[name];
199
- }
200
- }
201
-
202
- delete object.observed;
203
-
204
- return unobserved;
205
- };
206
-
207
- check = function (keypath, value) {
208
- this.observed[keypath] = value;
209
-
210
- // TODO implement subscription to any change, using Object.observe
211
- (this.dirty === false && keypath != 'dirty') && (this.dirty = true);
212
- return true;
213
- };
214
-
215
- generator = {
216
- // TODO pass object as parameter
217
- observe: function (keypath, callback) {
218
- return Object.defineProperty(this, keypath, {
219
- get: generator.getter.call(this, keypath),
220
- set: generator.setter.call(this, keypath, callback),
221
- enumerable: true
222
- });
223
- },
224
-
225
- observable_for: function (object) {
226
- var toJSON;
227
-
228
- Object.defineProperty(object, 'observed', {
229
- configurable: true,
230
- enumerable: false,
231
- value: {}
232
- });
233
-
234
- // TODO remove json in favor of the toJSON convention
235
- toJSON = object.json || object.toJSON
236
-
237
- if (toJSON) {
238
- return Object.defineProperty(object, 'toJSON', {
239
- enumerable: false,
240
- value: function () {
241
- var json;
242
-
243
- // TODO remove underscore dependency
244
- // TODO ? move toJSON and observed to other methods
245
- json = toJSON.apply(this, arguments);
246
- return observable.unobserve(_.omit(json, observable.ignores, ['toJSON', 'observed']));
247
- }
248
- });
249
-
250
- }
251
- },
252
-
253
- // TODO improve readability
254
- // TODO implement linked list
255
- setter: function subscribed_setter (keypath, callback) {
256
- var setter = lookup.setter.call(this, keypath), current, getter, old_setter;
257
-
258
- // Set value
259
- this.observed[keypath] = lookup.getter.call(this, keypath) && lookup.getter.call(this, keypath)() || this[keypath];
260
-
261
- // First time subscribing
262
- if (!setter) {
263
- setter = function setter (value) {
264
- check.call(this, keypath, value) !== false && setter.callback_thread.call(this, value);
265
- };
266
-
267
- // First time subscribing but does not have callback_thread associated
268
- } else if (!setter.callback_thread) {
269
- old_setter = setter;
270
- setter = function setter (value) {
271
- check.call(this, keypath, value) !== false && setter.callback_thread.call(this, value);
272
- };
273
-
274
- setter.callback_thread = old_setter;
275
- }
276
-
277
- current = setter.callback_thread || $.noop;
278
-
279
- setter.callback_thread = function thread (value) {
280
- current.call(this, value) !== false && callback.call(this, value);
281
- };
282
-
283
- // TODO better implementation of loookup setter / lookup getter on accessors shim
284
- if (requiresDomElement) this.observed[keypath + '_setter'] = setter;
285
-
286
- return setter;
287
- },
288
- getter: function subscribed_getter (keypath) {
289
- var object = this, getter;
290
-
291
- getter = lookup.getter.call(this, keypath) || function root_getter () {
292
- return object.observed[keypath];
293
- };
294
-
295
- // TODO better implementation of loookup setter / lookup getter on accessors shim
296
- if (requiresDomElement) this.observed[keypath + '_getter'] = getter;
297
-
298
- return getter;
299
- },
300
- mutations: function(keypath) {
301
- var setter = lookup.setter.call(this, keypath),
302
- array = this[keypath];
303
-
304
- // First time subscribing, and it is an array
305
- if (!setter) {
306
- // TODO use this.subscribe instead of generator.observe.call
307
- generator.observe.call(this, keypath, function(new_array) {
308
- var i, type, j;
309
-
310
- // Avoid non push operations!
311
- // TODO remove jquery dependency
312
- if ($.type(new_array) !== 'array') return;
313
-
314
- // Skip this if it is not the first time
315
- if (new_array.object === array.object && new_array.thread === array.thread) return;
316
- i = new_array.length;
317
- j = new_array.length;
318
-
319
- new_array.thread = array.thread;
320
- new_array.object = array.object;
321
- new_array.key = keypath;
322
-
323
- while (i--) {
324
- // TODO remove jquery dependency
325
- type = $.type(new_array[i]);
326
- if (!new_array[i].observed
327
-
328
- // Recursivelly convert objects and arrays to observables
329
- && (type == 'object' || type == 'array')) {
330
-
331
- new_array[i] = observable(new_array[i]);
332
-
333
- }
334
- }
335
-
336
- new_array.length = j;
337
-
338
- // Update internal property value
339
- $.extend(new_array, mutations.overrides);
340
- });
341
-
342
- setter = lookup.setter.call(this, keypath);
343
- }
344
-
345
- // TODO Transform this code to define property
346
- array.thread = setter.callback_thread;
347
- array.object = this;
348
- array.key = keypath;
349
-
350
- // Override default array methods
351
- $.extend(array, mutations.overrides);
352
-
353
- if (!this.observed.mutate) this.observed.mutate = mutations.mutate;
354
- }
355
- };
356
-
357
- mutations = {
358
- mutate: function(thread, method, array) {
359
- array.method = method;
360
- thread.call(this, array);
361
- this.publish(array.key, array); // TODO ver se é uma boa
362
- delete array.method;
363
- },
364
- overrides: {
365
- push: function() {
366
- var i = arguments.length, operation;
367
-
368
- while (i--) {
369
- !arguments[i].observed && $.type(arguments[i]) == 'object' && (arguments[i] = observable(arguments[i]));
370
- }
371
-
372
- operation = Array.prototype.push.apply(this, arguments); // TODO Convert arguments for real array
373
- this.object.observed.mutate.call(this.object, this.thread, 'push', this);
374
- return operation;
375
- }
376
- }
377
- };
378
-
379
- $('pop shift unshift'.split(' ')).each(function (i, method) {
380
- mutations.overrides[method] = function () {
381
- Array.prototype[method].apply(this, arguments);
382
- this.object.observed.mutate.call(this.object, this.thread, method, this);
383
- };
384
- });
385
-
386
- if (typeof exports != 'undefined') {
387
- exports.mixin = observable;
388
- } else {
389
- window.observable = observable;
390
- }