ende 0.4.5 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/lib/assets/javascripts/aura/extensions/devise.js.coffee +0 -2
  3. data/lib/assets/javascripts/aura/extensions/platform.js.coffee +3 -0
  4. data/lib/assets/javascripts/aura/extensions/rivets.js.coffee +17 -1
  5. data/lib/assets/javascripts/aura/extensions/routes.js.coffee +8 -7
  6. data/lib/assets/javascripts/aura/extensions/states.js.coffee +13 -1
  7. data/lib/assets/javascripts/aura/extensions/widget/eventable.js.coffee +4 -2
  8. data/lib/assets/javascripts/config/load_components.js.coffee +19 -12
  9. data/lib/assets/javascripts/ende.js.coffee +33 -12
  10. data/lib/ende/version.rb +1 -1
  11. data/vendor/assets/components/build.css +111 -0
  12. data/vendor/assets/components/ende_build.js +160 -41
  13. data/vendor/components/indefinido-indemma/build/development.js +3 -118
  14. data/vendor/components/indefinido-indemma/build/release.js +39 -4170
  15. data/vendor/components/indefinido-indemma/build/test.js +3 -118
  16. data/vendor/components/indefinido-indemma/lib/record/associable.js +10 -2
  17. data/vendor/components/indefinido-indemma/lib/record/restfulable.js +26 -15
  18. data/vendor/components/indefinido-indemma/lib/record.js +3 -1
  19. data/vendor/components/indefinido-indemma/src/lib/record/associable.coffee +15 -1
  20. data/vendor/components/indefinido-indemma/src/lib/record/restfulable.coffee +37 -12
  21. data/vendor/components/indefinido-indemma/src/lib/record.coffee +3 -1
  22. data/vendor/components/indefinido-observable/.gitignore +15 -0
  23. data/vendor/components/indefinido-observable/.ruby-gemset +1 -0
  24. data/vendor/components/indefinido-observable/.ruby-version +1 -0
  25. data/vendor/components/indefinido-observable/Gemfile +13 -0
  26. data/vendor/components/indefinido-observable/Guardfile +39 -0
  27. data/vendor/components/indefinido-observable/History.md +0 -0
  28. data/vendor/components/indefinido-observable/Readme.md +116 -0
  29. data/vendor/components/indefinido-observable/build/build.js +14798 -0
  30. data/vendor/components/indefinido-observable/build/development.js +339 -0
  31. data/vendor/components/indefinido-observable/build/release.js +14937 -0
  32. data/vendor/components/indefinido-observable/build/test.js +339 -0
  33. data/vendor/components/indefinido-observable/component.json +5 -1
  34. data/vendor/components/indefinido-observable/components/chaijs-chai/component.json +46 -0
  35. data/vendor/components/indefinido-observable/components/chaijs-chai/index.js +1 -0
  36. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/assertion.js +132 -0
  37. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/core/assertions.js +1270 -0
  38. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/error.js +60 -0
  39. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/assert.js +1060 -0
  40. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/expect.js +12 -0
  41. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/interface/should.js +76 -0
  42. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addChainableMethod.js +94 -0
  43. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addMethod.js +37 -0
  44. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/addProperty.js +40 -0
  45. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/eql.js +124 -0
  46. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/flag.js +32 -0
  47. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getActual.js +19 -0
  48. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getEnumerableProperties.js +25 -0
  49. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getMessage.js +49 -0
  50. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getName.js +20 -0
  51. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getPathValue.js +102 -0
  52. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/getProperties.js +35 -0
  53. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/index.js +108 -0
  54. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/inspect.js +316 -0
  55. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/objDisplay.js +48 -0
  56. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteMethod.js +51 -0
  57. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/overwriteProperty.js +54 -0
  58. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/test.js +26 -0
  59. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/transferFlags.js +44 -0
  60. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai/utils/type.js +45 -0
  61. data/vendor/components/indefinido-observable/components/chaijs-chai/lib/chai.js +79 -0
  62. data/vendor/components/indefinido-observable/components/component-jquery/component.json +14 -0
  63. data/vendor/components/indefinido-observable/components/component-jquery/index.js +9601 -0
  64. data/vendor/components/indefinido-observable/components/kapit-observe-shim/component.json +11 -0
  65. data/vendor/components/indefinido-observable/components/kapit-observe-utils/component.json +13 -0
  66. data/vendor/components/indefinido-observable/karma.conf.js +92 -0
  67. data/vendor/components/indefinido-observable/lib/adapters/rivets.js +3 -1
  68. data/vendor/components/indefinido-observable/lib/observable.js +47 -13
  69. data/vendor/components/indefinido-observable/spec/legacy/observable_spec.js +126 -0
  70. data/vendor/components/indefinido-observable/spec/observable_spec.js +92 -0
  71. data/vendor/components/indefinido-observable/spec/spec_helper.js +8 -0
  72. data/vendor/components/indefinido-observable/spec/vendor/accessors_spec.js +63 -0
  73. data/vendor/components/indefinido-observable/src/lib/adapters/rivets.js.coffee +15 -0
  74. data/vendor/components/indefinido-observable/src/spec/legacy/observable_spec.coffee +132 -0
  75. data/vendor/components/indefinido-observable/src/spec/observable_spec.coffee +85 -0
  76. data/vendor/components/indefinido-observable/src/spec/spec_helper.coffee +5 -0
  77. data/vendor/components/indefinido-observable/src/spec/vendor/accessors_spec.coffee +59 -0
  78. data/vendor/components/indefinido-observable/vendor/shims/accessors.js +71 -9
  79. data/vendor/components/indefinido-observable/vendor/spec/boot.js +104 -0
  80. data/vendor/components/indefinido-observable/vendor/spec/jasmine.js +2054 -0
  81. metadata +58 -2
