marko 5.37.6 → 6.0.0-3.12

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 (648) 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 +2111 -0
  8. package/dist/debug/dom.mjs +2088 -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 +9134 -490
  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/index.d.ts +30 -261
  124. package/package.json +40 -67
  125. package/tag-types/const.d.marko +7 -0
  126. package/tag-types/debug.d.marko +5 -0
  127. package/tag-types/define.d.marko +5 -0
  128. package/tag-types/do.d.marko +5 -0
  129. package/tag-types/effect.d.marko +5 -0
  130. package/tag-types/id.d.marko +3 -0
  131. package/tag-types/let.d.marko +8 -0
  132. package/tag-types/lifecycle.d.marko +7 -0
  133. package/tag-types/log.d.marko +5 -0
  134. package/tag-types/script.d.marko +5 -0
  135. package/tags-html.d.ts +85 -5
  136. package/README.md +0 -161
  137. package/bin/markoc +0 -2
  138. package/bin/markoc.js +0 -441
  139. package/browser-refresh.js +0 -5
  140. package/compiler-browser.marko +0 -15
  141. package/compiler.js +0 -7
  142. package/components-browser.marko +0 -15
  143. package/components.js +0 -7
  144. package/dist/build.json +0 -3
  145. package/dist/compiler/config.js +0 -45
  146. package/dist/compiler/index.js +0 -164
  147. package/dist/compiler/modules.js +0 -5
  148. package/dist/core-tags/components/init-components-tag.js +0 -54
  149. package/dist/core-tags/components/preferred-script-location-tag.js +0 -25
  150. package/dist/core-tags/components/preserve-tag.js +0 -1
  151. package/dist/core-tags/core/__flush_here_and_after__.js +0 -44
  152. package/dist/core-tags/core/await/AsyncValue.js +0 -121
  153. package/dist/core-tags/core/await/client-reorder-runtime.js +0 -51
  154. package/dist/core-tags/core/await/index.d.marko +0 -10
  155. package/dist/core-tags/core/await/renderer.js +0 -249
  156. package/dist/core-tags/core/await/reorderer-renderer.js +0 -156
  157. package/dist/index.js +0 -4
  158. package/dist/node-require/browser-refresh.js +0 -1
  159. package/dist/node-require/hot-reload.js +0 -45
  160. package/dist/node-require/index.js +0 -103
  161. package/dist/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  162. package/dist/node_modules/@internal/components-beginComponent/index.js +0 -84
  163. package/dist/node_modules/@internal/components-beginComponent/package.json +0 -11
  164. package/dist/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  165. package/dist/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  166. package/dist/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  167. package/dist/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  168. package/dist/node_modules/@internal/components-endComponent/index.js +0 -11
  169. package/dist/node_modules/@internal/components-endComponent/package.json +0 -11
  170. package/dist/node_modules/@internal/components-entry/index-browser.js +0 -11
  171. package/dist/node_modules/@internal/components-entry/index.js +0 -301
  172. package/dist/node_modules/@internal/components-entry/package.json +0 -11
  173. package/dist/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  174. package/dist/node_modules/@internal/components-entry-legacy/index.js +0 -16
  175. package/dist/node_modules/@internal/components-entry-legacy/package.json +0 -11
  176. package/dist/node_modules/@internal/components-registry/index-browser.js +0 -586
  177. package/dist/node_modules/@internal/components-registry/index.js +0 -44
  178. package/dist/node_modules/@internal/components-registry/package.json +0 -11
  179. package/dist/node_modules/@internal/components-util/index-browser.js +0 -152
  180. package/dist/node_modules/@internal/components-util/index.js +0 -71
  181. package/dist/node_modules/@internal/components-util/package.json +0 -11
  182. package/dist/node_modules/@internal/create-readable/index-browser.js +0 -30
  183. package/dist/node_modules/@internal/create-readable/index.js +0 -57
  184. package/dist/node_modules/@internal/create-readable/package.json +0 -11
  185. package/dist/node_modules/@internal/loader/fallback-node.js +0 -89
  186. package/dist/node_modules/@internal/loader/index-browser.js +0 -2
  187. package/dist/node_modules/@internal/loader/index.js +0 -23
  188. package/dist/node_modules/@internal/loader/package.json +0 -10
  189. package/dist/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  190. package/dist/node_modules/@internal/preserve-tag/index.js +0 -34
  191. package/dist/node_modules/@internal/preserve-tag/package.json +0 -11
  192. package/dist/node_modules/@internal/require/index-browser.js +0 -15
  193. package/dist/node_modules/@internal/require/index-legacy-browser.js +0 -20
  194. package/dist/node_modules/@internal/require/index-webpack.js +0 -16
  195. package/dist/node_modules/@internal/require/index.js +0 -15
  196. package/dist/node_modules/@internal/require/package.json +0 -11
  197. package/dist/node_modules/@internal/set-immediate/index-browser.js +0 -19
  198. package/dist/node_modules/@internal/set-immediate/index-worker.js +0 -31
  199. package/dist/node_modules/@internal/set-immediate/index.js +0 -3
  200. package/dist/node_modules/@internal/set-immediate/package.json +0 -11
  201. package/dist/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  202. package/dist/runtime/RenderResult.js +0 -112
  203. package/dist/runtime/components/Component.js +0 -663
  204. package/dist/runtime/components/ComponentDef.js +0 -169
  205. package/dist/runtime/components/ComponentsContext.js +0 -59
  206. package/dist/runtime/components/GlobalComponentsContext.js +0 -10
  207. package/dist/runtime/components/KeySequence.js +0 -16
  208. package/dist/runtime/components/ServerComponent.js +0 -73
  209. package/dist/runtime/components/State.js +0 -101
  210. package/dist/runtime/components/attach-detach.js +0 -60
  211. package/dist/runtime/components/defineComponent.js +0 -60
  212. package/dist/runtime/components/dom-data.js +0 -8
  213. package/dist/runtime/components/event-delegation.js +0 -144
  214. package/dist/runtime/components/index.js +0 -1
  215. package/dist/runtime/components/legacy/browser.json +0 -9
  216. package/dist/runtime/components/legacy/defineComponent-legacy.js +0 -27
  217. package/dist/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  218. package/dist/runtime/components/legacy/defineWidget-legacy.js +0 -1
  219. package/dist/runtime/components/legacy/dependencies/html.js +0 -3
  220. package/dist/runtime/components/legacy/dependencies/index.js +0 -177
  221. package/dist/runtime/components/legacy/dependencies/vdom.js +0 -3
  222. package/dist/runtime/components/legacy/index.js +0 -1
  223. package/dist/runtime/components/legacy/jquery.js +0 -52
  224. package/dist/runtime/components/legacy/ready.js +0 -152
  225. package/dist/runtime/components/legacy/renderer-legacy.js +0 -231
  226. package/dist/runtime/components/registry.js +0 -1
  227. package/dist/runtime/components/renderer.js +0 -236
  228. package/dist/runtime/components/update-manager.js +0 -94
  229. package/dist/runtime/createOut.js +0 -13
  230. package/dist/runtime/dom-insert.js +0 -77
  231. package/dist/runtime/events.js +0 -2
  232. package/dist/runtime/helpers/_change-case.js +0 -45
  233. package/dist/runtime/helpers/assign.js +0 -21
  234. package/dist/runtime/helpers/attr-tag.js +0 -43
  235. package/dist/runtime/helpers/class-value.js +0 -30
  236. package/dist/runtime/helpers/dynamic-tag.js +0 -181
  237. package/dist/runtime/helpers/empty-component.js +0 -1
  238. package/dist/runtime/helpers/merge.js +0 -13
  239. package/dist/runtime/helpers/of-fallback.js +0 -4
  240. package/dist/runtime/helpers/render-tag.js +0 -20
  241. package/dist/runtime/helpers/serialize-noop.js +0 -5
  242. package/dist/runtime/helpers/style-value.js +0 -45
  243. package/dist/runtime/helpers/tags-compat/dom-debug.js +0 -1
  244. package/dist/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  245. package/dist/runtime/helpers/tags-compat/dom.js +0 -1
  246. package/dist/runtime/helpers/tags-compat/dom.mjs +0 -4
  247. package/dist/runtime/helpers/tags-compat/html-debug.js +0 -3
  248. package/dist/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  249. package/dist/runtime/helpers/tags-compat/html.js +0 -3
  250. package/dist/runtime/helpers/tags-compat/html.mjs +0 -4
  251. package/dist/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  252. package/dist/runtime/helpers/tags-compat/runtime-html.js +0 -136
  253. package/dist/runtime/helpers/to-string.js +0 -5
  254. package/dist/runtime/html/AsyncStream.js +0 -805
  255. package/dist/runtime/html/BufferedWriter.js +0 -52
  256. package/dist/runtime/html/StringWriter.js +0 -73
  257. package/dist/runtime/html/helpers/_dynamic-attr.js +0 -35
  258. package/dist/runtime/html/helpers/attr.js +0 -80
  259. package/dist/runtime/html/helpers/attrs.js +0 -26
  260. package/dist/runtime/html/helpers/class-attr.js +0 -8
  261. package/dist/runtime/html/helpers/data-marko.js +0 -36
  262. package/dist/runtime/html/helpers/escape-quotes.js +0 -35
  263. package/dist/runtime/html/helpers/escape-script-placeholder.js +0 -24
  264. package/dist/runtime/html/helpers/escape-style-placeholder.js +0 -22
  265. package/dist/runtime/html/helpers/escape-xml.js +0 -21
  266. package/dist/runtime/html/helpers/merge-attrs.js +0 -55
  267. package/dist/runtime/html/helpers/props-script.js +0 -32
  268. package/dist/runtime/html/helpers/style-attr.js +0 -8
  269. package/dist/runtime/html/hot-reload.js +0 -26
  270. package/dist/runtime/html/index.js +0 -33
  271. package/dist/runtime/html/marko-namespace.js +0 -3
  272. package/dist/runtime/renderable.js +0 -194
  273. package/dist/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  274. package/dist/runtime/vdom/VComment.js +0 -24
  275. package/dist/runtime/vdom/VComponent.js +0 -17
  276. package/dist/runtime/vdom/VDocumentFragment.js +0 -34
  277. package/dist/runtime/vdom/VElement.js +0 -375
  278. package/dist/runtime/vdom/VFragment.js +0 -26
  279. package/dist/runtime/vdom/VNode.js +0 -100
  280. package/dist/runtime/vdom/VText.js +0 -25
  281. package/dist/runtime/vdom/helpers/attrs.js +0 -62
  282. package/dist/runtime/vdom/helpers/const-element.js +0 -25
  283. package/dist/runtime/vdom/helpers/merge-attrs.js +0 -16
  284. package/dist/runtime/vdom/hot-reload.js +0 -115
  285. package/dist/runtime/vdom/index.js +0 -30
  286. package/dist/runtime/vdom/is-text-only.js +0 -10
  287. package/dist/runtime/vdom/marko-namespace.js +0 -3
  288. package/dist/runtime/vdom/morphdom/fragment.js +0 -95
  289. package/dist/runtime/vdom/morphdom/helpers.js +0 -42
  290. package/dist/runtime/vdom/morphdom/index.js +0 -741
  291. package/dist/runtime/vdom/parse-html.js +0 -18
  292. package/dist/runtime/vdom/vdom.js +0 -88
  293. package/dist/taglib/index.js +0 -51
  294. package/dist/translator/cdata/index.js +0 -15
  295. package/dist/translator/cdata/index[html].js +0 -15
  296. package/dist/translator/cdata/index[vdom].js +0 -12
  297. package/dist/translator/class.js +0 -65
  298. package/dist/translator/comment/index.js +0 -15
  299. package/dist/translator/comment/index[html].js +0 -17
  300. package/dist/translator/comment/index[vdom].js +0 -3
  301. package/dist/translator/declaration/index.js +0 -15
  302. package/dist/translator/declaration/index[html].js +0 -12
  303. package/dist/translator/declaration/index[vdom].js +0 -3
  304. package/dist/translator/document-type/index.js +0 -15
  305. package/dist/translator/document-type/index[html].js +0 -12
  306. package/dist/translator/document-type/index[vdom].js +0 -3
  307. package/dist/translator/placeholder/index.js +0 -15
  308. package/dist/translator/placeholder/index[html].js +0 -93
  309. package/dist/translator/placeholder/index[vdom].js +0 -22
  310. package/dist/translator/scriptlet.js +0 -4
  311. package/dist/translator/tag/attribute/directives/class.js +0 -42
  312. package/dist/translator/tag/attribute/directives/index.js +0 -15
  313. package/dist/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  314. package/dist/translator/tag/attribute/directives/no-update-body.js +0 -10
  315. package/dist/translator/tag/attribute/directives/no-update-if.js +0 -12
  316. package/dist/translator/tag/attribute/directives/no-update.js +0 -48
  317. package/dist/translator/tag/attribute/directives/style.js +0 -42
  318. package/dist/translator/tag/attribute/index.js +0 -150
  319. package/dist/translator/tag/attribute/modifiers/index.js +0 -7
  320. package/dist/translator/tag/attribute/modifiers/no-update.js +0 -14
  321. package/dist/translator/tag/attribute/modifiers/scoped.js +0 -23
  322. package/dist/translator/tag/attribute-tag.js +0 -149
  323. package/dist/translator/tag/custom-tag.js +0 -146
  324. package/dist/translator/tag/dynamic-tag.js +0 -74
  325. package/dist/translator/tag/index.js +0 -287
  326. package/dist/translator/tag/macro-tag.js +0 -7
  327. package/dist/translator/tag/native-tag.js +0 -27
  328. package/dist/translator/tag/native-tag[html]/attributes.js +0 -151
  329. package/dist/translator/tag/native-tag[html]/index.js +0 -221
  330. package/dist/translator/tag/native-tag[vdom]/attributes.js +0 -105
  331. package/dist/translator/tag/native-tag[vdom]/index.js +0 -189
  332. package/dist/translator/tag/util.js +0 -246
  333. package/dist/translator/taglib/core/conditional/translate-else-if.js +0 -20
  334. package/dist/translator/taglib/core/conditional/translate-else.js +0 -20
  335. package/dist/translator/taglib/core/conditional/translate-if.js +0 -8
  336. package/dist/translator/taglib/core/conditional/util.js +0 -41
  337. package/dist/translator/taglib/core/index.js +0 -474
  338. package/dist/translator/taglib/core/macro/parse.js +0 -17
  339. package/dist/translator/taglib/core/macro/translate.js +0 -48
  340. package/dist/translator/taglib/core/parse-class.js +0 -79
  341. package/dist/translator/taglib/core/parse-export.js +0 -14
  342. package/dist/translator/taglib/core/parse-import.js +0 -14
  343. package/dist/translator/taglib/core/parse-module-code.js +0 -18
  344. package/dist/translator/taglib/core/parse-static.js +0 -18
  345. package/dist/translator/taglib/core/transform-style.js +0 -66
  346. package/dist/translator/taglib/core/translate-await.js +0 -41
  347. package/dist/translator/taglib/core/translate-body.js +0 -17
  348. package/dist/translator/taglib/core/translate-for.js +0 -156
  349. package/dist/translator/taglib/core/translate-html-comment.js +0 -52
  350. package/dist/translator/taglib/core/translate-include-content.js +0 -53
  351. package/dist/translator/taglib/core/translate-server-only.js +0 -5
  352. package/dist/translator/taglib/core/translate-while.js +0 -32
  353. package/dist/translator/taglib/index.js +0 -6
  354. package/dist/translator/taglib/migrate/all-templates.js +0 -46
  355. package/dist/translator/taglib/migrate/index.js +0 -5
  356. package/dist/translator/text/index.js +0 -10
  357. package/dist/translator/text/index[html].js +0 -12
  358. package/dist/translator/text/index[vdom].js +0 -20
  359. package/dist/translator/util/add-dependencies.js +0 -329
  360. package/dist/translator/util/escape-regexp.js +0 -4
  361. package/dist/translator/util/get-component-files.js +0 -86
  362. package/dist/translator/util/html-out-write.js +0 -15
  363. package/dist/translator/util/key-manager.js +0 -176
  364. package/dist/translator/util/optimize-html-writes.js +0 -52
  365. package/dist/translator/util/optimize-vdom-create.js +0 -164
  366. package/dist/translator/util/plugin-hooks.js +0 -22
  367. package/dist/translator/util/runtime-flags.js +0 -3
  368. package/dist/translator/util/vdom-out-write.js +0 -10
  369. package/dist/translator/util/with-previous-location.js +0 -6
  370. package/docs/10-awesome-marko-features.md +0 -291
  371. package/docs/body-content.md +0 -355
  372. package/docs/class-components.md +0 -1001
  373. package/docs/cloudflare-workers.md +0 -32
  374. package/docs/compiler-hooks.png +0 -0
  375. package/docs/compiler.md +0 -473
  376. package/docs/component-diagram.afdesign +0 -0
  377. package/docs/component-diagram.svg +0 -87
  378. package/docs/concise.md +0 -141
  379. package/docs/conditionals-and-lists.md +0 -72
  380. package/docs/core-tags.md +0 -325
  381. package/docs/custom-tags.md +0 -201
  382. package/docs/editor-plugins.md +0 -45
  383. package/docs/events.md +0 -131
  384. package/docs/express.md +0 -66
  385. package/docs/fastify.md +0 -65
  386. package/docs/getting-started.md +0 -95
  387. package/docs/http.md +0 -34
  388. package/docs/icons/js.svg +0 -4
  389. package/docs/icons/marko.svg +0 -1
  390. package/docs/icons/ts.svg +0 -1
  391. package/docs/installing.md +0 -51
  392. package/docs/koa.md +0 -35
  393. package/docs/lasso.md +0 -196
  394. package/docs/marko-5-upgrade.md +0 -59
  395. package/docs/marko-json.md +0 -248
  396. package/docs/marko-vs-react.md +0 -854
  397. package/docs/redux.md +0 -61
  398. package/docs/rendering.md +0 -268
  399. package/docs/rollup.md +0 -352
  400. package/docs/state.md +0 -105
  401. package/docs/structure.json +0 -49
  402. package/docs/styles.md +0 -29
  403. package/docs/syntax.md +0 -601
  404. package/docs/troubleshooting-streaming.md +0 -68
  405. package/docs/typescript.md +0 -406
  406. package/docs/vite.md +0 -86
  407. package/docs/webpack.md +0 -205
  408. package/docs/why-is-marko-fast.md +0 -239
  409. package/env.js +0 -7
  410. package/helpers/README.md +0 -3
  411. package/helpers/empty.js +0 -4
  412. package/helpers/notEmpty.js +0 -11
  413. package/index-browser.marko +0 -15
  414. package/index.js +0 -7
  415. package/legacy-components-browser.marko +0 -15
  416. package/legacy-components.js +0 -7
  417. package/node-require.js +0 -8
  418. package/src/build.json +0 -3
  419. package/src/compiler/config.js +0 -45
  420. package/src/compiler/index.js +0 -164
  421. package/src/compiler/modules.js +0 -5
  422. package/src/core-tags/.eslintrc +0 -5
  423. package/src/core-tags/components/init-components-tag.js +0 -54
  424. package/src/core-tags/components/preferred-script-location-tag.js +0 -25
  425. package/src/core-tags/components/preserve-tag.js +0 -1
  426. package/src/core-tags/core/__flush_here_and_after__.js +0 -44
  427. package/src/core-tags/core/await/AsyncValue.js +0 -121
  428. package/src/core-tags/core/await/client-reorder-runtime.js +0 -51
  429. package/src/core-tags/core/await/index.d.marko +0 -10
  430. package/src/core-tags/core/await/renderer.js +0 -249
  431. package/src/core-tags/core/await/reorderer-renderer.js +0 -156
  432. package/src/index.js +0 -4
  433. package/src/node-require/browser-refresh.js +0 -18
  434. package/src/node-require/hot-reload.js +0 -45
  435. package/src/node-require/index.js +0 -103
  436. package/src/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  437. package/src/node_modules/@internal/components-beginComponent/index.js +0 -84
  438. package/src/node_modules/@internal/components-beginComponent/package.json +0 -11
  439. package/src/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  440. package/src/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  441. package/src/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  442. package/src/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  443. package/src/node_modules/@internal/components-endComponent/index.js +0 -11
  444. package/src/node_modules/@internal/components-endComponent/package.json +0 -11
  445. package/src/node_modules/@internal/components-entry/index-browser.js +0 -11
  446. package/src/node_modules/@internal/components-entry/index.js +0 -301
  447. package/src/node_modules/@internal/components-entry/package.json +0 -11
  448. package/src/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  449. package/src/node_modules/@internal/components-entry-legacy/index.js +0 -16
  450. package/src/node_modules/@internal/components-entry-legacy/package.json +0 -11
  451. package/src/node_modules/@internal/components-registry/index-browser.js +0 -586
  452. package/src/node_modules/@internal/components-registry/index.js +0 -44
  453. package/src/node_modules/@internal/components-registry/package.json +0 -11
  454. package/src/node_modules/@internal/components-util/index-browser.js +0 -152
  455. package/src/node_modules/@internal/components-util/index.js +0 -75
  456. package/src/node_modules/@internal/components-util/package.json +0 -11
  457. package/src/node_modules/@internal/create-readable/index-browser.js +0 -30
  458. package/src/node_modules/@internal/create-readable/index.js +0 -57
  459. package/src/node_modules/@internal/create-readable/package.json +0 -11
  460. package/src/node_modules/@internal/loader/fallback-node.js +0 -89
  461. package/src/node_modules/@internal/loader/index-browser.js +0 -2
  462. package/src/node_modules/@internal/loader/index.js +0 -23
  463. package/src/node_modules/@internal/loader/package.json +0 -10
  464. package/src/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  465. package/src/node_modules/@internal/preserve-tag/index.js +0 -34
  466. package/src/node_modules/@internal/preserve-tag/package.json +0 -11
  467. package/src/node_modules/@internal/require/index-browser.js +0 -15
  468. package/src/node_modules/@internal/require/index-legacy-browser.js +0 -20
  469. package/src/node_modules/@internal/require/index-webpack.js +0 -16
  470. package/src/node_modules/@internal/require/index.js +0 -15
  471. package/src/node_modules/@internal/require/package.json +0 -11
  472. package/src/node_modules/@internal/set-immediate/index-browser.js +0 -19
  473. package/src/node_modules/@internal/set-immediate/index-worker.js +0 -31
  474. package/src/node_modules/@internal/set-immediate/index.js +0 -3
  475. package/src/node_modules/@internal/set-immediate/package.json +0 -11
  476. package/src/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  477. package/src/runtime/.eslintrc +0 -5
  478. package/src/runtime/RenderResult.js +0 -112
  479. package/src/runtime/components/Component.js +0 -663
  480. package/src/runtime/components/ComponentDef.js +0 -169
  481. package/src/runtime/components/ComponentsContext.js +0 -59
  482. package/src/runtime/components/GlobalComponentsContext.js +0 -10
  483. package/src/runtime/components/KeySequence.js +0 -16
  484. package/src/runtime/components/ServerComponent.js +0 -73
  485. package/src/runtime/components/State.js +0 -101
  486. package/src/runtime/components/attach-detach.js +0 -60
  487. package/src/runtime/components/defineComponent.js +0 -60
  488. package/src/runtime/components/dom-data.js +0 -8
  489. package/src/runtime/components/event-delegation.js +0 -144
  490. package/src/runtime/components/index.js +0 -1
  491. package/src/runtime/components/legacy/browser.json +0 -9
  492. package/src/runtime/components/legacy/defineComponent-legacy.js +0 -27
  493. package/src/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  494. package/src/runtime/components/legacy/defineWidget-legacy.js +0 -1
  495. package/src/runtime/components/legacy/dependencies/html.js +0 -3
  496. package/src/runtime/components/legacy/dependencies/index.js +0 -177
  497. package/src/runtime/components/legacy/dependencies/vdom.js +0 -3
  498. package/src/runtime/components/legacy/index.js +0 -1
  499. package/src/runtime/components/legacy/jquery.js +0 -52
  500. package/src/runtime/components/legacy/ready.js +0 -152
  501. package/src/runtime/components/legacy/renderer-legacy.js +0 -231
  502. package/src/runtime/components/registry.js +0 -1
  503. package/src/runtime/components/renderer.js +0 -236
  504. package/src/runtime/components/update-manager.js +0 -94
  505. package/src/runtime/createOut.js +0 -13
  506. package/src/runtime/dom-insert.js +0 -77
  507. package/src/runtime/events.js +0 -2
  508. package/src/runtime/helpers/_change-case.js +0 -45
  509. package/src/runtime/helpers/assign.js +0 -21
  510. package/src/runtime/helpers/attr-tag.js +0 -43
  511. package/src/runtime/helpers/class-value.js +0 -30
  512. package/src/runtime/helpers/dynamic-tag.js +0 -181
  513. package/src/runtime/helpers/empty-component.js +0 -1
  514. package/src/runtime/helpers/merge.js +0 -13
  515. package/src/runtime/helpers/of-fallback.js +0 -4
  516. package/src/runtime/helpers/render-tag.js +0 -20
  517. package/src/runtime/helpers/serialize-noop.js +0 -5
  518. package/src/runtime/helpers/style-value.js +0 -45
  519. package/src/runtime/helpers/tags-compat/dom-debug.js +0 -1
  520. package/src/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  521. package/src/runtime/helpers/tags-compat/dom.js +0 -1
  522. package/src/runtime/helpers/tags-compat/dom.mjs +0 -4
  523. package/src/runtime/helpers/tags-compat/html-debug.js +0 -3
  524. package/src/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  525. package/src/runtime/helpers/tags-compat/html.js +0 -3
  526. package/src/runtime/helpers/tags-compat/html.mjs +0 -4
  527. package/src/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  528. package/src/runtime/helpers/tags-compat/runtime-html.js +0 -136
  529. package/src/runtime/helpers/to-string.js +0 -5
  530. package/src/runtime/html/AsyncStream.js +0 -805
  531. package/src/runtime/html/BufferedWriter.js +0 -52
  532. package/src/runtime/html/StringWriter.js +0 -73
  533. package/src/runtime/html/helpers/_dynamic-attr.js +0 -35
  534. package/src/runtime/html/helpers/attr.js +0 -80
  535. package/src/runtime/html/helpers/attrs.js +0 -26
  536. package/src/runtime/html/helpers/class-attr.js +0 -8
  537. package/src/runtime/html/helpers/data-marko.js +0 -36
  538. package/src/runtime/html/helpers/escape-quotes.js +0 -35
  539. package/src/runtime/html/helpers/escape-script-placeholder.js +0 -24
  540. package/src/runtime/html/helpers/escape-style-placeholder.js +0 -22
  541. package/src/runtime/html/helpers/escape-xml.js +0 -21
  542. package/src/runtime/html/helpers/merge-attrs.js +0 -55
  543. package/src/runtime/html/helpers/props-script.js +0 -32
  544. package/src/runtime/html/helpers/style-attr.js +0 -8
  545. package/src/runtime/html/hot-reload.js +0 -26
  546. package/src/runtime/html/index.js +0 -33
  547. package/src/runtime/html/marko-namespace.js +0 -3
  548. package/src/runtime/renderable.js +0 -194
  549. package/src/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  550. package/src/runtime/vdom/VComment.js +0 -24
  551. package/src/runtime/vdom/VComponent.js +0 -17
  552. package/src/runtime/vdom/VDocumentFragment.js +0 -34
  553. package/src/runtime/vdom/VElement.js +0 -375
  554. package/src/runtime/vdom/VFragment.js +0 -26
  555. package/src/runtime/vdom/VNode.js +0 -100
  556. package/src/runtime/vdom/VText.js +0 -25
  557. package/src/runtime/vdom/helpers/attrs.js +0 -62
  558. package/src/runtime/vdom/helpers/const-element.js +0 -25
  559. package/src/runtime/vdom/helpers/merge-attrs.js +0 -16
  560. package/src/runtime/vdom/hot-reload.js +0 -115
  561. package/src/runtime/vdom/index.js +0 -30
  562. package/src/runtime/vdom/is-text-only.js +0 -10
  563. package/src/runtime/vdom/marko-namespace.js +0 -3
  564. package/src/runtime/vdom/morphdom/fragment.js +0 -95
  565. package/src/runtime/vdom/morphdom/helpers.js +0 -42
  566. package/src/runtime/vdom/morphdom/index.js +0 -741
  567. package/src/runtime/vdom/parse-html.js +0 -18
  568. package/src/runtime/vdom/vdom.js +0 -88
  569. package/src/taglib/index.js +0 -51
  570. package/src/translator/cdata/index.js +0 -15
  571. package/src/translator/cdata/index[html].js +0 -15
  572. package/src/translator/cdata/index[vdom].js +0 -12
  573. package/src/translator/class.js +0 -65
  574. package/src/translator/comment/index.js +0 -15
  575. package/src/translator/comment/index[html].js +0 -17
  576. package/src/translator/comment/index[vdom].js +0 -3
  577. package/src/translator/declaration/index.js +0 -15
  578. package/src/translator/declaration/index[html].js +0 -12
  579. package/src/translator/declaration/index[vdom].js +0 -3
  580. package/src/translator/document-type/index.js +0 -15
  581. package/src/translator/document-type/index[html].js +0 -12
  582. package/src/translator/document-type/index[vdom].js +0 -3
  583. package/src/translator/index.js +0 -552
  584. package/src/translator/placeholder/index.js +0 -15
  585. package/src/translator/placeholder/index[html].js +0 -93
  586. package/src/translator/placeholder/index[vdom].js +0 -22
  587. package/src/translator/scriptlet.js +0 -4
  588. package/src/translator/tag/attribute/directives/class.js +0 -42
  589. package/src/translator/tag/attribute/directives/index.js +0 -15
  590. package/src/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  591. package/src/translator/tag/attribute/directives/no-update-body.js +0 -10
  592. package/src/translator/tag/attribute/directives/no-update-if.js +0 -12
  593. package/src/translator/tag/attribute/directives/no-update.js +0 -48
  594. package/src/translator/tag/attribute/directives/style.js +0 -42
  595. package/src/translator/tag/attribute/index.js +0 -150
  596. package/src/translator/tag/attribute/modifiers/index.js +0 -7
  597. package/src/translator/tag/attribute/modifiers/no-update.js +0 -14
  598. package/src/translator/tag/attribute/modifiers/scoped.js +0 -23
  599. package/src/translator/tag/attribute-tag.js +0 -149
  600. package/src/translator/tag/custom-tag.js +0 -146
  601. package/src/translator/tag/dynamic-tag.js +0 -74
  602. package/src/translator/tag/index.js +0 -287
  603. package/src/translator/tag/macro-tag.js +0 -7
  604. package/src/translator/tag/native-tag.js +0 -27
  605. package/src/translator/tag/native-tag[html]/attributes.js +0 -151
  606. package/src/translator/tag/native-tag[html]/index.js +0 -221
  607. package/src/translator/tag/native-tag[vdom]/attributes.js +0 -105
  608. package/src/translator/tag/native-tag[vdom]/index.js +0 -189
  609. package/src/translator/tag/util.js +0 -246
  610. package/src/translator/taglib/core/conditional/translate-else-if.js +0 -20
  611. package/src/translator/taglib/core/conditional/translate-else.js +0 -20
  612. package/src/translator/taglib/core/conditional/translate-if.js +0 -8
  613. package/src/translator/taglib/core/conditional/util.js +0 -41
  614. package/src/translator/taglib/core/index.js +0 -474
  615. package/src/translator/taglib/core/macro/parse.js +0 -17
  616. package/src/translator/taglib/core/macro/translate.js +0 -48
  617. package/src/translator/taglib/core/parse-class.js +0 -79
  618. package/src/translator/taglib/core/parse-export.js +0 -14
  619. package/src/translator/taglib/core/parse-import.js +0 -14
  620. package/src/translator/taglib/core/parse-module-code.js +0 -18
  621. package/src/translator/taglib/core/parse-static.js +0 -18
  622. package/src/translator/taglib/core/transform-style.js +0 -66
  623. package/src/translator/taglib/core/translate-await.js +0 -41
  624. package/src/translator/taglib/core/translate-body.js +0 -17
  625. package/src/translator/taglib/core/translate-for.js +0 -156
  626. package/src/translator/taglib/core/translate-html-comment.js +0 -52
  627. package/src/translator/taglib/core/translate-include-content.js +0 -53
  628. package/src/translator/taglib/core/translate-server-only.js +0 -5
  629. package/src/translator/taglib/core/translate-while.js +0 -32
  630. package/src/translator/taglib/index.js +0 -7
  631. package/src/translator/taglib/migrate/all-templates.js +0 -46
  632. package/src/translator/taglib/migrate/index.js +0 -5
  633. package/src/translator/text/index.js +0 -10
  634. package/src/translator/text/index[html].js +0 -12
  635. package/src/translator/text/index[vdom].js +0 -20
  636. package/src/translator/util/add-dependencies.js +0 -329
  637. package/src/translator/util/escape-regexp.js +0 -4
  638. package/src/translator/util/get-component-files.js +0 -86
  639. package/src/translator/util/html-out-write.js +0 -15
  640. package/src/translator/util/key-manager.js +0 -176
  641. package/src/translator/util/optimize-html-writes.js +0 -52
  642. package/src/translator/util/optimize-vdom-create.js +0 -164
  643. package/src/translator/util/plugin-hooks.js +0 -22
  644. package/src/translator/util/runtime-flags.js +0 -3
  645. package/src/translator/util/vdom-out-write.js +0 -10
  646. package/src/translator/util/with-previous-location.js +0 -6
  647. package/translator/index.d.ts +0 -7
  648. package/translator/package.json +0 -5
