marko 4.26.5 → 4.28.0

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