marko 5.37.0 → 6.0.0-3.4

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 (638) hide show
  1. package/dist/common/attr-tag.d.ts +8 -0
  2. package/dist/common/compat-meta.d.ts +2 -0
  3. package/dist/common/for.d.ts +5 -0
  4. package/dist/common/helpers.d.ts +7 -0
  5. package/dist/common/meta.d.ts +2 -0
  6. package/dist/common/types.d.ts +105 -0
  7. package/dist/debug/dom.js +2112 -0
  8. package/dist/debug/dom.mjs +2089 -0
  9. package/dist/debug/html.js +2740 -0
  10. package/dist/debug/html.mjs +2663 -0
  11. package/dist/dom/abort-signal.d.ts +3 -0
  12. package/dist/dom/compat.d.ts +20 -0
  13. package/dist/dom/control-flow.d.ts +14 -0
  14. package/dist/dom/controllable.d.ts +12 -0
  15. package/dist/dom/dom.d.ts +19 -0
  16. package/dist/dom/event.d.ts +4 -0
  17. package/dist/dom/parse-html.d.ts +5 -0
  18. package/dist/dom/queue.d.ts +10 -0
  19. package/dist/dom/reconcile.d.ts +2 -0
  20. package/dist/dom/renderer.d.ts +21 -0
  21. package/dist/dom/resolve-cursor-position.d.ts +1 -0
  22. package/dist/dom/resume.d.ts +9 -0
  23. package/dist/dom/schedule.d.ts +2 -0
  24. package/dist/dom/scope.d.ts +7 -0
  25. package/dist/dom/signals.d.ts +39 -0
  26. package/dist/dom/template.d.ts +3 -0
  27. package/dist/dom/walker.d.ts +4 -0
  28. package/dist/dom.d.ts +15 -0
  29. package/dist/dom.js +1370 -0
  30. package/dist/dom.mjs +1350 -0
  31. package/dist/html/attrs.d.ts +14 -0
  32. package/dist/html/compat.d.ts +14 -0
  33. package/dist/html/content.d.ts +5 -0
  34. package/dist/html/dynamic-tag.d.ts +12 -0
  35. package/dist/html/for.d.ts +4 -0
  36. package/dist/html/inlined-runtimes.d.ts +2 -0
  37. package/dist/html/serializer.d.ts +14 -0
  38. package/dist/html/template.d.ts +3 -0
  39. package/dist/html/writer.d.ts +114 -0
  40. package/dist/html.d.ts +9 -0
  41. package/dist/html.js +1818 -0
  42. package/dist/html.mjs +1744 -0
  43. package/dist/translator/core/attrs.d.ts +3 -0
  44. package/dist/translator/core/client.d.ts +14 -0
  45. package/dist/translator/core/const.d.ts +3 -0
  46. package/dist/translator/core/debug.d.ts +3 -0
  47. package/dist/translator/core/define.d.ts +3 -0
  48. package/dist/translator/core/effect.d.ts +3 -0
  49. package/dist/translator/core/export.d.ts +3 -0
  50. package/dist/translator/core/for.d.ts +67 -0
  51. package/dist/translator/core/html-comment.d.ts +12 -0
  52. package/dist/translator/core/html-script.d.ts +9 -0
  53. package/dist/translator/core/html-style.d.ts +9 -0
  54. package/dist/translator/core/id.d.ts +3 -0
  55. package/dist/translator/core/if.d.ts +53 -0
  56. package/dist/translator/core/import.d.ts +3 -0
  57. package/dist/translator/core/index.d.ts +152 -0
  58. package/dist/translator/core/let.d.ts +8 -0
  59. package/dist/translator/core/lifecycle.d.ts +10 -0
  60. package/dist/translator/core/log.d.ts +3 -0
  61. package/dist/translator/core/return.d.ts +6 -0
  62. package/dist/translator/core/script.d.ts +3 -0
  63. package/dist/translator/core/server.d.ts +14 -0
  64. package/dist/translator/core/static.d.ts +14 -0
  65. package/dist/translator/core/style.d.ts +3 -0
  66. package/dist/translator/index.d.ts +201 -0
  67. package/dist/translator/index.js +9143 -489
  68. package/dist/translator/util/assert.d.ts +3 -0
  69. package/dist/translator/util/binding-has-downstream-expressions.d.ts +2 -0
  70. package/dist/translator/util/entry-builder.d.ts +19 -0
  71. package/dist/translator/util/evaluate.d.ts +11 -0
  72. package/dist/translator/util/for-each-identifier.d.ts +2 -0
  73. package/dist/translator/util/get-defined-binding-expression.d.ts +3 -0
  74. package/dist/translator/util/get-known-attr-values.d.ts +2 -0
  75. package/dist/translator/util/get-parent-tag.d.ts +2 -0
  76. package/dist/translator/util/get-root.d.ts +7 -0
  77. package/dist/translator/util/get-tag-name.d.ts +2 -0
  78. package/dist/translator/util/is-core-tag.d.ts +10 -0
  79. package/dist/translator/util/is-stateful.d.ts +3 -0
  80. package/dist/translator/util/is-static.d.ts +2 -0
  81. package/dist/translator/util/marko-config.d.ts +4 -0
  82. package/dist/translator/util/nested-attribute-tags.d.ts +17 -0
  83. package/dist/translator/util/normalize-string-expression.d.ts +3 -0
  84. package/dist/translator/util/optional.d.ts +20 -0
  85. package/dist/translator/util/plugin-hooks.d.ts +4 -0
  86. package/dist/translator/util/references.d.ts +84 -0
  87. package/dist/translator/util/runtime-info.d.ts +5 -0
  88. package/dist/translator/util/runtime.d.ts +15 -0
  89. package/dist/translator/util/scope-read.d.ts +6 -0
  90. package/dist/translator/util/sections.d.ts +51 -0
  91. package/dist/translator/util/signals.d.ts +61 -0
  92. package/dist/translator/util/simplify-fn.d.ts +5 -0
  93. package/dist/translator/util/state.d.ts +3 -0
  94. package/dist/translator/util/tag-name-type.d.ts +16 -0
  95. package/dist/translator/util/to-first-expression-or-block.d.ts +3 -0
  96. package/dist/translator/util/to-first-statement-or-block.d.ts +2 -0
  97. package/dist/translator/util/to-property-name.d.ts +7 -0
  98. package/dist/translator/util/translate-attrs.d.ts +12 -0
  99. package/dist/translator/util/translate-var.d.ts +2 -0
  100. package/dist/translator/util/traverse.d.ts +9 -0
  101. package/dist/translator/util/visitors.d.ts +11 -0
  102. package/dist/translator/util/walks.d.ts +15 -0
  103. package/dist/translator/util/with-previous-location.d.ts +2 -0
  104. package/dist/translator/util/writer.d.ts +13 -0
  105. package/dist/translator/visitors/cdata.d.ts +7 -0
  106. package/dist/translator/visitors/comment.d.ts +7 -0
  107. package/dist/translator/visitors/declaration.d.ts +7 -0
  108. package/dist/translator/visitors/document-type.d.ts +7 -0
  109. package/dist/translator/visitors/function.d.ts +19 -0
  110. package/dist/translator/visitors/import-declaration.d.ts +8 -0
  111. package/dist/translator/visitors/placeholder.d.ts +22 -0
  112. package/dist/translator/visitors/program/dom.d.ts +7 -0
  113. package/dist/translator/visitors/program/html.d.ts +8 -0
  114. package/dist/translator/visitors/program/index.d.ts +39 -0
  115. package/dist/translator/visitors/referenced-identifier.d.ts +7 -0
  116. package/dist/translator/visitors/scriptlet.d.ts +8 -0
  117. package/dist/translator/visitors/tag/attribute-tag.d.ts +11 -0
  118. package/dist/translator/visitors/tag/custom-tag.d.ts +19 -0
  119. package/dist/translator/visitors/tag/dynamic-tag.d.ts +18 -0
  120. package/dist/translator/visitors/tag/index.d.ts +15 -0
  121. package/dist/translator/visitors/tag/native-tag.d.ts +25 -0
  122. package/dist/translator/visitors/text.d.ts +7 -0
  123. package/package.json +33 -74
  124. package/README.md +0 -161
  125. package/bin/markoc +0 -2
  126. package/bin/markoc.js +0 -441
  127. package/browser-refresh.js +0 -5
  128. package/compiler-browser.marko +0 -15
  129. package/compiler.js +0 -7
  130. package/components-browser.marko +0 -15
  131. package/components.js +0 -7
  132. package/dist/build.json +0 -3
  133. package/dist/compiler/config.js +0 -45
  134. package/dist/compiler/index.js +0 -164
  135. package/dist/compiler/modules.js +0 -5
  136. package/dist/core-tags/components/init-components-tag.js +0 -54
  137. package/dist/core-tags/components/preferred-script-location-tag.js +0 -25
  138. package/dist/core-tags/components/preserve-tag.js +0 -1
  139. package/dist/core-tags/core/__flush_here_and_after__.js +0 -44
  140. package/dist/core-tags/core/await/AsyncValue.js +0 -121
  141. package/dist/core-tags/core/await/client-reorder-runtime.js +0 -51
  142. package/dist/core-tags/core/await/index.d.marko +0 -10
  143. package/dist/core-tags/core/await/renderer.js +0 -249
  144. package/dist/core-tags/core/await/reorderer-renderer.js +0 -156
  145. package/dist/index.js +0 -4
  146. package/dist/node-require/browser-refresh.js +0 -18
  147. package/dist/node-require/hot-reload.js +0 -45
  148. package/dist/node-require/index.js +0 -103
  149. package/dist/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  150. package/dist/node_modules/@internal/components-beginComponent/index.js +0 -84
  151. package/dist/node_modules/@internal/components-beginComponent/package.json +0 -11
  152. package/dist/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  153. package/dist/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  154. package/dist/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  155. package/dist/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  156. package/dist/node_modules/@internal/components-endComponent/index.js +0 -11
  157. package/dist/node_modules/@internal/components-endComponent/package.json +0 -11
  158. package/dist/node_modules/@internal/components-entry/index-browser.js +0 -11
  159. package/dist/node_modules/@internal/components-entry/index.js +0 -301
  160. package/dist/node_modules/@internal/components-entry/package.json +0 -11
  161. package/dist/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  162. package/dist/node_modules/@internal/components-entry-legacy/index.js +0 -16
  163. package/dist/node_modules/@internal/components-entry-legacy/package.json +0 -11
  164. package/dist/node_modules/@internal/components-registry/index-browser.js +0 -586
  165. package/dist/node_modules/@internal/components-registry/index.js +0 -44
  166. package/dist/node_modules/@internal/components-registry/package.json +0 -11
  167. package/dist/node_modules/@internal/components-util/index-browser.js +0 -152
  168. package/dist/node_modules/@internal/components-util/index.js +0 -75
  169. package/dist/node_modules/@internal/components-util/package.json +0 -11
  170. package/dist/node_modules/@internal/create-readable/index-browser.js +0 -30
  171. package/dist/node_modules/@internal/create-readable/index.js +0 -57
  172. package/dist/node_modules/@internal/create-readable/package.json +0 -11
  173. package/dist/node_modules/@internal/loader/fallback-node.js +0 -89
  174. package/dist/node_modules/@internal/loader/index-browser.js +0 -2
  175. package/dist/node_modules/@internal/loader/index.js +0 -23
  176. package/dist/node_modules/@internal/loader/package.json +0 -10
  177. package/dist/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  178. package/dist/node_modules/@internal/preserve-tag/index.js +0 -34
  179. package/dist/node_modules/@internal/preserve-tag/package.json +0 -11
  180. package/dist/node_modules/@internal/require/index-browser.js +0 -15
  181. package/dist/node_modules/@internal/require/index-legacy-browser.js +0 -20
  182. package/dist/node_modules/@internal/require/index-webpack.js +0 -16
  183. package/dist/node_modules/@internal/require/index.js +0 -15
  184. package/dist/node_modules/@internal/require/package.json +0 -11
  185. package/dist/node_modules/@internal/set-immediate/index-browser.js +0 -19
  186. package/dist/node_modules/@internal/set-immediate/index-worker.js +0 -31
  187. package/dist/node_modules/@internal/set-immediate/index.js +0 -3
  188. package/dist/node_modules/@internal/set-immediate/package.json +0 -11
  189. package/dist/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  190. package/dist/runtime/RenderResult.js +0 -112
  191. package/dist/runtime/components/Component.js +0 -663
  192. package/dist/runtime/components/ComponentDef.js +0 -169
  193. package/dist/runtime/components/ComponentsContext.js +0 -59
  194. package/dist/runtime/components/GlobalComponentsContext.js +0 -10
  195. package/dist/runtime/components/KeySequence.js +0 -16
  196. package/dist/runtime/components/ServerComponent.js +0 -73
  197. package/dist/runtime/components/State.js +0 -101
  198. package/dist/runtime/components/attach-detach.js +0 -60
  199. package/dist/runtime/components/defineComponent.js +0 -60
  200. package/dist/runtime/components/dom-data.js +0 -8
  201. package/dist/runtime/components/event-delegation.js +0 -144
  202. package/dist/runtime/components/index.js +0 -1
  203. package/dist/runtime/components/legacy/browser.json +0 -9
  204. package/dist/runtime/components/legacy/defineComponent-legacy.js +0 -27
  205. package/dist/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  206. package/dist/runtime/components/legacy/defineWidget-legacy.js +0 -1
  207. package/dist/runtime/components/legacy/dependencies/html.js +0 -3
  208. package/dist/runtime/components/legacy/dependencies/index.js +0 -177
  209. package/dist/runtime/components/legacy/dependencies/vdom.js +0 -3
  210. package/dist/runtime/components/legacy/index.js +0 -1
  211. package/dist/runtime/components/legacy/jquery.js +0 -52
  212. package/dist/runtime/components/legacy/ready.js +0 -152
  213. package/dist/runtime/components/legacy/renderer-legacy.js +0 -231
  214. package/dist/runtime/components/registry.js +0 -1
  215. package/dist/runtime/components/renderer.js +0 -236
  216. package/dist/runtime/components/update-manager.js +0 -94
  217. package/dist/runtime/createOut.js +0 -13
  218. package/dist/runtime/dom-insert.js +0 -77
  219. package/dist/runtime/events.js +0 -2
  220. package/dist/runtime/helpers/_change-case.js +0 -45
  221. package/dist/runtime/helpers/assign.js +0 -21
  222. package/dist/runtime/helpers/attr-tag.js +0 -43
  223. package/dist/runtime/helpers/class-value.js +0 -30
  224. package/dist/runtime/helpers/dynamic-tag.js +0 -181
  225. package/dist/runtime/helpers/empty-component.js +0 -1
  226. package/dist/runtime/helpers/merge.js +0 -13
  227. package/dist/runtime/helpers/of-fallback.js +0 -4
  228. package/dist/runtime/helpers/render-tag.js +0 -20
  229. package/dist/runtime/helpers/serialize-noop.js +0 -5
  230. package/dist/runtime/helpers/style-value.js +0 -45
  231. package/dist/runtime/helpers/tags-compat/dom-debug.js +0 -1
  232. package/dist/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  233. package/dist/runtime/helpers/tags-compat/dom.js +0 -1
  234. package/dist/runtime/helpers/tags-compat/dom.mjs +0 -4
  235. package/dist/runtime/helpers/tags-compat/html-debug.js +0 -3
  236. package/dist/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  237. package/dist/runtime/helpers/tags-compat/html.js +0 -3
  238. package/dist/runtime/helpers/tags-compat/html.mjs +0 -4
  239. package/dist/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  240. package/dist/runtime/helpers/tags-compat/runtime-html.js +0 -136
  241. package/dist/runtime/helpers/to-string.js +0 -5
  242. package/dist/runtime/html/AsyncStream.js +0 -805
  243. package/dist/runtime/html/BufferedWriter.js +0 -52
  244. package/dist/runtime/html/StringWriter.js +0 -73
  245. package/dist/runtime/html/helpers/_dynamic-attr.js +0 -35
  246. package/dist/runtime/html/helpers/attr.js +0 -80
  247. package/dist/runtime/html/helpers/attrs.js +0 -26
  248. package/dist/runtime/html/helpers/class-attr.js +0 -8
  249. package/dist/runtime/html/helpers/data-marko.js +0 -36
  250. package/dist/runtime/html/helpers/escape-quotes.js +0 -35
  251. package/dist/runtime/html/helpers/escape-script-placeholder.js +0 -24
  252. package/dist/runtime/html/helpers/escape-style-placeholder.js +0 -22
  253. package/dist/runtime/html/helpers/escape-xml.js +0 -21
  254. package/dist/runtime/html/helpers/merge-attrs.js +0 -55
  255. package/dist/runtime/html/helpers/props-script.js +0 -32
  256. package/dist/runtime/html/helpers/style-attr.js +0 -8
  257. package/dist/runtime/html/hot-reload.js +0 -26
  258. package/dist/runtime/html/index.js +0 -33
  259. package/dist/runtime/html/marko-namespace.js +0 -3
  260. package/dist/runtime/renderable.js +0 -194
  261. package/dist/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  262. package/dist/runtime/vdom/VComment.js +0 -24
  263. package/dist/runtime/vdom/VComponent.js +0 -17
  264. package/dist/runtime/vdom/VDocumentFragment.js +0 -34
  265. package/dist/runtime/vdom/VElement.js +0 -375
  266. package/dist/runtime/vdom/VFragment.js +0 -26
  267. package/dist/runtime/vdom/VNode.js +0 -100
  268. package/dist/runtime/vdom/VText.js +0 -25
  269. package/dist/runtime/vdom/helpers/attrs.js +0 -62
  270. package/dist/runtime/vdom/helpers/const-element.js +0 -25
  271. package/dist/runtime/vdom/helpers/merge-attrs.js +0 -16
  272. package/dist/runtime/vdom/hot-reload.js +0 -115
  273. package/dist/runtime/vdom/index.js +0 -30
  274. package/dist/runtime/vdom/is-text-only.js +0 -10
  275. package/dist/runtime/vdom/marko-namespace.js +0 -3
  276. package/dist/runtime/vdom/morphdom/fragment.js +0 -95
  277. package/dist/runtime/vdom/morphdom/helpers.js +0 -42
  278. package/dist/runtime/vdom/morphdom/index.js +0 -741
  279. package/dist/runtime/vdom/parse-html.js +0 -18
  280. package/dist/runtime/vdom/vdom.js +0 -88
  281. package/dist/taglib/index.js +0 -51
  282. package/dist/translator/cdata/index.js +0 -15
  283. package/dist/translator/cdata/index[html].js +0 -15
  284. package/dist/translator/cdata/index[vdom].js +0 -12
  285. package/dist/translator/class.js +0 -65
  286. package/dist/translator/comment/index.js +0 -15
  287. package/dist/translator/comment/index[html].js +0 -17
  288. package/dist/translator/comment/index[vdom].js +0 -3
  289. package/dist/translator/declaration/index.js +0 -15
  290. package/dist/translator/declaration/index[html].js +0 -12
  291. package/dist/translator/declaration/index[vdom].js +0 -3
  292. package/dist/translator/document-type/index.js +0 -15
  293. package/dist/translator/document-type/index[html].js +0 -12
  294. package/dist/translator/document-type/index[vdom].js +0 -3
  295. package/dist/translator/placeholder/index.js +0 -15
  296. package/dist/translator/placeholder/index[html].js +0 -93
  297. package/dist/translator/placeholder/index[vdom].js +0 -22
  298. package/dist/translator/scriptlet.js +0 -4
  299. package/dist/translator/tag/attribute/directives/class.js +0 -42
  300. package/dist/translator/tag/attribute/directives/index.js +0 -15
  301. package/dist/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  302. package/dist/translator/tag/attribute/directives/no-update-body.js +0 -10
  303. package/dist/translator/tag/attribute/directives/no-update-if.js +0 -12
  304. package/dist/translator/tag/attribute/directives/no-update.js +0 -48
  305. package/dist/translator/tag/attribute/directives/style.js +0 -42
  306. package/dist/translator/tag/attribute/index.js +0 -150
  307. package/dist/translator/tag/attribute/modifiers/index.js +0 -7
  308. package/dist/translator/tag/attribute/modifiers/no-update.js +0 -14
  309. package/dist/translator/tag/attribute/modifiers/scoped.js +0 -23
  310. package/dist/translator/tag/attribute-tag.js +0 -149
  311. package/dist/translator/tag/custom-tag.js +0 -146
  312. package/dist/translator/tag/dynamic-tag.js +0 -74
  313. package/dist/translator/tag/index.js +0 -287
  314. package/dist/translator/tag/macro-tag.js +0 -7
  315. package/dist/translator/tag/native-tag.js +0 -27
  316. package/dist/translator/tag/native-tag[html]/attributes.js +0 -151
  317. package/dist/translator/tag/native-tag[html]/index.js +0 -221
  318. package/dist/translator/tag/native-tag[vdom]/attributes.js +0 -105
  319. package/dist/translator/tag/native-tag[vdom]/index.js +0 -189
  320. package/dist/translator/tag/util.js +0 -246
  321. package/dist/translator/taglib/core/conditional/translate-else-if.js +0 -20
  322. package/dist/translator/taglib/core/conditional/translate-else.js +0 -20
  323. package/dist/translator/taglib/core/conditional/translate-if.js +0 -8
  324. package/dist/translator/taglib/core/conditional/util.js +0 -41
  325. package/dist/translator/taglib/core/index.js +0 -474
  326. package/dist/translator/taglib/core/macro/parse.js +0 -17
  327. package/dist/translator/taglib/core/macro/translate.js +0 -48
  328. package/dist/translator/taglib/core/parse-class.js +0 -79
  329. package/dist/translator/taglib/core/parse-export.js +0 -14
  330. package/dist/translator/taglib/core/parse-import.js +0 -14
  331. package/dist/translator/taglib/core/parse-module-code.js +0 -18
  332. package/dist/translator/taglib/core/parse-static.js +0 -18
  333. package/dist/translator/taglib/core/transform-style.js +0 -66
  334. package/dist/translator/taglib/core/translate-await.js +0 -41
  335. package/dist/translator/taglib/core/translate-body.js +0 -17
  336. package/dist/translator/taglib/core/translate-for.js +0 -156
  337. package/dist/translator/taglib/core/translate-html-comment.js +0 -52
  338. package/dist/translator/taglib/core/translate-include-content.js +0 -53
  339. package/dist/translator/taglib/core/translate-server-only.js +0 -5
  340. package/dist/translator/taglib/core/translate-while.js +0 -32
  341. package/dist/translator/taglib/index.js +0 -6
  342. package/dist/translator/taglib/migrate/all-templates.js +0 -46
  343. package/dist/translator/taglib/migrate/index.js +0 -5
  344. package/dist/translator/text/index.js +0 -10
  345. package/dist/translator/text/index[html].js +0 -12
  346. package/dist/translator/text/index[vdom].js +0 -20
  347. package/dist/translator/util/add-dependencies.js +0 -329
  348. package/dist/translator/util/escape-regexp.js +0 -4
  349. package/dist/translator/util/get-component-files.js +0 -86
  350. package/dist/translator/util/html-out-write.js +0 -15
  351. package/dist/translator/util/key-manager.js +0 -176
  352. package/dist/translator/util/optimize-html-writes.js +0 -52
  353. package/dist/translator/util/optimize-vdom-create.js +0 -164
  354. package/dist/translator/util/plugin-hooks.js +0 -22
  355. package/dist/translator/util/runtime-flags.js +0 -3
  356. package/dist/translator/util/vdom-out-write.js +0 -10
  357. package/dist/translator/util/with-previous-location.js +0 -6
  358. package/docs/10-awesome-marko-features.md +0 -291
  359. package/docs/body-content.md +0 -355
  360. package/docs/class-components.md +0 -1001
  361. package/docs/cloudflare-workers.md +0 -32
  362. package/docs/compiler-hooks.png +0 -0
  363. package/docs/compiler.md +0 -473
  364. package/docs/component-diagram.afdesign +0 -0
  365. package/docs/component-diagram.svg +0 -87
  366. package/docs/concise.md +0 -141
  367. package/docs/conditionals-and-lists.md +0 -72
  368. package/docs/core-tags.md +0 -325
  369. package/docs/custom-tags.md +0 -201
  370. package/docs/editor-plugins.md +0 -45
  371. package/docs/events.md +0 -131
  372. package/docs/express.md +0 -66
  373. package/docs/fastify.md +0 -65
  374. package/docs/getting-started.md +0 -95
  375. package/docs/http.md +0 -34
  376. package/docs/icons/js.svg +0 -4
  377. package/docs/icons/marko.svg +0 -1
  378. package/docs/icons/ts.svg +0 -1
  379. package/docs/installing.md +0 -51
  380. package/docs/koa.md +0 -35
  381. package/docs/lasso.md +0 -196
  382. package/docs/marko-5-upgrade.md +0 -59
  383. package/docs/marko-json.md +0 -248
  384. package/docs/marko-vs-react.md +0 -854
  385. package/docs/redux.md +0 -61
  386. package/docs/rendering.md +0 -268
  387. package/docs/rollup.md +0 -352
  388. package/docs/state.md +0 -105
  389. package/docs/structure.json +0 -49
  390. package/docs/styles.md +0 -29
  391. package/docs/syntax.md +0 -601
  392. package/docs/troubleshooting-streaming.md +0 -68
  393. package/docs/typescript.md +0 -406
  394. package/docs/vite.md +0 -86
  395. package/docs/webpack.md +0 -205
  396. package/docs/why-is-marko-fast.md +0 -239
  397. package/env.js +0 -7
  398. package/helpers/README.md +0 -3
  399. package/helpers/empty.js +0 -4
  400. package/helpers/notEmpty.js +0 -11
  401. package/index-browser.marko +0 -15
  402. package/index.d.ts +0 -375
  403. package/index.js +0 -7
  404. package/legacy-components-browser.marko +0 -15
  405. package/legacy-components.js +0 -7
  406. package/node-require.js +0 -8
  407. package/src/build.json +0 -3
  408. package/src/compiler/config.js +0 -45
  409. package/src/compiler/index.js +0 -164
  410. package/src/compiler/modules.js +0 -5
  411. package/src/core-tags/.eslintrc +0 -5
  412. package/src/core-tags/components/init-components-tag.js +0 -54
  413. package/src/core-tags/components/preferred-script-location-tag.js +0 -25
  414. package/src/core-tags/components/preserve-tag.js +0 -1
  415. package/src/core-tags/core/__flush_here_and_after__.js +0 -44
  416. package/src/core-tags/core/await/AsyncValue.js +0 -121
  417. package/src/core-tags/core/await/client-reorder-runtime.js +0 -51
  418. package/src/core-tags/core/await/index.d.marko +0 -10
  419. package/src/core-tags/core/await/renderer.js +0 -249
  420. package/src/core-tags/core/await/reorderer-renderer.js +0 -156
  421. package/src/index.js +0 -4
  422. package/src/node-require/browser-refresh.js +0 -18
  423. package/src/node-require/hot-reload.js +0 -45
  424. package/src/node-require/index.js +0 -103
  425. package/src/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  426. package/src/node_modules/@internal/components-beginComponent/index.js +0 -84
  427. package/src/node_modules/@internal/components-beginComponent/package.json +0 -11
  428. package/src/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  429. package/src/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  430. package/src/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  431. package/src/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  432. package/src/node_modules/@internal/components-endComponent/index.js +0 -11
  433. package/src/node_modules/@internal/components-endComponent/package.json +0 -11
  434. package/src/node_modules/@internal/components-entry/index-browser.js +0 -11
  435. package/src/node_modules/@internal/components-entry/index.js +0 -301
  436. package/src/node_modules/@internal/components-entry/package.json +0 -11
  437. package/src/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  438. package/src/node_modules/@internal/components-entry-legacy/index.js +0 -16
  439. package/src/node_modules/@internal/components-entry-legacy/package.json +0 -11
  440. package/src/node_modules/@internal/components-registry/index-browser.js +0 -586
  441. package/src/node_modules/@internal/components-registry/index.js +0 -44
  442. package/src/node_modules/@internal/components-registry/package.json +0 -11
  443. package/src/node_modules/@internal/components-util/index-browser.js +0 -152
  444. package/src/node_modules/@internal/components-util/index.js +0 -75
  445. package/src/node_modules/@internal/components-util/package.json +0 -11
  446. package/src/node_modules/@internal/create-readable/index-browser.js +0 -30
  447. package/src/node_modules/@internal/create-readable/index.js +0 -57
  448. package/src/node_modules/@internal/create-readable/package.json +0 -11
  449. package/src/node_modules/@internal/loader/fallback-node.js +0 -89
  450. package/src/node_modules/@internal/loader/index-browser.js +0 -2
  451. package/src/node_modules/@internal/loader/index.js +0 -23
  452. package/src/node_modules/@internal/loader/package.json +0 -10
  453. package/src/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  454. package/src/node_modules/@internal/preserve-tag/index.js +0 -34
  455. package/src/node_modules/@internal/preserve-tag/package.json +0 -11
  456. package/src/node_modules/@internal/require/index-browser.js +0 -15
  457. package/src/node_modules/@internal/require/index-legacy-browser.js +0 -20
  458. package/src/node_modules/@internal/require/index-webpack.js +0 -16
  459. package/src/node_modules/@internal/require/index.js +0 -15
  460. package/src/node_modules/@internal/require/package.json +0 -11
  461. package/src/node_modules/@internal/set-immediate/index-browser.js +0 -19
  462. package/src/node_modules/@internal/set-immediate/index-worker.js +0 -31
  463. package/src/node_modules/@internal/set-immediate/index.js +0 -3
  464. package/src/node_modules/@internal/set-immediate/package.json +0 -11
  465. package/src/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  466. package/src/runtime/.eslintrc +0 -5
  467. package/src/runtime/RenderResult.js +0 -112
  468. package/src/runtime/components/Component.js +0 -663
  469. package/src/runtime/components/ComponentDef.js +0 -169
  470. package/src/runtime/components/ComponentsContext.js +0 -59
  471. package/src/runtime/components/GlobalComponentsContext.js +0 -10
  472. package/src/runtime/components/KeySequence.js +0 -16
  473. package/src/runtime/components/ServerComponent.js +0 -73
  474. package/src/runtime/components/State.js +0 -101
  475. package/src/runtime/components/attach-detach.js +0 -60
  476. package/src/runtime/components/defineComponent.js +0 -60
  477. package/src/runtime/components/dom-data.js +0 -8
  478. package/src/runtime/components/event-delegation.js +0 -144
  479. package/src/runtime/components/index.js +0 -1
  480. package/src/runtime/components/legacy/browser.json +0 -9
  481. package/src/runtime/components/legacy/defineComponent-legacy.js +0 -27
  482. package/src/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  483. package/src/runtime/components/legacy/defineWidget-legacy.js +0 -1
  484. package/src/runtime/components/legacy/dependencies/html.js +0 -3
  485. package/src/runtime/components/legacy/dependencies/index.js +0 -177
  486. package/src/runtime/components/legacy/dependencies/vdom.js +0 -3
  487. package/src/runtime/components/legacy/index.js +0 -1
  488. package/src/runtime/components/legacy/jquery.js +0 -52
  489. package/src/runtime/components/legacy/ready.js +0 -152
  490. package/src/runtime/components/legacy/renderer-legacy.js +0 -231
  491. package/src/runtime/components/registry.js +0 -1
  492. package/src/runtime/components/renderer.js +0 -236
  493. package/src/runtime/components/update-manager.js +0 -94
  494. package/src/runtime/createOut.js +0 -13
  495. package/src/runtime/dom-insert.js +0 -77
  496. package/src/runtime/events.js +0 -2
  497. package/src/runtime/helpers/_change-case.js +0 -45
  498. package/src/runtime/helpers/assign.js +0 -21
  499. package/src/runtime/helpers/attr-tag.js +0 -43
  500. package/src/runtime/helpers/class-value.js +0 -30
  501. package/src/runtime/helpers/dynamic-tag.js +0 -181
  502. package/src/runtime/helpers/empty-component.js +0 -1
  503. package/src/runtime/helpers/merge.js +0 -13
  504. package/src/runtime/helpers/of-fallback.js +0 -4
  505. package/src/runtime/helpers/render-tag.js +0 -20
  506. package/src/runtime/helpers/serialize-noop.js +0 -5
  507. package/src/runtime/helpers/style-value.js +0 -45
  508. package/src/runtime/helpers/tags-compat/dom-debug.js +0 -1
  509. package/src/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  510. package/src/runtime/helpers/tags-compat/dom.js +0 -1
  511. package/src/runtime/helpers/tags-compat/dom.mjs +0 -4
  512. package/src/runtime/helpers/tags-compat/html-debug.js +0 -3
  513. package/src/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  514. package/src/runtime/helpers/tags-compat/html.js +0 -3
  515. package/src/runtime/helpers/tags-compat/html.mjs +0 -4
  516. package/src/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  517. package/src/runtime/helpers/tags-compat/runtime-html.js +0 -136
  518. package/src/runtime/helpers/to-string.js +0 -5
  519. package/src/runtime/html/AsyncStream.js +0 -805
  520. package/src/runtime/html/BufferedWriter.js +0 -52
  521. package/src/runtime/html/StringWriter.js +0 -73
  522. package/src/runtime/html/helpers/_dynamic-attr.js +0 -35
  523. package/src/runtime/html/helpers/attr.js +0 -80
  524. package/src/runtime/html/helpers/attrs.js +0 -26
  525. package/src/runtime/html/helpers/class-attr.js +0 -8
  526. package/src/runtime/html/helpers/data-marko.js +0 -36
  527. package/src/runtime/html/helpers/escape-quotes.js +0 -35
  528. package/src/runtime/html/helpers/escape-script-placeholder.js +0 -24
  529. package/src/runtime/html/helpers/escape-style-placeholder.js +0 -22
  530. package/src/runtime/html/helpers/escape-xml.js +0 -21
  531. package/src/runtime/html/helpers/merge-attrs.js +0 -55
  532. package/src/runtime/html/helpers/props-script.js +0 -32
  533. package/src/runtime/html/helpers/style-attr.js +0 -8
  534. package/src/runtime/html/hot-reload.js +0 -26
  535. package/src/runtime/html/index.js +0 -33
  536. package/src/runtime/html/marko-namespace.js +0 -3
  537. package/src/runtime/renderable.js +0 -194
  538. package/src/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  539. package/src/runtime/vdom/VComment.js +0 -24
  540. package/src/runtime/vdom/VComponent.js +0 -17
  541. package/src/runtime/vdom/VDocumentFragment.js +0 -34
  542. package/src/runtime/vdom/VElement.js +0 -375
  543. package/src/runtime/vdom/VFragment.js +0 -26
  544. package/src/runtime/vdom/VNode.js +0 -100
  545. package/src/runtime/vdom/VText.js +0 -25
  546. package/src/runtime/vdom/helpers/attrs.js +0 -62
  547. package/src/runtime/vdom/helpers/const-element.js +0 -25
  548. package/src/runtime/vdom/helpers/merge-attrs.js +0 -16
  549. package/src/runtime/vdom/hot-reload.js +0 -115
  550. package/src/runtime/vdom/index.js +0 -30
  551. package/src/runtime/vdom/is-text-only.js +0 -10
  552. package/src/runtime/vdom/marko-namespace.js +0 -3
  553. package/src/runtime/vdom/morphdom/fragment.js +0 -95
  554. package/src/runtime/vdom/morphdom/helpers.js +0 -42
  555. package/src/runtime/vdom/morphdom/index.js +0 -741
  556. package/src/runtime/vdom/parse-html.js +0 -18
  557. package/src/runtime/vdom/vdom.js +0 -88
  558. package/src/taglib/index.js +0 -51
  559. package/src/translator/cdata/index.js +0 -15
  560. package/src/translator/cdata/index[html].js +0 -15
  561. package/src/translator/cdata/index[vdom].js +0 -12
  562. package/src/translator/class.js +0 -65
  563. package/src/translator/comment/index.js +0 -15
  564. package/src/translator/comment/index[html].js +0 -17
  565. package/src/translator/comment/index[vdom].js +0 -3
  566. package/src/translator/declaration/index.js +0 -15
  567. package/src/translator/declaration/index[html].js +0 -12
  568. package/src/translator/declaration/index[vdom].js +0 -3
  569. package/src/translator/document-type/index.js +0 -15
  570. package/src/translator/document-type/index[html].js +0 -12
  571. package/src/translator/document-type/index[vdom].js +0 -3
  572. package/src/translator/index.js +0 -551
  573. package/src/translator/placeholder/index.js +0 -15
  574. package/src/translator/placeholder/index[html].js +0 -93
  575. package/src/translator/placeholder/index[vdom].js +0 -22
  576. package/src/translator/scriptlet.js +0 -4
  577. package/src/translator/tag/attribute/directives/class.js +0 -42
  578. package/src/translator/tag/attribute/directives/index.js +0 -15
  579. package/src/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  580. package/src/translator/tag/attribute/directives/no-update-body.js +0 -10
  581. package/src/translator/tag/attribute/directives/no-update-if.js +0 -12
  582. package/src/translator/tag/attribute/directives/no-update.js +0 -48
  583. package/src/translator/tag/attribute/directives/style.js +0 -42
  584. package/src/translator/tag/attribute/index.js +0 -150
  585. package/src/translator/tag/attribute/modifiers/index.js +0 -7
  586. package/src/translator/tag/attribute/modifiers/no-update.js +0 -14
  587. package/src/translator/tag/attribute/modifiers/scoped.js +0 -23
  588. package/src/translator/tag/attribute-tag.js +0 -149
  589. package/src/translator/tag/custom-tag.js +0 -146
  590. package/src/translator/tag/dynamic-tag.js +0 -74
  591. package/src/translator/tag/index.js +0 -287
  592. package/src/translator/tag/macro-tag.js +0 -7
  593. package/src/translator/tag/native-tag.js +0 -27
  594. package/src/translator/tag/native-tag[html]/attributes.js +0 -151
  595. package/src/translator/tag/native-tag[html]/index.js +0 -221
  596. package/src/translator/tag/native-tag[vdom]/attributes.js +0 -105
  597. package/src/translator/tag/native-tag[vdom]/index.js +0 -189
  598. package/src/translator/tag/util.js +0 -246
  599. package/src/translator/taglib/core/conditional/translate-else-if.js +0 -20
  600. package/src/translator/taglib/core/conditional/translate-else.js +0 -20
  601. package/src/translator/taglib/core/conditional/translate-if.js +0 -8
  602. package/src/translator/taglib/core/conditional/util.js +0 -41
  603. package/src/translator/taglib/core/index.js +0 -474
  604. package/src/translator/taglib/core/macro/parse.js +0 -17
  605. package/src/translator/taglib/core/macro/translate.js +0 -48
  606. package/src/translator/taglib/core/parse-class.js +0 -79
  607. package/src/translator/taglib/core/parse-export.js +0 -14
  608. package/src/translator/taglib/core/parse-import.js +0 -14
  609. package/src/translator/taglib/core/parse-module-code.js +0 -18
  610. package/src/translator/taglib/core/parse-static.js +0 -18
  611. package/src/translator/taglib/core/transform-style.js +0 -66
  612. package/src/translator/taglib/core/translate-await.js +0 -41
  613. package/src/translator/taglib/core/translate-body.js +0 -17
  614. package/src/translator/taglib/core/translate-for.js +0 -156
  615. package/src/translator/taglib/core/translate-html-comment.js +0 -52
  616. package/src/translator/taglib/core/translate-include-content.js +0 -53
  617. package/src/translator/taglib/core/translate-server-only.js +0 -5
  618. package/src/translator/taglib/core/translate-while.js +0 -32
  619. package/src/translator/taglib/index.js +0 -7
  620. package/src/translator/taglib/migrate/all-templates.js +0 -46
  621. package/src/translator/taglib/migrate/index.js +0 -5
  622. package/src/translator/text/index.js +0 -10
  623. package/src/translator/text/index[html].js +0 -12
  624. package/src/translator/text/index[vdom].js +0 -20
  625. package/src/translator/util/add-dependencies.js +0 -329
  626. package/src/translator/util/escape-regexp.js +0 -4
  627. package/src/translator/util/get-component-files.js +0 -86
  628. package/src/translator/util/html-out-write.js +0 -15
  629. package/src/translator/util/key-manager.js +0 -176
  630. package/src/translator/util/optimize-html-writes.js +0 -52
  631. package/src/translator/util/optimize-vdom-create.js +0 -164
  632. package/src/translator/util/plugin-hooks.js +0 -22
  633. package/src/translator/util/runtime-flags.js +0 -3
  634. package/src/translator/util/vdom-out-write.js +0 -10
  635. package/src/translator/util/with-previous-location.js +0 -6
  636. package/tags-html.d.ts +0 -3855
  637. package/translator/index.d.ts +0 -7
  638. package/translator/package.json +0 -5