@@ -1,239 +0,0 @@
1
- # Why is Marko Fast?
2
-
3
- <a href="https://medium.com/@psteeleidem/why-is-marko-fast-a20796cb8ae3">
4
- <img src="https://user-images.githubusercontent.com/1958812/28104838-d0182f48-6691-11e7-808d-d1ae2d0fed6d.png" alt="Marko logo" width="100%" />
5
- </a><br />
6
-
7
- > This article was published in May 2017. You can find the original ["Why is Marko Fast?" article here](https://medium.com/@psteeleidem/why-is-marko-fast-a20796cb8ae3)!
8
-
9
- At eBay we are using [Marko](https://markojs.com/) to render over a billion
10
- requests every day and this has required us to finely tune Marko, our open
11
- source UI library. We have heavily optimized Marko for fast rendering, [advanced
12
- performance
13
- techniques](https://tech.ebayinc.com/engineering/async-fragments-rediscovering-progressive-html-rendering-with-marko/)
14
- and to achieve a minimal page weight (~10kb gzipped). Performance is only one
15
- concern because we have also had to scale Marko to support development across
16
- hundreds of teams in a way that allows developers to efficiently create
17
- maintainable and robust web apps.
18
-
19
- We have created [our own
20
- benchmarks](https://github.com/marko-js/isomorphic-ui-benchmarks) and we have
21
- [added Marko to other
22
- benchmarks](https://github.com/raxjs/server-side-rendering-comparison/pull/11),
23
- but benchmarks cannot always be trusted. While we make every effort to be fair
24
- with our benchmarks, what matters most is performance in real world applications
25
- as opposed to focusing on micro benchmarks. This is one reason that the V8 team
26
- has switched to [a new methodology to measure and understand real-world
27
- JavaScript
28
- performance](https://v8project.blogspot.com/2016/12/how-v8-measures-real-world-performance.html).
29
-
30
- Similarly, we’ve taken a look at how our developers are _actually_ writing their
31
- Marko components and have found patterns that could be further optimized.
32
- Instead of focusing on benchmarks in this article, I want to focus on the
33
- details of optimizations that we have applied to Marko.
34
-
35
- ### Multiple Compilation Outputs
36
-
37
- Marko is an isomorphic UI library that runs on both the server and in the
38
- browser. As [Michael Rawlings](https://medium.com/@mlrawlings) mentioned in
39
- “[Server-side Rendering
40
- Shootout](https://hackernoon.com/server-side-rendering-shootout-with-marko-preact-rax-react-and-vue-25e1ae17800f)”,
41
- when rendering on the server, Marko renders directly to a string representation
42
- of the document (HTML) that can be sent as the HTTP response.
43
-
44
- When rendering in the browser, an HTML string would have to be parsed in order
45
- to update the DOM. For this reason, Marko compiles a view to a program that
46
- renders directly to a virtual document (VDOM) tree that can be used to
47
- efficiently update the real DOM when targeting the browser.
48
-
49
- Given the following template:
50
-
51
- ```marko
52
- <div>Hello ${input.name}!</div>
53
- ```
54
-
55
- #### Compiled for the server
56
-
57
- The compiled output is optimized for streaming HTML output on the server:
58
-
59
- ```js
60
- var marko_template = require("marko/html").t(__filename),
61
- marko_helpers = require("marko/runtime/html/helpers"),
62
- marko_escapeXml = marko_helpers.x;
63
-
64
- function render(input, out) {
65
- out.w("<div>Hello " + marko_escapeXml(input.name) + "!</div>");
66
- }
67
- ```
68
-
69
- #### Compiled for the browser
70
-
71
- <!-- prettier-ignore -->
72
- ```js
73
- var marko_template = require("marko/vdom").t(__filename);
74
-
75
- function render(input, out) {
76
- out
77
- .e("DIV", null, 3)
78
- .t("Hello ")
79
- .t(input.name)
80
- .t("!");
81
- }
82
- ```
83
-
84
- The compiled output is optimized for virtual DOM rendering in the browser:
85
-
86
- ### Modular Runtime
87
-
88
- The Marko runtime is not distributed as a single JavaScript file. Instead, the
89
- Marko compiler generates a JavaScript module that will only import the parts of
90
- the runtime that are actually needed. This allows us to add new features to
91
- Marko without bloating existing applications. For example, given the following
92
- template:
93
-
94
- ```marko
95
- $ var color = 'red';
96
- <div style={backgroundColor: color}></div>
97
- ```
98
-
99
- In the above example, extra runtime code is needed to render the `style` attribute
100
- based on the JavaScript object that is provided. The compiled code that imports
101
- the `styleAttr` helper is shown below:
102
-
103
- ```js
104
- var marko_styleAttr = require("marko/runtime/vdom/helper-styleAttr");
105
-
106
- function render(input, out) {
107
- var color = "red";
108
- out.e(
109
- "DIV",
110
- {
111
- style: marko_styleAttr({
112
- backgroundColor: color,
113
- }),
114
- },
115
- 0,
116
- 4,
117
- );
118
- }
119
- ```
120
-
121
- ### High performance server-side rendering
122
-
123
- Compared to solutions based on JSX that exclusively do virtual DOM rendering,
124
- Marko has a huge advantage for server-side rendering. When rendering to a
125
- virtual DOM tree on the server it’s a two-step process to render HTML:
126
-
127
- - First pass to produce an entire virtual DOM tree in memory
128
- - Second pass to serialize the virtual DOM tree to an HTML string that can then be
129
- sent over the wire (this requires traversing the entire tree structure)
130
-
131
- In contrast, Marko renders directly to an HTML stream in a single pass. There is
132
- no intermediate tree data structure.
133
-
134
- ### Compile-time optimization of static sub-trees
135
-
136
- Given the following template:
137
-
138
- ```marko
139
- <div>This is a <strong>static</strong> node</div>
140
- ```
141
-
142
- Marko will recognize that the template fragment produces the same output every
143
- time and it will thus create the virtual DOM node once as shown in the following
144
- compiled output:
145
-
146
- ```js
147
- var marko_node0 = marko_createElement("DIV", null, 3, ...)
148
- .t("This is a ")
149
- .e("STRONG", null, 1)
150
- .t("static")
151
- .t(" node");
152
-
153
- function render(input, out) {
154
- out.n(marko_node0);
155
- }
156
- ```
157
-
158
- Rendering a static sub-tree has virtually zero cost. In addition, Marko will
159
- skip diffing/patching static sub-trees.
160
-
161
- Similarly, on the server, Marko will merge static parts of the template into a
162
- single string:
163
-
164
- ```js
165
- function render(input, out) {
166
- out.w("<div>This is a <strong>static</strong> node</div>");
167
- }
168
- ```
169
-
170
- ### Compile-time optimization of static attributes
171
-
172
- Marko will also optimize static attributes on dynamic elements.
173
-
174
- Given the following template:
175
-
176
- ```marko
177
- <div.hello>Hello ${input.name}!</div>
178
- ```
179
-
180
- Marko will produce the following compiled output:
181
-
182
- <!-- prettier-ignore -->
183
- ```js
184
- var marko_attrs0 = {
185
- class: "hello"
186
- };
187
-
188
- function render(input, out) {
189
- out
190
- .e("DIV", marko_attrs0, 3)
191
- .t("Hello ")
192
- .t(input.name)
193
- .t("!");
194
- }
195
- ```
196
-
197
- Notice that the attributes object is only created once and it is used for every
198
- render. In addition, no diffing/patching will happen for static attributes.
199
-
200
- ### Smart compiler
201
-
202
- With Marko we favor doing as much at compile-time as possible. This has made our
203
- compiler more complex, but it gives us significant gains at runtime. We have
204
- ~90% code coverage and over 2,000 tests to ensure that the compiler is working
205
- correctly. In addition, in many cases the Marko compiler provides hints to the
206
- runtime for a given template so that the runtime can optimize for specific
207
- patterns. For example, Marko recognizes if an HTML element only has `class`/`id`/`style` defined
208
- and the runtime optimizes for these virtual DOM nodes when doing
209
- diffing/patching (the Marko compiler generates code that flags simple virtual
210
- DOM nodes for targeted diffing/patching logic).
211
-
212
- ### Event delegation
213
-
214
- If you are building a UI component you will likely need to write code to handle
215
- various DOM events (`click`, `submit`, etc.). It is common for developers to write code that
216
- adds DOM event listeners using `dom.addEventListener(...)` or using a library such as jQuery. You can still
217
- do that when building UI components using Marko, but there is overhead in
218
- attaching listeners when lots of components are being initialized. Instead,
219
- Marko recommends using declarative event binding as shown below:
220
-
221
- ```marko
222
- <button type="button" on-click("handleClick")>
223
- Click Me
224
- </button>
225
- ```
226
-
227
- When using declarative event binding, no DOM event listeners are actually
228
- attached for events that bubble. Instead, Marko attaches a single listener on
229
- the root DOM element of the page for each DOM event that bubbles (done at
230
- startup). When Marko receives an event at the root it handles delegating the
231
- event to the appropriate components that are interested in that event. This is
232
- done by looking at the `event.target` property to see where the event originated and then
233
- walking up the tree to find components that need to be notified. As a result,
234
- there is slightly more work that is done when a DOM event is captured at the
235
- root, but this approach uses much less memory and reduces the amount of work
236
- that is done during initialization. The extra overhead of delegating events to
237
- components will not be noticeable so it is a very beneficial optimization.
238
-
239
- _Cover image credit: [Superhero by Gan Khoon Lay from the Noun Project](https://thenounproject.com/search/?q=superhero&i=690775)_
package/env.js DELETED
@@ -1,7 +0,0 @@
1
- var env = process.env || {};
2
- var NODE_ENV = env.NODE_ENV;
3
- var MARKO_DEBUG = env.MARKO_DEBUG;
4
-
5
- exports.isDebug = !(MARKO_DEBUG
6
- ? MARKO_DEBUG === "false" || MARKO_DEBUG === "0"
7
- : NODE_ENV && NODE_ENV !== "development");
package/helpers/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Marko Helpers
2
-
3
- This directory contains helpers that were deprecated in Marko v3. Marko v4/5 no longer adds these helpers to every compiled template, but you can still import them if needed.
package/helpers/empty.js DELETED
@@ -1,4 +0,0 @@
1
- var notEmpty = require("./notEmpty");
2
- module.exports = function empty(o) {
3
- return !notEmpty(o);
4
- };
@@ -1,11 +0,0 @@
1
- module.exports = function (o) {
2
- if (o == null) {
3
- return false;
4
- } else if (Array.isArray(o)) {
5
- return !!o.length;
6
- } else if (o === "") {
7
- return false;
8
- }
9
-
10
- return true;
11
- };
@@ -1,15 +0,0 @@
1
- <module-code(function(require, opts) {
2
- var file = `"./${opts.optimize ? "dist" : "src"}"`;
3
-
4
- if (opts.modules === "cjs") {
5
- return `module.exports = require(${file});\n`;
6
- } else {
7
- return `export * from ${file};\n`;
8
- }
9
- })/>
10
-
11
- // What's going on here? We are using Marko to do JavaScript code generation
12
- // during the module bundling phase to conditionally export either the
13
- // "src" or the "dist" folder based on whether or not we are doing a
14
- // debug or non-debug build. We are using Marko since we know the Marko compiler
15
- // is enabled already (no extra babel transform required).
package/index.js DELETED
@@ -1,7 +0,0 @@
1
- var isDebug = require("./env").isDebug;
2
-
3
- if (isDebug) {
4
- module.exports = require("./src/");
5
- } else {
6
- module.exports = require("./dist/");
7
- }
@@ -1,15 +0,0 @@
1
- <module-code(function(require, opts) {
2
- var file = `"./${opts.optimize ? "dist" : "src"}/runtime/components/legacy"`;
3
-
4
- if (opts.modules === "cjs") {
5
- return `module.exports = require(${file});\n`;
6
- } else {
7
- return `export { default } from ${file};\nexport * from ${file};\n`;
8
- }
9
- })/>
10
-
11
- // What's going on here? We are using Marko to do JavaScript code generation
12
- // during the module bundling phase to conditionally export either the
13
- // "src" or the "dist" folder based on whether or not we are doing a
14
- // debug or non-debug build. We are using Marko since we know the Marko compiler
15
- // is enabled already (no extra babel transform required).
@@ -1,7 +0,0 @@
1
- var isDebug = require("./env").isDebug;
2
-
3
- if (isDebug) {
4
- module.exports = require("./src/runtime/components/legacy");
5
- } else {
6
- module.exports = require("./dist/runtime/components/legacy");
7
- }
package/node-require.js DELETED
@@ -1,8 +0,0 @@
1
- // TODO: Should deprecate and extract into @marko/register
2
- var isDebug = require("./env").isDebug;
3
-
4
- if (isDebug) {
5
- module.exports = require("./src/node-require");
6
- } else {
7
- module.exports = require("./dist/node-require");
8
- }
package/src/build.json DELETED
@@ -1,3 +0,0 @@
1
- {
2
- "isDebug": true
3
- }
@@ -1,45 +0,0 @@
1
- var config;
2
-
3
- var g = typeof window === "undefined" ? global : window;
4
-
5
- if (g.__MARKO_CONFIG) {
6
- config = g.__MARKO_CONFIG;
7
- } else {
8
- config = g.__MARKO_CONFIG = {
9
- // The default output mode for compiled templates
10
- output: "html",
11
-
12
- /**
13
- * Whether the version should be written to the template as a comment e.g.
14
- * // Compiled using marko@4.0.0 - DO NOT EDIT
15
- */
16
- writeVersionComment: true,
17
-
18
- /**
19
- * Whether unrecognized tags should be ignored or not. This flag will
20
- * be enabled by default when compiling XML.
21
- */
22
- ignoreUnrecognizedTags: false,
23
-
24
- /**
25
- * Whether source maps should be output with the compiled templates.
26
- * When `true` a `map` property will be available on the compile result.
27
- * When `"inline"` the sourcemap will be inlined as a comment in the output code.
28
- * When `"both"` both of the above will be used.
29
- */
30
- sourceMaps: false,
31
-
32
- /**
33
- * This option inlines all of the meta data in the template.
34
- * You can also access this metadata via `compile(...).meta`.
35
- * This API is sticking around for compatibility purposes.
36
- */
37
- meta: true,
38
- };
39
-
40
- if (process.env.MARKO_CONFIG) {
41
- Object.assign(config, JSON.parse(process.env.MARKO_CONFIG));
42
- }
43
- }
44
-
45
- module.exports = config;
@@ -1,164 +0,0 @@
1
- "use strict";
2
-
3
- var ok = require("assert").ok;
4
- var fs = require("fs");
5
-
6
- // eslint-disable-next-line no-constant-binary-expression
7
- var complain = "MARKO_DEBUG" && require("complain");
8
- var compiler = require("@marko/compiler");
9
- var extend = require("raptor-util/extend");
10
- var taglib = require("../taglib");
11
- var globalConfig = require("./config");
12
- var defaults = extend({}, globalConfig);
13
-
14
- // eslint-disable-next-line no-constant-condition
15
- if ("MARKO_DEBUG") {
16
- if (
17
- require.main &&
18
- require.main.filename !== require.resolve("../../bin/markoc")
19
- ) {
20
- complain(
21
- "Using `marko/compiler` has been deprecated, please upgrade to the `@marko/compiler` module.",
22
- );
23
- }
24
- }
25
-
26
- var defaultOptionsExportDefinition = {
27
- get: function () {
28
- return globalConfig;
29
- },
30
- enumerable: true,
31
- configurable: false,
32
- };
33
-
34
- Object.defineProperties(exports, {
35
- defaultOptions: defaultOptionsExportDefinition,
36
- config: defaultOptionsExportDefinition,
37
- });
38
-
39
- function configure(newConfig) {
40
- if (!newConfig) {
41
- newConfig = {};
42
- }
43
-
44
- globalConfig = extend({}, defaults);
45
- extend(globalConfig, newConfig);
46
-
47
- compiler.configure(newConfig);
48
- }
49
-
50
- function resultCompat({ code, meta, map }, options = {}) {
51
- if (options.sourceOnly !== false) {
52
- return code;
53
- } else {
54
- return { code, meta, map };
55
- }
56
- }
57
-
58
- function _compile(src, filename, userConfig, callback) {
59
- ok(filename, '"filename" argument is required');
60
- ok(typeof filename === "string", '"filename" argument should be a string');
61
- var options = {};
62
-
63
- extend(options, globalConfig);
64
-
65
- if (userConfig) {
66
- extend(options, userConfig);
67
- }
68
-
69
- if (callback) {
70
- compiler.compile(src, filename, options).then(
71
- (result) => callback(null, resultCompat(result, options)),
72
- (error) => callback(error),
73
- );
74
- } else {
75
- return resultCompat(compiler.compileSync(src, filename, options), options);
76
- }
77
- }
78
-
79
- function compile(src, filename, options, callback) {
80
- if (typeof options === "function") {
81
- callback = options;
82
- options = null;
83
- }
84
-
85
- options = options || {};
86
- options.sourceOnly = options.sourceOnly !== false;
87
-
88
- return _compile(src, filename, options, callback);
89
- }
90
-
91
- function compileForBrowser(src, filename, options, callback) {
92
- if (typeof options === "function") {
93
- callback = options;
94
- options = null;
95
- }
96
-
97
- options = extend(
98
- {
99
- output: "dom",
100
- meta: false,
101
- sourceOnly: false,
102
- },
103
- options,
104
- );
105
-
106
- return compile(src, filename, options, callback);
107
- }
108
-
109
- function compileFile(filename, options, callback) {
110
- if (typeof options === "function") {
111
- callback = options;
112
- options = null;
113
- }
114
-
115
- options = options || {};
116
- options.sourceOnly = options.sourceOnly !== false;
117
-
118
- if (callback) {
119
- fs.readFile(filename, { encoding: "utf8" }, function (err, templateSrc) {
120
- if (err) {
121
- return callback(err);
122
- }
123
-
124
- _compile(templateSrc, filename, options, callback);
125
- });
126
- } else {
127
- let templateSrc = fs.readFileSync(filename, { encoding: "utf8" });
128
- return _compile(templateSrc, filename, options, callback);
129
- }
130
- }
131
-
132
- function compileFileForBrowser(filename, options, callback) {
133
- if (typeof options === "function") {
134
- callback = options;
135
- options = null;
136
- }
137
-
138
- options = extend({ output: "dom", meta: false, sourceOnly: false }, options);
139
- return compileFile(filename, options, callback);
140
- }
141
-
142
- exports.compileFile = compileFile;
143
- exports.compile = compile;
144
- exports.compileForBrowser = compileForBrowser;
145
- exports.compileFileForBrowser = compileFileForBrowser;
146
-
147
- exports.configure = configure;
148
-
149
- exports.taglibLookup = taglib.lookup;
150
- exports.taglibLoader = taglib.loader;
151
- exports.taglibFinder = taglib.finder;
152
- exports.buildTaglibLookup = taglib.lookup.buildLookup;
153
- exports.clearCaches = function clearCaches() {
154
- compiler._clearDefaults();
155
- taglib.clearCache();
156
- };
157
-
158
- exports.registerTaglib = function (filePath) {
159
- ok(typeof filePath === "string", '"filePath" should be a string');
160
- taglib.registerFromFile(filePath);
161
- exports.clearCaches();
162
- };
163
-
164
- exports.isVDOMSupported = true;
@@ -1,5 +0,0 @@
1
- "use strict";
2
-
3
- if (typeof document === "undefined") {
4
- exports.require = require;
5
- }
@@ -1,5 +0,0 @@
1
- {
2
- "env": {
3
- "browser": true
4
- }
5
- }
@@ -1,54 +0,0 @@
1
- "use strict";
2
-
3
- const INIT_COMPONENTS_KEY = Symbol();
4
-
5
- const addComponentsFromContext =
6
- require("../../runtime/components").___addComponentsFromContext;
7
- const getInitComponentsCode =
8
- require("../../runtime/components").___getInitComponentsCode;
9
-
10
- function addComponentsFromOut(source, target) {
11
- const sourceOut = source.out || source;
12
- const targetOut = target || sourceOut;
13
- const componentsContext = sourceOut.___components;
14
- const componentDefs = targetOut.writer.get("componentDefs");
15
- addComponentsFromContext(componentsContext, componentDefs);
16
- }
17
-
18
- function addInitScript(writer) {
19
- const out = writer.state.root;
20
- const componentDefs = writer.get("componentDefs");
21
- writer.script(getInitComponentsCode(out, componentDefs));
22
- }
23
-
24
- module.exports = function render(input, out) {
25
- const $global = out.global;
26
- if ($global[INIT_COMPONENTS_KEY] === undefined) {
27
- $global[INIT_COMPONENTS_KEY] = true;
28
-
29
- out.on("await:finish", addComponentsFromOut);
30
- out.on("___toString", addInitScript);
31
-
32
- if (out.isSync() === true) {
33
- // Generate initialization code for any of the UI components that were
34
- // rendered synchronously
35
- addComponentsFromOut(out);
36
- } else {
37
- // Generate initialization code for any of the UI components that were
38
- // rendered asynchronously, but were outside an `<await>` tag
39
- // (each `<await>` tag will have its own component initialization block)
40
- const asyncOut = out.beginAsync({ last: true, timeout: -1 });
41
- out.onLast(function (next) {
42
- // Ensure we're getting init code starting from the root
43
- let rootOut = out;
44
- while (rootOut._parentOut) {
45
- rootOut = rootOut._parentOut;
46
- }
47
- // Write out all of the component init code from the main out
48
- addComponentsFromOut(rootOut, asyncOut);
49
- asyncOut.end();
50
- next();
51
- });
52
- }
53
- }
54
- };
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- function forceScriptTagAtThisPoint(out) {
4
- const writer = out.writer;
5
-
6
- out.global.___isLastFlush = true;
7
- const htmlSoFar = writer.toString();
8
- out.global.___isLastFlush = undefined;
9
-
10
- writer.clear();
11
- writer.write(htmlSoFar);
12
- }
13
-
14
- module.exports = function render(input, out) {
15
- if (out.isSync() === true) {
16
- forceScriptTagAtThisPoint(out);
17
- } else {
18
- const asyncOut = out.beginAsync({ last: true, timeout: -1 });
19
- out.onLast(function (next) {
20
- forceScriptTagAtThisPoint(asyncOut);
21
- asyncOut.end();
22
- next();
23
- });
24
- }
25
- };
@@ -1 +0,0 @@
1
- module.exports = require("@internal/preserve-tag");
@@ -1,44 +0,0 @@
1
- const BufferedWriter = require("../../runtime/html/BufferedWriter");
2
-
3
- module.exports = function __flushHereAndAfter__(input, out) {
4
- if (out.isSync()) {
5
- // We create an async out that we pinky promise is going to be sync in order to postpone execution of the renderBody.
6
- out._sync = false;
7
- const asyncOut = out.beginAsync({ last: true });
8
- out._sync = true;
9
- asyncOut.sync();
10
- out.onLast(() => {
11
- input.renderBody(asyncOut);
12
- asyncOut.end();
13
- });
14
- } else {
15
- let flushed = false;
16
- const asyncOut = out.beginAsync({ last: true });
17
- const nextWriter = out.writer;
18
-
19
- out.on("___toString", (writer) => {
20
- if (writer instanceof BufferedWriter) {
21
- if (flushed) {
22
- const detachedOut = out.createOut();
23
- detachedOut.sync();
24
- input.renderBody(detachedOut);
25
- writer._content = detachedOut.toString() + writer._content;
26
- } else if (writer.next === nextWriter) {
27
- asyncOut.sync();
28
- input.renderBody(asyncOut);
29
- asyncOut.end();
30
- flushed = true;
31
- }
32
- }
33
- });
34
-
35
- out.onLast(() => {
36
- if (!flushed) {
37
- asyncOut.sync();
38
- input.renderBody(asyncOut);
39
- asyncOut.end();
40
- flushed = true;
41
- }
42
- });
43
- }
44
- };