marko 4.26.5 → 4.28.0

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 (266) hide show
  1. package/CHANGELOG.md +2510 -0
  2. package/README.md +1 -1
  3. package/bin/markoc.js +15 -15
  4. package/dist/compiler/CompileContext.js +1 -0
  5. package/dist/compiler/ast/CustomTag.js +2 -2
  6. package/dist/core-tags/components/TransformHelper/convertToComponent.js +1 -1
  7. package/dist/core-tags/components/TransformHelper/handleLegacyBind.js +0 -4
  8. package/dist/core-tags/core/await/renderer.js +0 -4
  9. package/dist/core-tags/migrate/all-tags/body-only-if.js +0 -1
  10. package/dist/core-tags/migrate/all-tags/control-flow-directives.js +0 -1
  11. package/dist/core-tags/migrate/all-tags/dynamic-attributes.js +1 -2
  12. package/dist/core-tags/migrate/all-tags/include-directive.js +0 -2
  13. package/dist/core-tags/migrate/all-tags/legacy-nested-tag.js +0 -2
  14. package/dist/core-tags/migrate/all-tags/marko-init.js +0 -2
  15. package/dist/core-tags/migrate/all-tags/modifier-key.js +0 -2
  16. package/dist/core-tags/migrate/all-tags/ref.js +1 -3
  17. package/dist/core-tags/migrate/all-tags/w-bind.js +0 -2
  18. package/dist/core-tags/migrate/all-tags/w-body.js +0 -2
  19. package/dist/core-tags/migrate/all-tags/w-config.js +0 -2
  20. package/dist/core-tags/migrate/all-tags/w-for.js +0 -3
  21. package/dist/core-tags/migrate/all-tags/w-id.js +1 -4
  22. package/dist/core-tags/migrate/all-tags/w-on.js +1 -4
  23. package/dist/core-tags/migrate/all-tags/w-preserve-attrs.js +0 -2
  24. package/dist/core-tags/migrate/all-tags/w-preserve.js +1 -3
  25. package/dist/core-tags/migrate/all-tags/widget-in-attrs.js +2 -11
  26. package/dist/core-tags/migrate/all-templates/non-standard-template-literals.js +0 -4
  27. package/dist/core-tags/migrate/all-templates/render-calls.js +0 -2
  28. package/dist/core-tags/migrate/assign-tag.js +0 -2
  29. package/dist/core-tags/migrate/async-fragment-tag.js +0 -2
  30. package/dist/core-tags/migrate/async-fragments-tag.js +0 -2
  31. package/dist/core-tags/migrate/await-tag.js +0 -7
  32. package/dist/core-tags/migrate/class-tag.js +0 -2
  33. package/dist/core-tags/migrate/component-globals-tag.js +0 -2
  34. package/dist/core-tags/migrate/for-tag.js +0 -2
  35. package/dist/core-tags/migrate/include-tag.js +0 -1
  36. package/dist/core-tags/migrate/invoke-tag.js +0 -2
  37. package/dist/core-tags/migrate/layout-placeholder-tag.js +0 -1
  38. package/dist/core-tags/migrate/layout-put-tag.js +0 -1
  39. package/dist/core-tags/migrate/layout-use-tag.js +0 -1
  40. package/dist/core-tags/migrate/macro-body-tag.js +0 -2
  41. package/dist/core-tags/migrate/macro-tag.js +0 -2
  42. package/dist/core-tags/migrate/unless-tag.js +0 -1
  43. package/dist/core-tags/migrate/var-tag.js +0 -2
  44. package/dist/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -10
  45. package/dist/node_modules/@internal/components-entry-legacy/index-browser.js +0 -4
  46. package/dist/node_modules/@internal/components-registry/index-browser.js +2 -0
  47. package/dist/runtime/RenderResult.js +0 -3
  48. package/dist/runtime/components/Component.js +0 -6
  49. package/dist/runtime/components/ComponentDef.js +0 -3
  50. package/dist/runtime/components/ServerComponent.js +0 -4
  51. package/dist/runtime/components/legacy/defineComponent-legacy.js +0 -3
  52. package/dist/runtime/components/legacy/defineRenderer-legacy.js +0 -6
  53. package/dist/runtime/components/legacy/index.js +3 -1
  54. package/dist/runtime/helpers/dynamic-tag.js +3 -0
  55. package/dist/runtime/helpers/for-of.js +3 -1
  56. package/dist/runtime/helpers/interop-require.js +3 -0
  57. package/dist/runtime/html/helpers/attr.js +0 -4
  58. package/dist/runtime/html/helpers/attrs.js +0 -2
  59. package/dist/runtime/html/helpers/merge-attrs.js +0 -3
  60. package/dist/runtime/vdom/VElement.js +0 -3
  61. package/dist/runtime/vdom/helpers/attrs.js +0 -2
  62. package/dist/taglib/taglib-finder/index.js +1 -1
  63. package/dist/taglib/taglib-loader/Taglib.js +2 -1
  64. package/dist/taglib/taglib-loader/index.js +2 -2
  65. package/dist/taglib/taglib-loader/loadTagFromProps.js +15 -0
  66. package/dist/taglib/taglib-loader/loadTaglibFromFile.js +2 -2
  67. package/dist/taglib/taglib-loader/loadTaglibFromProps.js +12 -0
  68. package/docs/10-awesome-marko-features.md +1 -1
  69. package/docs/body-content.md +3 -3
  70. package/docs/class-components.md +6 -6
  71. package/docs/express.md +1 -1
  72. package/docs/fastify.md +4 -4
  73. package/docs/hapi.md +3 -3
  74. package/docs/http.md +1 -1
  75. package/docs/huncwot.md +1 -1
  76. package/docs/installing.md +2 -2
  77. package/docs/koa.md +2 -2
  78. package/docs/lasso.md +1 -1
  79. package/docs/marko-4-upgrade.md +1 -1
  80. package/docs/marko-v4.md +4 -4
  81. package/docs/marko-vs-react.md +2 -2
  82. package/docs/rendering.md +6 -6
  83. package/docs/server-side-rendering.md +3 -3
  84. package/docs/webpack.md +16 -16
  85. package/docs/why-is-marko-fast.md +3 -3
  86. package/package.json +1 -2
  87. package/src/compiler/Builder.js +13 -13
  88. package/src/compiler/CodeGenerator.js +2 -2
  89. package/src/compiler/CodeWriter.js +1 -1
  90. package/src/compiler/CompileContext.js +31 -30
  91. package/src/compiler/Compiler.js +3 -3
  92. package/src/compiler/HtmlJsParser.js +4 -4
  93. package/src/compiler/Migrator.js +2 -2
  94. package/src/compiler/Normalizer.js +5 -5
  95. package/src/compiler/Parser.js +11 -11
  96. package/src/compiler/Walker.js +1 -1
  97. package/src/compiler/ast/ArrayExpression.js +1 -1
  98. package/src/compiler/ast/BinaryExpression.js +1 -1
  99. package/src/compiler/ast/ConditionalExpression.js +1 -1
  100. package/src/compiler/ast/CustomTag.js +14 -14
  101. package/src/compiler/ast/Declaration.js +2 -2
  102. package/src/compiler/ast/DocumentType.js +2 -2
  103. package/src/compiler/ast/ForEach.js +1 -1
  104. package/src/compiler/ast/ForEachProp.js +1 -1
  105. package/src/compiler/ast/ForRange.js +1 -1
  106. package/src/compiler/ast/HtmlAttribute/html/generateCode.js +4 -4
  107. package/src/compiler/ast/HtmlAttribute/vdom/generateCode.js +2 -2
  108. package/src/compiler/ast/HtmlAttributeCollection.js +3 -3
  109. package/src/compiler/ast/HtmlComment.js +1 -1
  110. package/src/compiler/ast/HtmlElement/html/EndTag.js +1 -1
  111. package/src/compiler/ast/HtmlElement/html/StartTag.js +3 -3
  112. package/src/compiler/ast/HtmlElement/html/generateCode.js +5 -5
  113. package/src/compiler/ast/HtmlElement/index.js +1 -1
  114. package/src/compiler/ast/HtmlElement/vdom/HtmlElementVDOM.js +1 -1
  115. package/src/compiler/ast/HtmlElement/vdom/generateCode.js +3 -3
  116. package/src/compiler/ast/If.js +1 -1
  117. package/src/compiler/ast/LogicalExpression.js +1 -1
  118. package/src/compiler/ast/MemberExpression.js +1 -1
  119. package/src/compiler/ast/NewExpression.js +1 -1
  120. package/src/compiler/ast/Node.js +4 -4
  121. package/src/compiler/ast/ObjectExpression.js +2 -2
  122. package/src/compiler/ast/Property.js +1 -1
  123. package/src/compiler/ast/SequenceExpression.js +1 -1
  124. package/src/compiler/ast/TemplateLiteral.js +1 -1
  125. package/src/compiler/ast/TemplateRoot.js +3 -3
  126. package/src/compiler/ast/Text/index.js +1 -1
  127. package/src/compiler/ast/UnaryExpression.js +1 -1
  128. package/src/compiler/ast/UpdateExpression.js +1 -1
  129. package/src/compiler/config.js +1 -1
  130. package/src/compiler/index.js +5 -5
  131. package/src/compiler/modules.js +2 -2
  132. package/src/compiler/util/UniqueVars.js +4 -4
  133. package/src/compiler/util/convertRawJavaScriptAst.js +1 -1
  134. package/src/compiler/util/javaScriptReservedWords.js +1 -1
  135. package/src/compiler/util/macros.js +1 -1
  136. package/src/compiler/util/mergeProps.js +3 -3
  137. package/src/compiler/util/parseJavaScriptArgs.js +1 -1
  138. package/src/compiler/util/parseJavaScriptParams.js +1 -1
  139. package/src/compiler/util/parseRawJavaScriptAst.js +1 -1
  140. package/src/compiler/util/removeComments.js +6 -6
  141. package/src/compiler/util/tokenizer.js +3 -3
  142. package/src/compiler/util/vdom/VDOMOptimizer.js +2 -2
  143. package/src/core-tags/cache/cached-fragment-tag.js +2 -2
  144. package/src/core-tags/cache/default-cache-manager.js +2 -2
  145. package/src/core-tags/components/TransformHelper/ComponentArgsCompiler.js +3 -3
  146. package/src/core-tags/components/TransformHelper/assignComponentId.js +3 -3
  147. package/src/core-tags/components/TransformHelper/convertToComponent.js +7 -5
  148. package/src/core-tags/components/TransformHelper/getComponentFiles.js +1 -1
  149. package/src/core-tags/components/TransformHelper/handleComponentEvents.js +3 -3
  150. package/src/core-tags/components/TransformHelper/handleComponentPreserve.js +7 -7
  151. package/src/core-tags/components/TransformHelper/handleLegacyBind.js +2 -8
  152. package/src/core-tags/components/TransformHelper/handleRootNodes.js +14 -14
  153. package/src/core-tags/components/TransformHelper/handleScopedAttrs.js +1 -1
  154. package/src/core-tags/components/TransformHelper/index.js +1 -1
  155. package/src/core-tags/components/component-tag.js +1 -1
  156. package/src/core-tags/components/components-transformer.js +2 -2
  157. package/src/core-tags/components/util/generateRegisterComponentCode.js +2 -2
  158. package/src/core-tags/components/widget-types-tag.js +2 -2
  159. package/src/core-tags/core/await/AsyncValue.js +1 -1
  160. package/src/core-tags/core/await/renderer.js +3 -12
  161. package/src/core-tags/core/await/reorderer-renderer.js +1 -1
  162. package/src/core-tags/core/core-transformer.js +5 -5
  163. package/src/core-tags/core/html-comment-tag.js +1 -1
  164. package/src/core-tags/core/import-tag.js +1 -1
  165. package/src/core-tags/core/util/parseImport.js +8 -8
  166. package/src/core-tags/html/normalize-script-text.js +1 -1
  167. package/src/core-tags/migrate/all-tags/body-only-if.js +4 -5
  168. package/src/core-tags/migrate/all-tags/control-flow-directives.js +2 -5
  169. package/src/core-tags/migrate/all-tags/dynamic-attributes.js +1 -4
  170. package/src/core-tags/migrate/all-tags/include-directive.js +0 -4
  171. package/src/core-tags/migrate/all-tags/index.js +2 -2
  172. package/src/core-tags/migrate/all-tags/legacy-nested-tag.js +0 -5
  173. package/src/core-tags/migrate/all-tags/marko-init.js +2 -8
  174. package/src/core-tags/migrate/all-tags/modifier-key.js +1 -7
  175. package/src/core-tags/migrate/all-tags/params.js +1 -1
  176. package/src/core-tags/migrate/all-tags/ref.js +1 -5
  177. package/src/core-tags/migrate/all-tags/w-bind.js +8 -12
  178. package/src/core-tags/migrate/all-tags/w-body.js +3 -7
  179. package/src/core-tags/migrate/all-tags/w-config.js +1 -5
  180. package/src/core-tags/migrate/all-tags/w-for.js +1 -8
  181. package/src/core-tags/migrate/all-tags/w-id.js +1 -8
  182. package/src/core-tags/migrate/all-tags/w-on.js +2 -9
  183. package/src/core-tags/migrate/all-tags/w-preserve-attrs.js +1 -5
  184. package/src/core-tags/migrate/all-tags/w-preserve.js +3 -7
  185. package/src/core-tags/migrate/all-tags/widget-in-attrs.js +4 -17
  186. package/src/core-tags/migrate/all-templates/index.js +2 -2
  187. package/src/core-tags/migrate/all-templates/non-standard-template-literals.js +6 -12
  188. package/src/core-tags/migrate/all-templates/render-calls.js +4 -8
  189. package/src/core-tags/migrate/all-templates/widget-data-is-state.js +2 -2
  190. package/src/core-tags/migrate/all-templates/widget-get-template-data.js +2 -2
  191. package/src/core-tags/migrate/assign-tag.js +2 -6
  192. package/src/core-tags/migrate/async-fragment-tag.js +2 -6
  193. package/src/core-tags/migrate/async-fragments-tag.js +0 -4
  194. package/src/core-tags/migrate/await-tag.js +8 -23
  195. package/src/core-tags/migrate/class-tag.js +0 -4
  196. package/src/core-tags/migrate/component-globals-tag.js +0 -4
  197. package/src/core-tags/migrate/for-tag.js +12 -16
  198. package/src/core-tags/migrate/include-tag.js +2 -5
  199. package/src/core-tags/migrate/invoke-tag.js +2 -6
  200. package/src/core-tags/migrate/layout-placeholder-tag.js +0 -3
  201. package/src/core-tags/migrate/layout-put-tag.js +0 -3
  202. package/src/core-tags/migrate/layout-use-tag.js +0 -3
  203. package/src/core-tags/migrate/macro-body-tag.js +0 -5
  204. package/src/core-tags/migrate/macro-tag.js +5 -10
  205. package/src/core-tags/migrate/unless-tag.js +0 -3
  206. package/src/core-tags/migrate/util/addIdScopedAttr.js +1 -1
  207. package/src/core-tags/migrate/util/import-tag.js +6 -6
  208. package/src/core-tags/migrate/util/parseFor.js +20 -20
  209. package/src/core-tags/migrate/util/renderCallToDynamicTag.js +7 -7
  210. package/src/core-tags/migrate/var-tag.js +4 -8
  211. package/src/express.js +1 -1
  212. package/src/hot-reload.js +3 -3
  213. package/src/node-require/index.js +1 -1
  214. package/src/node_modules/@internal/components-define-widget-legacy/index-browser.js +2 -53
  215. package/src/node_modules/@internal/components-entry-legacy/index-browser.js +0 -10
  216. package/src/node_modules/@internal/components-registry/index-browser.js +2 -0
  217. package/src/runtime/RenderResult.js +3 -16
  218. package/src/runtime/components/Component.js +2 -23
  219. package/src/runtime/components/ComponentDef.js +2 -8
  220. package/src/runtime/components/ComponentsContext.js +1 -1
  221. package/src/runtime/components/ServerComponent.js +0 -6
  222. package/src/runtime/components/State.js +2 -2
  223. package/src/runtime/components/attach-detach.js +1 -1
  224. package/src/runtime/components/dom-data.js +1 -1
  225. package/src/runtime/components/legacy/defineComponent-legacy.js +0 -5
  226. package/src/runtime/components/legacy/defineRenderer-legacy.js +0 -16
  227. package/src/runtime/components/legacy/dependencies/index.js +10 -10
  228. package/src/runtime/components/legacy/index.js +5 -0
  229. package/src/runtime/components/legacy/renderer-legacy.js +1 -1
  230. package/src/runtime/components/update-manager.js +1 -1
  231. package/src/runtime/dom-insert.js +1 -1
  232. package/src/runtime/helpers/_weak-map.js +1 -1
  233. package/src/runtime/helpers/bind-component.js +1 -1
  234. package/src/runtime/helpers/dynamic-tag.js +3 -0
  235. package/src/runtime/helpers/for-of.js +1 -6
  236. package/src/runtime/helpers/interop-require.js +3 -0
  237. package/src/runtime/html/AsyncStream.js +5 -5
  238. package/src/runtime/html/BufferedWriter.js +1 -1
  239. package/src/runtime/html/StringWriter.js +1 -1
  240. package/src/runtime/html/helpers/attr.js +0 -9
  241. package/src/runtime/html/helpers/attrs.js +0 -6
  242. package/src/runtime/html/helpers/merge-attrs.js +0 -8
  243. package/src/runtime/html/index.js +1 -1
  244. package/src/runtime/renderable.js +1 -1
  245. package/src/runtime/vdom/AsyncVDOMBuilder.js +2 -2
  246. package/src/runtime/vdom/VComment.js +1 -1
  247. package/src/runtime/vdom/VComponent.js +1 -1
  248. package/src/runtime/vdom/VDocumentFragment.js +1 -1
  249. package/src/runtime/vdom/VElement.js +4 -11
  250. package/src/runtime/vdom/VFragment.js +1 -1
  251. package/src/runtime/vdom/VNode.js +1 -1
  252. package/src/runtime/vdom/VText.js +1 -1
  253. package/src/runtime/vdom/helpers/attrs.js +0 -7
  254. package/src/runtime/vdom/index.js +1 -1
  255. package/src/runtime/vdom/morphdom/fragment.js +1 -1
  256. package/src/runtime/vdom/morphdom/specialElHandlers.js +1 -1
  257. package/src/taglib/taglib-finder/index.js +6 -6
  258. package/src/taglib/taglib-loader/Tag.js +8 -8
  259. package/src/taglib/taglib-loader/Taglib.js +3 -2
  260. package/src/taglib/taglib-loader/index.js +2 -2
  261. package/src/taglib/taglib-loader/loadAttributeFromProps.js +1 -1
  262. package/src/taglib/taglib-loader/loadTagFromProps.js +29 -14
  263. package/src/taglib/taglib-loader/loadTaglibFromFile.js +2 -2
  264. package/src/taglib/taglib-loader/loadTaglibFromProps.js +27 -9
  265. package/src/taglib/taglib-loader/scanTagsDir.js +6 -6
  266. package/src/taglib/taglib-lookup/TaglibLookup.js +8 -8
