ende 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +4 -4
  2. data/component.json +2 -2
  3. data/components/indefinido/indemma/master/component.json +27 -17
  4. data/components/indefinido/indemma/master/lib/record/associable.js +74 -75
  5. data/components/indefinido/indemma/master/lib/record/dirtyable.js +40 -0
  6. data/components/indefinido/indemma/master/lib/record/queryable.js +2 -2
  7. data/components/indefinido/indemma/master/lib/record/resource.js +1 -1
  8. data/components/indefinido/indemma/master/lib/record/rest.js +7 -2
  9. data/components/indefinido/indemma/master/lib/record/restfulable.js +37 -10
  10. data/components/indefinido/indemma/master/lib/record/scopable.js +20 -47
  11. data/components/indefinido/indemma/master/lib/record/storable.js +11 -0
  12. data/components/indefinido/indemma/master/lib/record/validatable.js +195 -1068
  13. data/components/indefinido/indemma/master/lib/record.js +1 -1
  14. data/components/indefinido/indemma/master/vendor/stampit.js +568 -242
  15. data/components/indefinido/observable/es6-modules/component.json +39 -0
  16. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/lib/adapters/rivets.js +3 -1
  17. data/components/indefinido/observable/es6-modules/lib/legacy/notifierable.js +145 -0
  18. data/components/indefinido/observable/es6-modules/lib/legacy/schedulerable.js +114 -0
  19. data/components/indefinido/observable/es6-modules/lib/lookup.js +38 -0
  20. data/components/indefinido/observable/es6-modules/lib/observable/keypath_observer.js +38 -0
  21. data/components/indefinido/observable/es6-modules/lib/observable/observation.js +45 -0
  22. data/components/indefinido/observable/es6-modules/lib/observable/selection.js +57 -0
  23. data/components/indefinido/observable/es6-modules/lib/observable/self_observer.js +38 -0
  24. data/components/indefinido/observable/es6-modules/lib/observable.js +90 -0
  25. data/components/indefinido/observable/es6-modules/lib/platform.js +12 -0
  26. data/components/indefinido/observable/es6-modules/vendor/observe-js/observe.js +1631 -0
  27. data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors.js +85 -10
  28. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +1 -1
  29. data/lib/ende/version.rb +1 -1
  30. data/vendor/assets/components/ende_build.js +18379 -26828
  31. metadata +20 -128
  32. data/components/indefinido/indemma/master/.gitignore +0 -17
  33. data/components/indefinido/indemma/master/.ruby-gemset +0 -1
  34. data/components/indefinido/indemma/master/.ruby-version +0 -1
  35. data/components/indefinido/indemma/master/Gemfile +0 -13
  36. data/components/indefinido/indemma/master/Guardfile +0 -39
  37. data/components/indefinido/indemma/master/History.md +0 -0
  38. data/components/indefinido/indemma/master/Readme.md +0 -447
  39. data/components/indefinido/indemma/master/build/build.js +0 -26288
  40. data/components/indefinido/indemma/master/build/development.js +0 -22200
  41. data/components/indefinido/indemma/master/build/release.js +0 -22139
  42. data/components/indefinido/indemma/master/build/test.js +0 -22200
  43. data/components/indefinido/indemma/master/components/chaijs-assertion-error/component.json +0 -18
  44. data/components/indefinido/indemma/master/components/chaijs-assertion-error/index.js +0 -110
  45. data/components/indefinido/indemma/master/components/chaijs-chai/component.json +0 -47
  46. data/components/indefinido/indemma/master/components/chaijs-chai/index.js +0 -1
  47. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/assertion.js +0 -130
  48. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/core/assertions.js +0 -1270
  49. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/assert.js +0 -1080
  50. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/expect.js +0 -12
  51. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/interface/should.js +0 -76
  52. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +0 -94
  53. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addMethod.js +0 -37
  54. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/addProperty.js +0 -40
  55. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/eql.js +0 -129
  56. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/flag.js +0 -32
  57. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getActual.js +0 -19
  58. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +0 -25
  59. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getMessage.js +0 -49
  60. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getName.js +0 -20
  61. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getPathValue.js +0 -102
  62. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/getProperties.js +0 -35
  63. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/index.js +0 -108
  64. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/inspect.js +0 -320
  65. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/objDisplay.js +0 -48
  66. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +0 -51
  67. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +0 -54
  68. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/test.js +0 -26
  69. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/transferFlags.js +0 -44
  70. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai/utils/type.js +0 -45
  71. data/components/indefinido/indemma/master/components/chaijs-chai/lib/chai.js +0 -80
  72. data/components/indefinido/indemma/master/components/component-bind/component.json +0 -14
  73. data/components/indefinido/indemma/master/components/component-bind/index.js +0 -24
  74. data/components/indefinido/indemma/master/components/component-jquery/component.json +0 -14
  75. data/components/indefinido/indemma/master/components/component-jquery/index.js +0 -9601
  76. data/components/indefinido/indemma/master/components/component-type/component.json +0 -18
  77. data/components/indefinido/indemma/master/components/component-type/index.js +0 -32
  78. data/components/indefinido/indemma/master/components/indefinido-advisable/component.json +0 -21
  79. data/components/indefinido/indemma/master/components/indefinido-advisable/index.js +0 -1
  80. data/components/indefinido/indemma/master/components/indefinido-advisable/lib/advisable.js +0 -60
  81. data/components/indefinido/indemma/master/components/indefinido-observable/component.json +0 -25
  82. data/components/indefinido/indemma/master/components/indefinido-observable/components/cjohansen-sinon/sinon.js +0 -4290
  83. data/components/indefinido/indemma/master/components/indefinido-observable/lib/observable.js +0 -323
  84. data/components/indefinido/indemma/master/components/kapit-observe-utils/component.json +0 -13
  85. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/component.json +0 -17
  86. data/components/indefinido/indemma/master/components/paulmillr-es6-shim/es6-shim.js +0 -996
  87. data/components/indefinido/indemma/master/components/pluma-assimilate/component.json +0 -25
  88. data/components/indefinido/indemma/master/components/pluma-assimilate/dist/assimilate.js +0 -127
  89. data/components/indefinido/indemma/master/karma.conf.js +0 -76
  90. data/components/indefinido/indemma/master/package.json +0 -9
  91. data/components/indefinido/indemma/master/spec/record/associable_spec.js +0 -137
  92. data/components/indefinido/indemma/master/spec/record/persistable_spec.js +0 -36
  93. data/components/indefinido/indemma/master/spec/record/queryable_spec.js +0 -33
  94. data/components/indefinido/indemma/master/spec/record/resource_spec.js +0 -93
  95. data/components/indefinido/indemma/master/spec/record/rest_spec.js +0 -32
  96. data/components/indefinido/indemma/master/spec/record/restfulable_spec.js +0 -300
  97. data/components/indefinido/indemma/master/spec/record/scopable_spec.js +0 -212
  98. data/components/indefinido/indemma/master/spec/record/storable_spec.js +0 -53
  99. data/components/indefinido/indemma/master/spec/record/translationable.js +0 -28
  100. data/components/indefinido/indemma/master/spec/record/validatable_spec.js +0 -111
  101. data/components/indefinido/indemma/master/spec/record/validations/associated_spec.js +0 -43
  102. data/components/indefinido/indemma/master/spec/record/validations/confirmation_spec.js +0 -36
  103. data/components/indefinido/indemma/master/spec/record/validations/cpf_spec.js +0 -35
  104. data/components/indefinido/indemma/master/spec/record/validations/presence_spec.js +0 -28
  105. data/components/indefinido/indemma/master/spec/record/validations/remote_spec.js +0 -87
  106. data/components/indefinido/indemma/master/spec/record/validations/type_spec.js +0 -48
  107. data/components/indefinido/indemma/master/spec/record_spec.js +0 -37
  108. data/components/indefinido/indemma/master/spec/spec_helper.js +0 -11
  109. data/components/indefinido/indemma/master/spec/support/value_objects/phone.js +0 -45
  110. data/components/indefinido/indemma/master/src/lib/extensions/rivets.coffee +0 -17
  111. data/components/indefinido/indemma/master/src/lib/record/associable.coffee +0 -380
  112. data/components/indefinido/indemma/master/src/lib/record/errors.coffee +0 -20
  113. data/components/indefinido/indemma/master/src/lib/record/maid.coffee +0 -16
  114. data/components/indefinido/indemma/master/src/lib/record/persistable.coffee +0 -32
  115. data/components/indefinido/indemma/master/src/lib/record/queryable.coffee +0 -30
  116. data/components/indefinido/indemma/master/src/lib/record/resource.coffee +0 -106
  117. data/components/indefinido/indemma/master/src/lib/record/rest.coffee +0 -28
  118. data/components/indefinido/indemma/master/src/lib/record/restfulable.coffee +0 -447
  119. data/components/indefinido/indemma/master/src/lib/record/scopable.coffee +0 -294
  120. data/components/indefinido/indemma/master/src/lib/record/storable.coffee +0 -46
  121. data/components/indefinido/indemma/master/src/lib/record/translationable.coffee +0 -18
  122. data/components/indefinido/indemma/master/src/lib/record/validatable.coffee +0 -207
  123. data/components/indefinido/indemma/master/src/lib/record/validations/associated.coffee +0 -30
  124. data/components/indefinido/indemma/master/src/lib/record/validations/confirmation.coffee +0 -17
  125. data/components/indefinido/indemma/master/src/lib/record/validations/cpf.coffee +0 -57
  126. data/components/indefinido/indemma/master/src/lib/record/validations/presence.coffee +0 -16
  127. data/components/indefinido/indemma/master/src/lib/record/validations/remote.coffee +0 -61
  128. data/components/indefinido/indemma/master/src/lib/record/validations/type.coffee +0 -31
  129. data/components/indefinido/indemma/master/src/lib/record/validations/validatorable.coffee +0 -5
  130. data/components/indefinido/indemma/master/src/lib/record.coffee +0 -138
  131. data/components/indefinido/indemma/master/src/spec/record/associable_spec.coffee +0 -130
  132. data/components/indefinido/indemma/master/src/spec/record/persistable_spec.coffee +0 -30
  133. data/components/indefinido/indemma/master/src/spec/record/queryable_spec.coffee +0 -27
  134. data/components/indefinido/indemma/master/src/spec/record/resource_spec.coffee +0 -69
  135. data/components/indefinido/indemma/master/src/spec/record/rest_spec.coffee +0 -22
  136. data/components/indefinido/indemma/master/src/spec/record/restfulable_spec.coffee +0 -215
  137. data/components/indefinido/indemma/master/src/spec/record/scopable_spec.coffee +0 -191
  138. data/components/indefinido/indemma/master/src/spec/record/storable_spec.coffee +0 -40
  139. data/components/indefinido/indemma/master/src/spec/record/translationable.coffee +0 -19
  140. data/components/indefinido/indemma/master/src/spec/record/validatable_spec.coffee +0 -100
  141. data/components/indefinido/indemma/master/src/spec/record/validations/associated_spec.coffee +0 -35
  142. data/components/indefinido/indemma/master/src/spec/record/validations/confirmation_spec.coffee +0 -25
  143. data/components/indefinido/indemma/master/src/spec/record/validations/cpf_spec.coffee +0 -28
  144. data/components/indefinido/indemma/master/src/spec/record/validations/presence_spec.coffee +0 -24
  145. data/components/indefinido/indemma/master/src/spec/record/validations/remote_spec.coffee +0 -74
  146. data/components/indefinido/indemma/master/src/spec/record/validations/type_spec.coffee +0 -33
  147. data/components/indefinido/indemma/master/src/spec/record_spec.coffee +0 -23
  148. data/components/indefinido/indemma/master/src/spec/spec_helper.coffee +0 -9
  149. data/components/indefinido/indemma/master/src/spec/support/value_objects/phone.coffee +0 -30
  150. data/components/indefinido/indemma/master/vendor/object/mixin.js +0 -196
  151. data/components/indefinido/indemma/master/vendor/sinon.js +0 -4290
  152. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/index.js +0 -0
  153. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/accessors-legacy.js +0 -0
  154. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/array.indexOf.js +0 -0
  155. /data/components/indefinido/{indemma/master/components/indefinido-observable → observable/es6-modules}/vendor/shims/object.create.js +0 -0
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "observable",
3
+ "repository": "indefinido/observable",
4
+ "description": "Observable capabilities built upon observable shim.",
5
+ "version": "0.2.1",
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
+ }
@@ -3,7 +3,9 @@ exports.adapter = {
3
3
  if (record == null) {
4
4
  throw new TypeError('observable.adapters.rivets.subscribe: No record provided for subscription');
5
5
  }
6
- return record.subscribe(attribute_path, callback);
6
+ if (attribute_path) {
7
+ return record.subscribe(attribute_path, callback);
8
+ }
7
9
  },
