ende 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
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