@@ -45,7 +45,7 @@ class Text extends Node {
45
45
  toJSON() {
46
46
  return {
47
47
  type: this.type,
48
- argument: this.argument
48
+ argument: this.argument,
49
49
  };
50
50
  }
51
51
  }
@@ -55,7 +55,7 @@ class UnaryExpression extends Node {
55
55
  type: "UnaryExpression",
56
56
  argument: this.argument,
57
57
  operator: this.operator,
58
- prefix: this.prefix
58
+ prefix: this.prefix,
59
59
  };
60
60
  }
61
61
 
@@ -51,7 +51,7 @@ class UpdateExpression extends Node {
51
51
  type: "UpdateExpression",
52
52
  argument: this.argument,
53
53
  operator: this.operator,
54
- prefix: this.prefix
54
+ prefix: this.prefix,
55
55
  };
56
56
  }
57
57
 
@@ -66,7 +66,7 @@ if (g.__MARKO_CONFIG) {
66
66
  * Controls whether or not a key should be assigned to all HTML
67
67
  * and custom tags at compile-time. The default is `true`
68
68
  */
69
- autoKeyEnabled: true
69
+ autoKeyEnabled: true,
70
70
  };
71
71
 
72
72
  if (process.env.MARKO_CONFIG) {
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "defaultOptions", {
18
18
  return globalConfig;
19
19
  },
20
20
  enumerable: true,
21
- configurable: false
21
+ configurable: false,
22
22
  });
