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
@@ -31,7 +31,7 @@ class TransformHelper {
31
31
 
32
32
  getTemplateModule() {
33
33
  return {
34
- requirePath: this.context.getRequirePath(this.filename)
34
+ requirePath: this.context.getRequirePath(this.filename),
35
35
  };
36
36
  }
37
37
 
@@ -8,7 +8,7 @@ module.exports = function codeGenerator(el, codegen) {
8
8
  var bodyFunc = builder.renderBodyFunction(el.body, [
9
9
  builder.identifierOut(),
10
10
  builder.identifier("__component"),
11
- builder.identifier("state")
11
+ builder.identifier("state"),
12
12
  ]);
13
13
 
14
14
  var componentProps = el.getAttributeValue("props");
@@ -24,10 +24,10 @@ module.exports = function transform(el, context) {
24
24
  el.prependChild(
25
25
  builder.vars({
26
26
  widget: builder.functionCall(getWidgetFromOut, [
27
- builder.identifier("out")
27
+ builder.identifier("out"),
28
28
  ]),
29
29
  __component: builder.identifier("widget"),
30
- component: builder.memberExpression("__component", "_c")
30
+ component: builder.memberExpression("__component", "_c"),
31
31
  })
32
32
  );
33
33
  }
@@ -73,14 +73,14 @@ function generateRegisterComponentCode(
73
73
  builder.identifier("module"),
74
74
  builder.identifier("exports")
75
75
  )
76
- )
76
+ ),
77
77
  ]
78
78
  );
79
79
  }
80
80
 
81
81
  registerNode = builder.functionCall(registerComponent, [
82
82
  builder.literal(componentId),
83
- def
83
+ def,
84
84
  ]);
