marko 5.36.4 → 5.37.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 (244) hide show
  1. package/dist/compiler/index.js +11 -11
  2. package/dist/core-tags/components/init-components-tag.js +4 -4
  3. package/dist/core-tags/components/preferred-script-location-tag.js +2 -2
  4. package/dist/core-tags/core/__flush_here_and_after__.js +1 -1
  5. package/dist/core-tags/core/await/AsyncValue.js +21 -21
  6. package/dist/core-tags/core/await/renderer.js +24 -24
  7. package/dist/core-tags/core/await/reorderer-renderer.js +6 -6
  8. package/dist/node-require/browser-refresh.js +18 -1
  9. package/dist/node-require/index.js +7 -7
  10. package/dist/node_modules/@internal/components-beginComponent/index-browser.js +5 -5
  11. package/dist/node_modules/@internal/components-beginComponent/index.js +12 -12
  12. package/dist/node_modules/@internal/components-define-widget-legacy/index-browser.js +99 -99
  13. package/dist/node_modules/@internal/components-define-widget-legacy/index.js +3 -3
  14. package/dist/node_modules/@internal/components-endComponent/index.js +3 -3
  15. package/dist/node_modules/@internal/components-entry/index-browser.js +2 -2
  16. package/dist/node_modules/@internal/components-entry/index.js +29 -29
  17. package/dist/node_modules/@internal/components-entry-legacy/index-browser.js +13 -13
  18. package/dist/node_modules/@internal/components-entry-legacy/index.js +1 -1
  19. package/dist/node_modules/@internal/components-registry/index-browser.js +102 -102
  20. package/dist/node_modules/@internal/components-registry/index.js +2 -2
  21. package/dist/node_modules/@internal/components-util/index-browser.js +20 -20
  22. package/dist/node_modules/@internal/components-util/index.js +24 -20
  23. package/dist/node_modules/@internal/create-readable/index-browser.js +1 -1
  24. package/dist/node_modules/@internal/create-readable/index.js +9 -9
  25. package/dist/node_modules/@internal/preserve-tag/index-browser.js +8 -8
  26. package/dist/node_modules/@internal/preserve-tag/index.js +6 -6
  27. package/dist/node_modules/@internal/set-immediate/index-browser.js +2 -2
  28. package/dist/node_modules/@internal/set-immediate/index-worker.js +3 -3
  29. package/dist/node_modules/@internal/set-immediate/index.js +3 -3
  30. package/dist/runtime/RenderResult.js +24 -24
  31. package/dist/runtime/components/Component.js +163 -163
  32. package/dist/runtime/components/ComponentDef.js +34 -34
  33. package/dist/runtime/components/ComponentsContext.js +20 -20
  34. package/dist/runtime/components/GlobalComponentsContext.js +4 -4
  35. package/dist/runtime/components/KeySequence.js +3 -3
  36. package/dist/runtime/components/ServerComponent.js +17 -17
  37. package/dist/runtime/components/State.js +28 -28
  38. package/dist/runtime/components/attach-detach.js +8 -8
  39. package/dist/runtime/components/defineComponent.js +5 -5
  40. package/dist/runtime/components/dom-data.js +6 -6
  41. package/dist/runtime/components/event-delegation.js +10 -10
  42. package/dist/runtime/components/legacy/defineComponent-legacy.js +1 -1
  43. package/dist/runtime/components/legacy/defineRenderer-legacy.js +25 -25
  44. package/dist/runtime/components/legacy/dependencies/index.js +10 -10
  45. package/dist/runtime/components/legacy/renderer-legacy.js +56 -56
  46. package/dist/runtime/components/renderer.js +45 -45
  47. package/dist/runtime/components/update-manager.js +4 -4
  48. package/dist/runtime/createOut.js +1 -1
  49. package/dist/runtime/dom-insert.js +5 -5
  50. package/dist/runtime/helpers/_change-case.js +2 -2
  51. package/dist/runtime/helpers/dynamic-tag.js +33 -33
  52. package/dist/runtime/helpers/render-tag.js +1 -1
  53. package/dist/runtime/helpers/serialize-noop.js +2 -2
  54. package/dist/runtime/helpers/style-value.js +1 -1
  55. package/dist/runtime/helpers/tags-compat/runtime-dom.js +35 -35
  56. package/dist/runtime/helpers/tags-compat/runtime-html.js +16 -16
  57. package/dist/runtime/html/AsyncStream.js +28 -28
  58. package/dist/runtime/html/BufferedWriter.js +2 -2
  59. package/dist/runtime/html/StringWriter.js +2 -2
  60. package/dist/runtime/html/helpers/_dynamic-attr.js +2 -2
  61. package/dist/runtime/html/helpers/attr.js +11 -11
  62. package/dist/runtime/html/helpers/attrs.js +6 -6
  63. package/dist/runtime/html/helpers/data-marko.js +6 -6
  64. package/dist/runtime/html/helpers/escape-quotes.js +2 -2
  65. package/dist/runtime/html/helpers/escape-xml.js +1 -1
  66. package/dist/runtime/html/helpers/merge-attrs.js +11 -11
  67. package/dist/runtime/html/helpers/props-script.js +1 -1
  68. package/dist/runtime/html/index.js +2 -2
  69. package/dist/runtime/renderable.js +5 -5
  70. package/dist/runtime/vdom/AsyncVDOMBuilder.js +100 -100
  71. package/dist/runtime/vdom/VComment.js +7 -7
  72. package/dist/runtime/vdom/VComponent.js +5 -5
  73. package/dist/runtime/vdom/VDocumentFragment.js +8 -8
  74. package/dist/runtime/vdom/VElement.js +52 -52
  75. package/dist/runtime/vdom/VFragment.js +9 -9
  76. package/dist/runtime/vdom/VNode.js +34 -34
  77. package/dist/runtime/vdom/VText.js +8 -8
  78. package/dist/runtime/vdom/helpers/attrs.js +6 -6
  79. package/dist/runtime/vdom/helpers/const-element.js +3 -3
  80. package/dist/runtime/vdom/hot-reload.js +20 -20
  81. package/dist/runtime/vdom/index.js +2 -2
  82. package/dist/runtime/vdom/morphdom/fragment.js +10 -10
  83. package/dist/runtime/vdom/morphdom/helpers.js +5 -5
  84. package/dist/runtime/vdom/morphdom/index.js +81 -81
  85. package/dist/runtime/vdom/vdom.js +15 -15
  86. package/dist/taglib/index.js +7 -7
  87. package/dist/translator/cdata/index.js +15 -0
  88. package/dist/translator/cdata/index[html].js +15 -0
  89. package/dist/translator/cdata/index[vdom].js +12 -0
  90. package/dist/translator/class.js +65 -0
  91. package/dist/translator/comment/index.js +15 -0
  92. package/dist/translator/comment/index[html].js +17 -0
  93. package/dist/translator/comment/index[vdom].js +3 -0
  94. package/dist/translator/declaration/index.js +15 -0
  95. package/dist/translator/declaration/index[html].js +12 -0
  96. package/dist/translator/declaration/index[vdom].js +3 -0
  97. package/dist/translator/document-type/index.js +15 -0
  98. package/dist/translator/document-type/index[html].js +12 -0
  99. package/dist/translator/document-type/index[vdom].js +3 -0
  100. package/dist/translator/index.js +551 -0
  101. package/dist/translator/placeholder/index.js +15 -0
  102. package/dist/translator/placeholder/index[html].js +93 -0
  103. package/dist/translator/placeholder/index[vdom].js +22 -0
  104. package/dist/translator/scriptlet.js +4 -0
  105. package/dist/translator/tag/attribute/directives/class.js +42 -0
  106. package/dist/translator/tag/attribute/directives/index.js +15 -0
  107. package/dist/translator/tag/attribute/directives/no-update-body-if.js +15 -0
  108. package/dist/translator/tag/attribute/directives/no-update-body.js +10 -0
  109. package/dist/translator/tag/attribute/directives/no-update-if.js +12 -0
  110. package/dist/translator/tag/attribute/directives/no-update.js +48 -0
  111. package/dist/translator/tag/attribute/directives/style.js +42 -0
  112. package/dist/translator/tag/attribute/index.js +150 -0
  113. package/dist/translator/tag/attribute/modifiers/index.js +7 -0
  114. package/dist/translator/tag/attribute/modifiers/no-update.js +14 -0
  115. package/dist/translator/tag/attribute/modifiers/scoped.js +23 -0
  116. package/dist/translator/tag/attribute-tag.js +149 -0
  117. package/dist/translator/tag/custom-tag.js +146 -0
  118. package/dist/translator/tag/dynamic-tag.js +74 -0
  119. package/dist/translator/tag/index.js +287 -0
  120. package/dist/translator/tag/macro-tag.js +7 -0
  121. package/dist/translator/tag/native-tag.js +27 -0
  122. package/dist/translator/tag/native-tag[html]/attributes.js +151 -0
  123. package/dist/translator/tag/native-tag[html]/index.js +221 -0
  124. package/dist/translator/tag/native-tag[vdom]/attributes.js +105 -0
  125. package/dist/translator/tag/native-tag[vdom]/index.js +189 -0
  126. package/dist/translator/tag/util.js +246 -0
  127. package/dist/translator/taglib/core/conditional/translate-else-if.js +20 -0
  128. package/dist/translator/taglib/core/conditional/translate-else.js +20 -0
  129. package/dist/translator/taglib/core/conditional/translate-if.js +8 -0
  130. package/dist/translator/taglib/core/conditional/util.js +41 -0
  131. package/dist/translator/taglib/core/index.js +474 -0
  132. package/dist/translator/taglib/core/macro/parse.js +17 -0
  133. package/dist/translator/taglib/core/macro/translate.js +48 -0
  134. package/dist/translator/taglib/core/parse-class.js +79 -0
  135. package/dist/translator/taglib/core/parse-export.js +14 -0
  136. package/dist/translator/taglib/core/parse-import.js +14 -0
  137. package/dist/translator/taglib/core/parse-module-code.js +18 -0
  138. package/dist/translator/taglib/core/parse-static.js +18 -0
  139. package/dist/translator/taglib/core/transform-style.js +66 -0
  140. package/dist/translator/taglib/core/translate-await.js +41 -0
  141. package/dist/translator/taglib/core/translate-body.js +17 -0
  142. package/dist/translator/taglib/core/translate-for.js +156 -0
  143. package/dist/translator/taglib/core/translate-html-comment.js +52 -0
  144. package/dist/translator/taglib/core/translate-include-content.js +53 -0
  145. package/dist/translator/taglib/core/translate-server-only.js +5 -0
  146. package/dist/translator/taglib/core/translate-while.js +32 -0
  147. package/dist/translator/taglib/index.js +6 -0
  148. package/dist/translator/taglib/migrate/all-templates.js +46 -0
  149. package/dist/translator/taglib/migrate/index.js +5 -0
  150. package/dist/translator/text/index.js +10 -0
  151. package/dist/translator/text/index[html].js +12 -0
  152. package/dist/translator/text/index[vdom].js +20 -0
  153. package/dist/translator/util/add-dependencies.js +329 -0
  154. package/dist/translator/util/escape-regexp.js +4 -0
  155. package/dist/translator/util/get-component-files.js +86 -0
  156. package/dist/translator/util/html-out-write.js +15 -0
  157. package/dist/translator/util/key-manager.js +176 -0
  158. package/dist/translator/util/optimize-html-writes.js +52 -0
  159. package/dist/translator/util/optimize-vdom-create.js +164 -0
  160. package/dist/translator/util/plugin-hooks.js +22 -0
  161. package/dist/translator/util/runtime-flags.js +3 -0
  162. package/dist/translator/util/vdom-out-write.js +10 -0
  163. package/dist/translator/util/with-previous-location.js +6 -0
  164. package/package.json +7 -4
  165. package/src/taglib/index.js +2 -2
  166. package/src/translator/cdata/index.js +15 -0
  167. package/src/translator/cdata/index[html].js +15 -0
  168. package/src/translator/cdata/index[vdom].js +12 -0
  169. package/src/translator/class.js +65 -0
  170. package/src/translator/comment/index.js +15 -0
  171. package/src/translator/comment/index[html].js +17 -0
  172. package/src/translator/comment/index[vdom].js +3 -0
  173. package/src/translator/declaration/index.js +15 -0
  174. package/src/translator/declaration/index[html].js +12 -0
  175. package/src/translator/declaration/index[vdom].js +3 -0
  176. package/src/translator/document-type/index.js +15 -0
  177. package/src/translator/document-type/index[html].js +12 -0
  178. package/src/translator/document-type/index[vdom].js +3 -0
  179. package/src/translator/index.js +551 -0
  180. package/src/translator/placeholder/index.js +15 -0
  181. package/src/translator/placeholder/index[html].js +93 -0
  182. package/src/translator/placeholder/index[vdom].js +22 -0
  183. package/src/translator/scriptlet.js +4 -0
  184. package/src/translator/tag/attribute/directives/class.js +42 -0
  185. package/src/translator/tag/attribute/directives/index.js +15 -0
  186. package/src/translator/tag/attribute/directives/no-update-body-if.js +15 -0
  187. package/src/translator/tag/attribute/directives/no-update-body.js +10 -0
  188. package/src/translator/tag/attribute/directives/no-update-if.js +12 -0
  189. package/src/translator/tag/attribute/directives/no-update.js +48 -0
  190. package/src/translator/tag/attribute/directives/style.js +42 -0
  191. package/src/translator/tag/attribute/index.js +150 -0
  192. package/src/translator/tag/attribute/modifiers/index.js +7 -0
  193. package/src/translator/tag/attribute/modifiers/no-update.js +14 -0
  194. package/src/translator/tag/attribute/modifiers/scoped.js +23 -0
  195. package/src/translator/tag/attribute-tag.js +149 -0
  196. package/src/translator/tag/custom-tag.js +146 -0
  197. package/src/translator/tag/dynamic-tag.js +74 -0
  198. package/src/translator/tag/index.js +287 -0
  199. package/src/translator/tag/macro-tag.js +7 -0
  200. package/src/translator/tag/native-tag.js +27 -0
  201. package/src/translator/tag/native-tag[html]/attributes.js +151 -0
  202. package/src/translator/tag/native-tag[html]/index.js +221 -0
  203. package/src/translator/tag/native-tag[vdom]/attributes.js +105 -0
  204. package/src/translator/tag/native-tag[vdom]/index.js +189 -0
  205. package/src/translator/tag/util.js +246 -0
  206. package/src/translator/taglib/core/conditional/translate-else-if.js +20 -0
  207. package/src/translator/taglib/core/conditional/translate-else.js +20 -0
  208. package/src/translator/taglib/core/conditional/translate-if.js +8 -0
  209. package/src/translator/taglib/core/conditional/util.js +41 -0
  210. package/src/translator/taglib/core/index.js +474 -0
  211. package/src/translator/taglib/core/macro/parse.js +17 -0
  212. package/src/translator/taglib/core/macro/translate.js +48 -0
  213. package/src/translator/taglib/core/parse-class.js +79 -0
  214. package/src/translator/taglib/core/parse-export.js +14 -0
  215. package/src/translator/taglib/core/parse-import.js +14 -0
  216. package/src/translator/taglib/core/parse-module-code.js +18 -0
  217. package/src/translator/taglib/core/parse-static.js +18 -0
  218. package/src/translator/taglib/core/transform-style.js +66 -0
  219. package/src/translator/taglib/core/translate-await.js +41 -0
  220. package/src/translator/taglib/core/translate-body.js +17 -0
  221. package/src/translator/taglib/core/translate-for.js +156 -0
  222. package/src/translator/taglib/core/translate-html-comment.js +52 -0
  223. package/src/translator/taglib/core/translate-include-content.js +53 -0
  224. package/src/translator/taglib/core/translate-server-only.js +5 -0
  225. package/src/translator/taglib/core/translate-while.js +32 -0
  226. package/src/translator/taglib/index.js +7 -0
  227. package/src/translator/taglib/migrate/all-templates.js +46 -0
  228. package/src/translator/taglib/migrate/index.js +5 -0
  229. package/src/translator/text/index.js +10 -0
  230. package/src/translator/text/index[html].js +12 -0
  231. package/src/translator/text/index[vdom].js +20 -0
  232. package/src/translator/util/add-dependencies.js +329 -0
  233. package/src/translator/util/escape-regexp.js +4 -0
  234. package/src/translator/util/get-component-files.js +86 -0
  235. package/src/translator/util/html-out-write.js +15 -0
  236. package/src/translator/util/key-manager.js +176 -0
  237. package/src/translator/util/optimize-html-writes.js +52 -0
  238. package/src/translator/util/optimize-vdom-create.js +164 -0
  239. package/src/translator/util/plugin-hooks.js +22 -0
  240. package/src/translator/util/runtime-flags.js +3 -0
  241. package/src/translator/util/vdom-out-write.js +10 -0
  242. package/src/translator/util/with-previous-location.js +6 -0
  243. package/translator/index.d.ts +7 -0
  244. package/translator/package.json +5 -0