23
23
 
24
24
  Object.defineProperty(exports, "config", {
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "config", {
26
26
  return globalConfig;
27
27
  },
28
28
  enumerable: true,
29
- configurable: false
29
+ configurable: false,
30
30
  });
31
31
 
32
32
  var defaultParser = new Parser(new HtmlJsParser());
@@ -42,7 +42,7 @@ function configure(newConfig) {
42
42
 
43
43
  var defaultCompiler = new Compiler({
44
44
  parser: defaultParser,
45
- builder: Builder.DEFAULT_BUILDER
45
+ builder: Builder.DEFAULT_BUILDER,
46
46
  });
47
47
 
48
48
  function createBuilder(options) {
@@ -123,7 +123,7 @@ function compileForBrowser(src, filename, options, callback) {
123
123
  output: "vdom",
124
124
  meta: false,
125
125
  browser: true,
126
- sourceOnly: false
126
+ sourceOnly: false,
127
127
  },
128
128
  options
129
129
  );
@@ -191,7 +191,7 @@ function parseRaw(templateSrc, filename, options) {
191
191
  Object.assign(
192
192
  {
193
193
  raw: true,
194
- ignorePlaceholders: true
194
+ ignorePlaceholders: true,
195
195
  },
196
196
  options
197
197
  )
@@ -7,7 +7,7 @@ var deresolve = require("./util/deresolve");
7
7
  const deresolveOptions = {
8
8
  shouldRemoveExt(ext) {
9
9
  return ext === ".js" || ext === ".json" || ext === ".es6";
10
- }
10
+ },
11
11
  };
12
12
 
13
13
  // This allows us to swap out a different implementation in the browser...
@@ -28,7 +28,7 @@ var helpers = {
28
28
 
29
29
  deresolve: function (targetFilename, from) {
30
30
  return deresolve(targetFilename, from, deresolveOptions);
31
- }
31
+ },
32
32
  };