85
85
  } else {
86
86
  registerNode = builder.literal(componentId);
@@ -16,7 +16,7 @@ module.exports = function codeGenerator(el, codegen) {
16
16
 
17
17
  var typesObject = {};
18
18
 
19
- attrs.forEach(attr => {
19
+ attrs.forEach((attr) => {
20
20
  if (!attr.isLiteralString()) {
21
21
  codegen.addError("Component type should be a string");
22
22
  return;
@@ -40,7 +40,7 @@ module.exports = function codeGenerator(el, codegen) {
40
40
  let componentModule = {
41
41
  legacy: true,
42
42
  filename: filename,
43
- requirePath: requirePath
43
+ requirePath: requirePath,
44
44
  };
45
45
 
46
46
  typesObject[attr.name] = generateRegisterComponentCode(
@@ -114,7 +114,7 @@ AsyncValue.prototype = {
114
114
  // notify callbacks
115
115
  notifyCallbacks(this, null, value);
116
116
  }
117
- }
117
+ },
118
118
  };
119
119
 
120
120
  module.exports = AsyncValue;
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var complain = "MARKO_DEBUG" && require("complain");
3
2
  var AsyncValue = require("./AsyncValue");
4
3
 
5
4
  function safeRenderBody(renderBody, targetOut, data) {
@@ -14,14 +13,6 @@ function requestData(provider, timeout) {
14
13
  var asyncValue = new AsyncValue();
15
14
 
16
15
  if (typeof provider === "function") {
17
- // eslint-disable-next-line no-constant-condition
18
- if ("MARKO_DEBUG") {
19
- complain(
20
- "Passing a callback function to the <await> tag has been deprecated, please use a promise instead.",
21
- { level: 1, locationIndex: 3 }
22
- );
23
- }
24
-
25
16
  var callback = function (err, data) {
26
17
  if (err) {
27
18
  asyncValue.___reject(err);
@@ -102,7 +93,7 @@ module.exports = function awaitTag(input, out) {
102
93
  var awaitInfo = {
103
94
  name: name,
104
95
  clientReorder: clientReorder,
105
- dataProvider: provider
96
+ dataProvider: provider,
106
97
  };
107
98
 
108
99
  if (clientReorder) {
@@ -112,7 +103,7 @@ module.exports = function awaitTag(input, out) {
112
103
  out.global.___clientReorderContext ||
113
104
  (out.global.___clientReorderContext = {
114
105
  instances: [],
115
- nextId: 0
106
+ nextId: 0,
116
107
  });
117
108
 
118
109
  var id = (awaitInfo.id = input.name || clientReorderContext.nextId++);
@@ -159,7 +150,7 @@ module.exports = function awaitTag(input, out) {
159
150
  out.flush(); // Flush everything up to this await instance
160
151
  asyncOut = awaitInfo.out = out.beginAsync({
161
152
  timeout: 0, // We will use our code for controlling timeout
162
- name: name
153
+ name: name,
163
154
  });
164
155
  }
165
156
 
@@ -27,7 +27,7 @@ module.exports = function (input, out) {
27
27
  var asyncOut = out.beginAsync({
28
28
  last: true,
29
29
  timeout: -1,
30
- name: "await-reorderer"
30
+ name: "await-reorderer",
31
31
  });
32
32
 
33
33
  out.onLast(function (next) {
@@ -5,8 +5,8 @@ var coreAttrHandlers = [
5
5
  "marko-preserve-whitespace",
6
6
  function (attr, node, el) {
7
7
  el.setPreserveWhitespace(true);
8
- }
9
- ]
8
+ },
9
+ ],
10
10
  ];
11
11
 
12
12
  class AttributeTransformer {
@@ -19,7 +19,7 @@ class AttributeTransformer {
19
19
  addError(message) {
20
20
  this.context.addError({
21
21
  node: this.el,
22
- message: message
22
+ message: message,
23
23
  });
24
24
  }
25
25
  }
@@ -47,7 +47,7 @@ module.exports = function transform(el, context) {
47
47
  params: el.params,
48
48
  openTagOnly: el.openTagOnly,
49
49
  selfClosed: el.selfClosed,
50
- body: el.body
50
+ body: el.body,
51
51
  }))
52
52
  );
53
53
  }
@@ -55,7 +55,7 @@ module.exports = function transform(el, context) {
55
55
  var attributeTransfomer;
56
56
  var node = el;
57
57
 
58
- el.forEachAttribute(attr => {
58
+ el.forEachAttribute((attr) => {
59
59
  let attrName = attr.name;
60
60
  var attrTransformerFunc = attributeTransformers[attrName];
61
61
  if (attrTransformerFunc) {
@@ -12,7 +12,7 @@ module.exports = function codeGenerator(elNode, codegen) {
12
12
  Array.from(body.slice(1)).reduce((expr, current) => {
13
13
  return builder.binaryExpression(expr, "+", current.argument);
14
14
  }, body[0].argument),
15
- builder.identifier("component")
15
+ builder.identifier("component"),
16
16
  ]
17
17
  );
18
18
  };
@@ -9,7 +9,7 @@ module.exports = function codeGenerator(el, codegen) {
9
9
  var args = parseImport(el.tagString);
10
10
  var vars = {};
11
11
 
12
- args.forEach(arg => {
12
+ args.forEach((arg) => {
13
13
  var varName = arg.name;
14
14
 
15
15
  if (arg.value[0] === "<") {
@@ -4,13 +4,13 @@ function getSpecifiers(importDeclaration) {
4
4
  var match = /^([\s\S]+)\bfrom\s*(("|')(.*?)("|'))$/.exec(importDeclaration);
5
5
  if (!match) {
6
6
  return {
7
- moduleSpecifier: importDeclaration.replace(/"|'/g, "").trim()
7
+ moduleSpecifier: importDeclaration.replace(/"|'/g, "").trim(),
8
8
  };
9
9
  }
10
10
 
11
11
  return {
12
12
  importSpecifierSet: match[1].trim(),
13
- moduleSpecifier: match[4].trim()
13
+ moduleSpecifier: match[4].trim(),
14
14
  };
15
15
  }
16
16
 
@@ -23,12 +23,12 @@ function getImportSpecifierGroups(importSpecifierSet) {
23
23
  defaultImport = defaultImport.replace(decomposedImports[0], "");
24
24
  decomposedImports = decomposedImports[1]
25
25
  .split(",")
26
- .map(specifier => specifier.trim());
26
+ .map((specifier) => specifier.trim());
27
27
  }
28
28
 
29
29
  return {
30
30
  defaultImport: defaultImport,
31
- decomposedImports: decomposedImports
31
+ decomposedImports: decomposedImports,
32
32
  };
33
33
  }
34
34
 
@@ -51,7 +51,7 @@ function getNames(importSpecifier) {
51
51
 
52
52
  return {
53
53
  exported: names[0].trim(),
54
- local: names[1].trim()
54
+ local: names[1].trim(),
55
55
  };
56
56
  }
57
57
 
@@ -71,13 +71,13 @@ module.exports = function importToAssignments(tagString) {
71
71
  getVariableName(moduleSpecifier);
72
72
  var specifierList = importGroups.decomposedImports
73
73
  .map(getNames)
74
- .map(names => {
74
+ .map((names) => {
75
75
  return {
76
76
  name: names.local,
77
77
  value: {
78
78
  object: rootVariable,
79
- property: names.exported
80
- }
79
+ property: names.exported,
80
+ },
81
81
  };
82
82
  });
83
83
 
@@ -1,6 +1,6 @@
1
1
  module.exports = function codeGenerator(elNode, codegen) {
2
2
  const builder = codegen.builder;
3
- const body = elNode.body.array.map(text => text.argument);
3
+ const body = elNode.body.array.map((text) => text.argument);
4
4
  if (body.length > 1) {
5
5
  const quasis = [];
6
6
  const expressions = [];
@@ -4,15 +4,14 @@ module.exports = function migrator(node, context) {
4
4
  const arg = node.getAttribute("body-only-if");
5
5
 
6
6
  if (arg) {
7
- context.deprecate(
8
- 'The "body-only-if(x)" tag is deprecated. Please use "<${test ? null : tag>" instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-body‐only‐if'
9
- );
10
7
  // Check if body-only-if(true) is set and automatically unwrap element
11
8
  if (arg.argument === "true") {
12
9
  // w-body will take care of the unwrapping
13
10
  if (!node.getAttribute("w-body")) {
14
11
  // Unwrap if there is no w-body tag
15
- node.forEachChild(currentNode => node.insertSiblingBefore(currentNode));
12
+ node.forEachChild((currentNode) =>
13
+ node.insertSiblingBefore(currentNode)
14
+ );
16
15
  node.detach();
17
16
  }
18
17
  return;
@@ -34,7 +33,7 @@ module.exports = function migrator(node, context) {
34
33
 
35
34
  if (!tagDef.html && tagDef.renderer) {
36
35
  tagName = builder.objectExpression({
37
- renderer: builder.identifier(tagName)
36
+ renderer: builder.identifier(tagName),
38
37
  });
39
38
  }
40
39
 
@@ -4,22 +4,19 @@ const CONTROL_FLOW_ATTRIBUTES = [
4
4
  "if",
5
5
  "unless",
6
6
  "else-if",
7
- "else"
7
+ "else",
8
8
  ];
9
9
 
10
10
  module.exports = function migrate(el, context) {
11
11
  const builder = context.builder;
12
12
 
13
- el.forEachAttribute(attr => {
13
+ el.forEachAttribute((attr) => {
14
14
  const name = attr.name;
15
15
  if (
16
16
  CONTROL_FLOW_ATTRIBUTES.includes(name) &&
17
17
  (name === "else" || attr.argument) &&
18
18
  !(el.tagName === "else" && name === "if") // <else if(x)> gets passed through
19
19
  ) {
20
- context.deprecate(
21
- `The "${name}" attribute is deprecated. Please use the <${name}> tag instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-control-flow-attributes`
22
- );
23
20
  el.removeAttribute(name);
24
21
  el.wrapWith(
25
22
  builder.htmlElement(name, undefined, undefined, attr.argument)
@@ -1,9 +1,6 @@
1
- module.exports = function migrate(el, context) {
1
+ module.exports = function migrate(el) {
2
2
  el.forEachAttribute((attr, index) => {
3
3
  if (!attr.name && !attr.spread) {
4
- context.deprecate(
5
- 'The "${attributes}" is deprecated. Please use "...attributes" modifier instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes'
6
- );
7
4
  const attribute = el.attributes.splice(index, 1)[0];
8
5
  attribute.spread = true;
9
6
  el.attributes.unshift(attribute);
@@ -6,10 +6,6 @@ module.exports = function migrate(el, context) {
6
6
  return;
7
7
  }
8
8
 
9
- context.deprecate(
10
- 'The "include" attribute is deprecated. Please use the <${dynamic}> tag instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-include-tag'
11
- );
12
-
13
9
  el.removeAttribute("include");
14
10
  el.appendChild(
15
11
  builder.htmlElement("include", undefined, undefined, attr.argument)
@@ -17,13 +17,13 @@ const commonMigrators = [
17
17
  require("./w-on"),
18
18
  require("./w-preserve"),
19
19
  require("./w-preserve-attrs"),
20
- require("./widget-in-attrs")
20
+ require("./widget-in-attrs"),
21
21
  ];
22
22
 
23
23
  module.exports = function (el, context) {
24
24
  if (el.detachNode) {
25
25
  return false;
26
26
  }
27
- commonMigrators.forEach(migrator => migrator(el, context));
27
+ commonMigrators.forEach((migrator) => migrator(el, context));
28
28
  return true;
29
29
  };
@@ -12,9 +12,4 @@ module.exports = function migrate(el, context) {
12
12
 
13
13
  const nestedTagName = match[1];
14
14
  el.tagName = `@${nestedTagName}`;
15
-
16
- context.deprecate(
17
- 'The "<my-tag:nested>" tagName syntax is deprecated. Please use the "<@nested>" tagName syntax instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-legacy-nested-tags',
18
- el
19
- );
20
15
  };
@@ -5,7 +5,7 @@ const SAFE_TO_PRINT_ON_ONE_LINE = [
5
5
  "ElseIf",
6
6
  "ForStatement",
7
7
  "WhileStatement",
8
- "FunctionDeclaration"
8
+ "FunctionDeclaration",
9
9
  ];
10
10
 
11
11
  module.exports = function migrate(el, context) {
@@ -17,9 +17,6 @@ module.exports = function migrate(el, context) {
17
17
  return;
18
18
  }
19
19
 
20
- context.deprecate(
21
- 'The "marko-init" attribute is deprecated. Use the static tag instead. See https://github.com/marko-js/marko/wiki/Deprecation:-script-template-helpers'
22
- );
23
20
  el.removeAttribute("marko-init");
24
21
  } else if (el.hasAttribute("template-helpers")) {
25
22
  if (el.tagName !== "script") {
@@ -29,9 +26,6 @@ module.exports = function migrate(el, context) {
29
26
  return;
30
27
  }
31
28
 
32
- context.deprecate(
33
- 'The "template-helpers" attribute is deprecated and will be removed in the next release candidate. Use the static tag instead. See https://github.com/marko-js/marko/wiki/Deprecation:-script-template-helpers'
34
- );
35
29
  el.removeAttribute("template-helpers");
36
30
  } else {
37
31
  return;
@@ -50,7 +44,7 @@ module.exports = function migrate(el, context) {
50
44
  if (!child.type) {
51
45
  child.forEachChild(insertStaticOrImport);
52
46
  } else if (child.type === "Vars") {
53
- child.declarations.forEach(declaration => {
47
+ child.declarations.forEach((declaration) => {
54
48
  const id = declaration.id;
55
49
  const init = declaration.init;
56
50
  el.insertSiblingBefore(
@@ -2,23 +2,17 @@ const addIdScopedAttr = require("../util/addIdScopedAttr");
2
2
  const componentElId = /^component\.(?:getE|e)lId\(.*\)$/;
3
3
 
4
4
  module.exports = function migrate(el, context) {
5
- el.forEachAttribute(attr => {
5
+ el.forEachAttribute((attr) => {
6
6
  let name = attr.name;
7
7
  let value = attr.value;
8
8
 
9
9
  if (name && name.endsWith(":key")) {
10
- context.deprecate(
11
- `The ":key" modifier is deprecated. Please use ":scoped" modifier instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
12
- );
13
10
  name = name.slice(0, 0 - ":key".length) + ":scoped";
14
11
  } else if (
15
12
  value &&
16
13
  value.type === "FunctionCall" &&
17
14
  componentElId.test(attr.rawValue)
18
15
  ) {
19
- context.deprecate(
20
- `Using component.${value.callee.property.name} as an attribute is deprecated. Please use ":scoped" modifier instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
21
- );
22
16
  name += ":scoped";
23
17
  value = value.args[0];
24
18
  } else {
@@ -17,7 +17,7 @@ function enableTagParams(el, context) {
17
17
  el.params = context.builder.parseJavaScriptParams(el.argument);
18
18
  delete el.argument;
19
19
  }
20
- el.forEachChild(childNode => {
20
+ el.forEachChild((childNode) => {
21
21
  if (isNestedTag(childNode)) {
22
22
  enableTagParams(childNode, context);
23
23
  }
@@ -1,13 +1,9 @@
1
- module.exports = function migrate(el, context) {
1
+ module.exports = function migrate(el) {
2
2
  const attr = el.getAttribute("ref");
3
3
  if (!attr) {
4
4
  return;
5
5
  }
6
6
 
7
- context.deprecate(
8
- `The "ref" attribute is deprecated. Please use "key" attribute instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-ref-attribute`
9
- );
10
-
11
7
  el.setAttributeValue("key", attr.value);
12
8
  el.removeAttribute(attr.name);
13
9
  };
@@ -14,10 +14,6 @@ module.exports = function migrate(el, context) {
14
14
 
15
15
  context.setMeta("legacy", true);
16
16
 
17
- context.deprecate(
18
- "Legacy components using w-bind and defineRenderer/defineComponent or defineComponent are deprecated. See: https://github.com/marko-js/marko/issues/421"
19
- );
20
-
21
17
  if (value == null) {
22
18
  componentModule = getDefaultWidgetFile(context.dirname);
23
19
 
@@ -54,7 +50,7 @@ module.exports = function migrate(el, context) {
54
50
  componentModule = {
55
51
  legacy: true,
56
52
  filename,
57
- requirePath: literalValue
53
+ requirePath: literalValue,
58
54
  };
59
55
  }
60
56
 
@@ -80,18 +76,18 @@ module.exports = function migrate(el, context) {
80
76
  message:
81
77
  "A widget file was discovered, would you like to migrate that as well?\n" +
82
78
  "Note: widget migrations are not 100% safe and should be tested after migration.",
83
- initial: true
79
+ initial: true,
84
80
  })
85
- .then(shouldMigrate => {
81
+ .then((shouldMigrate) => {
86
82
  if (shouldMigrate) {
87
83
  el.removeAttribute("w-bind");
88
84
  return helpers.run("componentFile", {
89
85
  templateFile: context.filename,
90
- componentFile: componentModule.filename
86
+ componentFile: componentModule.filename,
91
87
  });
92
88
  }
93
89
  });
94
- }
90
+ },
95
91
  });
96
92
  };
97
93
 
@@ -103,19 +99,19 @@ function getDefaultWidgetFile(dirname) {
103
99
  return {
104
100
  filename,
105
101
  requirePath: "./widget",
106
- legacy
102
+ legacy,
107
103
  };
108
104
  } else if ((filename = resolveFrom(dirname, "./component"))) {
109
105
  return {
110
106
  filename,
111
107
  requirePath: "./component",
112
- legacy
108
+ legacy,
113
109
  };
114
110
  } else if ((filename = resolveFrom(dirname, "./"))) {
115
111
  return {
116
112
  filename,
117
113
  requirePath: "./",
118
- legacy
114
+ legacy,
119
115
  };
120
116
  } else {
121
117
  return null;
@@ -5,10 +5,6 @@ module.exports = function migrate(el, context) {
5
5
  return;
6
6
  }
7
7
 
8
- context.deprecate(
9
- 'The "w-body" attribute is deprecated. Please use the "<${dynamicTag}/>" tag instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-Widget-body-(w‐body)'
10
- );
11
-
12
8
  const builder = context.builder;
13
9
  const defaultValue = builder.identifier("input");
14
10
  const bodyValue = el.getAttributeValue("w-body") || defaultValue;
@@ -44,15 +40,15 @@ module.exports = function migrate(el, context) {
44
40
  )
45
41
  ),
46
42
  builder.htmlElement("else", undefined, [
47
- builder.text(isDefault ? renderBodyValue : bodyValue)
48
- ])
43
+ builder.text(isDefault ? renderBodyValue : bodyValue),
44
+ ]),
49
45
  ]);
50
46
 
51
47
  if (
52
48
  el.hasAttribute("body-only-if") &&
53
49
  el.getAttribute("body-only-if").argument === "true"
54
50
  ) {
55
- el.forEachChild(node => el.insertSiblingBefore(node));
51
+ el.forEachChild((node) => el.insertSiblingBefore(node));
56
52
  el.detach();
57
53
  }
58
54
  };
@@ -7,10 +7,6 @@ module.exports = function migrate(el, context) {
7
7
  return;
8
8
  }
9
9
 
10
- context.deprecate(
11
- 'The "w-config" attribute is deprecated. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐config'
12
- );
13
-
14
10
  if (attr.value) {
15
11
  el.insertSiblingBefore(
16
12
  builder.scriptlet({
@@ -24,7 +20,7 @@ module.exports = function migrate(el, context) {
24
20
  "="
25
21
  ),
26
22
  context
27
- )
23
+ ),
28
24
  })
29
25
  );
30
26
  }
@@ -7,7 +7,7 @@ module.exports = function migrate(el, context) {
7
7
  el.hasAttribute("for-key") ||
8
8
  el.hasAttribute("for-ref")
9
9
  ) {
10
- el.forEachAttribute(attr => {
10
+ el.forEachAttribute((attr) => {
11
11
  const name = attr.name;
12
12
  if (
13
13
  !name ||
@@ -17,14 +17,7 @@ module.exports = function migrate(el, context) {
17
17
  }
18
18
 
19
19
  if (name === "w-for" && !findBoundParent(el)) {
20
- context.deprecate(
21
- `Using "w-for" in a template without a "w-bind" is deprecated. The "${name}" attribute is also deprecated. Please use "for:scoped" instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
22
- );
23
20
  context.setMigrationFlag("legacyWidgetAttrsWithoutBind");
24
- } else {
25
- context.deprecate(
26
- `The "${name}" attribute is deprecated. Please use "for:scoped" instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
27
- );
28
21
  }
29
22
 
30
23
  if (el.hasAttribute("for:scoped")) {
@@ -6,14 +6,7 @@ module.exports = function migrate(el, context) {
6
6
  return;
7
7
  }
8
8
 
9
- if (findBoundParent(el)) {
10
- context.deprecate(
11
- `The "w-id" attribute is deprecated. Please use "key" attribute instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
12
- );
13
- } else {
14
- context.deprecate(
15
- `Using "w-id" in a template without a "w-bind" is deprecated. The "w-id" attribute is also deprecated. Please use "key" attribute instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
16
- );
9
+ if (!findBoundParent(el)) {
17
10
  context.setMigrationFlag("legacyWidgetAttrsWithoutBind");
18
11
  }
19
12
 
@@ -2,20 +2,13 @@ const printJS = require("../util/printJS");
2
2
  const findBoundParent = require("../util/findBoundParent");
3
3
 
4
4
  module.exports = function migrate(el, context) {
5
- el.forEachAttribute(attr => {
5
+ el.forEachAttribute((attr) => {
6
6
  let name = attr.name;
7
7
  if (!name || !name.startsWith("w-on")) {
8
8
  return;
9
9
  }
10
10
 
11
- if (findBoundParent(el)) {
12
- context.deprecate(
13
- `The "w-on*" attributes are deprecated. Please use "on*()" instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
14
- );
15
- } else {
16
- context.deprecate(
17
- `Using "w-on*" in a template without a "w-bind" is deprecated. The "w-on*" attributes are also deprecated. Please use "on*()" instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
18
- );
11
+ if (!findBoundParent(el)) {
19
12
  context.setMigrationFlag("legacyWidgetAttrsWithoutBind");
20
13
  }
21
14
 
@@ -5,11 +5,7 @@ module.exports = function migrate(el, context) {
5
5
  }
6
6
 
7
7
  const values = attr.value.value;
8
- context.deprecate(
9
- `The "w-preserve-attrs" attribute is deprecated. Please use ":no-update" modifier instead. See: https://github.com/marko-js/marko/wiki/Deprecation:-w‐*-Attributes`
10
- );
11
-
12
- values.split(",").forEach(val => {
8
+ values.split(",").forEach((val) => {
13
9
  const existingAttr = el.getAttribute(val);
14
10
 
15
11
  if (existingAttr) {