@@ -0,0 +1,66 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var _babelUtils = require("@marko/compiler/babel-utils");
2
+ var _path = _interopRequireDefault(require("path"));
3
+
4
+ var _getComponentFiles = _interopRequireDefault(require("../../util/get-component-files"));
5
+
6
+ const STYLE_REG = /^style((?:\.[^.\s\\/:*?"<>|({]+)+)?\s*\{/;
7
+
8
+ function _default(tag) {
9
+ const { hub, node } = tag;
10
+ const { deps } = hub.file.metadata.marko;
11
+ const { rawValue } = node;
12
+ const matchedBlock = STYLE_REG.exec(rawValue);
13
+ if (!matchedBlock) {
14
+ return;
15
+ }
16
+
17
+ if (!tag.parentPath.isProgram()) {
18
+ throw tag.
19
+ get("name").
20
+ buildCodeFrameError(
21
+ "Style blocks must be at the root of your Marko template."
22
+ );
23
+ }
24
+
25
+ if (deps.some((dep) => dep.style)) {
26
+ throw tag.
27
+ get("name").
28
+ buildCodeFrameError(
29
+ "A Marko file can only contain a single inline style block."
30
+ );
31
+ }
32
+
33
+ if ((0, _getComponentFiles.default)(tag).styleFile) {
34
+ throw tag.
35
+ get("name").
36
+ buildCodeFrameError(
37
+ 'A Marko file can either have an inline style block, or an external "style.ext" file, but not both.'
38
+ );
39
+ }
40
+
41
+ const [startContent, type = ".css"] = matchedBlock;
42
+ const codeSartOffset = startContent.length;
43
+ const codeEndOffset = rawValue.lastIndexOf("}");
44
+ const code = rawValue.slice(codeSartOffset, codeEndOffset);
45
+ const base = _path.default.basename(hub.file.opts.filename);
46
+ const start = (0, _babelUtils.getStart)(hub.file, node.name);
47
+ let startPos = undefined;
48
+ let endPos = undefined;
49
+
50
+ if (start !== null) {
51
+ startPos = start + codeSartOffset;
52
+ endPos = start + codeEndOffset;
53
+ }
54
+
55
+ deps.push({
56
+ type: type.slice(1),
57
+ code,
58
+ style: true,
59
+ startPos,
60
+ endPos,
61
+ path: `./${base}`,
62
+ virtualPath: `./${base + type}`
63
+ });
64
+
65
+ tag.remove();
66
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";exports.__esModule = true;exports.enter = enter;var _compiler = require("@marko/compiler");
2
+
3
+ function enter(path) {
4
+ const args = path.get("arguments");
5
+
6
+ if (!args.length) {
7
+ throw path.
8
+ get("name").
9
+ buildCodeFrameError(
10
+ 'You must provide a promise argument to the "<await>" tag, eg: "<await(promise)>".'
11
+ );
12
+ } else if (args.length > 1) {
13
+ const {
14
+ loc: { start }
15
+ } = args[1].node;
16
+ const {
17
+ loc: { end }
18
+ } = args[args.length - 1].node;
19
+ throw path.hub.file.buildCodeFrameError(
20
+ { loc: { start, end } },
21
+ 'You can only pass one argument to the "<await>" tag.'
22
+ );
23
+ }
24
+
25
+ const [provider] = args;
26
+ path.pushContainer(
27
+ "attributes",
28
+ _compiler.types.markoAttribute("_provider", provider.node)
29
+ );
30
+
31
+ if (
32
+ !path.get("attributes").some((attr) => attr.get("name").node === "name"))
33
+ {
34
+ path.pushContainer(
35
+ "attributes",
36
+ _compiler.types.markoAttribute("_name", _compiler.types.stringLiteral(provider.toString()))
37
+ );
38
+ }
39
+
40
+ path.set("arguments", undefined);
41
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";exports.__esModule = true;exports.enter = enter;var _compiler = require("@marko/compiler");
2
+
3
+ function enter(path) {
4
+ if (path.hub.file.markoOpts.output === "html") {
5
+ const body = path.get("body");
6
+
7
+ body.pushContainer("body", [
8
+ _compiler.types.markoTag(_compiler.types.stringLiteral("init-components"), [], _compiler.types.markoTagBody()),
9
+ _compiler.types.markoTag(_compiler.types.stringLiteral("await-reorderer"), [], _compiler.types.markoTagBody()),
10
+ _compiler.types.markoTag(
11
+ _compiler.types.stringLiteral("_preferred-script-location"),
12
+ [],
13
+ _compiler.types.markoTagBody()
14
+ )]
15
+ );
16
+ }
17
+ }
@@ -0,0 +1,156 @@
1
+ "use strict";exports.__esModule = true;exports.exit = exit;var _compiler = require("@marko/compiler");
2
+ var _babelUtils = require("@marko/compiler/babel-utils");
3
+
4
+
5
+
6
+
7
+ function exit(path) {
8
+ const { node } = path;
9
+ const {
10
+ attributes,
11
+ body: { params }
12
+ } = node;
13
+ const body = node.body.body;
14
+ const namePath = path.get("name");
15
+ const ofAttr = findName(attributes, "of");
16
+ const inAttr = findName(attributes, "in");
17
+ const fromAttr = findName(attributes, "from");
18
+ const toAttr = findName(attributes, "to");
19
+ const block = _compiler.types.blockStatement(body);
20
+ let forNode;
21
+ let allowedAttributes = ["by"];
22
+
23
+ if (inAttr) {
24
+ allowedAttributes.push("in");
25
+
26
+ const [keyParam, valParam] = params;
27
+
28
+ if (!keyParam) {
29
+ throw namePath.buildCodeFrameError(
30
+ "Invalid 'for in' tag, missing |key, value| params."
31
+ );
32
+ }
33
+
34
+ if (valParam) {
35
+ block.body.unshift(
36
+ _compiler.types.variableDeclaration("const", [
37
+ _compiler.types.variableDeclarator(
38
+ valParam,
39
+ _compiler.types.memberExpression(inAttr.value, keyParam, true)
40
+ )]
41
+ )
42
+ );
43
+ }
44
+
45
+ forNode = _compiler.types.forInStatement(
46
+ _compiler.types.variableDeclaration("const", [_compiler.types.variableDeclarator(keyParam)]),
47
+ inAttr.value,
48
+ block
49
+ );
50
+ } else if (ofAttr) {
51
+ let ofAttrValue = _compiler.types.callExpression(
52
+ (0, _babelUtils.importDefault)(
53
+ path.hub.file,
54
+ "marko/src/runtime/helpers/of-fallback.js",
55
+ "of_fallback"
56
+ ),
57
+ [ofAttr.value]
58
+ );
59
+ allowedAttributes.push("of");
60
+
61
+ const [valParam, keyParam, loopParam] = params;
62
+
63
+ if (!valParam) {
64
+ throw namePath.buildCodeFrameError(
65
+ "Invalid 'for of' tag, missing |value, index| params."
66
+ );
67
+ }
68
+
69
+ forNode = [];
70
+
71
+ if (keyParam) {
72
+ const indexName = path.scope.generateUidIdentifier(keyParam.name);
73
+ forNode.push(
74
+ _compiler.types.variableDeclaration("let", [
75
+ _compiler.types.variableDeclarator(indexName, _compiler.types.numericLiteral(0))]
76
+ )
77
+ );
78
+
79
+ block.body.unshift(
80
+ _compiler.types.variableDeclaration("let", [
81
+ _compiler.types.variableDeclarator(keyParam, _compiler.types.updateExpression("++", indexName))]
82
+ )
83
+ );
84
+ }
85
+
86
+ if (loopParam) {
87
+ ofAttrValue = loopParam;
88
+ forNode.push(
89
+ _compiler.types.variableDeclaration("const", [
90
+ _compiler.types.variableDeclarator(loopParam, ofAttr.value)]
91
+ )
92
+ );
93
+ }
94
+
95
+ forNode.push(
96
+ _compiler.types.forOfStatement(
97
+ _compiler.types.variableDeclaration("const", [_compiler.types.variableDeclarator(valParam)]),
98
+ ofAttrValue,
99
+ block
100
+ )
101
+ );
102
+ } else if (fromAttr && toAttr) {
103
+ allowedAttributes.push("from", "to", "step");
104
+
105
+ const stepAttr = findName(attributes, "step") || {
106
+ value: _compiler.types.numericLiteral(1)
107
+ };
108
+ const stepValue = stepAttr ? stepAttr.value : _compiler.types.numericLiteral(1);
109
+ const [indexParam] = params;
110
+ const stepsName = path.scope.generateUidIdentifier("steps");
111
+ const stepName = path.scope.generateUidIdentifier("step");
112
+
113
+ if (indexParam) {
114
+ block.body.unshift(
115
+ _compiler.types.variableDeclaration("const", [
116
+ _compiler.types.variableDeclarator(
117
+ indexParam,
118
+ _compiler.types.binaryExpression(
119
+ "+",
120
+ fromAttr.value,
121
+ _compiler.types.binaryExpression("*", stepName, stepValue)
122
+ )
123
+ )]
124
+ )
125
+ );
126
+ }
127
+
128
+ forNode = _compiler.types.forStatement(
129
+ _compiler.types.variableDeclaration("let", [
130
+ _compiler.types.variableDeclarator(
131
+ stepsName,
132
+ _compiler.types.binaryExpression(
133
+ "/",
134
+ _compiler.types.binaryExpression("-", toAttr.value, fromAttr.value),
135
+ stepValue
136
+ )
137
+ ),
138
+ _compiler.types.variableDeclarator(stepName, _compiler.types.numericLiteral(0))]
139
+ ),
140
+ _compiler.types.binaryExpression("<=", stepName, stepsName),
141
+ _compiler.types.updateExpression("++", stepName),
142
+ block
143
+ );
144
+ } else {
145
+ throw namePath.buildCodeFrameError(
146
+ "Invalid 'for' tag, missing an 'of', 'in' or 'to' attribute."
147
+ );
148
+ }
149
+
150
+ (0, _babelUtils.assertAllowedAttributes)(path, allowedAttributes);
151
+ path.replaceWithMultiple([].concat(forNode));
152
+ }
153
+
154
+ function findName(arr, value) {
155
+ return arr.find((obj) => obj.name === value);
156
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.enter = enter;var _compiler = require("@marko/compiler");
2
+ var _babelUtils = require("@marko/compiler/babel-utils");
3
+
4
+
5
+
6
+
7
+
8
+ var _htmlOutWrite = _interopRequireDefault(require("../../util/html-out-write"));
9
+ var _vdomOutWrite = _interopRequireDefault(require("../../util/vdom-out-write"));
10
+ var _withPreviousLocation = _interopRequireDefault(require("../../util/with-previous-location"));
11
+
12
+ function enter(path) {
13
+ (0, _babelUtils.assertNoArgs)(path);
14
+ (0, _babelUtils.assertNoParams)(path);
15
+ (0, _babelUtils.assertNoAttributes)(path);
16
+
17
+ if (path.hub.file.markoOpts.output === "html") {
18
+ path.replaceWithMultiple([
19
+ (0, _htmlOutWrite.default)`<!--`,
20
+ ...path.node.body.body,
21
+ (0, _htmlOutWrite.default)`-->`]
22
+ );
23
+ } else {
24
+ const templateQuasis = [];
25
+ const templateExpressions = [];
26
+ let currentQuasi = "";
27
+ for (const child of path.node.body.body) {
28
+ if (_compiler.types.isMarkoText(child)) {
29
+ currentQuasi += child.value;
30
+ } else if (_compiler.types.isMarkoPlaceholder(child)) {
31
+ templateQuasis.push(_compiler.types.templateElement({ raw: currentQuasi }));
32
+ templateExpressions.push(child.value);
33
+ currentQuasi = "";
34
+ }
35
+ }
36
+
37
+ let value;
38
+ if (templateExpressions.length === 0) {
39
+ value = _compiler.types.stringLiteral(currentQuasi);
40
+ } else {
41
+ templateQuasis.push(_compiler.types.templateElement({ raw: currentQuasi }));
42
+ value = _compiler.types.templateLiteral(templateQuasis, templateExpressions);
43
+ }
44
+
45
+ path.replaceWith(
46
+ (0, _withPreviousLocation.default)(
47
+ (0, _vdomOutWrite.default)("comment", value, path.hub.file._componentInstanceIdentifier),
48
+ path.node
49
+ )
50
+ );
51
+ }
52
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.enter = enter;var _compiler = require("@marko/compiler");
2
+ var _babelUtils = require("@marko/compiler/babel-utils");
3
+
4
+
5
+
6
+ var _path = _interopRequireDefault(require("path"));
7
+
8
+ function enter(tag) {
9
+ const {
10
+ hub: { file }
11
+ } = tag;
12
+ (0, _babelUtils.assertNoParams)(tag);
13
+ (0, _babelUtils.assertNoAttributes)(tag);
14
+
15
+ const fs = file.markoOpts.fileSystem;
16
+ const tagName = tag.get("name").node.value;
17
+ const tagExample = `<${tagName}("./path-to-file.ext")>`;
18
+ const args = tag.get("arguments");
19
+
20
+ if (args.length !== 1) {
21
+ throw tag.buildCodeFrameError(
22
+ `A single path argument is required for ${tagExample}.`
23
+ );
24
+ }
25
+
26
+ const [content] = args;
27
+
28
+ if (!content.isStringLiteral()) {
29
+ throw content.buildCodeFrameError(
30
+ `The argument to ${tagExample} must be a static string.`
31
+ );
32
+ }
33
+
34
+ const dir = _path.default.dirname(file.opts.filename);
35
+ const fullPath = _path.default.resolve(dir, content.node.value);
36
+
37
+ try {
38
+ const stat = fs.statSync(fullPath);
39
+
40
+ if (!stat.isFile()) {
41
+ throw new Error();
42
+ }
43
+ } catch {
44
+ throw content.buildCodeFrameError(`Unable to find file for <${tagName}>.`);
45
+ }
46
+
47
+ tag.replaceWith(
48
+ _compiler.types.markoPlaceholder(
49
+ _compiler.types.stringLiteral(fs.readFileSync(fullPath).toString("utf-8")),
50
+ tagName === "include-text"
51
+ )
52
+ );
53
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";exports.__esModule = true;exports.enter = enter;function enter(path) {
2
+ if (path.hub.file.markoOpts.output !== "html") {
3
+ path.remove();
4
+ }
5
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.exit = exit;var _compiler = require("@marko/compiler");
2
+ var _babelUtils = require("@marko/compiler/babel-utils");
3
+
4
+
5
+
6
+
7
+
8
+ var _withPreviousLocation = _interopRequireDefault(require("../../util/with-previous-location"));
9
+
10
+ function exit(path) {
11
+ (0, _babelUtils.assertNoParams)(path);
12
+ (0, _babelUtils.assertNoAttributes)(path);
13
+ const arg = (0, _babelUtils.getArgOrSequence)(path);
14
+
15
+ if (!arg) {
16
+ throw path.
17
+ get("name").
18
+ buildCodeFrameError(
19
+ "A condition is required for the <while(condition)> tag."
20
+ );
21
+ }
22
+
23
+ path.replaceWith(
24
+ (0, _withPreviousLocation.default)(
25
+ _compiler.types.whileStatement(
26
+ (0, _babelUtils.getArgOrSequence)(path),
27
+ _compiler.types.blockStatement(path.node.body.body)
28
+ ),
29
+ path.node
30
+ )
31
+ );
32
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.optionalTaglibs = exports.default = void 0;var _core = _interopRequireDefault(require("./core"));
2
+ var _migrate = _interopRequireDefault(require("./migrate"));
3
+ const optionalTaglibs = exports.optionalTaglibs = ["marko-widgets", "@marko/compat-v4"];var _default = exports.default =
4
+ [
5
+ ["marko/core", _core.default],
6
+ ["marko/migrate", _migrate.default]];
@@ -0,0 +1,46 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = void 0;var _compiler = require("@marko/compiler");
2
+ var _babelUtils = require("@marko/compiler/babel-utils");
3
+
4
+ var _withPreviousLocation = _interopRequireDefault(require("../../util/with-previous-location"));
5
+ const kHadAssignment = Symbol();var _default = exports.default =
6
+
7
+ {
8
+ AssignmentExpression(path, state) {
9
+ if (
10
+ !state[kHadAssignment] &&
11
+ path.node.left.type === "Identifier" &&
12
+ path.node.left.name === "data")
13
+ {
14
+ state[kHadAssignment] = true;
15
+
16
+ let root = path.parentPath;
17
+ while (root.parentPath.type !== "Program") {
18
+ root = root.parentPath;
19
+ }
20
+
21
+ root.insertBefore(
22
+ _compiler.types.markoScriptlet([
23
+ _compiler.types.variableDeclaration("var", [
24
+ _compiler.types.variableDeclarator(_compiler.types.identifier("data"))]
25
+ )]
26
+ )
27
+ );
28
+ }
29
+ },
30
+ ReferencedIdentifier(path, state) {
31
+ if (
32
+ !state[kHadAssignment] &&
33
+ path.node.name === "data" &&
34
+ !path.scope.hasBinding("data"))
35
+ {
36
+ (0, _babelUtils.diagnosticDeprecate)(path, {
37
+ label: "The 'data' variable is deprecated. Use 'input' instead.",
38
+ fix() {
39
+ path.replaceWith(
40
+ (0, _withPreviousLocation.default)(_compiler.types.identifier("input"), path.node)
41
+ );
42
+ }
43
+ });
44
+ }
45
+ }
46
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";exports.__esModule = true;exports.default = void 0;var migrateAllTemplates = _interopRequireWildcard(require("./all-templates"));function _getRequireWildcardCache(e) {if ("function" != typeof WeakMap) return null;var r = new WeakMap(),t = new WeakMap();return (_getRequireWildcardCache = function (e) {return e ? t : r;})(e);}function _interopRequireWildcard(e, r) {if (!r && e && e.__esModule) return e;if (null === e || "object" != typeof e && "function" != typeof e) return { default: e };var t = _getRequireWildcardCache(r);if (t && t.has(e)) return t.get(e);var n = { __proto__: null },a = Object.defineProperty && Object.getOwnPropertyDescriptor;for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) {var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];}return n.default = e, t && t.set(e, n), n;}var _default = exports.default =
2
+ {
3
+ "taglib-id": "marko-default-migrate",
4
+ migrator: migrateAllTemplates
5
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var _indexHtml = _interopRequireDefault(require("./index[html]"));
2
+ var _indexVdom = _interopRequireDefault(require("./index[vdom]"));
3
+
4
+ function _default(path) {
5
+ if (path.hub.file.markoOpts.output === "html") {
6
+ (0, _indexHtml.default)(path);
7
+ } else {
8
+ (0, _indexVdom.default)(path);
9
+ }
10
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var _compiler = require("@marko/compiler");
2
+
3
+ var _htmlOutWrite = _interopRequireDefault(require("../util/html-out-write"));
4
+ var _withPreviousLocation = _interopRequireDefault(require("../util/with-previous-location"));
5
+
6
+ function _default(path) {
7
+ const { node } = path;
8
+
9
+ path.replaceWith(
10
+ (0, _withPreviousLocation.default)((0, _htmlOutWrite.default)`${_compiler.types.stringLiteral(node.value)}`, node)
11
+ );
12
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.default = _default;var _compiler = require("@marko/compiler");
2
+ var _he = require("he");
3
+
4
+ var _vdomOutWrite = _interopRequireDefault(require("../util/vdom-out-write"));
5
+ var _withPreviousLocation = _interopRequireDefault(require("../util/with-previous-location"));
6
+
7
+ function _default(path) {
8
+ const { node } = path;
9
+
10
+ path.replaceWith(
11
+ (0, _withPreviousLocation.default)(
12
+ (0, _vdomOutWrite.default)(
13
+ "t",
14
+ _compiler.types.stringLiteral((0, _he.decode)(node.value)),
15
+ path.hub.file._componentInstanceIdentifier
16
+ ),
17
+ node
18
+ )
19
+ );
20
+ }