33
33
 
34
34
  module.exports = helpers;
@@ -29,7 +29,7 @@ class UniqueVars {
29
29
 
30
30
  let newEntry = {
31
31
  name: name + ++entry.counter,
32
- value: value
32
+ value: value,
33
33
  };
34
34
 
35
35
  entry.vars.push(newEntry);
@@ -39,10 +39,10 @@ class UniqueVars {
39
39
  vars: [
40
40
  {
41
41
  name: name,
42
- value: value
43
- }
42
+ value: value,
43
+ },
44
44
  ],
45
- counter: 1
45
+ counter: 1,
46
46
  };
47
47
 
48
48
  this.vars[name] = entry;
@@ -140,7 +140,7 @@ module.exports = function convertRawJavaScriptAst(ast, builder) {
140
140
  return null;
141
141
  }
142
142
  case "TemplateLiteral": {
143
- const quasis = node.quasis.map(q => q.value.cooked);
143
+ const quasis = node.quasis.map((q) => q.value.cooked);
144
144
  const expressions = convert(node.expressions);
145
145
  if (expressions) {
146
146
  return builder.templateLiteral(quasis, expressions);
@@ -62,5 +62,5 @@ module.exports = {
62
62
  volatile: true,
63
63
  while: true,
64
64
  with: true,
65
- yield: true
65
+ yield: true,
66
66
  };
@@ -30,7 +30,7 @@ class MacrosContext {
30
30
  var functionName = "macro_" + safeVarName(name);
31
31
  var macroDef = {
32
32
  name: name,
33
- functionName: functionName
33
+ functionName: functionName,
34
34
  };
35
35
 
36
36
  this._byName[name] = macroDef;
@@ -24,7 +24,7 @@ module.exports = function merge(props1, props2, context) {
24
24
  let mergeVar = context.helper("merge");
25
25
  argProp.value = context.builder.functionCall(mergeVar, [
26
26
  props2, // Input props from the attributes take precedence
27
- argProp.value
27
+ argProp.value,
28
28
  ]);
29
29
 
30
30
  return props1;
@@ -38,14 +38,14 @@ module.exports = function merge(props1, props2, context) {
38
38
 
39
39
  return context.builder.functionCall(mergeVar, [
40
40
  props2, // Input props from the attributes take precedence
41
- props1
41
+ props1,
42
42
  ]);
43
43
  }
44
44
  } else {
45
45
  let mergeVar = context.helper("merge");
46
46
  return context.builder.functionCall(mergeVar, [
47
47
  props2, // Input props from the attributes take precedence
48
- props1
48
+ props1,
49
49
  ]);
50
50
  }
51
51
  };
@@ -11,7 +11,7 @@ function parseJavaScriptArgs(args, builder) {
11
11
  const ast = parseRawJavaScriptAst`_(${args})`;
12
12
 
13
13
  return ast.body[0].expression.arguments.map(
14
- node =>
14
+ (node) =>
15
15
  convertRawJavaScriptAst(node, builder) ||
16
16
  builder.expression(ast.source.slice(node.range[0], node.range[1]), ast)
17
17
  );
@@ -9,7 +9,7 @@ function parseJavaScriptParams(params, builder) {
9
9
 
10
10
  const ast = parseRawJavaScriptAst`(${params}) => {}`;
11
11
 
12
- return ast.body[0].expression.params.map(node => {
12
+ return ast.body[0].expression.params.map((node) => {
13
13
  const paramSrc = ast.source.slice(node.range[0], node.range[1]);
14
14
  return node.type === "Identifier"
15
15
  ? builder.identifier(paramSrc)
@@ -5,7 +5,7 @@ const espree = require("espree");
5
5
  const espreeOptions = {
6
6
  range: true,
7
7
  sourceType: "script",
8
- ecmaVersion: espree.latestEcmaVersion
8
+ ecmaVersion: espree.latestEcmaVersion,
9
9
  };
10
10
 
11
11
  module.exports = function parseRawJavaScriptAst(parts, src) {
@@ -2,26 +2,26 @@
2
2
  var tokenizer = require("./tokenizer").create([
3
3
  {
4
4
  name: "stringDouble",
5
- pattern: /"(?:[^"]|\\")*"/
5
+ pattern: /"(?:[^"]|\\")*"/,
6
6
  },
7
7
  {
8
8
  name: "stringSingle",
9
- pattern: /'(?:[^']|\\')*'/
9
+ pattern: /'(?:[^']|\\')*'/,
10
10
  },
11
11
  {
12
12
  name: "singleLineComment",
13
- pattern: /\/\/.*/
13
+ pattern: /\/\/.*/,
14
14
  },
15
15
  {
16
16
  name: "multiLineComment",
17
- pattern: /\/\*(?:[\s\S]*?)\*\//
18
- }
17
+ pattern: /\/\*(?:[\s\S]*?)\*\//,
18
+ },
19
19
  ]);
20
20
 
21
21
  module.exports = function removeComments(str) {
22
22
  var comments = [];
23
23
 
24
- tokenizer.forEachToken(str, token => {
24
+ tokenizer.forEachToken(str, (token) => {
25
25
  switch (token.name) {
26
26
  case "singleLineComment":
27
27
  case "multiLineComment":
@@ -10,7 +10,7 @@ function create(tokens) {
10
10
  start: matches.index,
11
11
  end: matches.index + matches[0].length,
12
12
  name: tokenDef.name,
13
- value: tokenValue
13
+ value: tokenValue,
14
14
  };
15
15
  }
16
16
  }
@@ -18,7 +18,7 @@ function create(tokens) {
18
18
 
19
19
  var tokensRegExp = new RegExp(
20
20
  tokens
21
- .map(token => {
21
+ .map((token) => {
22
22
  return "(" + token.pattern.source + ")";
23
23
  })
24
24
  .join("|"),
@@ -33,7 +33,7 @@ function create(tokens) {
33
33
  let token = getToken(matches);
34
34
  callback(token);
35
35
  }
36
- }
36
+ },
37
37
  };
38
38
  }
39
39
 
@@ -27,7 +27,7 @@ const OPTIMIZER_CONTEXT_KEY = Symbol();
27
27
  const OPTIONS_DEFAULT = { optimizeTextNodes: true, optimizeStaticNodes: true };
28
28
  const OPTIONS_OPTIMIZE_TEXT_NODES = {
29
29
  optimizeTextNodes: true,
30
- optimizeStaticNodes: false
30
+ optimizeStaticNodes: false,
31
31
  };
32
32
 
33
33
  class OptimizerContext {
@@ -159,7 +159,7 @@ function doOptimizeNode(node, context, options) {
159
159
  let walker = context.createWalker({
160
160
  enterArray(nodes) {
161
161
  return generateNodesForArray(nodes, context, options);
162
- }
162
+ },
163
163
  });
164
164
 
165
165
  return walker.walk(node);
@@ -29,7 +29,7 @@ module.exports = {
29
29
  });
30
30
 
31
31
  nestedOut.end();
32
- }
32
+ },
33
33
  },
34
34
  function (err, result) {
35
35
  if (err) {
@@ -48,5 +48,5 @@ module.exports = {
48
48
  }
49
49
  }
50
50
  );
51
- }
51
+ },
52
52
  };
@@ -24,14 +24,14 @@ function createCache() {
24
24
 
25
25
  callback(null, value);
26
26
  });
27
- }
27
+ },
28
28
  };
