ende 0.5.20 → 0.5.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +1 -1
  3. data/components/indefinido/indemma/master/.gitignore +17 -0
  4. data/components/indefinido/indemma/master/.ruby-gemset +1 -0
  5. data/components/indefinido/indemma/master/.ruby-version +1 -0
  6. data/components/indefinido/indemma/master/Gemfile +12 -0
  7. data/components/indefinido/indemma/master/Guardfile +39 -0
  8. data/components/indefinido/indemma/master/History.md +0 -0
  9. data/components/indefinido/indemma/master/Readme.md +445 -0
  10. data/components/indefinido/indemma/master/build/development.js +26123 -0
  11. data/components/indefinido/indemma/master/build/release.js +16741 -0
  12. data/components/indefinido/indemma/master/build/test.js +26123 -0
  13. data/components/indefinido/indemma/master/component.json +1 -1
  14. data/components/indefinido/indemma/master/components/chaijs/assertion-error/1.0.0/component.json +18 -0
  15. data/components/indefinido/indemma/master/components/chaijs/assertion-error/1.0.0/index.js +110 -0
  16. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.gitignore +22 -0
  17. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.mailmap +1 -0
  18. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.npmignore +14 -0
  19. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/.travis.yml +14 -0
  20. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/CONTRIBUTING.md +173 -0
  21. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/History.md +895 -0
  22. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/Makefile +93 -0
  23. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/README.md +99 -0
  24. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/ReleaseNotes.md +482 -0
  25. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/bower.json +27 -0
  26. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/chai.js +4782 -0
  27. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/component.json +50 -0
  28. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/index.js +1 -0
  29. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/karma.conf.js +28 -0
  30. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/karma.sauce.js +41 -0
  31. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/assertion.js +130 -0
  32. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/config.js +50 -0
  33. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/core/assertions.js +1314 -0
  34. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/assert.js +1056 -0
  35. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/expect.js +12 -0
  36. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/interface/should.js +78 -0
  37. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addChainableMethod.js +111 -0
  38. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addMethod.js +43 -0
  39. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/addProperty.js +40 -0
  40. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/flag.js +32 -0
  41. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getActual.js +18 -0
  42. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getEnumerableProperties.js +25 -0
  43. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getMessage.js +49 -0
  44. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getName.js +20 -0
  45. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getPathValue.js +102 -0
  46. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/getProperties.js +35 -0
  47. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/index.js +114 -0
  48. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/inspect.js +320 -0
  49. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/objDisplay.js +49 -0
  50. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteChainableMethod.js +53 -0
  51. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteMethod.js +51 -0
  52. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/overwriteProperty.js +54 -0
  53. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/test.js +26 -0
  54. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/transferFlags.js +44 -0
  55. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai/utils/type.js +45 -0
  56. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/lib/chai.js +87 -0
  57. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/package.json +42 -0
  58. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/sauce.browsers.js +128 -0
  59. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_block.sh +7 -0
  60. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/support/sauce/sauce_connect_setup.sh +53 -0
  61. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/assert.js +638 -0
  62. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/auth/.gitkeep +0 -0
  63. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/bootstrap/index.js +22 -0
  64. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/bootstrap/karma.js +22 -0
  65. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/configuration.js +133 -0
  66. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/display/errors.js +14 -0
  67. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/display/message.js +47 -0
  68. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/expect.js +814 -0
  69. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/globalShould.js +15 -0
  70. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/plugins.js +24 -0
  71. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/should.js +744 -0
  72. data/components/indefinido/indemma/master/components/chaijs/chai/1.9.1/test/utilities.js +309 -0
  73. data/components/indefinido/indemma/master/components/chaijs/deep-eql/0.1.3/component.json +20 -0
  74. data/components/indefinido/indemma/master/components/chaijs/deep-eql/0.1.3/lib/eql.js +257 -0
  75. data/components/indefinido/indemma/master/components/chaijs/type-detect/0.1.1/component.json +18 -0
  76. data/components/indefinido/indemma/master/components/chaijs/type-detect/0.1.1/lib/type.js +142 -0
  77. data/components/indefinido/indemma/master/components/component/bind/1.0.0/component.json +14 -0
  78. data/components/indefinido/indemma/master/components/component/bind/1.0.0/index.js +23 -0
  79. data/components/indefinido/indemma/master/components/component/jquery/1.0.0/component.json +10 -0
  80. data/components/indefinido/indemma/master/components/component/jquery/1.0.0/index.js +10308 -0
  81. data/components/indefinido/indemma/master/components/component/type/1.0.0/component.json +20 -0
  82. data/components/indefinido/indemma/master/components/component/type/1.0.0/index.js +32 -0
  83. data/components/indefinido/indemma/master/components/indefinido/advisable/master/component.json +21 -0
  84. data/components/indefinido/indemma/master/components/indefinido/advisable/master/index.js +1 -0
  85. data/components/indefinido/indemma/master/components/indefinido/advisable/master/lib/advisable.js +60 -0
  86. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/component.json +39 -0
  87. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/index.js +1 -0
  88. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/adapters/rivets.js +40 -0
  89. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
  90. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +147 -0
  91. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
  92. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
  93. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
  94. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
  95. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
  96. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/observable.js +97 -0
  97. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
  98. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
  99. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/accessors-legacy.js +92 -0
  100. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/accessors.js +248 -0
  101. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/array.indexOf.js +8 -0
  102. data/components/indefinido/indemma/master/components/indefinido/observable/es6-modules/vendor/shims/object.create.js +77 -0
  103. data/components/indefinido/indemma/master/components/pluma/assimilate/0.4.0/component.json +25 -0
  104. data/components/indefinido/indemma/master/components/pluma/assimilate/0.4.0/dist/assimilate.js +127 -0
  105. data/components/indefinido/indemma/master/karma.conf.js +75 -0
  106. data/components/indefinido/indemma/master/lib/record/associable.js +4 -2
  107. data/components/indefinido/indemma/master/lib/record/dirtyable.js +1 -1
  108. data/components/indefinido/indemma/master/package.json +9 -0
  109. data/components/indefinido/indemma/master/spec/record/associable_spec.js +211 -0
  110. data/components/indefinido/indemma/master/spec/record/dirtyable_spec.js +57 -0
  111. data/components/indefinido/indemma/master/spec/record/maid_spec.js +40 -0
  112. data/components/indefinido/indemma/master/spec/record/persistable_spec.js +46 -0
  113. data/components/indefinido/indemma/master/spec/record/queryable_spec.js +39 -0
  114. data/components/indefinido/indemma/master/spec/record/resource_spec.js +93 -0
  115. data/components/indefinido/indemma/master/spec/record/rest_spec.js +32 -0
  116. data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +346 -0
  117. data/components/indefinido/indemma/master/spec/record/scopable_spec.js +242 -0
  118. data/components/indefinido/indemma/master/spec/record/storable_spec.js +44 -0
  119. data/components/indefinido/indemma/master/spec/record/translationable.js +28 -0
  120. data/components/indefinido/indemma/master/spec/record/validatable_spec.js +142 -0
  121. data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +43 -0
  122. data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +36 -0
  123. data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +34 -0
  124. data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +28 -0
  125. data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +87 -0
  126. data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +48 -0
  127. data/components/indefinido/indemma/master/spec/record_spec.js +49 -0
  128. data/components/indefinido/indemma/master/spec/spec_helper.js +15 -0
  129. data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +45 -0
  130. data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +17 -0
  131. data/components/indefinido/indemma/master/src/lib/record/associable.coffee +419 -0
  132. data/components/indefinido/indemma/master/src/lib/record/dirtyable.coffee +47 -0
  133. data/components/indefinido/indemma/master/src/lib/record/errors.coffee +20 -0
  134. data/components/indefinido/indemma/master/src/lib/record/maid.coffee +16 -0
  135. data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +34 -0
  136. data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +29 -0
  137. data/components/indefinido/indemma/master/src/lib/record/resource.coffee +107 -0
  138. data/components/indefinido/indemma/master/src/lib/record/rest.coffee +34 -0
  139. data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +487 -0
  140. data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +279 -0
  141. data/components/indefinido/indemma/master/src/lib/record/storable.coffee +49 -0
  142. data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +18 -0
  143. data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +241 -0
  144. data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +34 -0
  145. data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +17 -0
  146. data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +57 -0
  147. data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +16 -0
  148. data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +61 -0
  149. data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +31 -0
  150. data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +5 -0
  151. data/components/indefinido/indemma/master/src/lib/record.coffee +143 -0
  152. data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +205 -0
  153. data/components/indefinido/indemma/master/src/spec/record/dirtyable_spec.coffee +47 -0
  154. data/components/indefinido/indemma/master/src/spec/record/maid_spec.coffee +34 -0
  155. data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +39 -0
  156. data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +33 -0
  157. data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +69 -0
  158. data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +22 -0
  159. data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +257 -0
  160. data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +227 -0
  161. data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +39 -0
  162. data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +19 -0
  163. data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +127 -0
  164. data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +35 -0
  165. data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +25 -0
  166. data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +27 -0
  167. data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +24 -0
  168. data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +74 -0
  169. data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +33 -0
  170. data/components/indefinido/indemma/master/src/spec/record_spec.coffee +29 -0
  171. data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +11 -0
  172. data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +30 -0
  173. data/components/indefinido/indemma/master/vendor/object/mixin.js +196 -0
  174. data/components/indefinido/indemma/master/vendor/spec/sinon/assert.js +199 -0
  175. data/components/indefinido/indemma/master/vendor/spec/sinon/behavior.js +334 -0
  176. data/components/indefinido/indemma/master/vendor/spec/sinon/call.js +205 -0
  177. data/components/indefinido/indemma/master/vendor/spec/sinon/collection.js +155 -0
  178. data/components/indefinido/indemma/master/vendor/spec/sinon/match.js +245 -0
  179. data/components/indefinido/indemma/master/vendor/spec/sinon/mock.js +451 -0
  180. data/components/indefinido/indemma/master/vendor/spec/sinon/sandbox.js +144 -0
  181. data/components/indefinido/indemma/master/vendor/spec/sinon/spy.js +413 -0
  182. data/components/indefinido/indemma/master/vendor/spec/sinon/stub.js +161 -0
  183. data/components/indefinido/indemma/master/vendor/spec/sinon/test.js +77 -0
  184. data/components/indefinido/indemma/master/vendor/spec/sinon/test_case.js +99 -0
  185. data/components/indefinido/indemma/master/vendor/spec/sinon/util/event.js +94 -0
  186. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_server.js +212 -0
  187. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_server_with_clock.js +83 -0
  188. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_timers.js +405 -0
  189. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_xdomain_request.js +206 -0
  190. data/components/indefinido/indemma/master/vendor/spec/sinon/util/fake_xml_http_request.js +575 -0
  191. data/components/indefinido/indemma/master/vendor/spec/sinon/util/timers_ie.js +31 -0
  192. data/components/indefinido/indemma/master/vendor/spec/sinon/util/xdr_ie.js +14 -0
  193. data/components/indefinido/indemma/master/vendor/spec/sinon/util/xhr_ie.js +19 -0
  194. data/components/indefinido/indemma/master/vendor/spec/sinon.js +383 -0
  195. data/lib/assets/javascripts/value_objects/phone.js.coffee +3 -1
  196. data/lib/assets/javascripts/widgets/viewer/plugins/scopable.js.coffee +5 -5
  197. data/lib/ende/version.rb +1 -1
  198. data/vendor/assets/components/ende_build.css +4 -4
  199. data/vendor/assets/components/ende_build.js +7974 -7889
  200. metadata +191 -5
  201. data/vendor/assets/component/build.css +0 -112
  202. data/vendor/assets/components/build.css +0 -112
  203. data/vendor/assets/components/indemma_with_none.js +0 -30553
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "type",
3
+ "description": "Cross-browser type assertions (less broken typeof)",
4
+ "version": "1.0.0",
5
+ "keywords": [
6
+ "typeof",
7
+ "type",
8
+ "utility"
9
+ ],
10
+ "dependencies": {},
11
+ "development": {
12
+ "dependencies": {
13
+ "component/assert": "*"
14
+ }
15
+ },
16
+ "scripts": [
17
+ "index.js"
18
+ ],
19
+ "repository": "component/type"
20
+ }
@@ -0,0 +1,32 @@
1
+
2
+ /**
3
+ * toString ref.
4
+ */
5
+
6
+ var toString = Object.prototype.toString;
7
+
8
+ /**
9
+ * Return the type of `val`.
10
+ *
11
+ * @param {Mixed} val
12
+ * @return {String}
13
+ * @api public
14
+ */
15
+
16
+ module.exports = function(val){
17
+ switch (toString.call(val)) {
18
+ case '[object Function]': return 'function';
19
+ case '[object Date]': return 'date';
20
+ case '[object RegExp]': return 'regexp';
21
+ case '[object Arguments]': return 'arguments';
22
+ case '[object Array]': return 'array';
23
+ case '[object String]': return 'string';
24
+ }
25
+
26
+ if (val === null) return 'null';
27
+ if (val === undefined) return 'undefined';
28
+ if (val && val.nodeType === 1) return 'element';
29
+ if (val === Object(val)) return 'object';
30
+
31
+ return typeof val;
32
+ };
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "advisable",
3
+ "description": "Aspect oriented programming mixin",
4
+ "version": "0.1.0",
5
+ "keywords": [
6
+ "aspect",
7
+ "aop",
8
+ "mixin"
9
+ ],
10
+ "dependencies": {
11
+ "component/jquery": "*"
12
+ },
13
+ "development": {},
14
+ "license": "WTFP",
15
+ "paths": [],
16
+ "scripts": [
17
+ "index.js",
18
+ "lib/advisable.js"
19
+ ],
20
+ "repository": "indefinido/advisable"
21
+ }
@@ -0,0 +1 @@
1
+ module.exports = require('./lib/advisable');
@@ -0,0 +1,60 @@
1
+ var $, advice, mixin;
2
+
3
+ $ = require('jquery');
4
+
5
+ advice = {
6
+ around: function(base, wrapped) {
7
+ return function() {
8
+ var args;
9
+
10
+ args = $.makeArray(arguments);
11
+ return wrapped.apply(this, [$.proxy(base, this)].concat(args));
12
+ };
13
+ },
14
+ before: function(base, before) {
15
+ return this.around(base, function() {
16
+ var args, orig;
17
+
18
+ args = $.makeArray(arguments);
19
+ orig = args.shift();
20
+ before.apply(this, args);
21
+ return orig.apply(this, args);
22
+ });
23
+ },
24
+ after: function(base, after) {
25
+ return this.around(base, function() {
26
+ var args, orig, res;
27
+
28
+ args = $.makeArray(arguments);
29
+ orig = args.shift();
30
+ res = orig.apply(this, args);
31
+ after.apply(this, args);
32
+ return res;
33
+ });
34
+ }
35
+ };
36
+
37
+ mixin = {
38
+ before: function(method, advicer) {
39
+ if (typeof this[method] === 'function') {
40
+ return this[method] = advice.before(this[method], advicer);
41
+ }
42
+ throw new TypeError("Can only advice functions, attribute " + method + " of " + this + " is of type " + (typeof this[method]));
43
+ },
44
+ after: function(method, advicer) {
45
+ if (typeof this[method] === 'function') {
46
+ return this[method] = advice.after(this[method], advicer);
47
+ }
48
+ throw new TypeError("Can only advice functions, attribute " + method + " of " + this + " is of type " + (typeof this[method]));
49
+ },
50
+ around: function(method, advicer) {
51
+ if (typeof this[method] === 'function') {
52
+ return this[method] = advice.around(this[method], advicer);
53
+ }
54
+ throw new TypeError("Can only advice functions, attribute " + method + " of " + this + " is of type " + (typeof this[method]));
55
+ }
56
+ };
57
+
58
+ exports.mixin = function(object) {
59
+ return $.extend(object, mixin);
60
+ };
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "observable",
3
+ "repository": "indefinido/observable",
4
+ "description": "Observable capabilities built upon observable shim.",
5
+ "version": "0.2.4",
6
+ "keywords": [],
7
+ "dependencies": {
8
+ "component/jquery": "*"
9
+ },
10
+ "main": "index.js",
11
+ "development": {
12
+ "dependencies": {
13
+ "chaijs/chai": "*"
14
+ },
15
+ "scripts": [
16
+ "vendor/spec/sinon.js",
17
+ "vendor/spec/sinon/**/*.js"
18
+ ]
19
+ },
20
+ "license": "WTFPL",
21
+ "scripts": [
22
+ "index.js",
23
+ "lib/adapters/rivets.js",
24
+ "lib/legacy/notifierable.js",
25
+ "lib/legacy/schedulerable.js",
26
+ "lib/lookup.js",
27
+ "lib/observable.js",
28
+ "lib/observable/keypath_observer.js",
29
+ "lib/observable/observation.js",
30
+ "lib/observable/selection.js",
31
+ "lib/observable/self_observer.js",
32
+ "lib/platform.js",
33
+ "vendor/observe-js/observe.js",
34
+ "vendor/shims/accessors-legacy.js",
35
+ "vendor/shims/accessors.js",
36
+ "vendor/shims/array.indexOf.js",
37
+ "vendor/shims/object.create.js"
38
+ ]
39
+ }
@@ -0,0 +1 @@
1
+ module.exports = require('./lib/observable');
@@ -0,0 +1,40 @@
1
+ var adapter;
2
+
3
+ adapter = {
4
+ subscribe: function(record, attribute_path, callback) {
5
+ if (record == null) {
6
+ throw new TypeError('observable.adapters.rivets.subscribe: No record provided for subscription');
7
+ }
8
+ if (attribute_path) {
9
+ return record.subscribe(attribute_path, callback);
10
+ }
11
+ },
12
+ unsubscribe: function(record, attribute_path, callback) {
13
+ if (record == null) {
14
+ throw new TypeError('observable.adapters.rivets.unsubscribe: No record provided for subscription');
15
+ }
16
+ return record.unsubscribe(attribute_path, callback);
17
+ },
18
+ read: function(record, attribute_path) {
19
+ if (record == null) {
20
+ throw new TypeError('observable.adapters.rivets.read: No record provided for subscription');
21
+ }
22
+ if (attribute_path.indexOf('.') === -1) {
23
+ return record[attribute_path];
24
+ } else {
25
+ return record.observation.observers[attribute_path].value_;
26
+ }
27
+ },
28
+ publish: function(record, attribute_path, value) {
29
+ if (record == null) {
30
+ throw new TypeError('observable.adapters.rivets.publish: No record provided for subscription');
31
+ }
32
+ if (attribute_path.indexOf('.') === -1) {
33
+ return record[attribute_path] = value;
34
+ } else {
35
+ return record.observation.observers[attribute_path].setValue(value);
36
+ }
37
+ }
38
+ };
39
+
40
+ export default adapter;
@@ -0,0 +1,145 @@
1
+ import jQuery from 'jquery';
2
+ var mutations, notifierable, subscribed_getter;
3
+
4
+ notifierable = {
5
+ observe: function(object, keypath, callback) {
6
+ return Object.defineProperty(object, keypath, {
7
+ get: this.getter(object, keypath),
8
+ set: this.setter(object, keypath, callback),
9
+ enumerable: true
10
+ });
11
+ },
12
+ storage_for: function(object) {
13
+ var toJSON;
14
+
15
+ toJSON = void 0;
16
+ Object.defineProperty(object, "observed", {
17
+ configurable: true,
18
+ enumerable: false,
19
+ value: {}
20
+ });
21
+ toJSON = object.json || object.toJSON;
22
+ if (toJSON) {
23
+ return Object.defineProperty(object, "toJSON", {
24
+ enumerable: false,
25
+ value: function() {
26
+ var json;
27
+
28
+ json = void 0;
29
+ json = toJSON.apply(this, arguments);
30
+ return observable.unobserve(_.omit(json, observable.ignores, ["toJSON", "observed"]));
31
+ }
32
+ });
33
+ }
34
+ },
35
+ setter: function(object, keypath, callback) {
36
+ var current, old_setter, setter, thread;
37
+
38
+ setter = lookup.setter.call(object, keypath);
39
+ this.observed[keypath] = lookup.getter.call(object, keypath) && lookup.getter.call(object, keypath)() || object[keypath];
40
+ if (!setter) {
41
+ setter = function(value) {
42
+ return check.call(object, keypath, value) !== false && setter.callback_thread.call(object, value);
43
+ };
44
+ } else if (!setter.callback_thread) {
45
+ old_setter = setter;
46
+ setter = function(value) {
47
+ return check.call(object, keypath, value) !== false && setter.callback_thread.call(object, value);
48
+ };
49
+ setter.callback_thread = old_setter;
50
+ }
51
+ current = setter.callback_thread || $.noop;
52
+ setter.callback_thread = thread = function(value) {
53
+ return current.call(object, value) !== false && callback.call(object, value);
54
+ };
55
+ if (requiresDomElement) {
56
+ this.observed[keypath + "_setter"] = setter;
57
+ }
58
+ return setter;
59
+ },
60
+ getter: subscribed_getter = function(object, keypath) {
61
+ var getter, root_getter;
62
+
63
+ getter = lookup.getter.call(object, keypath) || (root_getter = function() {
64
+ return object.observed[keypath];
65
+ });
66
+ if (requiresDomElement) {
67
+ this.observed[keypath + "_getter"] = getter;
68
+ }
69
+ return getter;
70
+ },
71
+ mutations: function(keypath) {
72
+ var array, setter;
73
+
74
+ setter = lookup.setter.call(this, keypath);
75
+ array = this[keypath];
76
+ if (!setter) {
77
+ this.observe.call(this, keypath, function(new_array) {
78
+ var i, j, type;
79
+
80
+ i = void 0;
81
+ type = void 0;
82
+ j = void 0;
83
+ if ($.type(new_array) !== "array") {
84
+ return;
85
+ }
86
+ if (new_array.object === array.object && new_array.thread === array.thread) {
87
+ return;
88
+ }
89
+ i = new_array.length;
90
+ j = new_array.length;
91
+ new_array.thread = array.thread;
92
+ new_array.object = array.object;
93
+ new_array.key = keypath;
94
+ while (i--) {
95
+ type = $.type(new_array[i]);
96
+ if (!new_array[i].observed && (type === "object" || type === "array")) {
97
+ new_array[i] = observable(new_array[i]);
98
+ }
99
+ }
100
+ new_array.length = j;
101
+ $.extend(new_array, mutations.overrides);
102
+ });
103
+ setter = lookup.setter.call(this, keypath);
104
+ }
105
+ array.thread = setter.callback_thread;
106
+ array.object = this;
107
+ array.key = keypath;
108
+ $.extend(array, mutations.overrides);
109
+ if (!this.observed.mutate) {
110
+ this.observed.mutate = mutations.mutate;
111
+ }
112
+ }
113
+ };
114
+
115
+ mutations = {
116
+ mutate: function(thread, method, array) {
117
+ array.method = method;
118
+ thread.call(this, array);
119
+ this.publish(array.key, array);
120
+ delete array.method;
121
+ },
122
+ overrides: {
123
+ push: function() {
124
+ var i, operation;
125
+
126
+ i = arguments.length;
127
+ operation = void 0;
128
+ while (i--) {
129
+ !arguments[i].observed && $.type(arguments[i]) === "object" && (arguments[i] = observable(arguments[i]));
130
+ }
131
+ operation = Array.prototype.push.apply(this, arguments);
132
+ this.object.observed.mutate.call(this.object, this.thread, "push", this);
133
+ return operation;
134
+ }
135
+ }
136
+ };
137
+
138
+ jQuery("pop shift unshift".split(" ")).each(function(i, method) {
139
+ return mutations.overrides[method] = function() {
140
+ Array.prototype[method].apply(this, arguments);
141
+ return this.object.observed.mutate.call(this.object, this.thread, method, this);
142
+ };
143
+ });
144
+
145
+ export default notifierable;
@@ -0,0 +1,147 @@
1
+ import lookup from '../lookup.js';
2
+ import jQuery from 'jquery';
3
+ var scheduler, schedulerable;
4
+
5
+ scheduler = function(options) {
6
+ var name, value;
7
+
8
+ if (options == null) {
9
+ options = {};
10
+ }
11
+ for (name in options) {
12
+ value = options[name];
13
+ options[name] = {
14
+ value: value
15
+ };
16
+ }
17
+ jQuery.extend(options, {
18
+ schedulable_keypaths: {
19
+ value: []
20
+ },
21
+ schedule: {
22
+ value: function() {
23
+ var deliver,
24
+ _this = this;
25
+
26
+ deliver = function() {
27
+ return _this.deliver();
28
+ };
29
+ clearTimeout(this.timer);
30
+ return this.timer = setTimeout(deliver, 20 || options.wait);
31
+ }
32
+ }
33
+ });
34
+ return Object.create(scheduler.methods, options);
35
+ };
36
+
37
+ jQuery.extend(scheduler, {
38
+ methods: {
39
+ schedulable: function(object, keypath) {
40
+ var observer, observers, value;
41
+
42
+ if (this.schedulable_keypaths.indexOf(keypath) !== -1) {
43
+ return;
44
+ }
45
+ this.schedulable_keypaths.push(keypath);
46
+ observers = object.observation.observers;
47
+ observer = observers[keypath];
48
+ value = observer.path_.getValueFrom(object);
49
+ Object.defineProperty(object, keypath, {
50
+ get: this.getter(object, keypath),
51
+ set: this.setter(object, keypath),
52
+ enumerable: true,
53
+ configurable: true
54
+ });
55
+ if (value !== observer.path_.getValueFrom(object)) {
56
+ observer.setValue(value);
57
+ return object.observation.deliver();
58
+ }
59
+ },
60
+ deliver: function() {
61
+ return this.target.observation.deliver();
62
+ },
63
+ setter: function(object, keypath, callback) {
64
+ var current_setter;
65
+
66
+ current_setter = lookup.setter.call(object, keypath);
67
+ if (current_setter) {
68
+ return function(value) {
69
+ current_setter.call(this, value);
70
+ this.observed[keypath] = value;
71
+ this.observation.scheduler.schedule();
72
+ return value;
73
+ };
74
+ } else {
75
+ return function(value) {
76
+ this.observed[keypath] = value;
77
+ this.observation.scheduler.schedule();
78
+ return value;
79
+ };
80
+ }
81
+ },
82
+ getter: function(object, keypath) {
83
+ var root_getter;
84
+
85
+ return lookup.getter.call(object, keypath) || (root_getter = function() {
86
+ return this.observed[keypath];
87
+ });
88
+ },
89
+ destroy: function() {
90
+ return this.target = null;
91
+ }
92
+ }
93
+ });
94
+
95
+ schedulerable = function(observable) {
96
+ schedulerable.storage_for(observable);
97
+ schedulerable.schedulable_observers();
98
+ return schedulerable.augment(observable);
99
+ };
100
+
101
+ schedulerable.storage_for = function(observable) {};
102
+
103
+ schedulerable.schedulable_observers = function() {
104
+ import {Path} from '../../vendor/observe-js/observe.js';
105
+ var original;
106
+
107
+ original = Path.prototype.setValueFrom;
108
+ return Path.prototype.setValueFrom = function(object) {
109
+ var changed;
110
+
111
+ changed = original.apply(this, arguments);
112
+ if (changed) {
113
+ return object.observation.scheduler.schedule();
114
+ }
115
+ };
116
+ };
117
+
118
+ schedulerable.augment = function(observable) {
119
+ var subscribe, unobserve;
120
+
121
+ subscribe = observable.methods.subscribe;
122
+ observable.methods.subscribe = function(keypath, callback) {
123
+ subscribe.apply(this, arguments);
124
+ if (typeof keypath !== 'function') {
125
+ return this.observation.scheduler.schedulable(this, keypath);
126
+ }
127
+ };
128
+ unobserve = observable.unobserve;
129
+ observable.unobserve = function(object) {
130
+ if (!object.observation) {
131
+ return object;
132
+ }
133
+ object.observation.scheduler.destroy();
134
+ return unobserve.apply(this, arguments);
135
+ };
136
+ return jQuery.extend((function() {
137
+ var object;
138
+
139
+ object = observable.apply(this, arguments);
140
+ object.observation.scheduler = scheduler({
141
+ target: object
142
+ });
143
+ return object;
144
+ }), observable);
145
+ };
146
+
147
+ export default schedulerable;
@@ -0,0 +1,38 @@
1
+ var lookup;
2
+
3
+ lookup = {
4
+ setter: Object.prototype.__lookupSetter__ || function(property) {
5
+ return this.observed && this.observed[property + "_setter"];
6
+ },
7
+ getter: Object.prototype.__lookupGetter__ || function(property) {
8
+ var default_getter;
9
+
10
+ default_getter = void 0;
11
+ return this.observed && this.observed[property + "_getter"] || ((default_getter = $.proxy(lookup.default_getter, this, property)) && (default_getter.is_default = true) && default_getter);
12
+ },
13
+ types: {
14
+ undefined: undefined,
15
+ "null": null,
16
+ "true": true,
17
+ "false": false,
18
+ NaN: NaN
19
+ },
20
+ basic_types: [undefined, null],
21
+ default_getter: function(property) {
22
+ var possible_value;
23
+
24
+ possible_value = this[property];
25
+ if (possible_value && possible_value.hasOwnProperty("toString")) {
26
+ if (possible_value.toString.is_default) {
27
+ return this.observed[property];
28
+ }
29
+ return possible_value.toString.call(this);
30
+ } else if (possible_value in lookup.types) {
31
+ return lookup.types[possible_value];
32
+ } else {
33
+ return possible_value;
34
+ }
35
+ }
36
+ };
37
+
38
+ export default lookup;
@@ -0,0 +1,38 @@
1
+ import {PathObserver} from '../../vendor/observe-js/observe.js';
2
+ import {Callbacks} from 'jquery';
3
+ var KeypathObserver,
4
+ __hasProp = {}.hasOwnProperty,
5
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
6
+
7
+ KeypathObserver = (function(_super) {
8
+ __extends(KeypathObserver, _super);
9
+
10
+ function KeypathObserver(object, keypath) {
11
+ _super.call(this, object, keypath);
12
+ this.callbacks = Callbacks();
13
+ this.open((function() {
14
+ return this.fireWith(object, arguments);
15
+ }), this.callbacks);
16
+ }
17
+
18
+ KeypathObserver.prototype.add = function(callback) {
19
+ return this.callbacks.add(callback);
20
+ };
21
+
22
+ KeypathObserver.prototype.remove = function() {
23
+ var _ref;
24
+
25
+ return (_ref = this.callbacks).remove.apply(_ref, arguments);
26
+ };
27
+
28
+ KeypathObserver.prototype.close = function() {
29
+ KeypathObserver.__super__.close.apply(this, arguments);
30
+ this.callbacks.empty();
31
+ return delete this.callbacks;
32
+ };
33
+
34
+ return KeypathObserver;
35
+
36
+ })(PathObserver);
37
+
38
+ export default KeypathObserver;
@@ -0,0 +1,45 @@
1
+ var observation, observationable;
2
+
3
+ observation = {
4
+ add: function(keypath, callback) {
5
+ return this.observers[keypath].add(callback);
6
+ },
7
+ remove: function(keypath, callback) {
8
+ return this.observers[keypath].remove(callback);
9
+ },
10
+ deliver: function(discard) {
11
+ var keypath, observer, _ref, _results;
12
+
13
+ _ref = this.observers;
14
+ _results = [];
15
+ for (keypath in _ref) {
16
+ observer = _ref[keypath];
17
+ _results.push(observer.deliver(discard));
18
+ }
19
+ return _results;
20
+ },
21
+ mute: function(keypath) {
22
+ this.observers[keypath].close();
23
+ return delete this.observers[keypath];
24
+ },
25
+ destroy: function(keypath) {
26
+ var observer, _ref;
27
+
28
+ _ref = this.observers;
29
+ for (keypath in _ref) {
30
+ observer = _ref[keypath];
31
+ observer.close();
32
+ }
33
+ return delete this.observers;
34
+ }
35
+ };
36
+
37
+ observationable = function(object) {
38
+ return Object.create(observation, {
39
+ observers: {
40
+ value: {}
41
+ }
42
+ });
43
+ };
44
+
45
+ export default observationable;
@@ -0,0 +1,57 @@
1
+ import jQuery from 'jquery';
2
+ var requiresDomElement, selection;
3
+
4
+ requiresDomElement = Object.defineProperty.requiresDomElement;
5
+
6
+ selection = function(observable) {
7
+ if (requiresDomElement) {
8
+ selection.generate_ignores(observable);
9
+ return selection.legacy;
10
+ } else {
11
+ return selection.from_call;
12
+ }
13
+ };
14
+
15
+ selection.legacy = function() {
16
+ var fix, object;
17
+
18
+ object = selection.from_call.apply(this, arguments);
19
+ if (!jQuery.isReady) {
20
+ throw new Error("observable.call: For compatibility reasons, observable can only be called when dom is loaded.");
21
+ }
22
+ if (typeof object.nodeName !== "string") {
23
+ fix = document.createElement("fix");
24
+ document.body.appendChild(fix);
25
+ object = jQuery.extend(fix, object);
26
+ }
27
+ return object;
28
+ };
29
+
30
+ selection.generate_ignores = function(observable) {
31
+ var fix_ignores, ignores, property;
32
+
33
+ ignores = document.createElement("fix");
34
+ fix_ignores = [];
35
+ property = void 0;
36
+ for (property in ignores) {
37
+ fix_ignores.push(property);
38
+ }
39
+ return observable.ignores = fix_ignores;
40
+ };
41
+
42
+ selection.from_call = function(param) {
43
+ var object;
44
+
45
+ if (this === window) {
46
+ object = param || {};
47
+ } else if (this !== window) {
48
+ if (param) {
49
+ throw new TypeError("Two objects provided! Call either with observable.call(object) or observable(object), not with observable.call(param, param)");
50
+ } else {
51
+ object = this;
52
+ }
53
+ }
54
+ return object;
55
+ };
56
+
57
+ export default selection;