@@ -18458,7 +18458,9 @@ this.model = (function() {
18458
18458
  data.route || (data.route = this.route);
18459
18459
  data.nested_attributes = this.nested_attributes || [];
18460
18460
  after_initialize = (data.after_initialize || []).concat(this.record.after_initialize);
18461
- creation = extend(Object.create(data), this.record, creation, {
18461
+ creation = extend(Object.create(data, {
18462
+ _shim: {}
18463
+ }), this.record, creation, {
18462
18464
  after_initialize: after_initialize
18463
18465
  });
18464
18466
  _ref = this.record.before_initialize;
@@ -18653,11 +18655,15 @@ subscribers = {
18653
18655
  modifiers = {
18654
18656
  belongs_to: {
18655
18657
  associated_loader: function() {
18656
- var association_name,
18658
+ var association_name, definition, temporary_observed,
18657
18659
  _this = this;
18658
18660
 
18659
18661
  association_name = this.resource.toString();
18660
- return Object.defineProperty(this.owner, association_name, {
18662
+ if (this.owner.observed == null) {
18663
+ this.owner.observed = {};
18664
+ temporary_observed = true;
18665
+ }
18666
+ definition = Object.defineProperty(this.owner, association_name, {
18661
18667
  set: function(associated) {
18662
18668
  return this.observed[association_name] = associated;
18663
18669
  },
@@ -18690,6 +18696,10 @@ modifiers = {
18690
18696
  configurable: true,
18691
18697
  enumerable: true
18692
18698
  });
18699
+ if (temporary_observed) {
18700
+ delete this.owner.observed;
18701
+ }
18702
+ return definition;
18693
18703
  }
18694
18704
  }
18695
18705
  };
@@ -19511,14 +19521,26 @@ restful = {
19511
19521
  return this.saving = false;
19512
19522
  },
19513
19523
  toString: function() {
19514
- var serialized;
19524
+ var e, name, property, serialized;
19515
19525
 
19516
19526
  serialized = {};
19517
19527
  serialized[this.resource] = this.json();
19518
- return JSON.stringify(serialized);
19528
+ try {
19529
+ return JSON.stringify(serialized);
19530
+ } catch (_error) {
19531
+ e = _error;
19532
+ console.warn("restfulable.toString: Failed to stringify record: " + e.message + ". retrying...");
19533
+ for (name in serialized) {
19534
+ property = serialized[name];
19535
+ if (typeof property === 'object') {
19536
+ delete serialized[name];
19537
+ }
19538
+ }
19539
+ return JSON.stringify(serialized);
19540
+ }
19519
19541
  },
19520
19542
  json: function(methods) {
19521
- var attribute, definition, json, name, value, _i, _len, _ref;
19543
+ var definition, json, name, nested, value;
19522
19544
 
19523
19545
  if (methods == null) {
19524
19546
  methods = {};
@@ -19526,10 +19548,11 @@ restful = {
19526
19548
  json = {};
19527
19549
  definition = model[this.resource.toString()];
19528
19550
  for (name in this) {
19529
- if (!(type(value))) {
19551
+ if (observable.ignores.indexOf(name) !== -1) {
19530
19552
  continue;
19531
19553
  }
19532
- if (definition.belongs_to.indexOf(name) !== -1 && this.nested_attributes.indexOf(name) === -1) {
19554
+ nested = this.nested_attributes.indexOf(name) !== -1;
19555
+ if (!nested && (definition.belongs_to.indexOf(name) !== -1 || definition.has_one.indexOf(name) !== -1)) {
19533
19556
  continue;
19534
19557
  }
19535
19558
  value = this[name];
@@ -19540,22 +19563,20 @@ restful = {
19540
19563
  continue;
19541
19564
  }
19542
19565
  if (type(value) === 'object') {
19543
- if (value.toJSON != null) {
19544
- json[name] = value.toJSON(methods[name]);
19545
- } else {
19546
- _ref = this.nested_attributes;
19547
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
19548
- attribute = _ref[_i];
19549
- if (attribute === name) {
19550
- json["" + name + "_attributes"] = value.json(methods[name]);
19551
- }
19566
+ if (nested) {
19567
+ json["" + name + "_attributes"] = value.json(methods[name]);
19568
+ } else if ((value.toJSON != null) || (value.json != null)) {
19569
+ if (value.json != null) {
19570
+ json[name] = value.json(methods[name]);
19571
+ } else {
19572
+ json[name] = value.toJSON(methods[name]);
19552
19573
  }
19553
19574
  }
19554
19575
  } else {
19555
19576
  json[name] = value;
19556
19577
  }
19557
19578
  }
19558
- observable.unobserve(json);
19579
+ json = observable.unobserve(json);
19559
19580
  delete json.dirty;
19560
19581
  delete json.resource;
19561
19582
  delete json.route;
@@ -24801,11 +24822,12 @@ if (!Array.prototype.indexOf) require('../vendor/shims/array.indexOf');
24801
24822
 
24802
24823
  // Object.defineProperty (for ie5+)
24803
24824
  if (typeof require != 'undefined') {
24804
- require('../vendor/shims/accessors.js');
24805
-
24806
24825
  // __lookup*__ and __define*__ for browsers with defineProperty support
24807
24826
  // TODO Figure out why gives an infinity loop
24808
24827
  require('../vendor/shims/accessors-legacy.js');
24828
+
24829
+ // Creates Object.defineProperty
24830
+ require('../vendor/shims/accessors.js');
24809
24831
  }
24810
24832
 
24811
24833
  // Require Dependencies
@@ -24882,9 +24904,10 @@ mixin = {
24882
24904
  if (requiresDomElement) {
24883
24905
 
24884
24906
  observable = function (object) {
24907
+ var fix;
24885
24908
 
24886
24909
  // observable() or observable(object)
24887
- if (this.document && this.location) {
24910
+ if (this.document && this.location) {
24888
24911
  if (!object) {
24889
24912
  object = {};
24890
24913
  }
@@ -24899,15 +24922,28 @@ if (requiresDomElement) {
24899
24922
  }
24900
24923
  }
24901
24924
 
24925
+ // TODO better documentation
24902
24926
  if (!jQuery.isReady) throw new Error('observable.call: For compatibility reasons, observable can only be called when dom is loaded.');
24903
- var fix = document.createElement('fix');
24904
24927
 
24905
- if (!jQuery.isReady) $(function () {document.body.appendChild(fix);});
24906
- else document.body.appendChild(fix);
24928
+ // Create dom element if object isn't one
24929
+ if (!(typeof object.nodeName === 'string')) {
24930
+ fix = document.createElement('fix');
24907
24931
 
24908
- if (!object.observed) generator.observable_for(fix);
24932
+ if (!jQuery.isReady) $(function () {document.body.appendChild(fix);});
24933
+ else document.body.appendChild(fix);
24934
+
24935
+ // Replace object with dom node
24936
+ object = fix;
24937
+ }
24909
24938
 
24910
- return $.extend(fix, object, mixin);
24939
+ // Observe element if it is not observed
24940
+ // TODO remove jquery dependency
24941
+ if (!object.observed) {
24942
+ generator.observable_for(object);
24943
+ object = $.extend(object, mixin);
24944
+ }
24945
+
24946
+ return object;
24911
24947
  };
24912
24948
 
24913
24949
  var ignores = document.createElement('fix'), fix_ignores = [], property;
@@ -24945,9 +24981,8 @@ if (requiresDomElement) {
24945
24981
  observable.ignores = [];
24946
24982
  }
24947
24983
 
24948
-
24949
24984
  observable.unobserve = function (object) {
24950
- var name, value, subname;
24985
+ var name, value, subname, unobserved = {};
24951
24986
 
24952
24987
  // TODO remove root setter and root getter and callbacks from
24953
24988
  // callback thread
@@ -24960,6 +24995,7 @@ observable.unobserve = function (object) {
24960
24995
  // Remove array properties overrides
24961
24996
  for (name in object) {
24962
24997
  value = object[name];
24998
+
24963
24999
  if ($.type(value) == 'array') {
24964
25000
  delete value.thread;
24965
25001
  delete value.object;
@@ -24971,8 +25007,16 @@ observable.unobserve = function (object) {
24971
25007
  }
24972
25008
  }
24973
25009
 
25010
+ for (name in object) {
25011
+ // TODO put Array.indexOf as a dependency
25012
+ if (observable.ignores && observable.ignores.indexOf(name) == -1) {
25013
+ unobserved[name] = object[name];
25014
+ }
25015
+ }
25016
+
24974
25017
  delete object.observed;
24975
- return true;
25018
+
25019
+ return unobserved;
24976
25020
  };
24977
25021
 
24978
25022
  check = function (keypath, value) {
@@ -24984,7 +25028,8 @@ check = function (keypath, value) {
24984
25028
  };
24985
25029
 
24986
25030
  generator = {
24987
- observe: function(keypath, callback) {
25031
+ // TODO pass object as parameter
25032
+ observe: function (keypath, callback) {
24988
25033
  return Object.defineProperty(this, keypath, {
24989
25034
  get: generator.getter.call(this, keypath),
24990
25035
  set: generator.setter.call(this, keypath, callback),
@@ -24993,11 +25038,21 @@ generator = {
24993
25038
  },
24994
25039
 
24995
25040
  observable_for: function (object) {
24996
- return Object.defineProperty(object, 'observed', {
25041
+ Object.defineProperty(object, 'observed', {
24997
25042
  configurable: true,
24998
25043
  enumerable: false,
24999
25044
  value: {}
25000
25045
  });
25046
+
25047
+ // TODO call the current object.toJSON after this method
25048
+ return Object.defineProperty(object, 'toJSON', {
25049
+ enumerable: false,
25050
+ value: function () {
25051
+ // TODO remove underscore dependency
25052
+ return observable.unobserve(_.omit(this, observable.ignores));
25053
+ // old_to_json()
25054
+ }
25055
+ });
25001
25056
  },
25002
25057
 
25003
25058
  // TODO improve readability
@@ -25146,7 +25201,9 @@ exports.adapter = {
25146
25201
  if (record == null) {
25147
25202
  throw new TypeError('observable.adapters.rivets.subscribe: No record provided for subscription');
25148
25203
  }
25149
- return record.subscribe(attribute_path, callback);
25204
+ if (attribute_path) {
25205
+ return record.subscribe(attribute_path, callback);
25206
+ }
25150
25207
  },
25151
25208
  unsubscribe: function(record, attribute_path, callback) {
25152
25209
  if (record == null) {
@@ -25242,7 +25299,10 @@ require.register("indefinido-observable/vendor/shims/accessors.js", function(exp
25242
25299
  changed_value = object[property];
25243
25300
  descriptor.set.call(object, changed_value);
25244
25301
 
25245
- // Restore get function if it exists and there's no falsey value
25302
+ // Restore get function if:
25303
+ // it was mentioned on definition
25304
+ // there's no falsey value, in that case we just need to return falsey value
25305
+ // current toString is not the getter, to prevent further unecessary redefinitions
25246
25306
  if (descriptor.get && descriptor.value && descriptor.value.toString != descriptor.bound_getter) {
25247
25307
  // TODO if (descriptor.get + '' === 'undefined') descriptor.get = ''; // Handle undefined getter
25248
25308
  descriptor.value.toString = descriptor.bound_getter
@@ -25260,33 +25320,37 @@ require.register("indefinido-observable/vendor/shims/accessors.js", function(exp
25260
25320
  }
25261
25321
 
25262
25322
  return setter;
25263
- }
25323
+ };
25264
25324
 
25265
25325
  // Shim define property with apropriated fail cases exceptions
25266
25326
  Object.defineProperty = function (obj, prop, descriptor) {
25267
25327
  var fix;
25268
25328
 
25269
- if (!obj.attachEvent) throw new TypeError('Object.defineProperty: First parameter must be a dom element.');
25329
+ if (!prop)
25270
25330
 
25271
- if (!fix && !inDocument(obj)) throw new TypeError('Object.defineProperty: Dom element must be attached in document.');
25331
+ if (descriptor.set) {
25332
+ if (!obj.attachEvent) throw new TypeError('Object.defineProperty: First parameter must be a dom element. When descriptor has \'set\' property.');
25272
25333
 
25273
- if (!descriptor) throw new TypeError('Object.defineProperty (object, property, descriptor): Descriptor must be an object, was \'' + descriptor + '\'.');
25334
+ if (!fix && !inDocument(obj)) throw new TypeError('Object.defineProperty: Dom element must be attached in document.');
25335
+ }
25274
25336
 
25275
- if ((descriptor.get || descriptor.set) && descriptor.value) throw new TypeError('Object.defineProperty: Descriptor must have only getters and setters or value.');
25337
+ if (!descriptor) throw new TypeError('Object.defineProperty (object, property, descriptor): Descriptor must be an object, was \'' + descriptor + '\'.');
25276
25338
 
25277
25339
  // Store current value in descriptor
25340
+ // TODO only try to set descriptor value if it was passed as parameter
25278
25341
  descriptor.value = descriptor.value || (descriptor.get && descriptor.get.call(obj)) || obj[prop];
25279
25342
 
25280
- if (descriptor.get || descriptor.set) {
25343
+ if (descriptor.set) {
25281
25344
  // Detach old listeners if any
25282
25345
  detach = true;
25283
25346
  obj[prop] = 'detaching';
25284
25347
  detach = false;
25285
25348
 
25286
25349
  if (descriptor.get) {
25350
+ // TODO remove jquery dependency
25287
25351
  descriptor.bound_getter = $.extend($.proxy(descriptor.get, obj), descriptor.get);
25288
25352
 
25289
- // We only bind the getter when we have a non falsey value
25353
+ // Why? we only bind the getter when we have a non falsey value
25290
25354
  if (descriptor.value) descriptor.value.toString = descriptor.bound_getter;
25291
25355
 
25292
25356
  // Although its not allowed for convention to have getters
@@ -25297,6 +25361,16 @@ require.register("indefinido-observable/vendor/shims/accessors.js", function(exp
25297
25361
 
25298
25362
  (fix || obj).attachEvent("onpropertychange", generate_setter(obj, prop, descriptor));
25299
25363
 
25364
+ } else if (descriptor.get) {
25365
+ descriptor.bound_getter = $.extend($.proxy(descriptor.get, obj), descriptor.get);
25366
+
25367
+ // Why? we only bind the getter when we have a non falsey value
25368
+ if (descriptor.value) descriptor.value.toString = descriptor.bound_getter;
25369
+
25370
+ // Although its not allowed for convention to have getters
25371
+ // and setters with the descriptor value, here we just reuse
25372
+ // the descriptor stored value
25373
+ obj[prop] = descriptor.value;
25300
25374
  } else {
25301
25375
  obj[prop] = descriptor.value;
25302
25376
  }
@@ -25318,7 +25392,52 @@ require.register("indefinido-observable/vendor/shims/accessors.js", function(exp
25318
25392
  }
25319
25393
  }
25320
25394
  };
25321
- }
25395
+
25396
+ ObjectCreate = Object.create;
25397
+ baseElement = document.createElement('fix');
25398
+
25399
+ Object.create = function (prototype, properties) {
25400
+ var complexDescriptor, fix, descriptor, name;
25401
+
25402
+ for (name in properties) {
25403
+ descriptor = properties[name]
25404
+ if (descriptor instanceof Object) {
25405
+ complexDescriptor = !!(descriptor.get || descriptor.set)
25406
+
25407
+ if (complexDescriptor) {
25408
+ break;
25409
+ }
25410
+ }
25411
+ }
25412
+
25413
+ if (complexDescriptor || prototype.nodeName === 'fix' || properties && properties._shim) {
25414
+ properties && delete properties._shim;
25415
+
25416
+ if (typeof object != 'function') {
25417
+ fix = document.createElement('fix');
25418
+ document.appendChild(fix);
25419
+
25420
+ // Copy over prototype properties
25421
+ for (name in prototype) {
25422
+ try {
25423
+ if (name in baseElement) continue;
25424
+ fix[name] = prototype[name];
25425
+ } catch (e) {
25426
+ console.warn("Object.create: Invalid shimmed property: " + name + ", with error " + e);
25427
+ }
25428
+ }
25429
+
25430
+ Object.defineProperties(fix, properties);
25431
+ } else {
25432
+ throw new TypeError('Functions with complex descriptors not implemented yet');
25433
+ }
25434
+ return fix;
25435
+ } else {
25436
+ return ObjectCreate(prototype, properties)
25437
+ }
25438
+ }
25439
+ };
25440
+
25322
25441
 
25323
25442
  /* TODO Use define Property, and only define if
25324
25443
  non-enumerable properties are allowed