29
29
  }
30
30
 
31
31
  var defaultCacheManager = {
32
32
  getCache: function (cacheName) {
33
33
  return caches[cacheName] || (caches[cacheName] = createCache());
34
- }
34
+ },
35
35
  };
36
36
 
37
37
  module.exports = defaultCacheManager;
@@ -37,7 +37,7 @@ class ComponentArgs {
37
37
  options.eventType,
38
38
  options.targetMethod,
39
39
  options.isOnce,
40
- options.extraArgs
40
+ options.extraArgs,
41
41
  ]);
42
42
  }
43
43
 
@@ -66,7 +66,7 @@ class ComponentArgs {
66
66
  return codegen.builder.functionCall(tagVar, tagArgs);
67
67
  };
68
68
  } else {
69
- el.onBeforeGenerateCode(event => {
69
+ el.onBeforeGenerateCode((event) => {
70
70
  let funcTarget = builder.memberExpression(
71
71
  builder.identifierOut(),
72
72
  builder.identifier("c")
@@ -76,7 +76,7 @@ class ComponentArgs {
76
76
  event.insertCode(builder.functionCall(funcTarget, funcArgs));
77
77
  });
78
78
 
79
- el.onAfterGenerateCode(event => {
79
+ el.onAfterGenerateCode((event) => {
80
80
  let funcTarget = builder.memberExpression(
81
81
  builder.identifierOut(),
82
82
  builder.identifier("c")
@@ -99,7 +99,7 @@ module.exports = function assignComponentId(isRepeated) {
99
99
 
100
100
  this.componentIdInfo = {
101
101
  idExpression: idExpression,
102
- nestedIdExpression: nestedIdExpression
102
+ nestedIdExpression: nestedIdExpression,
103
103
  };
104
104
 
105
105
  return this.componentIdInfo;
@@ -188,7 +188,7 @@ const createIndexKey = (forNode, transformHelper) => {
188
188
 
189
189
  const forASTNodes = ["ForEach", "ForEachProp", "ForRange", "ForStatement"];
190
190
 
191
- const getParentFor = el => {
191
+ const getParentFor = (el) => {
192
192
  let current = el;
193
193
  while ((current = current.parentNode) && current.type !== "Macro") {
194
194
  if (current.tagName === "for" || forASTNodes.includes(current.type)) {
@@ -197,7 +197,7 @@ const getParentFor = el => {
197
197
  }
198
198
  };
199
199
 
200
- const getFirstElementChild = el => {
200
+ const getFirstElementChild = (el) => {
201
201
  let current = el.firstChild;
202
202
  while (
203
203
  current &&
@@ -101,7 +101,7 @@ module.exports = function handleComponentBind(options) {
101
101
 
102
102
  // TODO Deprecation warning for inner binds
103
103
  let componentNode = context.createNodeForEl("_component", {
104
- props: builder.literal(componentProps)
104
+ props: builder.literal(componentProps),
105
105
  });
106
106
  el.wrapWith(componentNode);
107
107
  return;
@@ -115,7 +115,9 @@ module.exports = function handleComponentBind(options) {
115
115
  } else if (!isImplicitComponent) {
116
116
  markoComponentVar = context.addStaticVar(
117
117
  "marko_component",
118
- builder.require(builder.literal(rendererModule.requirePath))
118
+ builder.functionCall(context.helper("interopRequireDefault"), [
119
+ builder.require(builder.literal(rendererModule.requirePath))
120
+ ])
119
121
  );
120
122
  }
121
123
  }
@@ -146,7 +148,7 @@ module.exports = function handleComponentBind(options) {
146
148
  eventArgs.node.addRenderFunctionParam(builder.identifier("state"));
147
149
  }
148
150
 
149
- eventArgs.node.generateAssignRenderCode = eventArgs => {
151
+ eventArgs.node.generateAssignRenderCode = (eventArgs) => {
150
152
  const nodes = [];
151
153
  const templateVar = eventArgs.templateVar;
152
154
  const templateRendererMember = eventArgs.templateRendererMember;
@@ -154,7 +156,7 @@ module.exports = function handleComponentBind(options) {
154
156
 
155
157
  const createRendererArgs = [
156
158
  renderFunctionVar,
157
- builder.literal(componentProps)
159
+ builder.literal(componentProps),
158
160
  ];
159
161
 
160
162
  if (markoComponentVar) {
@@ -177,7 +179,7 @@ module.exports = function handleComponentBind(options) {
177
179
  ),
178
180
  builder.functionCall(defineComponentHelper, [
179
181
  markoComponentVar || builder.literal({}),
180
- templateRendererMember
182
+ templateRendererMember,
181
183
  ])
182
184
  )
183
185
  );
@@ -24,7 +24,7 @@ function getComponentFiles(filename) {
24
24
  styles: [],
25
25
  file: null,
26
26
  browserFile: null,
27
- package: null
27
+ package: null,
28
28
  };
29
29
 
30
30
  let dirFiles = fs.readdirSync(dirname);
@@ -83,7 +83,7 @@ module.exports = function handleComponentEvents() {
83
83
  if (hasComponentEvents) {
84
84
  var attrs = el.getAttributes().concat([]);
85
85
 
86
- attrs.forEach(attr => {
86
+ attrs.forEach((attr) => {
87
87
  var eventType;
88
88
  var targetMethod;
89
89
  var attrName = attr.name;
@@ -150,7 +150,7 @@ module.exports = function handleComponentEvents() {
150
150
  eventType,
151
151
  targetMethod,
152
152
  extraArgs,
153
- isOnce
153
+ isOnce,
154
154
  });
155
155
  } else {
156
156
  // We are adding an event listener for a DOM event (not a custom event)
@@ -171,7 +171,7 @@ module.exports = function handleComponentEvents() {
171
171
  eventType,
172
172
  targetMethod,
173
173
  extraArgs,
174
- isOnce
174
+ isOnce,
175
175
  });
176
176
  }
177
177
  });
@@ -7,7 +7,7 @@ function addPreserve(transformHelper, bodyOnly, condition) {
7
7
  var isCustomTag = el.type !== "HtmlElement";
8
8
 
9
9
  if (bodyOnly) {
10
- el.forEachChild(child => {
10
+ el.forEachChild((child) => {
11
11
  child._canBePreserved = true;
12
12
  });
13
13
  } else {
@@ -15,7 +15,7 @@ function addPreserve(transformHelper, bodyOnly, condition) {
15
15
  }
16
16
 
17
17
  var preserveAttrs = {
18
- key: transformHelper.assignComponentId().nestedIdExpression
18
+ key: transformHelper.assignComponentId().nestedIdExpression,
19
19
  };
20
20
 
21
21
  if (isCustomTag) {
@@ -100,20 +100,20 @@ const preserveTypes = [
100
100
  // The new preserve types
101
101
  {
102
102
  attribute: "no-update",
103
- handler: preserveHandler
103
+ handler: preserveHandler,
104
104
  },
105
105
  {
106
106
  attribute: "no-update-if",
107
- handler: preserveIfHandler
107
+ handler: preserveIfHandler,
108
108
  },
109
109
  {
110
110
  attribute: "no-update-body",
111
- handler: preserveBodyHandler
111
+ handler: preserveBodyHandler,
112
112
  },
113
113
  {
114
114
  attribute: "no-update-body-if",
115
- handler: preserveBodyIfHandler
116
- }
115
+ handler: preserveBodyIfHandler,
116
+ },
117
117
  ];
118
118
 
119
119
  module.exports = function handleComponentPreserve() {
@@ -35,12 +35,6 @@ module.exports = function handleLegacyBind() {
35
35
 
36
36
  const hasWidgetTypes = context.isFlagSet("hasWidgetTypes");
37
37
 
38
- if (hasWidgetTypes) {
39
- context.deprecate(
40
- "The <widget-types> tag is deprecated. Please remove it. See: https://github.com/marko-js/marko/issues/514"
41
- );
42
- }
43
-
44
38
  if (bindAttrValue != null && !bindAttr.isLiteralValue()) {
45
39
  // This is a dynamic expression. The <widget-types> should have been found.
46
40
  if (!hasWidgetTypes) {
@@ -61,7 +55,7 @@ module.exports = function handleLegacyBind() {
61
55
  builder.identifier("marko_componentTypes"),
62
56
  bindAttrValue,
63
57
  true /* computed */
64
- )
58
+ ),
65
59
  ]
66
60
  )
67
61
  );
@@ -84,6 +78,6 @@ module.exports = function handleLegacyBind() {
84
78
  componentModule,
85
79
  rendererModule,
86
80
  isLegacyComponent: true,
87
- rootNodes: [el]
81
+ rootNodes: [el],
88
82
  });
89
83
  };
@@ -8,7 +8,7 @@ const escodegen = require("escodegen");
8
8
  const FLAG_COMPONENT_STYLE = Symbol("COMPONENT_STYLE");
9
9
  const espreeOptions = {
10
10
  sourceType: "script",
11
- ecmaVersion: espree.latestEcmaVersion
11
+ ecmaVersion: espree.latestEcmaVersion,
12
12
  };
13
13
 
14
14
  function handleStyleElement(styleEl, transformHelper) {
@@ -62,7 +62,7 @@ function handleStyleElement(styleEl, transformHelper) {
62
62
  type: lang,
63
63
  code: styleCode,
64
64
  virtualPath: "./" + path.basename(context.filename) + "." + lang,
65
- path: "./" + path.basename(context.filename)
65
+ path: "./" + path.basename(context.filename),
66
66
  });
67
67
  }
68
68
 
@@ -77,14 +77,14 @@ function methodToProperty(method) {
77
77
  value: method.value,
78
78
  kind: "init",
79
79
  method: false,
80
- shorthand: false
80
+ shorthand: false,
81
81
  };
82
82
  }
83
83
 
84
84
  function classToObject(cls, el, transformHelper) {
85
85
  return {
86
86
  type: "ObjectExpression",
87
- properties: cls.body.body.map(method => {
87
+ properties: cls.body.body.map((method) => {
88
88
  if (method.type != "MethodDefinition") {
89
89
  throw Error(
90
90
  "Only methods are allowed on single file component class definitions."
@@ -104,7 +104,7 @@ function classToObject(cls, el, transformHelper) {
104
104
  } else {
105
105
  return method;
106
106
  }
107
- })
107
+ }),
108
108
  };
109
109
  }
110
110
 
@@ -123,7 +123,7 @@ function handleClassDeclaration(classEl, transformHelper) {
123
123
  if (errorIndex != null && errorIndex >= 0) {
124
124
  transformHelper.context.addError({
125
125
  pos: classEl.pos + errorIndex,
126
- message: message
126
+ message: message,
127
127
  });
128
128
  return;
129
129
  }
@@ -151,7 +151,7 @@ function handleClassDeclaration(classEl, transformHelper) {
151
151
  let moduleInfo = {
152
152
  inlineId: componentVar,
153
153
  filename: transformHelper.filename,
154
- requirePath: "./" + path.basename(transformHelper.filename)
154
+ requirePath: "./" + path.basename(transformHelper.filename),
155
155
  };
156
156
 
157
157
  classEl.detach();
@@ -179,7 +179,7 @@ module.exports = function handleRootNodes() {
179
179
  context.addDependency("package: ./" + componentFiles.package);
180
180
  }
181
181
 
182
- componentFiles.styles.forEach(styleFile => {
182
+ componentFiles.styles.forEach((styleFile) => {
183
183
  context.addDependency("./" + styleFile);
184
184
  });
185
185
 
@@ -188,7 +188,7 @@ module.exports = function handleRootNodes() {
188
188
 
189
189
  let moduleInfo = {
190
190
  filename: path.join(dirname, file),
191
- requirePath: "./" + file.slice(0, file.lastIndexOf("."))
191
+ requirePath: "./" + file.slice(0, file.lastIndexOf(".")),
192
192
  };
193
193
 
194
194
  componentModule = rendererModule = moduleInfo;
@@ -199,7 +199,7 @@ module.exports = function handleRootNodes() {
199
199
 
200
200
  componentModule = {
201
201
  filename: path.join(dirname, file),
202
- requirePath: "./" + file.slice(0, file.lastIndexOf("."))
202
+ requirePath: "./" + file.slice(0, file.lastIndexOf(".")),
203
203
  };
204
204
  }
205
205
 
@@ -264,7 +264,7 @@ module.exports = function handleRootNodes() {
264
264
  walker.skip();
265
265
  return;
266
266
  }
267
- }
267
+ },
268
268
  });
269
269
 
270
270
  walker.walk(templateRoot);
@@ -281,7 +281,7 @@ module.exports = function handleRootNodes() {
281
281
 
282
282
  // After normalizing the text nodes to remove whitespace we may have detached
283
283
  // some of the root text nodes so remove those from our list
284
- rootNodes = rootNodes.filter(rootNode => {
284
+ rootNodes = rootNodes.filter((rootNode) => {
285
285
  return rootNode.isDetached() !== true;
286
286
  });
287
287
 
@@ -296,7 +296,7 @@ module.exports = function handleRootNodes() {
296
296
 
297
297
  componentModule = rendererModule = {
298
298
  filename: this.filename,
299
- requirePath: "./" + path.basename(this.filename)
299
+ requirePath: "./" + path.basename(this.filename),
300
300
  };
301
301
  }
302
302
 
@@ -305,6 +305,6 @@ module.exports = function handleRootNodes() {
305
305
  isImplicitComponent,
306
306
  rootNodes,
307
307
  componentModule,
308
- rendererModule
308
+ rendererModule,
309
309
  });
310
310
  };
@@ -9,7 +9,7 @@ module.exports = function handleComponentKeyAttrs() {
9
9
 
10
10
  var attrs = el.attributes.concat([]);
11
11
 
12
- attrs.forEach(attribute => {
12
+ attrs.forEach((attribute) => {
13
13
  const attributeName = attribute.name;
14
14
  if (!attributeName) {
15
15
  return;