@@ -1,329 +0,0 @@
1
- import { types as t } from "@marko/compiler";
2
- import {
3
- loadFileForImport,
4
- parseStatements,
5
- resolveRelativePath,
6
- } from "@marko/compiler/babel-utils";
7
- import MagicString from "magic-string";
8
- import path from "path";
9
- import resolveFrom from "resolve-from";
10
- const kEntryState = Symbol();
11
- const lassoDepPrefix = "package: ";
12
-
13
- export default (entryFile, isHydrate) => {
14
- const program = entryFile.path;
15
- const programNode = program.node;
16
-
17
- if (!isHydrate) {
18
- const body = [];
19
- addBrowserImports(new Set(), undefined, body, entryFile, entryFile);
20
- if (body.length) {
21
- programNode.body = body.concat(programNode.body);
22
- }
23
- return;
24
- }
25
-
26
- const visitedFiles = new Set([
27
- resolveRelativePath(entryFile, entryFile.opts.filename),
28
- ]);
29
- entryBuilder.visit(entryFile, entryFile, function visitChild(resolved) {
30
- if (!visitedFiles.has(resolved)) {
31
- visitedFiles.add(resolved);
32
- const file = loadFileForImport(entryFile, resolved);
33
- if (file) {
34
- entryBuilder.visit(file, entryFile, (id) =>
35
- visitChild(resolveRelativeToEntry(entryFile, file, id)),
36
- );
37
- }
38
- }
39
- });
40
-
41
- programNode.body = entryBuilder.build(entryFile);
42
- program.skip();
43
- };
44
-
45
- export const entryBuilder = {
46
- build(entryFile) {
47
- const state = entryFile[kEntryState];
48
- if (!state) {
49
- throw entryFile.path.buildCodeFrameError(
50
- "Unable to build hydrate code, no files were visited before finalizing the build",
51
- );
52
- }
53
- const { markoOpts } = entryFile;
54
- const entryMarkoMeta = entryFile.metadata.marko;
55
- const { body } = state;
56
- entryMarkoMeta.watchFiles = [...state.watchFiles];
57
- entryMarkoMeta.deps = [...state.lassoDeps];
58
-
59
- if (state.hasComponents) {
60
- const initId = t.identifier("init");
61
- const markoComponentsImport = importPath(
62
- resolveRelativePath(entryFile, "marko/src/runtime/components/index.js"),
63
- );
64
- if (state.splitComponentIndex) {
65
- markoComponentsImport.specifiers.push(
66
- t.importSpecifier(t.identifier("register"), t.identifier("register")),
67
- );
68
- }
69
-
70
- body.unshift(markoComponentsImport);
71
-
72
- if (markoOpts.hydrateInit) {
73
- markoComponentsImport.specifiers.push(
74
- t.importSpecifier(initId, initId),
75
- );
76
- body.push(
77
- t.expressionStatement(
78
- t.callExpression(
79
- initId,
80
- markoOpts.runtimeId ? [t.stringLiteral(markoOpts.runtimeId)] : [],
81
- ),
82
- ),
83
- );
84
- }
85
- }
86
-
87
- return body;
88
- },
89
- visit(file, entryFile, visitChild) {
90
- const fileMeta = file.metadata.marko;
91
- const fileName = file.opts.filename;
92
- const state = (entryFile[kEntryState] ||= {
93
- shouldIncludeImport: toTestFn(file.markoOpts.hydrateIncludeImports),
94
- watchFiles: new Set(),
95
- imports: new Set(),
96
- lassoDeps: new Set(),
97
- hasComponents: false,
98
- splitComponentIndex: 0,
99
- body: [],
100
- });
101
-
102
- const { watchFiles, imports, lassoDeps, body } = state;
103
-
104
- if (fileMeta.component) {
105
- state.hasComponents = true;
106
-
107
- if (path.basename(fileMeta.component) === path.basename(fileName)) {
108
- // Stateful component.
109
- addImport(imports, body, resolveRelativePath(entryFile, fileName));
110
- return;
111
- }
112
- }
113
-
114
- watchFiles.add(fileName);
115
-
116
- for (const watchFile of fileMeta.watchFiles) {
117
- watchFiles.add(watchFile);
118
- }
119
-
120
- addBrowserImports(imports, lassoDeps, body, file, entryFile);
121
-
122
- for (const child of file.path.node.body) {
123
- if (t.isImportDeclaration(child)) {
124
- const { value } = child.source;
125
- if (state.shouldIncludeImport(value)) {
126
- addImport(
127
- imports,
128
- body,
129
- resolveRelativeToEntry(entryFile, file, value),
130
- );
131
- }
132
- }
133
- }
134
-
135
- for (const tag of fileMeta.tags) {
136
- if (tag.endsWith(".marko")) {
137
- visitChild(tag);
138
- } else {
139
- const importedTemplates = tryGetTemplateImports(file, tag);
140
- if (importedTemplates) {
141
- for (const templateFile of importedTemplates) {
142
- visitChild(templateFile);
143
- }
144
- }
145
- }
146
- }
147
-
148
- if (fileMeta.component) {
149
- // Split component
150
- const splitComponentId = t.identifier(
151
- `component_${state.splitComponentIndex++}`,
152
- );
153
- const splitComponentImport = importPath(
154
- resolveRelativeToEntry(entryFile, file, fileMeta.component),
155
- );
156
- splitComponentImport.specifiers.push(
157
- t.importDefaultSpecifier(splitComponentId),
158
- );
159
- body.push(
160
- splitComponentImport,
161
- t.expressionStatement(
162
- t.callExpression(t.identifier("register"), [
163
- t.stringLiteral(fileMeta.id),
164
- splitComponentId,
165
- ]),
166
- ),
167
- );
168
- }
169
- },
170
- };
171
-
172
- function addBrowserImports(seenImports, lassoDeps, body, file, entryFile) {
173
- const { filename, sourceMaps } = file.opts;
174
- let s;
175
-
176
- for (let dep of file.metadata.marko.deps) {
177
- if (typeof dep !== "string") {
178
- const { virtualPath } = dep;
179
- let { code } = dep;
180
- let map;
181
-
182
- if (sourceMaps && dep.startPos !== undefined) {
183
- s = s || new MagicString(file.code, { filename });
184
- map = s.snip(dep.startPos, dep.endPos).generateMap({
185
- source: filename,
186
- includeContent: true,
187
- });
188
-
189
- if (sourceMaps === "inline" || sourceMaps === "both") {
190
- code += dep.style
191
- ? `\n/*# sourceMappingURL=${map.toUrl()}*/`
192
- : `\n//# sourceMappingURL=${map.toUrl()}`;
193
-
194
- if (sourceMaps === "inline") {
195
- map = undefined;
196
- }
197
- }
198
- }
199
-
200
- dep = file.markoOpts.resolveVirtualDependency(filename, {
201
- map,
202
- code,
203
- virtualPath,
204
- });
205
-
206
- if (!dep) {
207
- continue;
208
- }
209
- } else if (isLassoDep(dep)) {
210
- if (lassoDeps) {
211
- lassoDeps.add(
212
- resolveLassoManifestDepRelativeToEntry(entryFile, file, dep),
213
- );
214
- }
215
- continue;
216
- }
217
-
218
- addImport(seenImports, body, resolveRelativeToEntry(entryFile, file, dep));
219
- }
220
- }
221
-
222
- function addImport(seenImports, body, resolved) {
223
- if (seenImports.has(resolved)) return;
224
- seenImports.add(resolved);
225
- body.push(importPath(resolved));
226
- }
227
-
228
- function resolveRelativeToEntry(entryFile, file, req) {
229
- return file === entryFile
230
- ? resolveRelativePath(file, req)
231
- : resolveRelativePath(
232
- entryFile,
233
- req[0] === "." ? path.join(file.opts.filename, "..", req) : req,
234
- );
235
- }
236
-
237
- function importPath(path) {
238
- return t.importDeclaration([], t.stringLiteral(path));
239
- }
240
-
241
- function tryGetTemplateImports(file, rendererRelativePath) {
242
- const resolvedRendererPath = path.join(
243
- file.opts.filename,
244
- "..",
245
- rendererRelativePath,
246
- );
247
- let templateImports;
248
-
249
- try {
250
- for (const statement of parseStatements(
251
- file,
252
- file.markoOpts.fileSystem.readFileSync(resolvedRendererPath, "utf-8"),
253
- )) {
254
- if (statement.type === "ImportDeclaration") {
255
- addTemplateImport(statement.source.value);
256
- } else {
257
- t.traverseFast(statement, (node) => {
258
- if (
259
- node.type === "CallExpression" &&
260
- (node.callee.name === "require" ||
261
- (node.callee.type === "MemberExpression" &&
262
- node.callee.object.type === "Identifier" &&
263
- node.callee.object.name === "require" &&
264
- node.callee.property.type === "Identifier" &&
265
- node.callee.property.name === "resolve")) &&
266
- node.arguments.length === 1 &&
267
- node.arguments[0].type === "StringLiteral"
268
- ) {
269
- addTemplateImport(node.arguments[0].value);
270
- }
271
- });
272
- }
273
- }
274
- } catch {
275
- // Ignore
276
- }
277
-
278
- return templateImports;
279
-
280
- function addTemplateImport(request) {
281
- if (request.endsWith(".marko")) {
282
- const resolvedTemplatePath =
283
- request[0] === "."
284
- ? path.resolve(resolvedRendererPath, "..", request)
285
- : resolveFrom.silent(path.dirname(resolvedRendererPath), request);
286
- if (resolvedTemplatePath) {
287
- if (templateImports) {
288
- templateImports.push(resolvedTemplatePath);
289
- } else {
290
- templateImports = [resolvedTemplatePath];
291
- }
292
- }
293
- }
294
- }
295
- }
296
-
297
- function toTestFn(val) {
298
- if (typeof val === "function") {
299
- return val;
300
- }
301
-
302
- return val.test.bind(val);
303
- }
304
-
305
- function isLassoDep(dep) {
306
- return dep.startsWith(lassoDepPrefix);
307
- }
308
-
309
- /**
310
- * Lasso manifest deps in `lasso-marko` do not support node module resolution.
311
- * eg `package: @ebay/ebayui-core/browser.json` will not resolve.
312
- *
313
- * This resolution returns a direct posix relative path.
314
- */
315
- function resolveLassoManifestDepRelativeToEntry(entryFile, targetFile, dep) {
316
- const entryFileName = entryFile.opts.filename;
317
- const targetFileName = targetFile.opts.filename;
318
- if (entryFileName === targetFileName) return dep;
319
-
320
- const resolved = toPosix(
321
- path.relative(
322
- path.dirname(entryFileName),
323
- path.join(targetFileName, "..", dep.slice(lassoDepPrefix.length)),
324
- ),
325
- );
326
- return lassoDepPrefix + (resolved[0] === "." ? resolved : `./${resolved}`);
327
- }
328
-
329
- const toPosix = path.sep === "/" ? (v) => v : (v) => v.replace(/\\/g, "/");
@@ -1,4 +0,0 @@
1
- const regexpCharsReg = /[\\^$.*+?()[\]{}|]/g;
2
- export function escapeRegExp(str) {
3
- return str.replace(regexpCharsReg, "\\$&");
4
- }
@@ -1,86 +0,0 @@
1
- import path from "path";
2
-
3
- import { escapeRegExp } from "./escape-regexp";
4
-
5
- const COMPONENT_FILES_KEY = "___marko_component_files___";
6
-
7
- export default function getComponentFiles({ hub: { file } }) {
8
- const meta = file.metadata.marko;
9
-
10
- if (meta[COMPONENT_FILES_KEY]) {
11
- return meta[COMPONENT_FILES_KEY];
12
- }
13
-
14
- const { filename } = file.opts;
15
- const fs = file.markoOpts.fileSystem;
16
- const dirname = path.dirname(filename);
17
- const dirFiles = fs.readdirSync(dirname).sort();
18
- const base = getBase(filename);
19
- const isEntry = "index" === base || "template" === base;
20
- const fileMatch = `(${escapeRegExp(base)}\\.${isEntry ? "|" : ""})`;
21
- const styleMatch = new RegExp(`^${fileMatch}style\\.\\w+$`);
22
- const componentMatch = new RegExp(`^${fileMatch}component\\.\\w+$`);
23
- const splitComponentMatch = new RegExp(
24
- `^${fileMatch}component-browser\\.\\w+$`,
25
- );
26
- const packageMatch = new RegExp(`^${fileMatch}browser\\.\\json$`);
27
- let styleFile;
28
- let packageFile;
29
- let componentFile;
30
- let componentBrowserFile;
31
-
32
- for (const file of dirFiles) {
33
- if (!styleFile && styleMatch.test(file)) {
34
- styleFile = `./${file}`;
35
- } else if (!packageFile && packageMatch.test(file)) {
36
- packageFile = `./${file}`;
37
- } else if (!componentFile && componentMatch.test(file)) {
38
- componentFile = `./${file}`;
39
- meta.hasComponent = true;
40
- } else if (!componentBrowserFile && splitComponentMatch.test(file)) {
41
- componentBrowserFile = `./${file}`;
42
- meta.hasComponentBrowser = true;
43
- }
44
- }
45
-
46
- return (meta[COMPONENT_FILES_KEY] = {
47
- styleFile,
48
- packageFile,
49
- componentFile,
50
- componentBrowserFile,
51
- });
52
- }
53
-
54
- /**
55
- * Given a filename, gets the base name, strips off the file extension
56
- * and removes any arc flags (https://github.com/eBay/arc).
57
- *
58
- * @example
59
- * getBase("/dir/foo.marko") // => "foo"
60
- * getBase("/dir/foo.bar.marko") // => "foo.bar"
61
- * getBase("/dir/foo[bar].marko") // => "foo"
62
- * getBase("/dir/foo[bar].baz.marko") // => "foo.baz"
63
- */
64
- function getBase(filename) {
65
- const start = filename.lastIndexOf(path.sep) + 1;
66
- const leftDot = filename.indexOf(".", start);
67
-
68
- if (leftDot === -1) {
69
- return filename.slice(start);
70
- }
71
-
72
- const rightDot = filename.lastIndexOf(".");
73
- const closeBracket = leftDot - 1;
74
- if (filename[closeBracket] === "]") {
75
- const openBracket = filename.lastIndexOf("[", closeBracket);
76
- if (openBracket > start) {
77
- // If we match a "]" before the extension and find a "[" before that,
78
- // then we have an arc flag. Strip it off.
79
- return (
80
- filename.slice(start, openBracket) + filename.slice(leftDot, rightDot)
81
- );
82
- }
83
- }
84
-
85
- return filename.slice(start, rightDot);
86
- }
@@ -1,15 +0,0 @@
1
- import { types as t } from "@marko/compiler";
2
- import { normalizeTemplateString } from "@marko/compiler/babel-utils";
3
-
4
- export default function write(strings, ...expressions) {
5
- const template = normalizeTemplateString(strings, ...expressions);
6
-
7
- if (template) {
8
- return t.expressionStatement(
9
- t.callExpression(
10
- t.memberExpression(t.identifier("out"), t.identifier("w")),
11
- [template],
12
- ),
13
- );
14
- }
15
- }
@@ -1,176 +0,0 @@
1
- import { types as t } from "@marko/compiler";
2
- import {
3
- isLoopTag,
4
- isTransparentTag,
5
- normalizeTemplateString,
6
- } from "@marko/compiler/babel-utils";
7
- const KeyManagerLookup = new WeakMap();
8
-
9
- /**
10
- * @returns {KeyManager}
11
- */
12
- export function getKeyManager(path) {
13
- const { hub } = path;
14
- return (
15
- KeyManagerLookup.get(hub) ||
16
- KeyManagerLookup.set(hub, new KeyManager()).get(hub)
17
- );
18
- }
19
-
20
- export function hasAutoKey(path) {
21
- const key = path.get("key").node;
22
- return Boolean(key && key._isAutoKey);
23
- }
24
-
25
- export function hasUserKey(path) {
26
- return path.node._hasUserKey;
27
- }
28
-
29
- class KeyManager {
30
- constructor() {
31
- this._nextKey = 0;
32
- }
33
-
34
- nextKey() {
35
- return Object.assign(t.stringLiteral(String(this._nextKey++)), {
36
- _isAutoKey: true,
37
- });
38
- }
39
-
40
- resolveKey(path) {
41
- if (isLoopTag(path)) {
42
- // Record the first child key if found under a loop.
43
- const firstChildTag = path
44
- .get("body.body")
45
- .find((child) => child.isMarkoTag());
46
- const firstChildKey = firstChildTag && getUserKey(firstChildTag);
47
-
48
- if (firstChildKey) {
49
- const keyValueIdentifier = path.scope.generateUidIdentifier("keyValue");
50
- firstChildTag.set("key", keyValueIdentifier);
51
- firstChildTag.insertBefore(
52
- t.variableDeclaration("const", [
53
- t.variableDeclarator(keyValueIdentifier, firstChildKey),
54
- ]),
55
- );
56
-
57
- path.set("keyValue", keyValueIdentifier);
58
- path.get("body").scope.crawl();
59
- }
60
- return;
61
- }
62
-
63
- if (isTransparentTag(path)) {
64
- return;
65
- }
66
-
67
- if (getUserKey(path)) {
68
- return;
69
- }
70
-
71
- const parentKeyScope = getParentKeyScope(path);
72
- const autoKey = path.get("key").node || this.nextKey();
73
- path.set(
74
- "key",
75
- parentKeyScope
76
- ? t.binaryExpression("+", autoKey, parentKeyScope)
77
- : autoKey,
78
- );
79
- }
80
- }
81
-
82
- function getParentKeyScope(path) {
83
- const parentLoopTag = path.findParent(isLoopTag);
84
- return parentLoopTag && getKeyScope(parentLoopTag);
85
- }
86
-
87
- function getKeyScope(path) {
88
- const existingKeyScope = path.get("keyScope").node;
89
- if (existingKeyScope) {
90
- return existingKeyScope;
91
- }
92
-
93
- const keyScopeIdentifier = path.scope.generateUidIdentifier("keyScope");
94
- const firstChildKeyValue = path.get("keyValue").node;
95
-
96
- if (firstChildKeyValue) {
97
- const valuePath = path
98
- .get("body")
99
- .scope.getOwnBinding(firstChildKeyValue.name).path;
100
- const declarationPath = valuePath.parentPath;
101
- declarationPath.pushContainer(
102
- "declarations",
103
- t.variableDeclarator(
104
- keyScopeIdentifier,
105
- normalizeTemplateString`[${firstChildKeyValue}]`,
106
- ),
107
- );
108
- } else {
109
- let keyValue;
110
-
111
- if (path.get("name.value").node === "for") {
112
- if (path.node.attributes.some((attr) => attr.name === "of")) {
113
- keyValue = path.node.body.params[1];
114
- } else {
115
- keyValue = path.node.body.params[0];
116
- }
117
- }
118
-
119
- if (!keyValue) {
120
- const keyValueIdentifier = path.scope.generateUidIdentifier("keyValue");
121
- path.insertBefore(
122
- t.variableDeclaration("let", [
123
- t.variableDeclarator(keyValueIdentifier, t.numericLiteral(0)),
124
- ]),
125
- );
126
-
127
- keyValue = t.updateExpression("++", keyValueIdentifier);
128
- }
129
-
130
- const parentKeyScope = getParentKeyScope(path);
131
- if (parentKeyScope) {
132
- keyValue = t.binaryExpression("+", keyValue, parentKeyScope);
133
- }
134
-
135
- const keyScopeDecl = t.variableDeclaration("const", [
136
- t.variableDeclarator(
137
- keyScopeIdentifier,
138
- normalizeTemplateString`[${keyValue}]`,
139
- ),
140
- ]);
141
-
142
- if (path.node.attributeTags.length) {
143
- path.unshiftContainer("attributeTags", keyScopeDecl);
144
- } else {
145
- path.get("body").unshiftContainer("body", keyScopeDecl);
146
- }
147
- }
148
-
149
- path.set("keyScope", keyScopeIdentifier);
150
- return keyScopeIdentifier;
151
- }
152
-
153
- function getUserKey(path) {
154
- if (hasAutoKey(path)) {
155
- return undefined;
156
- }
157
-
158
- let key = path.get("key").node;
159
- if (key === undefined) {
160
- const keyAttr = path
161
- .get("attributes")
162
- .find((attr) => attr.get("name").node === "key");
163
-
164
- if (keyAttr) {
165
- key = normalizeTemplateString`@${keyAttr.get("value").node}`;
166
- path.node._hasUserKey = true;
167
- keyAttr.remove();
168
- } else {
169
- key = null;
170
- }
171
-
172
- path.set("key", key);
173
- }
174
-
175
- return key;
176
- }
@@ -1,52 +0,0 @@
1
- import { normalizeTemplateString } from "@marko/compiler/babel-utils";
2
-
3
- const mergeWriteCallsVisitor = {
4
- ExpressionStatement(path) {
5
- let curPath = path;
6
- const quasis = [""];
7
- const expressions = [];
8
- const removals = [];
9
-
10
- do {
11
- const content = getOutContent(curPath);
12
- if (!content) break;
13
- if (curPath !== path) removals.push(curPath);
14
- quasis.push("");
15
- expressions.push(content);
16
- } while ((curPath = curPath.getNextSibling()));
17
-
18
- removals.forEach((removal) => removal.remove());
19
-
20
- if (expressions.length > 1) {
21
- path
22
- .get("expression.arguments.0")
23
- .replaceWith(normalizeTemplateString(quasis, ...expressions));
24
- }
25
- },
26
- };
27
-
28
- export function optimizeHTMLWrites(path) {
29
- const {
30
- hub: {
31
- file: { markoOpts },
32
- },
33
- } = path;
34
-
35
- if (markoOpts.optimize && markoOpts.output === "html") {
36
- path.traverse(mergeWriteCallsVisitor);
37
- }
38
- }
39
-
40
- function getOutContent(path) {
41
- if (path.isExpressionStatement()) {
42
- return getOutContent(path.get("expression"));
43
- }
44
-
45
- return (
46
- path.isCallExpression() &&
47
- path.get("callee").isMemberExpression() &&
48
- path.get("callee.object.name").node === "out" &&
49
- path.get("callee.property.name").node === "w" &&
50
- path.get("arguments.0").node
51
- );
52
- }