8
10
  unsubscribe: function(record, attribute_path, callback) {
9
11
  if (record == null) {
@@ -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,114 @@
1
+ import lookup from '../lookup.js';
2
+ import jQuery from 'jquery';
3
+ var scheduler, schedulerable;
4
+
5
+ scheduler = function(options) {
6
+ var name, timeout, value;
7
+
8
+ if (options == null) {
9
+ options = {};
10
+ }
11
+ timeout = null;
12
+ for (name in options) {
13
+ value = options[name];
14
+ options[name] = {
15
+ value: value
16
+ };
17
+ }
18
+ jQuery.extend(options, {
19
+ keypaths: {
20
+ value: []
21
+ },
22
+ schedule: {
23
+ value: function() {
24
+ var deliver,
25
+ _this = this;
26
+
27
+ deliver = function() {
28
+ return _this.deliver();
29
+ };
30
+ clearTimeout(timeout);
31
+ return timeout = setTimeout(deliver, 20 || options.wait);
32
+ }
33
+ }
34
+ });
35
+ return Object.create(scheduler.methods, options);
36
+ };
37
+
38
+ jQuery.extend(scheduler, {
39
+ methods: {
40
+ property: function(object, keypath) {
41
+ var observer, observers, value;
42
+
43
+ if (this.keypaths.indexOf(keypath) !== -1) {
44
+ return;
45
+ }
46
+ this.keypaths.push(keypath);
47
+ observers = object.observation.observers;
48
+ observer = observers[keypath];
49
+ value = observer.path_.getValueFrom(object);
50
+ Object.defineProperty(object, keypath, {
51
+ get: this.getter(object, keypath),
52
+ set: this.setter(object, keypath),
53
+ enumerable: true,
54
+ configurable: true
55
+ });
56
+ if (value !== observer.path_.getValueFrom(object)) {
57
+ return observer.setValue(value);
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
+ return this.observation.scheduler.schedule();
72
+ };
73
+ } else {
74
+ return function(value) {
75
+ this.observed[keypath] = value;
76
+ return this.observation.scheduler.schedule();
77
+ };
78
+ }
79
+ },
80
+ getter: function(object, keypath) {
81
+ var root_getter;
82
+
83
+ return lookup.getter.call(object, keypath) || (root_getter = function() {
84
+ return this.observed[keypath];
85
+ });
86
+ },
87
+ destroy: function() {
88
+ return this.target = null;
89
+ }
90
+ }
91
+ });
92
+
93
+ schedulerable = function(observable) {
94
+ var original;
95
+
96
+ original = observable.methods.subscribe;
97
+ observable.methods.subscribe = function(keypath, callback) {
98
+ original.apply(this, arguments);
99
+ if (typeof keypath !== 'function') {
100
+ return this.observation.scheduler.property(this, keypath);
101
+ }
102
+ };
103
+ return jQuery.extend((function() {
104
+ var object;
105
+
106
+ object = observable.apply(this, arguments);
107
+ object.observation.scheduler = scheduler({
108
+ target: object
109
+ });
110
+ return object;
111
+ }), observable);
112
+ };
113
+
114
+ 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() {
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());
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;
@@ -0,0 +1,38 @@
1
+ import {ObjectObserver} from '../../vendor/observe-js/observe.js';
2
+ import {Callbacks} from 'jquery';
3
+ var SelfObserver,
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
+ SelfObserver = (function(_super) {
8
+ __extends(SelfObserver, _super);
9
+
10
+ function SelfObserver(object) {
11
+ _super.call(this, object);
12
+ this.callbacks = Callbacks();
13
+ this.open((function() {
14
+ return this.fireWith(object, arguments);
15
+ }), this.callbacks);
16
+ }
17
+
18
+ SelfObserver.prototype.add = function(callback) {
19
+ return this.callbacks.add(callback);
20
+ };
21
+
22
+ SelfObserver.prototype.remove = function() {
23
+ var _ref;
24
+
25
+ return (_ref = this.callbacks).remove.apply(_ref, arguments);
26
+ };
27
+
28
+ SelfObserver.prototype.close = function() {
29
+ SelfObserver.__super__.close.apply(this, arguments);
30
+ this.callbacks.empty();
31
+ return delete this.callbacks;
32
+ };
33
+
34
+ return SelfObserver;
35
+
36
+ })(ObjectObserver);
37
+
38
+ export default SelfObserver;
@@ -0,0 +1,90 @@
1
+ import './platform.js';
2
+ import jQuery from 'jquery';
3
+ import observation from './observable/observation.js';
4
+ import selection from './observable/selection.js';
5
+ import KeypathObserver from './observable/keypath_observer.js';
6
+ import SelfObserver from './observable/self_observer.js';
7
+ var observable;
8
+
9
+ observable = function() {
10
+ var object;
11
+
12
+ object = observable.select.apply(this, arguments);
13
+ if (object.observation) {
14
+ return object;
15
+ }
16
+ return jQuery.extend(observable.observe(object), observable.methods);
17
+ };
18
+
19
+ jQuery.extend(observable, {
20
+ select: selection(observable),
21
+ observe: function(object) {
22
+ Object.defineProperty(object, "observation", {
23
+ configurable: true,
24
+ enumerable: false,
25
+ value: observation(object)
26
+ });
27
+ return Object.defineProperty(object, "observed", {
28
+ configurable: true,
29
+ enumerable: false,
30
+ value: {}
31
+ });
32
+ },
33
+ self: function(object) {
34
+ var observer, observers;
35
+
36
+ observers = object.observation.observers;
37
+ return observer = observers.self || (observers.self = new SelfObserver(object));
38
+ },
39
+ keypath: function(object, keypath) {
40
+ var observer, observers;
41
+
42
+ observers = object.observation.observers;
43
+ return observer = observers[keypath] || (observers[keypath] = new KeypathObserver(object, keypath));
44
+ },
45
+ unobserve: function(object) {
46
+ var name;
47
+
48
+ if (!object.observation) {
49
+ return object;
50
+ }
51
+ for (name in observable.methods) {
52
+ delete object[name];
53
+ }
54
+ object.observation.destroy();
55
+ object.observation.scheduler.destroy();
56
+ delete object.observation;
57
+ delete object.observed;
58
+ return object;
59
+ },
60
+ methods: {
61
+ subscribe: function(keypath_or_callback, callback) {
62
+ var observer;
63
+
64
+ switch (arguments.length) {
65
+ case 1:
66
+ observer = observable.self(this);
67
+ return this.observation.add('self', keypath_or_callback);
68
+ case 2:
69
+ observable.keypath(this, keypath_or_callback);
70
+ return this.observation.add(keypath_or_callback, callback);
71
+ }
72
+ },
73
+ unsubscribe: function(keypath, callback) {
74
+ return this.observation[callback ? 'remove' : 'mute'](keypath, callback);
75
+ },
76
+ publish: function(keypath, value) {
77
+ return this[keypath] = value;
78
+ }
79
+ },
80
+ ignores: []
81
+ });
82
+
83
+ if (!Object.observe) {
84
+ import schedulerable from './legacy/schedulerable.js';
85
+ observable = schedulerable(observable);
86
+ }
87
+
88
+ observable.mixin = observable;
89
+
90
+ export default observable;
@@ -0,0 +1,12 @@
1
+ if (!Object.prototype.create) {
2
+ require("../vendor/shims/object.create");
3
+ }
4
+
5
+ if (!Array.prototype.indexOf) {
6
+ require("../vendor/shims/array.indexOf");
7
+ }
8
+
9
+ if (typeof require !== "undefined") {
10
+ require("../vendor/shims/accessors-legacy.js");
11
+ require("../vendor/shims/accessors.js");
12
+ }