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
package/docs/redux.md DELETED
@@ -1,61 +0,0 @@
1
- # Redux + Marko
2
-
3
- See the [`marko-redux` sample project](https://github.com/marko-js/examples/tree/master/examples/redux) for a fully-working example.
4
-
5
- ## Installation
6
-
7
- First, save the [`marko`](https://www.npmjs.com/package/marko) and [`redux`](https://www.npmjs.com/package/redux) packages to your project’s dependencies:
8
-
9
- ```bash
10
- npm i marko redux
11
- ```
12
-
13
- ## Usage
14
-
15
- The partial code below shows how a Marko UI component can connect to a Redux store, using Redux’s `store.subscribe()` method and Marko’s `forceUpdate()` method:
16
-
17
- ### `counter.marko`
18
-
19
- ```marko
20
- import store from './store.js';
21
-
22
- class {
23
- onMount () {
24
- store.subscribe(() => {
25
- // Force this UI component to rerender
26
- this.forceUpdate();
27
-
28
- // The UI component will rerender with the new
29
- // state returned by `store.getState()`
30
- //
31
- // You could also force an update like this:
32
- // this.input = store.getState();
33
- });
34
- }
35
- }
36
-
37
- <counter(store.getState()) />
38
- ```
39
-
40
- ### `reducer.js`
41
-
42
- ```js
43
- export default function (state, action) {
44
- state = state || { value: 0 };
45
-
46
- // Additional reducer logic here…
47
-
48
- return state;
49
- }
50
- ```
51
-
52
- ### `store.js`
53
-
54
- In `counter.marko`, the imported store module exports a Redux store created with the following code:
55
-
56
- ```js
57
- import redux from "redux";
58
- import counter from "./reducer.js";
59
-
60
- export default redux.createStore(counter);
61
- ```
package/docs/rendering.md DELETED
@@ -1,268 +0,0 @@
1
- # Rendering
2
-
3
- To render a Marko view, you need to `import` it.
4
-
5
- _example.js_
6
-
7
- ```js
8
- import FancyButton from "./components/fancy-button.marko";
9
- ```
10
-
11
- > **Note:** If you are targeting node.js, you will need to enable the [require extension](./installing.md#require-marko-views) in order to require `.marko` files or you will need to precompile all of your templates using [Marko CLI](https://github.com/marko-js/cli). If you are targeting the browser, you will need to use a bundler like [`lasso`](./lasso.md), [`webpack`](./webpack.md) or [`rollup`](./rollup.md).
12
-
13
- Once you have a view, you can pass input data and render it:
14
-
15
- _example.js_
16
-
17
- ```js
18
- import FancyButton from "./components/fancy-button.marko";
19
- const html = FancyButton.renderToString({ label: "Click me!" });
20
-
21
- console.log(html);
22
- ```
23
-
24
- The data passed to `renderToString` becomes available as `input` in the component, so if `fancy-button.marko` looked like this:
25
-
26
- _./components/fancy-button.marko_
27
-
28
- ```marko
29
- <button>${input.label}</button>
30
- ```
31
-
32
- The output HTML would be:
33
-
34
- ```html
35
- <button>Click me!</button>
36
- ```
37
-
38
- ## Rendering methods
39
-
40
- We used the `renderToString` method above to render the view, but there are a number of different method signatures that can be used to render.
41
-
42
- Many of these methods return a [`RenderResult`](#renderresult) which is an object with helper methods for working with the rendered output.
43
-
44
- ### `renderSync(input)`
45
-
46
- | params | type | description |
47
- | ------------ | ------------------------------- | -------------------------------------- |
48
- | `input` | `Object` | the input data used to render the view |
49
- | return value | [`RenderResult`](#renderresult) | The result of the render |
50
-
51
- Using `renderSync` forces the render to complete synchronously. If a tag attempts to run asynchronously, an error will be thrown.
52
-
53
- ```js
54
- import View from "./view.marko";
55
- var result = View.renderSync({});
56
-
57
- result.appendTo(document.body);
58
- ```
59
-
60
- ### `render(input)`
61
-
62
- | params | type | description |
63
- | ------------ | -------------------------------- | -------------------------------------- |
64
- | `input` | `Object` | the input data used to render the view |
65
- | return value | `AsyncStream`/`AsyncVDOMBuilder` | the async `out` render target |
66
-
67
- The `render` method returns an async `out` which is used to generate HTML on the server or a virtual DOM in the browser. In either case, the async `out` has a `then` method that follows the Promises/A+ spec, so it can be used as if it were a Promise. This promise resolves to a [`RenderResult`](#renderresult).
68
-
69
- ```js
70
- import View from "./view.marko";
71
- var resultPromise = View.render({});
72
-
73
- resultPromise.then((result) => {
74
- result.appendTo(document.body);
75
- });
76
- ```
77
-
78
- ### `render(input, callback)`
79
-
80
- | params | type | description |
81
- | -------------- | -------------------------------- | ---------------------------------------------- |
82
- | `input` | `Object` | the input data used to render the view |
83
- | `callback` | `Function` | a function to call when the render is complete |
84
- | callback value | [`RenderResult`](#renderresult) | The result of the render |
85
- | return value | `AsyncStream`/`AsyncVDOMBuilder` | the async `out` render target |
86
-
87
- ```js
88
- import View from "./view.marko";
89
-
90
- View.render({}, (err, result) => {
91
- result.appendTo(document.body);
92
- });
93
- ```
94
-
95
- ### `render(input, stream)`
96
-
97
- | params | type | description |
98
- | ------------ | -------------------------------- | -------------------------------------- |
99
- | `input` | `Object` | the input data used to render the view |
100
- | `stream` | `WritableStream` | a writeable stream |
101
- | return value | `AsyncStream`/`AsyncVDOMBuilder` | the async `out` render target |
102
-
103
- The HTML output is written to the passed `stream`.
104
-
105
- ```js
106
- import http from "http";
107
- import View from "./view.marko";
108
-
109
- http.createServer((req, res) => {
110
- res.setHeader("content-type", "text/html");
111
- View.render({}, res);
112
- });
113
- ```
114
-
115
- ### `render(input, out)`
116
-
117
- | params | type | description |
118
- | ------------ | -------------------------------- | -------------------------------------- |
119
- | `input` | `Object` | the input data used to render the view |
120
- | `out` | `AsyncStream`/`AsyncVDOMBuilder` | The async `out` to render to |
121
- | return value | `AsyncStream`/`AsyncVDOMBuilder` | The `out` that was passed |
122
-
123
- The `render` method also allows passing an existing async `out`. If you do this, `render` will not automatically end the async `out` (this allows rendering a view in the middle of another view). If the async `out` won't be ended by other means, you are responsible for ending it.
124
-
125
- ```js
126
- import View from "./view.marko";
127
- var out = View.createOut();
128
-
129
- View.render({}, out);
130
-
131
- out.on("finish", () => {
132
- console.log(out.getOutput());
133
- });
134
-
135
- out.end();
136
- ```
137
-
138
- ### `renderToString(input)`
139
-
140
- | params | type | description |
141
- | ------------ | -------- | -------------------------------------- |
142
- | `input` | `Object` | the input data used to render the view |
143
- | return value | `String` | The HTML string produced by the render |
144
-
145
- Returns an HTML string and forces the render to complete synchronously. If a tag attempts to run asynchronously, an error will be thrown.
146
-
147
- ```js
148
- import View from "./view.marko";
149
- var html = View.renderToString({});
150
-
151
- document.body.innerHTML = html;
152
- ```
153
-
154
- ### `renderToString(input, callback)`
155
-
156
- | params | type | description |
157
- | -------------- | ----------- | -------------------------------------- |
158
- | `input` | `Object` | the input data used to render the view |
159
- | callback value | `String` | The HTML string produced by the render |
160
- | return value | `undefined` | N/A |
161
-
162
- An HTML string is passed to the callback.
163
-
164
- ```js
165
- import View from "./view.marko";
166
-
167
- View.renderToString({}, (err, html) => {
168
- document.body.innerHTML = html;
169
- });
170
- ```
171
-
172
- ### `stream(input)`
173
-
174
- The `stream` method returns a Node.js-style stream of the output HTML.
175
-
176
- ```js
177
- import fs from "fs";
178
- import View from "./view.marko";
179
- const writeStream = fs.createWriteStream("output.html");
180
-
181
- View.stream({}).pipe(writeStream);
182
- ```
183
-
184
- This method is available on the server, but not available by default in the browser. If you need to use streams in the browser, you may `import 'marko/stream'` as part of your client-side bundle.
185
-
186
- ## RenderResult
187
-
188
- ### `getComponent()`
189
-
190
- ### `getComponents(selector)`
191
-
192
- ### `afterInsert(doc)`
193
-
194
- ### `getNode(doc)`
195
-
196
- ### `getOutput()`
197
-
198
- ### `appendTo(targetEl)`
199
-
200
- ### `insertAfter(targetEl)`
201
-
202
- ### `insertBefore(targetEl)`
203
-
204
- ### `prependTo(targetEl)`
205
-
206
- ### `replace(targetEl)`
207
-
208
- ### `replaceChildrenOf(targetEl)`
209
-
210
- ## Global data
211
-
212
- If you need to make data available to all rendered views, use the `$global` property on the input data object. This property will be removed from `input` and provided to the template through a variable called `$global`. It is also made available on the `out.global` property.
213
-
214
- Global values persist across renders.
215
-
216
- ```js
217
- View.render({
218
- $global: {
219
- flags: ["mobile"],
220
- },
221
- });
222
- ```
223
-
224
- Within the template you can access `$global` similar to accessing `input`.
225
-
226
- ```marko
227
- <div>
228
- You are on ${$global.flags.includes("mobile") ? "mobile" : "desktop"}
229
- </div>
230
- ```
231
-
232
- > **Note:** `$global` is not available within [`static`](./syntax.md#static-javascript) parts of the template. In order to reference `$global` within the component class you must use `out.global` from one of the lifecycle methods that provide it.
233
-
234
- > **Warning:** Use `$global` with caution; it is visible in any component.
235
-
236
- ### Sending global data to browsers
237
-
238
- ⚠️ To prevent accidentally exposing sensitive data, by default **no keys** in `$global` are sent to browsers. To serialize data to the frontend, name the desired properties in `$global.serializedGlobals`.
239
-
240
- Values must be serializable by [the `warp10` module](https://www.npmjs.com/package/warp10).
241
-
242
- ```js
243
- import Page from "./index.marko";
244
-
245
- app.get("/", (req, res) => {
246
- const ua = req.get("User-Agent");
247
-
248
- Page.render(
249
- {
250
- $global: {
251
- isIos: /iPad|iPhone/.test(ua), // Serialized and available on the server and browser as `$global.isIos`
252
- isAndroid: /Android/.test(ua), // Serialized and available on the server and browser as `$global.isAndroid`
253
- req, // Only available server-side and not serialized, because it’s not in `serializedGlobals`
254
-
255
- serializedGlobals: {
256
- isIos: true, // Tell Marko to serialize `isIos`
257
- isAndroid: true, // Tell Marko to serialize `isAndroid`
258
- },
259
- },
260
- },
261
- res,
262
- );
263
- });
264
- ```
265
-
266
- > **Warning:** Ensure that you serialize only data which is necessary for the browser. Serialization is expensive for both server rendering performance and HTML output size.
267
-
268
- For details, check [#672: “Serialize only input and state on top-level server-rendered UI components”](https://github.com/marko-js/marko/pull/672).
package/docs/rollup.md DELETED
@@ -1,352 +0,0 @@
1
- # Marko + Rollup
2
-
3
- This is Marko’s official integration plugin for [the Rollup bundler](https://rollupjs.org/).
4
-
5
- ## Installation
6
-
7
- ```sh
8
- npm install --save-dev \
9
- @marko/rollup \
10
- rollup \
11
- @rollup/plugin-node-resolve \
12
- @rollup/plugin-commonjs
13
- ```
14
-
15
- > **Note**: The Marko runtime is CommonJS, so don’t forget the `@rollup/plugin-commonjs` package!
16
-
17
- ## Configuration
18
-
19
- `@marko/rollup` exports two methods for use in [Rollup configuration files](https://rollupjs.org/guide/en/#configuration-files): `.browser()` and `.server()`.
20
-
21
- You _probably_ want to use both, since that’ll get you…
22
-
23
- - Automatic [`input` entrypoint configuration](https://rollupjs.org/guide/en/#input) for route-based bundle splitting
24
- - Complete control over asset loading with [the `<rollup>` tag](#rollup-tag)
25
- - The strengths behind why Marko exists in the first place: cooperation between servers and browsers for high performance in both
26
-
27
- > **ProTip**: You _could_ use only `.browser()` or only `.server()` to build a completely client-side-rendered or server-side-rendered app. That would be a little odd, but you could.
28
-
29
- ### Config example
30
-
31
- ```js
32
- import nodeResolve from "@rollup/plugin-node-resolve";
33
- import commonjs from "@rollup/plugin-commonjs";
34
- import marko from "@marko/rollup";
35
-
36
- const sharedPlugins = [
37
- commonjs({
38
- extensions: [".js", ".marko"]
39
- }),
40
- // If using Marko’s `style {}` blocks, you’ll need an appropriate plugin, like npmjs.com/rollup-plugin-postcss
41
- postcss({ external: true })
42
- ]
43
-
44
- const serverAssetsConfig = {
45
- input: "src/start-server.js",
46
- plugins: [
47
- marko.server(),
48
- nodeResolve({ preferBuiltins: true })
49
- ...sharedPlugins
50
- ]
51
- };
52
- const browsersAssetsConfig = {
53
- plugins: [
54
- marko.browser(),
55
- nodeResolve({ browser: true })
56
- ...sharedPlugins
57
- ]
58
- };
59
-
60
- export default [serverAssetsConfig, browsersAssetsConfig];
61
- ```
62
-
63
- ### Advanced config example
64
-
65
- The following configuration file is long and hairy, which may be upsetting to some viewers. However, it does show how to accomplish the following:
66
-
67
- - Support for Rollup’s watch mode
68
- - A bundle analyzer
69
- - The ability to `import` JSON files to use their data
70
- - The ability to `import` image files to use their asset URLs for `img[src]` and such
71
- - Dead-code elimination for development-only code
72
- - Static compression of assets for something like [NGiNX’s `gzip_static`](https://nginx.org/en/docs/http/ngx_http_gzip_static_module.html)
73
- - A CSS preprocessor (Sass, in this case)
74
- - Browserslist to automatically configure:
75
- - Babel for JS transpilation
76
- - Autoprefixer for CSS transpilation
77
-
78
- <details><summary>Big ugly production-esque Rollup config</summary>
79
-
80
- ```js
81
- import { builtinModules } from "module";
82
- import path from "path";
83
- import autoprefixer from "autoprefixer";
84
- import babelPlugin from "@rollup/plugin-babel";
85
- import commonjsPlugin from "@rollup/plugin-commonjs";
86
- import jsonPlugin from "@rollup/plugin-json";
87
- import markoPlugin from "@marko/rollup";
88
- import nodeResolvePlugin from "@rollup/plugin-node-resolve";
89
- import replacePlugin from "@rollup/plugin-replace";
90
- import runPlugin from "@rollup/plugin-run";
91
- import stylesPlugin from "rollup-plugin-styles";
92
- import urlPlugin from "@rollup/plugin-url";
93
- import pkg from "./package.json";
94
-
95
- const __DEV__ = process.env.NODE_ENV === "development";
96
- const __PROD__ = !__DEV__;
97
-
98
- const isWatch = Boolean(process.env.ROLLUP_WATCH);
99
-
100
- const publicPath = "/s/"; // Guess what character is only 5 bits under HPACK
101
- const assetFileNames = "[name]-[hash][extname]";
102
-
103
- const externalDependencies = [
104
- ...Object.keys(pkg.dependencies),
105
- ...builtinModules,
106
- ];
107
-
108
- process.env.SASS_PATH = "./:./node_modules";
109
-
110
- export default (async () => [
111
- compiler("server", {
112
- input: "index.js",
113
- output: {
114
- dir: "built/server/",
115
- assetFileNames: `../browser/${assetFileNames}`,
116
- format: "cjs",
117
- sourcemap: true,
118
- },
119
- external: (id) =>
120
- externalDependencies.some(
121
- (dependency) => id === dependency || id.startsWith(dependency + "/"),
122
- ),
123
- plugins: [isWatch && runPlugin({ execArgv: ["--enable-source-maps"] })],
124
- }),
125
-
126
- compiler("browser", {
127
- output: {
128
- dir: "built/browser/",
129
- chunkFileNames: __PROD__ ? "[name]-[hash].js" : null,
130
- entryFileNames: __PROD__ ? "[name]-[hash].js" : null,
131
- assetFileNames,
132
- sourcemap: true,
133
- sourcemapExcludeSources: __PROD__,
134
- },
135
- plugins: [
136
- stylesPlugin({
137
- mode: "extract",
138
- sourceMap: true,
139
- config: {
140
- target: "browserslist:css",
141
- plugins: [autoprefixer({ env: "css" })],
142
- },
143
- minimize: __PROD__,
144
- url: {
145
- publicPath,
146
- hash: assetFileNames,
147
- },
148
- }),
149
- __PROD__ && (await import("rollup-plugin-terser")).terser(),
150
- __PROD__ &&
151
- (await import("rollup-plugin-gzip")).default({
152
- filter: /\.(?:js|css|svg|json|xml|txt)$/,
153
- minSize: 1024,
154
- gzipOptions: {
155
- level: 9,
156
- memLevel: 9,
157
- },
158
- }),
159
- __PROD__ &&
160
- !isWatch &&
161
- (await import("rollup-plugin-visualizer")).default(),
162
- __PROD__ &&
163
- !isWatch && {
164
- name: "bundle-visualizer-location",
165
- writeBundle() {
166
- console.info(
167
- `📊 Bundle visualizer at \x1b[4;36mfile://${path.join(
168
- __dirname,
169
- "../../",
170
- bundleAnalyzerFilename,
171
- )}\x1b[0m`,
172
- );
173
- },
174
- },
175
- ],
176
- }),
177
- ])();
178
-
179
- function compiler(target, config) {
180
- const isBrowser = target === "browser";
181
- const browserslistEnv = isBrowser ? "js" : "server";
182
- const babelConfig = {
183
- comments: false,
184
- browserslistEnv,
185
- compact: false,
186
- babelrc: false,
187
- caller: { target },
188
- };
189
- if (isBrowser) {
190
- babelConfig.presets = [
191
- [
192
- "@babel/preset-env",
193
- {
194
- browserslistEnv,
195
- bugfixes: true,
196
- },
197
- ],
198
- ];
199
- }
200
-
201
- return {
202
- ...config,
203
- preserveEntrySignatures: false,
204
- plugins: [
205
- markoPlugin[target]({ babelConfig }),
206
- nodeResolvePlugin({
207
- browser: isBrowser,
208
- preferBuiltins: !isBrowser,
209
- }),
210
- commonjsPlugin(),
211
- replacePlugin({
212
- preventAssignment: true,
213
- values: { __DEV__, __PROD__ },
214
- }),
215
- babelPlugin({
216
- babelHelpers: "bundled",
217
- ...babelConfig,
218
- }),
219
- jsonPlugin(),
220
- urlPlugin({
221
- publicPath,
222
- destDir: "built/browser/",
223
- fileName: assetFileNames,
224
- include: "**/*.{svg,png,jpg,jpeg}",
225
- limit: 0, // Never Base64 & inline
226
- emitFiles: !isBrowser,
227
- }),
228
- ...config.plugins,
229
- ],
230
- };
231
- }
232
- ```
233
-
234
- </details>
235
-
236
- ## `<rollup>` tag
237
-
238
- Using both `.server()` and `.browser()` enables **the `<rollup>` tag**, which gives you complete control over how your app loads assets. That lets you do things like:
239
-
240
- - [Critical CSS](https://web.dev/extract-critical-css/) for components as they write out within a kB budget, or [as components first appear on the page](https://jakearchibald.com/2016/link-in-body/#a-simpler-better-way), or any other style-loading mad science
241
- - [`module`/`nomodule` scripts](https://philipwalton.com/articles/using-native-javascript-modules-in-production-today/) for smaller bundles in modern browsers
242
- - [Content-Security Policy `nonce`s](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce) or [Subresource `integrity` hashes](https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity)
243
- - Anything a web page can do, really. You can even combine `<rollup>` with [the `serialize` option](#options.serialize) to be as fancy as you wanna be.
244
-
245
- The `<rollup>` tag provides two [tag parameters](https://markojs.com/docs/syntax/#parameters):
246
-
247
- 1. `entry` is the generated `input` string that the `server` plugin gave to the `browser` plugin. You can use it to find the corresponding entry chunk from Rollup’s `output` (the next parameter).
248
-
249
- 2. `output` is an array of `AssetInfo | ChunkInfo` objects with most of [the data returned from Rollup's `generateBundle` hook](https://rollupjs.org/guide/en/#generatebundle). Some properties are omitted, like `code` and `map`, since they’re often too large to inline directly. However, each chunk also has a `size` property, to let you filter out empty chunks, inline code yourself below a certain size, or other delightful devilishness.
250
-
251
- For example, using the `entry` name and properties of `output` items to load scripts:
252
-
253
- ```marko
254
- <head>
255
- <rollup|entry, output|>
256
- $ const entryChunk = output.find(chunk => chunk.name === entry);
257
-
258
- <if(entryChunk.size /* only load non-empty JS entry points */)>
259
- <for|fileName| of=entryChunk.imports>
260
- <link rel="modulepreload" href=fileName />
261
- </for>
262
-
263
- <script async type="module" src=entryChunk.fileName></script>
264
- </if>
265
- </rollup>
266
- </head>
267
- ```
268
-
269
- > **Note**: It’s up to you to transform the chunk data (also called the **manifest**) into `<link>`s, `<script>`s, and other HTML to load assets. Opting into complete control means we can’t do any of it for you.
270
-
271
- If your Rollup `browser` config contains multiple `output` options, or you have multiple `browser` configs, every `output`’s chunk is passed to the `<rollup>` tag.
272
-
273
- For example, if you have both `esm` and `iife` build outputs configured:
274
-
275
- ```js
276
- {
277
- output: [
278
- { dir: "dist/iife", format: "iife" },
279
- { dir: "dist/esm", format: "esm" },
280
- ];
281
- }
282
- ```
283
-
284
- …you could cross-reference assets from both…
285
-
286
- ```marko
287
- <rollup|entry, iifeOutput, esmOutput|>
288
- $ const iifeEntryChunk = iifeOutput.find(chunk => chunk.name === entry);
289
- $ const esmEntryChunk = esmOutput.find(chunk => chunk.name === entry);
290
-
291
- <script src=esmEntryChunk.fileName type="module" async></script>
292
- <script src=iifeEntryChunk.fileName nomodule async></script>
293
- </rollup>
294
- ```
295
-
296
- …and _boom:_ you now have [a `module`/`nomodule` setup](https://philipwalton.com/articles/using-native-javascript-modules-in-production-today/).
297
-
298
- ## Options
299
-
300
- ### `options.babelConfig`
301
-
302
- Both the `.server()` and `.browser()` plugins accept this option.
303
-
304
- You can manually override the builtin Babel configuration by passing a `babelConfig` object. By default, [Babel’s regular config file resolution](https://babeljs.io/docs/en/config-files) will be used.
305
-
306
- ```js
307
- marko.browser({
308
- babelConfig: {
309
- presets: ["@babel/preset-env"],
310
- },
311
- });
312
- ```
313
-
314
- ### `options.runtimeId`
315
-
316
- Both the `.server()` and `.browser()` plugins accept this option. In fact, you _really_ want to use it with both simultaneously.
317
-
318
- In some cases, you may want to embed multiple isolated copies of Marko on the page. (If you can’t think of why, then don’t worry about this option.)
319
-
320
- Since Marko uses some `window` properties to initialize, multiple instances can cause issues. For example, by default Marko checks `window.$components` for server-rendered hydration. Usually you can change these `window` properties by [rendering with `{ $global: { runtimeId: "MY_MARKO_RUNTIME_ID" } }` as input](https://markojs.com/docs/rendering/#global-data) on the server, but since `@marko/rollup` usually writes the autoinitialization code for you, instead this plugin exposes a `runtimeId` option to automatically set `$global.runtimeId` to initialize properly in the browser:
321
-
322
- ```js
323
- const runtimeId = "MY_MARKO_RUNTIME_ID";
324
- // Make the `runtimeId` the same across `server` and `browser`, or it’ll error!
325
- marko.server({ runtimeId });
326
- marko.browser({ runtimeId });
327
- ```
328
-
329
- ### `options.serialize`
330
-
331
- This option is only available for the `.browser()` plugin. It lets you inspect and transform the `output` chunks before they’re passed to [the `<rollup>` tag](#rollup-tag).
332
-
333
- For example, if you _did_ want to include the `code` property from the Rollup chunk — say, to inline code small enough that it’s not worth the overhead of an HTTP request, you’d try something like the following:
334
-
335
- ```js
336
- marko.browser({
337
- serialize(output) {
338
- return output.map(({ type, fileName, isEntry, code }) =>
339
- type === "asset"
340
- ? { type, fileName }
341
- : {
342
- type,
343
- name,
344
- isEntry,
345
- fileName,
346
- // only inline code chunks below 1kB
347
- inline: code.trim().length < 1024 && code,
348
- },
349
- );
350
- },
351
- });
352
- ```