marko 4.28.3 → 4.28.5

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.
@@ -94,22 +94,22 @@ function getCachedTemplate(path) {
94
94
  function getPreviousTemplate(templatePath, options) {
95
95
  /*
96
96
  The require.cache is search in the following order:
97
- 1) /path/to/my-template.js
98
- 2) /path/to/my-template.marko.js
97
+ 1) /path/to/my-template.marko.js
98
+ 2) /path/to/my-template.js
99
99
  3) /path/to/my-template.marko
100
100
  *
101
101
  If the template is not found in require.cache and `assumeUpToDate` is true
102
102
  then we will check the disk for the precompiled templates in the following
103
103
  order:
104
- 1) /path/to/my-template.js
105
- 2) /path/to/my-template.marko.js
104
+ 1) /path/to/my-template.marko.js
105
+ 2) /path/to/my-template.js
106
106
  */
107
107
  var ext = nodePath.extname(templatePath);
108
- var targetFilePrecompiled = templatePath.slice(0, 0 - ext.length) + ".js";
109
- var targetFileDebug = templatePath + ".js";
108
+ var targetPrecompiledMarkoJS = templatePath + ".js";
109
+ var targetPrecompiledJS = templatePath.slice(0, 0 - ext.length) + ".js";
110
110
 
111
111
  // Short-circuit loading if the template has already been cached in the Node.js require cache
112
- var cachedTemplate = getCachedTemplate(targetFilePrecompiled) || getCachedTemplate(targetFileDebug) || getCachedTemplate(templatePath);
112
+ var cachedTemplate = getCachedTemplate(targetPrecompiledMarkoJS) || getCachedTemplate(targetPrecompiledJS) || getCachedTemplate(templatePath);
113
113
 
114
114
  if (cachedTemplate) {
115
115
  return cachedTemplate;
@@ -119,12 +119,11 @@ function getPreviousTemplate(templatePath, options) {
119
119
  templatePath = nodePath.resolve(cwd, templatePath);
120
120
 
121
121
  if (options.assumeUpToDate) {
122
- if (fs.existsSync(targetFilePrecompiled)) {
123
- return require(targetFilePrecompiled);
122
+ if (fs.existsSync(targetPrecompiledMarkoJS)) {
123
+ return require(targetPrecompiledMarkoJS);
124
124
  }
125
-
126
- if (fs.existsSync(targetFileDebug)) {
127
- return require(targetFileDebug);
125
+ if (fs.existsSync(targetPrecompiledJS)) {
126
+ return require(targetPrecompiledJS);
128
127
  }
129
128
  }
130
129
 
@@ -437,7 +437,7 @@ function morphdom(fromNode, toNode, host, componentsContext) {
437
437
  var curToNodeValue = curToNodeChild.bW_;
438
438
  var curFromNodeValue = curFromNodeChild.nodeValue;
439
439
  if (curFromNodeValue !== curToNodeValue) {
440
- if (isHydrate && curFromNodeType === TEXT_NODE && curFromNodeValue.startsWith(curToNodeValue)) {
440
+ if (isHydrate && toNextSibling && curFromNodeType === TEXT_NODE && toNextSibling.bX_ === TEXT_NODE && curFromNodeValue.startsWith(curToNodeValue) && toNextSibling.bW_.startsWith(curFromNodeValue.slice(curToNodeValue.length))) {
441
441
  // In hydrate mode we can use splitText to more efficiently handle
442
442
  // adjacent text vdom nodes that were merged.
443
443
  fromNextSibling = curFromNodeChild.splitText(curToNodeValue.length);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "marko",
3
- "version": "4.28.3",
3
+ "version": "4.28.5",
4
4
  "license": "MIT",
5
5
  "description": "UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.",
6
6
  "dependencies": {
@@ -96,24 +96,24 @@ function getCachedTemplate(path) {
96
96
  function getPreviousTemplate(templatePath, options) {
97
97
  /*
98
98
  The require.cache is search in the following order:
99
- 1) /path/to/my-template.js
100
- 2) /path/to/my-template.marko.js
99
+ 1) /path/to/my-template.marko.js
100
+ 2) /path/to/my-template.js
101
101
  3) /path/to/my-template.marko
102
102
  *
103
103
  If the template is not found in require.cache and `assumeUpToDate` is true
104
104
  then we will check the disk for the precompiled templates in the following
105
105
  order:
106
- 1) /path/to/my-template.js
107
- 2) /path/to/my-template.marko.js
106
+ 1) /path/to/my-template.marko.js
107
+ 2) /path/to/my-template.js
108
108
  */
109
109
  var ext = nodePath.extname(templatePath);
110
- var targetFilePrecompiled = templatePath.slice(0, 0 - ext.length) + ".js";
111
- var targetFileDebug = templatePath + ".js";
110
+ var targetPrecompiledMarkoJS = templatePath + ".js";
111
+ var targetPrecompiledJS = templatePath.slice(0, 0 - ext.length) + ".js";
112
112
 
113
113
  // Short-circuit loading if the template has already been cached in the Node.js require cache
114
114
  var cachedTemplate =
115
- getCachedTemplate(targetFilePrecompiled) ||
116
- getCachedTemplate(targetFileDebug) ||
115
+ getCachedTemplate(targetPrecompiledMarkoJS) ||
116
+ getCachedTemplate(targetPrecompiledJS) ||
117
117
  getCachedTemplate(templatePath);
118
118
 
119
119
  if (cachedTemplate) {
@@ -124,12 +124,11 @@ function getPreviousTemplate(templatePath, options) {
124
124
  templatePath = nodePath.resolve(cwd, templatePath);
125
125
 
126
126
  if (options.assumeUpToDate) {
127
- if (fs.existsSync(targetFilePrecompiled)) {
128
- return require(targetFilePrecompiled);
127
+ if (fs.existsSync(targetPrecompiledMarkoJS)) {
128
+ return require(targetPrecompiledMarkoJS);
129
129
  }
130
-
131
- if (fs.existsSync(targetFileDebug)) {
132
- return require(targetFileDebug);
130
+ if (fs.existsSync(targetPrecompiledJS)) {
131
+ return require(targetPrecompiledJS);
133
132
  }
134
133
  }
135
134
 
@@ -292,13 +292,13 @@ function morphdom(fromNode, toNode, host, componentsContext) {
292
292
  curFromNodeChild,
293
293
  curVFromNodeChild,
294
294
  curToNodeChild,
295
- parentComponent,
295
+ parentComponent
296
296
  );
297
297
  } else {
298
298
  morphChildren(
299
299
  curFromNodeChild,
300
300
  curToNodeChild,
301
- parentComponent,
301
+ parentComponent
302
302
  );
303
303
  }
304
304
  } else {
@@ -484,10 +484,9 @@ function morphdom(fromNode, toNode, host, componentsContext) {
484
484
  morphChildren(
485
485
  matchingFromEl,
486
486
  curToNodeChild,
487
- parentComponent,
487
+ parentComponent
488
488
  );
489
489
  }
490
-
491
490
  } else {
492
491
  insertVirtualNodeBefore(
493
492
  curToNodeChild,
@@ -594,13 +593,18 @@ function morphdom(fromNode, toNode, host, componentsContext) {
594
593
  if (curFromNodeValue !== curToNodeValue) {
595
594
  if (
596
595
  isHydrate &&
596
+ toNextSibling &&
597
597
  curFromNodeType === TEXT_NODE &&
598
- curFromNodeValue.startsWith(curToNodeValue)
598
+ toNextSibling.___nodeType === TEXT_NODE &&
599
+ curFromNodeValue.startsWith(curToNodeValue) &&
600
+ toNextSibling.___nodeValue.startsWith(
601
+ curFromNodeValue.slice(curToNodeValue.length)
602
+ )
599
603
  ) {
600
604
  // In hydrate mode we can use splitText to more efficiently handle
601
605
  // adjacent text vdom nodes that were merged.
602
606
  fromNextSibling = curFromNodeChild.splitText(
603
- curToNodeValue.length,
607
+ curToNodeValue.length
604
608
  );
605
609
  } else {
606
610
  // Simply update nodeValue on the original node to