marko 4.24.0 → 4.24.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -74,16 +74,6 @@ function addDelegatedEventHandlerToDoc(eventType, doc) {
74
74
  var listeners = doc[listenersAttachedKey] = doc[listenersAttachedKey] || {};
75
75
  if (!listeners[eventType]) {
76
76
  body.addEventListener(eventType, listeners[eventType] = function (event) {
77
- var propagationStopped = false;
78
-
79
- // Monkey-patch to fix #97
80
- var oldStopPropagation = event.stopPropagation;
81
-
82
- event.stopPropagation = function () {
83
- oldStopPropagation.call(event);
84
- propagationStopped = true;
85
- };
86
-
87
77
  var curNode = event.target;
88
78
  if (!curNode) {
89
79
  return;
@@ -106,15 +96,29 @@ function addDelegatedEventHandlerToDoc(eventType, doc) {
106
96
  // Attributes will have the following form:
107
97
  // on<event_type>("<target_method>|<component_id>")
108
98
 
109
- do {
110
- if (target = getEventFromEl(curNode, propName)) {
111
- delegateEvent(curNode, propName, target, event);
99
+ if (event.bubbles) {
100
+ var propagationStopped = false;
101
+
102
+ // Monkey-patch to fix #97
103
+ var oldStopPropagation = event.stopPropagation;
112
104
 
113
- if (propagationStopped) {
114
- break;
105
+ event.stopPropagation = function () {
106
+ oldStopPropagation.call(event);
107
+ propagationStopped = true;
108
+ };
109
+
110
+ do {
111
+ if (target = getEventFromEl(curNode, propName)) {
112
+ delegateEvent(curNode, propName, target, event);
113
+
114
+ if (propagationStopped) {
115
+ break;
116
+ }
115
117
  }
116
- }
117
- } while ((curNode = curNode.parentNode) && curNode.getAttribute);
118
+ } while ((curNode = curNode.parentNode) && curNode.getAttribute);
119
+ } else if (target = getEventFromEl(curNode, propName)) {
120
+ delegateEvent(curNode, propName, target, event);
121
+ }
118
122
  }, true);
119
123
  }
120
124
  }
@@ -211,7 +211,7 @@ var proto = AsyncStream.prototype = {
211
211
  timeout = AsyncStream.DEFAULT_TIMEOUT;
212
212
  }
213
213
 
214
- newStream._stack = AsyncStream.INCLUDE_STACK ? getNonMarkoStack(new Error()) : null;
214
+ newStream._stack = AsyncStream.INCLUDE_STACK ? new Error() : null;
215
215
  newStream.name = name;
216
216
 
217
217
  if (timeout > 0) {
@@ -437,6 +437,7 @@ var proto = AsyncStream.prototype = {
437
437
  error: function (e) {
438
438
  var name = this.name;
439
439
  var stack = this._stack;
440
+ if (stack) stack = getNonMarkoStack(stack);
440
441
 
441
442
  if (!(e instanceof Error)) {
442
443
  e = new Error(JSON.stringify(e));
@@ -70,15 +70,15 @@ function find(dirname, registeredTaglibs) {
70
70
  var added = {};
71
71
 
72
72
  var helper = {
73
- alreadyAdded: function (taglibPath) {
74
- return added.hasOwnProperty(taglibPath);
73
+ alreadyAdded: function (taglibId) {
74
+ return added.hasOwnProperty(taglibId);
75
75
  },
76
76
  addTaglib: function (taglib) {
77
- if (added[taglib.path]) {
77
+ if (added[taglib.id]) {
78
78
  return;
79
79
  }
80
80
 
81
- added[taglib.path] = true;
81
+ added[taglib.id] = true;
82
82
  found.push(taglib);
83
83
  },
84
84
  foundTaglibPackages: {}
@@ -37,9 +37,9 @@ function buildLookup(dirname) {
37
37
  // The taglibs "closer" to the template will be earlier in the list
38
38
  // and the taglibs "farther" from the template will be later. We
39
39
  // want closer taglibs to take precedence (especially when de-duping)
40
- // so we loop from beginning to end. We used to loop from the end
41
- // to the beginning, but that appears to have been a mistake.
42
- for (var i = 0; i < taglibs.length; i++) {
40
+ // so we add the taglibs in reverse order so that "closer" taglibs
41
+ // merge on top of "farther" ones.
42
+ for (var i = taglibs.length; i--;) {
43
43
  var taglib = taglibs[i];
44
44
  lookup.addTaglib(taglib);
45
45
  handleImports(lookup, taglib);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "marko",
3
- "version": "4.24.0",
3
+ "version": "4.24.4",
4
4
  "license": "MIT",
5
5
  "description": "UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.",
6
6
  "dependencies": {
@@ -17,7 +17,7 @@
17
17
  "estraverse": "^4.3.0",
18
18
  "events-light": "^1.0.0",
19
19
  "he": "^1.1.0",
20
- "htmljs-parser": "^2.11.0",
20
+ "htmljs-parser": "^2.11.1",
21
21
  "lasso-caching-fs": "^1.0.1",
22
22
  "lasso-modules-client": "^2.0.4",
23
23
  "lasso-package-root": "^1.0.1",
@@ -79,16 +79,6 @@ function addDelegatedEventHandlerToDoc(eventType, doc) {
79
79
  body.addEventListener(
80
80
  eventType,
81
81
  (listeners[eventType] = function(event) {
82
- var propagationStopped = false;
83
-
84
- // Monkey-patch to fix #97
85
- var oldStopPropagation = event.stopPropagation;
86
-
87
- event.stopPropagation = function() {
88
- oldStopPropagation.call(event);
89
- propagationStopped = true;
90
- };
91
-
92
82
  var curNode = event.target;
93
83
  if (!curNode) {
94
84
  return;
@@ -111,15 +101,29 @@ function addDelegatedEventHandlerToDoc(eventType, doc) {
111
101
  // Attributes will have the following form:
112
102
  // on<event_type>("<target_method>|<component_id>")
113
103
 
114
- do {
115
- if ((target = getEventFromEl(curNode, propName))) {
116
- delegateEvent(curNode, propName, target, event);
104
+ if (event.bubbles) {
105
+ var propagationStopped = false;
106
+
107
+ // Monkey-patch to fix #97
108
+ var oldStopPropagation = event.stopPropagation;
117
109
 
118
- if (propagationStopped) {
119
- break;
110
+ event.stopPropagation = function() {
111
+ oldStopPropagation.call(event);
112
+ propagationStopped = true;
113
+ };
114
+
115
+ do {
116
+ if ((target = getEventFromEl(curNode, propName))) {
117
+ delegateEvent(curNode, propName, target, event);
118
+
119
+ if (propagationStopped) {
120
+ break;
121
+ }
120
122
  }
121
- }
122
- } while ((curNode = curNode.parentNode) && curNode.getAttribute);
123
+ } while ((curNode = curNode.parentNode) && curNode.getAttribute);
124
+ } else if ((target = getEventFromEl(curNode, propName))) {
125
+ delegateEvent(curNode, propName, target, event);
126
+ }
123
127
  }),
124
128
  true
125
129
  );
@@ -215,9 +215,7 @@ var proto = (AsyncStream.prototype = {
215
215
  timeout = AsyncStream.DEFAULT_TIMEOUT;
216
216
  }
217
217
 
218
- newStream._stack = AsyncStream.INCLUDE_STACK
219
- ? getNonMarkoStack(new Error())
220
- : null;
218
+ newStream._stack = AsyncStream.INCLUDE_STACK ? new Error() : null;
221
219
  newStream.name = name;
222
220
 
223
221
  if (timeout > 0) {
@@ -451,6 +449,7 @@ var proto = (AsyncStream.prototype = {
451
449
  error: function(e) {
452
450
  var name = this.name;
453
451
  var stack = this._stack;
452
+ if (stack) stack = getNonMarkoStack(stack);
454
453
 
455
454
  if (!(e instanceof Error)) {
456
455
  e = new Error(JSON.stringify(e));
@@ -69,15 +69,15 @@ function find(dirname, registeredTaglibs) {
69
69
  var added = {};
70
70
 
71
71
  var helper = {
72
- alreadyAdded: function(taglibPath) {
73
- return added.hasOwnProperty(taglibPath);
72
+ alreadyAdded: function(taglibId) {
73
+ return added.hasOwnProperty(taglibId);
74
74
  },
75
75
  addTaglib: function(taglib) {
76
- if (added[taglib.path]) {
76
+ if (added[taglib.id]) {
77
77
  return;
78
78
  }
79
79
 
80
- added[taglib.path] = true;
80
+ added[taglib.id] = true;
81
81
  found.push(taglib);
82
82
  },
83
83
  foundTaglibPackages: {}
@@ -38,9 +38,9 @@ function buildLookup(dirname) {
38
38
  // The taglibs "closer" to the template will be earlier in the list
39
39
  // and the taglibs "farther" from the template will be later. We
40
40
  // want closer taglibs to take precedence (especially when de-duping)
41
- // so we loop from beginning to end. We used to loop from the end
42
- // to the beginning, but that appears to have been a mistake.
43
- for (var i = 0; i < taglibs.length; i++) {
41
+ // so we add the taglibs in reverse order so that "closer" taglibs
42
+ // merge on top of "farther" ones.
43
+ for (var i = taglibs.length; i--; ) {
44
44
  var taglib = taglibs[i];
45
45
  lookup.addTaglib(taglib);
46
46
  handleImports(lookup, taglib);