marko 5.37.6 → 6.0.0-3.11

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/package.json +34 -70
  124. package/tag-types/const.d.marko +7 -0
  125. package/tag-types/debug.d.marko +5 -0
  126. package/tag-types/define.d.marko +5 -0
  127. package/tag-types/do.d.marko +5 -0
  128. package/tag-types/effect.d.marko +5 -0
  129. package/tag-types/id.d.marko +3 -0
  130. package/tag-types/let.d.marko +8 -0
  131. package/tag-types/lifecycle.d.marko +7 -0
  132. package/tag-types/log.d.marko +5 -0
  133. package/tag-types/script.d.marko +5 -0
  134. package/README.md +0 -161
  135. package/bin/markoc +0 -2
  136. package/bin/markoc.js +0 -441
  137. package/browser-refresh.js +0 -5
  138. package/compiler-browser.marko +0 -15
  139. package/compiler.js +0 -7
  140. package/components-browser.marko +0 -15
  141. package/components.js +0 -7
  142. package/dist/build.json +0 -3
  143. package/dist/compiler/config.js +0 -45
  144. package/dist/compiler/index.js +0 -164
  145. package/dist/compiler/modules.js +0 -5
  146. package/dist/core-tags/components/init-components-tag.js +0 -54
  147. package/dist/core-tags/components/preferred-script-location-tag.js +0 -25
  148. package/dist/core-tags/components/preserve-tag.js +0 -1
  149. package/dist/core-tags/core/__flush_here_and_after__.js +0 -44
  150. package/dist/core-tags/core/await/AsyncValue.js +0 -121
  151. package/dist/core-tags/core/await/client-reorder-runtime.js +0 -51
  152. package/dist/core-tags/core/await/index.d.marko +0 -10
  153. package/dist/core-tags/core/await/renderer.js +0 -249
  154. package/dist/core-tags/core/await/reorderer-renderer.js +0 -156
  155. package/dist/index.js +0 -4
  156. package/dist/node-require/browser-refresh.js +0 -1
  157. package/dist/node-require/hot-reload.js +0 -45
  158. package/dist/node-require/index.js +0 -103
  159. package/dist/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  160. package/dist/node_modules/@internal/components-beginComponent/index.js +0 -84
  161. package/dist/node_modules/@internal/components-beginComponent/package.json +0 -11
  162. package/dist/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  163. package/dist/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  164. package/dist/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  165. package/dist/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  166. package/dist/node_modules/@internal/components-endComponent/index.js +0 -11
  167. package/dist/node_modules/@internal/components-endComponent/package.json +0 -11
  168. package/dist/node_modules/@internal/components-entry/index-browser.js +0 -11
  169. package/dist/node_modules/@internal/components-entry/index.js +0 -301
  170. package/dist/node_modules/@internal/components-entry/package.json +0 -11
  171. package/dist/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  172. package/dist/node_modules/@internal/components-entry-legacy/index.js +0 -16
  173. package/dist/node_modules/@internal/components-entry-legacy/package.json +0 -11
  174. package/dist/node_modules/@internal/components-registry/index-browser.js +0 -586
  175. package/dist/node_modules/@internal/components-registry/index.js +0 -44
  176. package/dist/node_modules/@internal/components-registry/package.json +0 -11
  177. package/dist/node_modules/@internal/components-util/index-browser.js +0 -152
  178. package/dist/node_modules/@internal/components-util/index.js +0 -71
  179. package/dist/node_modules/@internal/components-util/package.json +0 -11
  180. package/dist/node_modules/@internal/create-readable/index-browser.js +0 -30
  181. package/dist/node_modules/@internal/create-readable/index.js +0 -57
  182. package/dist/node_modules/@internal/create-readable/package.json +0 -11
  183. package/dist/node_modules/@internal/loader/fallback-node.js +0 -89
  184. package/dist/node_modules/@internal/loader/index-browser.js +0 -2
  185. package/dist/node_modules/@internal/loader/index.js +0 -23
  186. package/dist/node_modules/@internal/loader/package.json +0 -10
  187. package/dist/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  188. package/dist/node_modules/@internal/preserve-tag/index.js +0 -34
  189. package/dist/node_modules/@internal/preserve-tag/package.json +0 -11
  190. package/dist/node_modules/@internal/require/index-browser.js +0 -15
  191. package/dist/node_modules/@internal/require/index-legacy-browser.js +0 -20
  192. package/dist/node_modules/@internal/require/index-webpack.js +0 -16
  193. package/dist/node_modules/@internal/require/index.js +0 -15
  194. package/dist/node_modules/@internal/require/package.json +0 -11
  195. package/dist/node_modules/@internal/set-immediate/index-browser.js +0 -19
  196. package/dist/node_modules/@internal/set-immediate/index-worker.js +0 -31
  197. package/dist/node_modules/@internal/set-immediate/index.js +0 -3
  198. package/dist/node_modules/@internal/set-immediate/package.json +0 -11
  199. package/dist/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  200. package/dist/runtime/RenderResult.js +0 -112
  201. package/dist/runtime/components/Component.js +0 -663
  202. package/dist/runtime/components/ComponentDef.js +0 -169
  203. package/dist/runtime/components/ComponentsContext.js +0 -59
  204. package/dist/runtime/components/GlobalComponentsContext.js +0 -10
  205. package/dist/runtime/components/KeySequence.js +0 -16
  206. package/dist/runtime/components/ServerComponent.js +0 -73
  207. package/dist/runtime/components/State.js +0 -101
  208. package/dist/runtime/components/attach-detach.js +0 -60
  209. package/dist/runtime/components/defineComponent.js +0 -60
  210. package/dist/runtime/components/dom-data.js +0 -8
  211. package/dist/runtime/components/event-delegation.js +0 -144
  212. package/dist/runtime/components/index.js +0 -1
  213. package/dist/runtime/components/legacy/browser.json +0 -9
  214. package/dist/runtime/components/legacy/defineComponent-legacy.js +0 -27
  215. package/dist/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  216. package/dist/runtime/components/legacy/defineWidget-legacy.js +0 -1
  217. package/dist/runtime/components/legacy/dependencies/html.js +0 -3
  218. package/dist/runtime/components/legacy/dependencies/index.js +0 -177
  219. package/dist/runtime/components/legacy/dependencies/vdom.js +0 -3
  220. package/dist/runtime/components/legacy/index.js +0 -1
  221. package/dist/runtime/components/legacy/jquery.js +0 -52
  222. package/dist/runtime/components/legacy/ready.js +0 -152
  223. package/dist/runtime/components/legacy/renderer-legacy.js +0 -231
  224. package/dist/runtime/components/registry.js +0 -1
  225. package/dist/runtime/components/renderer.js +0 -236
  226. package/dist/runtime/components/update-manager.js +0 -94
  227. package/dist/runtime/createOut.js +0 -13
  228. package/dist/runtime/dom-insert.js +0 -77
  229. package/dist/runtime/events.js +0 -2
  230. package/dist/runtime/helpers/_change-case.js +0 -45
  231. package/dist/runtime/helpers/assign.js +0 -21
  232. package/dist/runtime/helpers/attr-tag.js +0 -43
  233. package/dist/runtime/helpers/class-value.js +0 -30
  234. package/dist/runtime/helpers/dynamic-tag.js +0 -181
  235. package/dist/runtime/helpers/empty-component.js +0 -1
  236. package/dist/runtime/helpers/merge.js +0 -13
  237. package/dist/runtime/helpers/of-fallback.js +0 -4
  238. package/dist/runtime/helpers/render-tag.js +0 -20
  239. package/dist/runtime/helpers/serialize-noop.js +0 -5
  240. package/dist/runtime/helpers/style-value.js +0 -45
  241. package/dist/runtime/helpers/tags-compat/dom-debug.js +0 -1
  242. package/dist/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  243. package/dist/runtime/helpers/tags-compat/dom.js +0 -1
  244. package/dist/runtime/helpers/tags-compat/dom.mjs +0 -4
  245. package/dist/runtime/helpers/tags-compat/html-debug.js +0 -3
  246. package/dist/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  247. package/dist/runtime/helpers/tags-compat/html.js +0 -3
  248. package/dist/runtime/helpers/tags-compat/html.mjs +0 -4
  249. package/dist/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  250. package/dist/runtime/helpers/tags-compat/runtime-html.js +0 -136
  251. package/dist/runtime/helpers/to-string.js +0 -5
  252. package/dist/runtime/html/AsyncStream.js +0 -805
  253. package/dist/runtime/html/BufferedWriter.js +0 -52
  254. package/dist/runtime/html/StringWriter.js +0 -73
  255. package/dist/runtime/html/helpers/_dynamic-attr.js +0 -35
  256. package/dist/runtime/html/helpers/attr.js +0 -80
  257. package/dist/runtime/html/helpers/attrs.js +0 -26
  258. package/dist/runtime/html/helpers/class-attr.js +0 -8
  259. package/dist/runtime/html/helpers/data-marko.js +0 -36
  260. package/dist/runtime/html/helpers/escape-quotes.js +0 -35
  261. package/dist/runtime/html/helpers/escape-script-placeholder.js +0 -24
  262. package/dist/runtime/html/helpers/escape-style-placeholder.js +0 -22
  263. package/dist/runtime/html/helpers/escape-xml.js +0 -21
  264. package/dist/runtime/html/helpers/merge-attrs.js +0 -55
  265. package/dist/runtime/html/helpers/props-script.js +0 -32
  266. package/dist/runtime/html/helpers/style-attr.js +0 -8
  267. package/dist/runtime/html/hot-reload.js +0 -26
  268. package/dist/runtime/html/index.js +0 -33
  269. package/dist/runtime/html/marko-namespace.js +0 -3
  270. package/dist/runtime/renderable.js +0 -194
  271. package/dist/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  272. package/dist/runtime/vdom/VComment.js +0 -24
  273. package/dist/runtime/vdom/VComponent.js +0 -17
  274. package/dist/runtime/vdom/VDocumentFragment.js +0 -34
  275. package/dist/runtime/vdom/VElement.js +0 -375
  276. package/dist/runtime/vdom/VFragment.js +0 -26
  277. package/dist/runtime/vdom/VNode.js +0 -100
  278. package/dist/runtime/vdom/VText.js +0 -25
  279. package/dist/runtime/vdom/helpers/attrs.js +0 -62
  280. package/dist/runtime/vdom/helpers/const-element.js +0 -25
  281. package/dist/runtime/vdom/helpers/merge-attrs.js +0 -16
  282. package/dist/runtime/vdom/hot-reload.js +0 -115
  283. package/dist/runtime/vdom/index.js +0 -30
  284. package/dist/runtime/vdom/is-text-only.js +0 -10
  285. package/dist/runtime/vdom/marko-namespace.js +0 -3
  286. package/dist/runtime/vdom/morphdom/fragment.js +0 -95
  287. package/dist/runtime/vdom/morphdom/helpers.js +0 -42
  288. package/dist/runtime/vdom/morphdom/index.js +0 -741
  289. package/dist/runtime/vdom/parse-html.js +0 -18
  290. package/dist/runtime/vdom/vdom.js +0 -88
  291. package/dist/taglib/index.js +0 -51
  292. package/dist/translator/cdata/index.js +0 -15
  293. package/dist/translator/cdata/index[html].js +0 -15
  294. package/dist/translator/cdata/index[vdom].js +0 -12
  295. package/dist/translator/class.js +0 -65
  296. package/dist/translator/comment/index.js +0 -15
  297. package/dist/translator/comment/index[html].js +0 -17
  298. package/dist/translator/comment/index[vdom].js +0 -3
  299. package/dist/translator/declaration/index.js +0 -15
  300. package/dist/translator/declaration/index[html].js +0 -12
  301. package/dist/translator/declaration/index[vdom].js +0 -3
  302. package/dist/translator/document-type/index.js +0 -15
  303. package/dist/translator/document-type/index[html].js +0 -12
  304. package/dist/translator/document-type/index[vdom].js +0 -3
  305. package/dist/translator/placeholder/index.js +0 -15
  306. package/dist/translator/placeholder/index[html].js +0 -93
  307. package/dist/translator/placeholder/index[vdom].js +0 -22
  308. package/dist/translator/scriptlet.js +0 -4
  309. package/dist/translator/tag/attribute/directives/class.js +0 -42
  310. package/dist/translator/tag/attribute/directives/index.js +0 -15
  311. package/dist/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  312. package/dist/translator/tag/attribute/directives/no-update-body.js +0 -10
  313. package/dist/translator/tag/attribute/directives/no-update-if.js +0 -12
  314. package/dist/translator/tag/attribute/directives/no-update.js +0 -48
  315. package/dist/translator/tag/attribute/directives/style.js +0 -42
  316. package/dist/translator/tag/attribute/index.js +0 -150
  317. package/dist/translator/tag/attribute/modifiers/index.js +0 -7
  318. package/dist/translator/tag/attribute/modifiers/no-update.js +0 -14
  319. package/dist/translator/tag/attribute/modifiers/scoped.js +0 -23
  320. package/dist/translator/tag/attribute-tag.js +0 -149
  321. package/dist/translator/tag/custom-tag.js +0 -146
  322. package/dist/translator/tag/dynamic-tag.js +0 -74
  323. package/dist/translator/tag/index.js +0 -287
  324. package/dist/translator/tag/macro-tag.js +0 -7
  325. package/dist/translator/tag/native-tag.js +0 -27
  326. package/dist/translator/tag/native-tag[html]/attributes.js +0 -151
  327. package/dist/translator/tag/native-tag[html]/index.js +0 -221
  328. package/dist/translator/tag/native-tag[vdom]/attributes.js +0 -105
  329. package/dist/translator/tag/native-tag[vdom]/index.js +0 -189
  330. package/dist/translator/tag/util.js +0 -246
  331. package/dist/translator/taglib/core/conditional/translate-else-if.js +0 -20
  332. package/dist/translator/taglib/core/conditional/translate-else.js +0 -20
  333. package/dist/translator/taglib/core/conditional/translate-if.js +0 -8
  334. package/dist/translator/taglib/core/conditional/util.js +0 -41
  335. package/dist/translator/taglib/core/index.js +0 -474
  336. package/dist/translator/taglib/core/macro/parse.js +0 -17
  337. package/dist/translator/taglib/core/macro/translate.js +0 -48
  338. package/dist/translator/taglib/core/parse-class.js +0 -79
  339. package/dist/translator/taglib/core/parse-export.js +0 -14
  340. package/dist/translator/taglib/core/parse-import.js +0 -14
  341. package/dist/translator/taglib/core/parse-module-code.js +0 -18
  342. package/dist/translator/taglib/core/parse-static.js +0 -18
  343. package/dist/translator/taglib/core/transform-style.js +0 -66
  344. package/dist/translator/taglib/core/translate-await.js +0 -41
  345. package/dist/translator/taglib/core/translate-body.js +0 -17
  346. package/dist/translator/taglib/core/translate-for.js +0 -156
  347. package/dist/translator/taglib/core/translate-html-comment.js +0 -52
  348. package/dist/translator/taglib/core/translate-include-content.js +0 -53
  349. package/dist/translator/taglib/core/translate-server-only.js +0 -5
  350. package/dist/translator/taglib/core/translate-while.js +0 -32
  351. package/dist/translator/taglib/index.js +0 -6
  352. package/dist/translator/taglib/migrate/all-templates.js +0 -46
  353. package/dist/translator/taglib/migrate/index.js +0 -5
  354. package/dist/translator/text/index.js +0 -10
  355. package/dist/translator/text/index[html].js +0 -12
  356. package/dist/translator/text/index[vdom].js +0 -20
  357. package/dist/translator/util/add-dependencies.js +0 -329
  358. package/dist/translator/util/escape-regexp.js +0 -4
  359. package/dist/translator/util/get-component-files.js +0 -86
  360. package/dist/translator/util/html-out-write.js +0 -15
  361. package/dist/translator/util/key-manager.js +0 -176
  362. package/dist/translator/util/optimize-html-writes.js +0 -52
  363. package/dist/translator/util/optimize-vdom-create.js +0 -164
  364. package/dist/translator/util/plugin-hooks.js +0 -22
  365. package/dist/translator/util/runtime-flags.js +0 -3
  366. package/dist/translator/util/vdom-out-write.js +0 -10
  367. package/dist/translator/util/with-previous-location.js +0 -6
  368. package/docs/10-awesome-marko-features.md +0 -291
  369. package/docs/body-content.md +0 -355
  370. package/docs/class-components.md +0 -1001
  371. package/docs/cloudflare-workers.md +0 -32
  372. package/docs/compiler-hooks.png +0 -0
  373. package/docs/compiler.md +0 -473
  374. package/docs/component-diagram.afdesign +0 -0
  375. package/docs/component-diagram.svg +0 -87
  376. package/docs/concise.md +0 -141
  377. package/docs/conditionals-and-lists.md +0 -72
  378. package/docs/core-tags.md +0 -325
  379. package/docs/custom-tags.md +0 -201
  380. package/docs/editor-plugins.md +0 -45
  381. package/docs/events.md +0 -131
  382. package/docs/express.md +0 -66
  383. package/docs/fastify.md +0 -65
  384. package/docs/getting-started.md +0 -95
  385. package/docs/http.md +0 -34
  386. package/docs/icons/js.svg +0 -4
  387. package/docs/icons/marko.svg +0 -1
  388. package/docs/icons/ts.svg +0 -1
  389. package/docs/installing.md +0 -51
  390. package/docs/koa.md +0 -35
  391. package/docs/lasso.md +0 -196
  392. package/docs/marko-5-upgrade.md +0 -59
  393. package/docs/marko-json.md +0 -248
  394. package/docs/marko-vs-react.md +0 -854
  395. package/docs/redux.md +0 -61
  396. package/docs/rendering.md +0 -268
  397. package/docs/rollup.md +0 -352
  398. package/docs/state.md +0 -105
  399. package/docs/structure.json +0 -49
  400. package/docs/styles.md +0 -29
  401. package/docs/syntax.md +0 -601
  402. package/docs/troubleshooting-streaming.md +0 -68
  403. package/docs/typescript.md +0 -406
  404. package/docs/vite.md +0 -86
  405. package/docs/webpack.md +0 -205
  406. package/docs/why-is-marko-fast.md +0 -239
  407. package/env.js +0 -7
  408. package/helpers/README.md +0 -3
  409. package/helpers/empty.js +0 -4
  410. package/helpers/notEmpty.js +0 -11
  411. package/index-browser.marko +0 -15
  412. package/index.d.ts +0 -375
  413. package/index.js +0 -7
  414. package/legacy-components-browser.marko +0 -15
  415. package/legacy-components.js +0 -7
  416. package/node-require.js +0 -8
  417. package/src/build.json +0 -3
  418. package/src/compiler/config.js +0 -45
  419. package/src/compiler/index.js +0 -164
  420. package/src/compiler/modules.js +0 -5
  421. package/src/core-tags/.eslintrc +0 -5
  422. package/src/core-tags/components/init-components-tag.js +0 -54
  423. package/src/core-tags/components/preferred-script-location-tag.js +0 -25
  424. package/src/core-tags/components/preserve-tag.js +0 -1
  425. package/src/core-tags/core/__flush_here_and_after__.js +0 -44
  426. package/src/core-tags/core/await/AsyncValue.js +0 -121
  427. package/src/core-tags/core/await/client-reorder-runtime.js +0 -51
  428. package/src/core-tags/core/await/index.d.marko +0 -10
  429. package/src/core-tags/core/await/renderer.js +0 -249
  430. package/src/core-tags/core/await/reorderer-renderer.js +0 -156
  431. package/src/index.js +0 -4
  432. package/src/node-require/browser-refresh.js +0 -18
  433. package/src/node-require/hot-reload.js +0 -45
  434. package/src/node-require/index.js +0 -103
  435. package/src/node_modules/@internal/components-beginComponent/index-browser.js +0 -23
  436. package/src/node_modules/@internal/components-beginComponent/index.js +0 -84
  437. package/src/node_modules/@internal/components-beginComponent/package.json +0 -11
  438. package/src/node_modules/@internal/components-define-widget-legacy/index-browser.js +0 -335
  439. package/src/node_modules/@internal/components-define-widget-legacy/index.js +0 -18
  440. package/src/node_modules/@internal/components-define-widget-legacy/package.json +0 -11
  441. package/src/node_modules/@internal/components-endComponent/index-browser.js +0 -5
  442. package/src/node_modules/@internal/components-endComponent/index.js +0 -11
  443. package/src/node_modules/@internal/components-endComponent/package.json +0 -11
  444. package/src/node_modules/@internal/components-entry/index-browser.js +0 -11
  445. package/src/node_modules/@internal/components-entry/index.js +0 -301
  446. package/src/node_modules/@internal/components-entry/package.json +0 -11
  447. package/src/node_modules/@internal/components-entry-legacy/index-browser.js +0 -76
  448. package/src/node_modules/@internal/components-entry-legacy/index.js +0 -16
  449. package/src/node_modules/@internal/components-entry-legacy/package.json +0 -11
  450. package/src/node_modules/@internal/components-registry/index-browser.js +0 -586
  451. package/src/node_modules/@internal/components-registry/index.js +0 -44
  452. package/src/node_modules/@internal/components-registry/package.json +0 -11
  453. package/src/node_modules/@internal/components-util/index-browser.js +0 -152
  454. package/src/node_modules/@internal/components-util/index.js +0 -75
  455. package/src/node_modules/@internal/components-util/package.json +0 -11
  456. package/src/node_modules/@internal/create-readable/index-browser.js +0 -30
  457. package/src/node_modules/@internal/create-readable/index.js +0 -57
  458. package/src/node_modules/@internal/create-readable/package.json +0 -11
  459. package/src/node_modules/@internal/loader/fallback-node.js +0 -89
  460. package/src/node_modules/@internal/loader/index-browser.js +0 -2
  461. package/src/node_modules/@internal/loader/index.js +0 -23
  462. package/src/node_modules/@internal/loader/package.json +0 -10
  463. package/src/node_modules/@internal/preserve-tag/index-browser.js +0 -46
  464. package/src/node_modules/@internal/preserve-tag/index.js +0 -34
  465. package/src/node_modules/@internal/preserve-tag/package.json +0 -11
  466. package/src/node_modules/@internal/require/index-browser.js +0 -15
  467. package/src/node_modules/@internal/require/index-legacy-browser.js +0 -20
  468. package/src/node_modules/@internal/require/index-webpack.js +0 -16
  469. package/src/node_modules/@internal/require/index.js +0 -15
  470. package/src/node_modules/@internal/require/package.json +0 -11
  471. package/src/node_modules/@internal/set-immediate/index-browser.js +0 -19
  472. package/src/node_modules/@internal/set-immediate/index-worker.js +0 -31
  473. package/src/node_modules/@internal/set-immediate/index.js +0 -3
  474. package/src/node_modules/@internal/set-immediate/package.json +0 -11
  475. package/src/node_modules/@internal/set-immediate/queueMicrotask.js +0 -8
  476. package/src/runtime/.eslintrc +0 -5
  477. package/src/runtime/RenderResult.js +0 -112
  478. package/src/runtime/components/Component.js +0 -663
  479. package/src/runtime/components/ComponentDef.js +0 -169
  480. package/src/runtime/components/ComponentsContext.js +0 -59
  481. package/src/runtime/components/GlobalComponentsContext.js +0 -10
  482. package/src/runtime/components/KeySequence.js +0 -16
  483. package/src/runtime/components/ServerComponent.js +0 -73
  484. package/src/runtime/components/State.js +0 -101
  485. package/src/runtime/components/attach-detach.js +0 -60
  486. package/src/runtime/components/defineComponent.js +0 -60
  487. package/src/runtime/components/dom-data.js +0 -8
  488. package/src/runtime/components/event-delegation.js +0 -144
  489. package/src/runtime/components/index.js +0 -1
  490. package/src/runtime/components/legacy/browser.json +0 -9
  491. package/src/runtime/components/legacy/defineComponent-legacy.js +0 -27
  492. package/src/runtime/components/legacy/defineRenderer-legacy.js +0 -171
  493. package/src/runtime/components/legacy/defineWidget-legacy.js +0 -1
  494. package/src/runtime/components/legacy/dependencies/html.js +0 -3
  495. package/src/runtime/components/legacy/dependencies/index.js +0 -177
  496. package/src/runtime/components/legacy/dependencies/vdom.js +0 -3
  497. package/src/runtime/components/legacy/index.js +0 -1
  498. package/src/runtime/components/legacy/jquery.js +0 -52
  499. package/src/runtime/components/legacy/ready.js +0 -152
  500. package/src/runtime/components/legacy/renderer-legacy.js +0 -231
  501. package/src/runtime/components/registry.js +0 -1
  502. package/src/runtime/components/renderer.js +0 -236
  503. package/src/runtime/components/update-manager.js +0 -94
  504. package/src/runtime/createOut.js +0 -13
  505. package/src/runtime/dom-insert.js +0 -77
  506. package/src/runtime/events.js +0 -2
  507. package/src/runtime/helpers/_change-case.js +0 -45
  508. package/src/runtime/helpers/assign.js +0 -21
  509. package/src/runtime/helpers/attr-tag.js +0 -43
  510. package/src/runtime/helpers/class-value.js +0 -30
  511. package/src/runtime/helpers/dynamic-tag.js +0 -181
  512. package/src/runtime/helpers/empty-component.js +0 -1
  513. package/src/runtime/helpers/merge.js +0 -13
  514. package/src/runtime/helpers/of-fallback.js +0 -4
  515. package/src/runtime/helpers/render-tag.js +0 -20
  516. package/src/runtime/helpers/serialize-noop.js +0 -5
  517. package/src/runtime/helpers/style-value.js +0 -45
  518. package/src/runtime/helpers/tags-compat/dom-debug.js +0 -1
  519. package/src/runtime/helpers/tags-compat/dom-debug.mjs +0 -4
  520. package/src/runtime/helpers/tags-compat/dom.js +0 -1
  521. package/src/runtime/helpers/tags-compat/dom.mjs +0 -4
  522. package/src/runtime/helpers/tags-compat/html-debug.js +0 -3
  523. package/src/runtime/helpers/tags-compat/html-debug.mjs +0 -4
  524. package/src/runtime/helpers/tags-compat/html.js +0 -3
  525. package/src/runtime/helpers/tags-compat/html.mjs +0 -4
  526. package/src/runtime/helpers/tags-compat/runtime-dom.js +0 -239
  527. package/src/runtime/helpers/tags-compat/runtime-html.js +0 -136
  528. package/src/runtime/helpers/to-string.js +0 -5
  529. package/src/runtime/html/AsyncStream.js +0 -805
  530. package/src/runtime/html/BufferedWriter.js +0 -52
  531. package/src/runtime/html/StringWriter.js +0 -73
  532. package/src/runtime/html/helpers/_dynamic-attr.js +0 -35
  533. package/src/runtime/html/helpers/attr.js +0 -80
  534. package/src/runtime/html/helpers/attrs.js +0 -26
  535. package/src/runtime/html/helpers/class-attr.js +0 -8
  536. package/src/runtime/html/helpers/data-marko.js +0 -36
  537. package/src/runtime/html/helpers/escape-quotes.js +0 -35
  538. package/src/runtime/html/helpers/escape-script-placeholder.js +0 -24
  539. package/src/runtime/html/helpers/escape-style-placeholder.js +0 -22
  540. package/src/runtime/html/helpers/escape-xml.js +0 -21
  541. package/src/runtime/html/helpers/merge-attrs.js +0 -55
  542. package/src/runtime/html/helpers/props-script.js +0 -32
  543. package/src/runtime/html/helpers/style-attr.js +0 -8
  544. package/src/runtime/html/hot-reload.js +0 -26
  545. package/src/runtime/html/index.js +0 -33
  546. package/src/runtime/html/marko-namespace.js +0 -3
  547. package/src/runtime/renderable.js +0 -194
  548. package/src/runtime/vdom/AsyncVDOMBuilder.js +0 -456
  549. package/src/runtime/vdom/VComment.js +0 -24
  550. package/src/runtime/vdom/VComponent.js +0 -17
  551. package/src/runtime/vdom/VDocumentFragment.js +0 -34
  552. package/src/runtime/vdom/VElement.js +0 -375
  553. package/src/runtime/vdom/VFragment.js +0 -26
  554. package/src/runtime/vdom/VNode.js +0 -100
  555. package/src/runtime/vdom/VText.js +0 -25
  556. package/src/runtime/vdom/helpers/attrs.js +0 -62
  557. package/src/runtime/vdom/helpers/const-element.js +0 -25
  558. package/src/runtime/vdom/helpers/merge-attrs.js +0 -16
  559. package/src/runtime/vdom/hot-reload.js +0 -115
  560. package/src/runtime/vdom/index.js +0 -30
  561. package/src/runtime/vdom/is-text-only.js +0 -10
  562. package/src/runtime/vdom/marko-namespace.js +0 -3
  563. package/src/runtime/vdom/morphdom/fragment.js +0 -95
  564. package/src/runtime/vdom/morphdom/helpers.js +0 -42
  565. package/src/runtime/vdom/morphdom/index.js +0 -741
  566. package/src/runtime/vdom/parse-html.js +0 -18
  567. package/src/runtime/vdom/vdom.js +0 -88
  568. package/src/taglib/index.js +0 -51
  569. package/src/translator/cdata/index.js +0 -15
  570. package/src/translator/cdata/index[html].js +0 -15
  571. package/src/translator/cdata/index[vdom].js +0 -12
  572. package/src/translator/class.js +0 -65
  573. package/src/translator/comment/index.js +0 -15
  574. package/src/translator/comment/index[html].js +0 -17
  575. package/src/translator/comment/index[vdom].js +0 -3
  576. package/src/translator/declaration/index.js +0 -15
  577. package/src/translator/declaration/index[html].js +0 -12
  578. package/src/translator/declaration/index[vdom].js +0 -3
  579. package/src/translator/document-type/index.js +0 -15
  580. package/src/translator/document-type/index[html].js +0 -12
  581. package/src/translator/document-type/index[vdom].js +0 -3
  582. package/src/translator/index.js +0 -552
  583. package/src/translator/placeholder/index.js +0 -15
  584. package/src/translator/placeholder/index[html].js +0 -93
  585. package/src/translator/placeholder/index[vdom].js +0 -22
  586. package/src/translator/scriptlet.js +0 -4
  587. package/src/translator/tag/attribute/directives/class.js +0 -42
  588. package/src/translator/tag/attribute/directives/index.js +0 -15
  589. package/src/translator/tag/attribute/directives/no-update-body-if.js +0 -15
  590. package/src/translator/tag/attribute/directives/no-update-body.js +0 -10
  591. package/src/translator/tag/attribute/directives/no-update-if.js +0 -12
  592. package/src/translator/tag/attribute/directives/no-update.js +0 -48
  593. package/src/translator/tag/attribute/directives/style.js +0 -42
  594. package/src/translator/tag/attribute/index.js +0 -150
  595. package/src/translator/tag/attribute/modifiers/index.js +0 -7
  596. package/src/translator/tag/attribute/modifiers/no-update.js +0 -14
  597. package/src/translator/tag/attribute/modifiers/scoped.js +0 -23
  598. package/src/translator/tag/attribute-tag.js +0 -149
  599. package/src/translator/tag/custom-tag.js +0 -146
  600. package/src/translator/tag/dynamic-tag.js +0 -74
  601. package/src/translator/tag/index.js +0 -287
  602. package/src/translator/tag/macro-tag.js +0 -7
  603. package/src/translator/tag/native-tag.js +0 -27
  604. package/src/translator/tag/native-tag[html]/attributes.js +0 -151
  605. package/src/translator/tag/native-tag[html]/index.js +0 -221
  606. package/src/translator/tag/native-tag[vdom]/attributes.js +0 -105
  607. package/src/translator/tag/native-tag[vdom]/index.js +0 -189
  608. package/src/translator/tag/util.js +0 -246
  609. package/src/translator/taglib/core/conditional/translate-else-if.js +0 -20
  610. package/src/translator/taglib/core/conditional/translate-else.js +0 -20
  611. package/src/translator/taglib/core/conditional/translate-if.js +0 -8
  612. package/src/translator/taglib/core/conditional/util.js +0 -41
  613. package/src/translator/taglib/core/index.js +0 -474
  614. package/src/translator/taglib/core/macro/parse.js +0 -17
  615. package/src/translator/taglib/core/macro/translate.js +0 -48
  616. package/src/translator/taglib/core/parse-class.js +0 -79
  617. package/src/translator/taglib/core/parse-export.js +0 -14
  618. package/src/translator/taglib/core/parse-import.js +0 -14
  619. package/src/translator/taglib/core/parse-module-code.js +0 -18
  620. package/src/translator/taglib/core/parse-static.js +0 -18
  621. package/src/translator/taglib/core/transform-style.js +0 -66
  622. package/src/translator/taglib/core/translate-await.js +0 -41
  623. package/src/translator/taglib/core/translate-body.js +0 -17
  624. package/src/translator/taglib/core/translate-for.js +0 -156
  625. package/src/translator/taglib/core/translate-html-comment.js +0 -52
  626. package/src/translator/taglib/core/translate-include-content.js +0 -53
  627. package/src/translator/taglib/core/translate-server-only.js +0 -5
  628. package/src/translator/taglib/core/translate-while.js +0 -32
  629. package/src/translator/taglib/index.js +0 -7
  630. package/src/translator/taglib/migrate/all-templates.js +0 -46
  631. package/src/translator/taglib/migrate/index.js +0 -5
  632. package/src/translator/text/index.js +0 -10
  633. package/src/translator/text/index[html].js +0 -12
  634. package/src/translator/text/index[vdom].js +0 -20
  635. package/src/translator/util/add-dependencies.js +0 -329
  636. package/src/translator/util/escape-regexp.js +0 -4
  637. package/src/translator/util/get-component-files.js +0 -86
  638. package/src/translator/util/html-out-write.js +0 -15
  639. package/src/translator/util/key-manager.js +0 -176
  640. package/src/translator/util/optimize-html-writes.js +0 -52
  641. package/src/translator/util/optimize-vdom-create.js +0 -164
  642. package/src/translator/util/plugin-hooks.js +0 -22
  643. package/src/translator/util/runtime-flags.js +0 -3
  644. package/src/translator/util/vdom-out-write.js +0 -10
  645. package/src/translator/util/with-previous-location.js +0 -6
  646. package/tags-html.d.ts +0 -3855
  647. package/translator/index.d.ts +0 -7
  648. package/translator/package.json +0 -5
@@ -1,406 +0,0 @@
1
- # TypeScript in Marko
2
-
3
- > **Note:** Types are supported in Marko v5.22.7+ and Marko v4.24.6+
4
-
5
- Marko’s TypeScript support offers in-editor error checking, makes refactoring less scary, verifies that data matches expectations, and even helps with API design.
6
-
7
- Or maybe you just want more autocomplete in VSCode. That works too.
8
-
9
- ## Enabling TypeScript in your Marko project
10
-
11
- There are two (non-exclusive) ways to add TypeScript to a Marko project:
12
-
13
- - **For sites and web apps**, you can place [a `tsconfig.json` file](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) at the project root:
14
- <pre>
15
- 📁 components/
16
- 📁 node_modules/
17
- <img src="./icons/marko.svg" width=16> index.marko
18
- 📦 package.json
19
- <mark><img src="./icons/ts.svg" width=16> tsconfig.json</mark>
20
- </pre>
21
- - **If you’re [publishing packages of Marko tags](https://markojs.com/docs/custom-tags/#publishing-tags-to-npm)**, add the following to [your `marko.json`](./marko-json.md):
22
- ```json
23
- "script-lang": "ts"
24
- ```
25
- This will automatically expose type-checking and autocomplete for the published tags.
26
-
27
- > **ProTip**: You can also use the `script-lang` method for sites and apps.
28
-
29
- ## Typing a tag's `input`
30
-
31
- A `.marko` file will use any exported `Input` type for [that file’s `input` object](./class-components.md#input).
32
-
33
- This can be `export type Input` or `export interface Input`.
34
-
35
- ### Example
36
-
37
- _PriceField.marko_
38
-
39
- ```marko
40
- export interface Input {
41
- currency: string;
42
- amount: number;
43
- }
44
-
45
- <label>
46
- Price in ${input.currency}:
47
- <input type="number" value=input.amount min=0 step=0.01>
48
- </label>
49
- ```
50
-
51
- You can also import, reuse, and extend `Input` interfaces from other `.marko` or `.ts` files:
52
-
53
- ```marko
54
- import { Input as PriceInput } from "<PriceField>";
55
- import { ExtraTypes } from "lib/utils.ts";
56
- export type Input = PriceInput & ExtraTypes;
57
- ```
58
-
59
- ```marko
60
- import { Input as PriceInput } from "<PriceField>";
61
- export interface Input extends PriceInput {
62
- discounted: boolean;
63
- expiresAt: Date;
64
- };
65
- ```
66
-
67
- ### Generic `Input`s
68
-
69
- [Generic Types and Type Parameters](https://www.typescriptlang.org/docs/handbook/2/generics.html) on `Input` are recognized throughout the entire `.marko` template (excluding [static statements](./syntax.md#static-javascript)).
70
-
71
- For example, if you set up a component like this:
72
-
73
- _components/my-select.marko_
74
-
75
- ```marko
76
- export interface Input<T> {
77
- options: T[];
78
- onSelect: (newVal: T) => unknown;
79
- }
80
-
81
- static function staticFn() {
82
- // can NOT use `T` here
83
- }
84
-
85
- $ const instanceFn = (val: T) => {
86
- // can use `T` here
87
- }
88
-
89
- // can use `as T` here
90
- <select on-input(evt => input.onSelect(options[evt.target.value] as T))>
91
- <for|value, i| of=input.options>
92
- <option value=i>${value}</option>
93
- </for>
94
- </select>
95
- ```
96
-
97
- …then your editor will figure out the types of inputs to that component:
98
-
99
- ```marko
100
- <my-select options=[1,2,3] onSelect=val => {}/>
101
- // ^^^ number
102
-
103
- <my-select options=["M","K","O"] onSelect=val => {}/>
104
- // ^^^ string
105
- ```
106
-
107
- ## Built-in Marko Types
108
-
109
- Marko exposes [type definitions](https://github.com/marko-js/marko/blob/main/packages/runtime-class/index.d.ts) you can reuse in [a TypeScript namespace](https://www.typescriptlang.org/docs/handbook/namespaces.html) called `Marko`:
110
-
111
- - **`Marko.Template<Input, Return>`**
112
- - The type of a `.marko` file
113
- - `typeof import("./template.marko")`
114
- - **`Marko.TemplateInput<Input>`**
115
- - The object accepted by the render methods of a template. It includes the template's `Input` as well as `$global` values.
116
- - **`Marko.Body<Params, Return>`**
117
- - The type of the [body content](./body-content.md) of a tag (`renderBody`)
118
- - **`Marko.Component<Input, State>`**
119
- - The base class for a [class component](./class-components.md)
120
- - **`Marko.Renderable`**
121
- - Values accepted by the [`<${dynamic}/>` tag](./syntax.md#dynamic-tagname)
122
- - `string | Marko.Template | Marko.Body | { renderBody: Marko.Body}`
123
- - **`Marko.Out`**
124
- - The render context with methods like `write`, `beginAsync`, etc.
125
- - `ReturnType<template.render>`
126
- - **`Marko.Global`**
127
- - The type of the object in `$global` and `out.global` that can be passed to a template's render methods as the `$global` property.
128
- - **`Marko.RenderResult`**
129
- - The [result](./rendering.md#renderresult) of rendering a Marko template
130
- - `ReturnType<template.renderSync>`
131
- - `Awaited<ReturnType<template.render>>`
132
- - **`Marko.Emitter`**
133
- - `EventEmitter` from `@types/node`
134
- - **`Marko.NativeTags`**
135
- - `Marko.NativeTags`: An object containing all native tags and their types
136
- - **`Marko.Input<TagName>`** and **`Marko.Return<TagName>`**
137
- - Helpers to extract the input and return types native tags (when a string is passed) or a custom tag.
138
- - **`Marko.BodyParameters<Body>`** and **`Marko.BodyReturnType<Body>`**
139
- - Helpers to extract the parameters and return types from the specified `Marko.Body`
140
- - **`Marko.AttrTag<T>`**
141
- - Used to represent types for [attributes tags](./body-content.md#named-body-content)
142
- - A single attribute tag, with a `[Symbol.iterator]` to consume any repeated tags.
143
-
144
- ### Typing `renderBody`
145
-
146
- The most commonly used type from the `Marko` namespace is `Marko.Body` which can be used to type `input.renderBody`:
147
-
148
- _child.marko_
149
-
150
- ```marko
151
- export interface Input {
152
- renderBody?: Marko.Body;
153
- }
154
- ```
155
-
156
- Here, the following will be acceptable values:
157
-
158
- _index.marko_
159
-
160
- ```marko
161
- <child/>
162
- <child>Text in render body</child>
163
- <child>
164
- <div>Any combination of components</div>
165
- </child>
166
- ```
167
-
168
- Passing other values (including components) will cause a type error:
169
-
170
- _index.marko_
171
-
172
- ```marko
173
- import OtherTag from "<other-tag>";
174
- <child renderBody=OtherTag/>
175
- ```
176
-
177
- ### Typing Tag Parameters
178
-
179
- Tag parameters are passed to the `renderBody` by the child tag. For this reason, `Marko.Body` also allows typing of its parameters:
180
-
181
- _for-by-two.marko_
182
-
183
- ```marko
184
- export interface Input {
185
- to: number;
186
- renderBody: Marko.Body<[number]>
187
- }
188
-
189
- <for|i| from=0 to=input.to by=2>
190
- <${input.renderBody}(i)/>
191
- </for>
192
- ```
193
-
194
- _index.marko_
195
-
196
- ```marko
197
- <for-by-two|i| to=10>
198
- <div>${i}</div>
199
- </for-by-two>
200
- ```
201
-
202
- ### Extending native tag types within a Marko tag
203
-
204
- The types for native tags are accessed via the global `Marko.Input` type. Here's an example of a component that extends the `button` html tag:
205
-
206
- _color-button.marko_
207
-
208
- ```marko
209
- export interface Input extends Marko.Input<"button"> {
210
- color: string;
211
- renderBody?: Marko.Body;
212
- }
213
-
214
- $ const { color, renderBody, ...restOfInput } = input;
215
-
216
- <button style=`color: ${color}` ...restOfInput>
217
- <${renderBody}/>
218
- </button>
219
- ```
220
-
221
- ### Registering a new native tag (eg for custom elements).
222
-
223
- ```ts
224
- interface MyCustomElementAttributes {
225
- // ...
226
- }
227
-
228
- declare global {
229
- namespace Marko {
230
- interface NativeTags {
231
- // By adding this entry, you can now use `my-custom-element` as a native html tag.
232
- "my-custom-element": MyCustomElementAttributes;
233
- }
234
- }
235
- }
236
- ```
237
-
238
- ### Registering new "global" HTML Attributes
239
-
240
- ```ts
241
- declare global {
242
- namespace Marko {
243
- interface HTMLAttributes {
244
- "my-non-standard-attribute"?: string; // Adds this attribute as available on all HTML tags.
245
- }
246
- }
247
- }
248
- ```
249
-
250
- ### Registering CSS Properties (eg for custom properties)
251
-
252
- ```ts
253
- declare global {
254
- namespace Marko {
255
- namespace CSS {
256
- interface Properties {
257
- "--foo"?: string; // adds a support for a custom `--foo` css property.
258
- }
259
- }
260
- }
261
- }
262
- ```
263
-
264
- ## TypeScript Syntax in `.marko`
265
-
266
- Any [JavaScript expression in Marko](./syntax.md#inline-javascript) can also be written as a TypeScript expression.
267
-
268
- ### Tag Type Parameters
269
-
270
- ```marko
271
- <child <T>|value: T|>
272
- ...
273
- </child>
274
- ```
275
-
276
- ### Tag Type Arguments
277
-
278
- _components/child.marko_
279
-
280
- ```marko
281
- export interface Input<T> {
282
- value: T;
283
- }
284
- ```
285
-
286
- _index.marko_
287
-
288
- ```marko
289
- // number would be inferred in this case, but we can be explicit
290
- <child<number> value=1 />
291
- ```
292
-
293
- ### Method Shorthand Type Parameters
294
-
295
- ```marko
296
- <child process<T>() { /* ... */ } />
297
- ```
298
-
299
- ### Attribute Type Assertions
300
-
301
- The types of attribute values can _usually_ be inferred. When needed, you can assert values to be more specific with [TypeScript’s `as` keyword](https://www.typescriptlang.org/docs/handbook/2/everyday-types.html#type-assertions):
302
-
303
- ```marko
304
- <some-component
305
- number=1 as const
306
- names=[] as string[]
307
- />
308
- ```
309
-
310
- # JSDoc Support
311
-
312
- For existing projects that want to incrementally add type safety, adding full TypeScript support is a big leap. This is why Marko also includes full support for [incremental typing via JSDoc](https://www.typescriptlang.org/docs/handbook/intro-to-js-ts.html).
313
-
314
- ## Setup
315
-
316
- You can enable type checking in an existing `.marko` file by adding a `// @ts-check` comment at the top:
317
-
318
- ```js
319
- // @ts-check
320
- ```
321
-
322
- If you want to enable type checking for all Marko & JavaScript files in a JavaScript project, you can switch to using a [`jsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#using-tsconfigjson-or-jsconfigjson). You can skip checking some files by adding a `// @ts-nocheck` comment to files.
323
-
324
- Once that has been enabled, you can start by typing the input with JSDoc. Here's an example component with typed `input`:
325
-
326
- ```marko
327
- // @ts-check
328
-
329
- /**
330
- * @typedef {{
331
- * firstName: string,
332
- * lastName: string,
333
- * }} Input
334
- */
335
-
336
- <div>${firstName} ${lastName}</div>
337
- ```
338
-
339
- ## With a separate `component.js` file
340
-
341
- Many components in existing projects adhere to the following structure:
342
-
343
- <pre>
344
- 📁 components/
345
- 📁 color-rotate-button/
346
- <img src="./icons/marko.svg" width=16> index.marko
347
- <img src="./icons/js.svg" width=16> component.js
348
- </pre>
349
-
350
- The `color-rotate-button` takes a list of colors and moves to the next one each time the button is clicked:
351
-
352
- ```marko
353
- <color-rotate-button colors=["red", "blue", "yellow"]>
354
- Next Color
355
- </color-rotate-button>
356
- ```
357
-
358
- Here is an example of how this `color-rotate-button` component could be typed:
359
-
360
- _components/color-rotate-button/component.js_
361
-
362
- ```js
363
- // @ts-check
364
-
365
- /**
366
- * @typedef {{
367
- * colors: string[],
368
- * renderBody: Marko.Renderable
369
- * }} Input
370
- * @typedef {{
371
- * colorIndex: number
372
- * }} State
373
- * @extends {Marko.Component<Input, State>}
374
- */
375
- export default class extends Marko.Component {
376
- onCreate() {
377
- this.state = {
378
- colorIndex: 0,
379
- };
380
- }
381
-
382
- rotateColor() {
383
- this.state.colorIndex =
384
- (this.state.colorIndex + 1) % this.input.colors.length;
385
- }
386
- }
387
- ```
388
-
389
- _components/color-rotate-button/index.marko_
390
-
391
- ```marko
392
- // @ts-check
393
-
394
- /* Input will be automatically imported from `component.js`! */
395
-
396
- <button
397
- onClick('rotateColor')
398
- style=`color: ${input.colors[state.colorIndex]}`>
399
- <${input.renderBody}/>
400
- </button>
401
- ```
402
-
403
- # CI Type Checking
404
-
405
- For type checking Marko files outside of your editor there is the ["@marko/type-check" cli](https://github.com/marko-js/language-server/tree/main/packages/type-check).
406
- Check out the CLI documentation for more information.
package/docs/vite.md DELETED
@@ -1,86 +0,0 @@
1
- # Marko + Vite
2
-
3
- # Installation
4
-
5
- ```console
6
- npm install @marko/vite vite
7
- ```
8
-
9
- # Example config
10
-
11
- ```javascript
12
- import { defineConfig } from "vite";
13
- import marko from "@marko/vite";
14
- export default defineConfig({
15
- plugins: [marko()],
16
- });
17
- ```
18
-
19
- # Linked Mode
20
-
21
- By default this plugin operates in `linked` mode (you can disabled this by passing [`linked: false` as an option](#optionslinked)). In `linked` mode the plugin automatically discovers all of the entry `.marko` files while compiling the server, and tells `Vite` which modules to load in the browser.
22
-
23
- With this you _do not_ create `.html` files for `Vite`, it's Marko all the way down!
24
- Scripts, styles and other content that _would have_ been injected into the `.html` files is instead automatically injected into your `.marko` templates.
25
-
26
- In this mode you must use the [Vite SSR API](https://vitejs.dev/guide/ssr.html#setting-up-the-dev-server).
27
-
28
- Here's an example using `express`.
29
-
30
- ```js
31
- import { createServer } from "vite";
32
-
33
- const app = express();
34
- let loadTemplate;
35
-
36
- if (process.env.NODE_ENV === "production") {
37
- // Use Vite's built asset in prod mode.
38
- loadTemplate = () => import("./dist");
39
- } else {
40
- // Hookup the vite dev server.
41
- const vite = await createServer({
42
- server: { middlewareMode: true }
43
- });
44
-
45
- app.use(vite.middlewares);
46
- loadTemplate = () => vite.ssrLoadModule("./template.marko");
47
- }
48
-
49
- app.get("/", async (req, res) => {
50
- const template = (await loadTemplate()).default;
51
- // When the template is loaded, it will automatically have `vite` assets inlined.
52
- template.render({ hello: "world" }, res);
53
- );
54
-
55
- app.listen(3000);
56
- ```
57
-
58
- > For a more real world setup check out our [vite express](https://github.com/marko-js/examples/tree/master/examples/vite-express) example app.
59
-
60
- # Options
61
-
62
- ### options.babelConfig
63
-
64
- You can manually override Marko's Babel configuration by passing a `babelConfig` object to the `@marko/vite` plugin. By default Babel's regular [config file resolution](https://babeljs.io/docs/en/config-files) will be used.
65
-
66
- ```javascript
67
- marko({
68
- babelConfig: {
69
- presets: ["@babel/preset-env"],
70
- },
71
- });
72
- ```
73
-
74
- ### options.runtimeId
75
-
76
- In some cases you may want to embed multiple isolated copies of Marko on the page. Since Marko relies on some `window` properties to initialize this can cause issues. For example, by default Marko will read the server rendered hydration code from `window.$components`. In Marko you can change these `window` properties by rendering with `{ $global: { runtimeId: "MY_MARKO_RUNTIME_ID" } }` as input on the server side.
77
-
78
- This plugin exposes a `runtimeId` option produces output that automatically sets `$global.runtimeId` on the server side and initializes properly in the browser.
79
-
80
- ```js
81
- marko({ runtimeId: "MY_MARKO_RUNTIME_ID" });
82
- ```
83
-
84
- ### options.linked
85
-
86
- Set this to `false` to opt out of [linked mode](#linked-mode). When this is false, the plugin will only handle resolving and transforming `.marko` files.
package/docs/webpack.md DELETED
@@ -1,205 +0,0 @@
1
- # Marko + Webpack
2
-
3
- # Installation
4
-
5
- > `@marko/webpack` >= 7 Only supports Marko 5+.
6
- > For Marko 4 support use `@marko/webpack@6`.
7
-
8
- ```console
9
- npm install @marko/webpack
10
- ```
11
-
12
- ### Loader: `@marko/webpack/loader`
13
-
14
- The loader portion of this module can be used standalone and simply transforms your Marko templates into the appropriate JavaScript depending on your webpack target.
15
-
16
- You can override the output by adding a `target` option to the loader of `target: "server" | "browser"`.
17
-
18
- ### Plugin: `@marko/webpack/plugin`
19
-
20
- The plugin actually creates two separate webpack plugins, the `browser` plugin and the `server` plugin.
21
-
22
- These are intended to be used in a isomorphic [webpack multi compiler](https://github.com/webpack/webpack/tree/master/examples/multi-compiler) where you are bundling both the server and the browser. The way it works is that the server plugin is going to analyze the top level Marko components in your server and automatically communicate with the browser compiler to retrieve the assets for that template.
23
-
24
- This plugin also analyzes the top level Marko templates and determines if it is possible for them to rerender (currently the heuristic is simply does the component have an associated `class` or `component.js`). The plugin will automatically skip sending down any unnecessary top level templates to the browser.
25
-
26
- The end result is that you setup a multi compiler (as shown below) and you can simply import Marko templates, and all assets are automatically generated and inlined into an optimized server response. No need to keep track of a webpack manifest yourself!
27
-
28
- ### Tag: `<webpack-assets>`
29
-
30
- The `<webpack-assets>` tag can be used along with the plugin in a multi-compiler setup. This tag allows you to inject `<script>`/`<style>` tags into a server-rendered template for the assets of an entry in the client compiler.
31
-
32
- #### Example Usage
33
-
34
- ```marko
35
- <webpack-assets entry="tracking"/>
36
- ```
37
-
38
- #### Example Config
39
-
40
- ```js
41
- // ...
42
- export default [
43
- {
44
- entry: "./server.js",
45
- plugins: [markoPlugin.server],
46
- // ...
47
- },
48
- {
49
- // ...
50
- entry: {
51
- tracking: "./tracking.js",
52
- },
53
- plugins: [markoPlugin.browser],
54
- },
55
- ];
56
- ```
57
-
58
- # Example
59
-
60
- ```javascript
61
- import MarkoPlugin from "@marko/webpack/plugin";
62
-
63
- const markoPlugin = new MarkoPlugin();
64
-
65
- export default [
66
- {
67
- entry: "./server.js",
68
- module: {
69
- rules: [
70
- {
71
- test: /\.marko$/,
72
- loader: "@marko/webpack/loader",
73
- },
74
- ],
75
- },
76
- plugins: [markoPlugin.server],
77
- },
78
- {
79
- rules: [
80
- {
81
- test: /\.marko$/,
82
- loader: "@marko/webpack/loader",
83
- },
84
- // If using `style` blocks with Marko you must use an appropriate loader
85
- {
86
- test: /\.css$/,
87
- use: ["style-loader", "css-loader"],
88
- },
89
- ],
90
- plugins: [markoPlugin.browser],
91
- },
92
- ];
93
- ```
94
-
95
- ## Babel options (Marko 5+)
96
-
97
- If you are using Marko 5 with this plugin you can manually override the Babel configuration used by passing a `babelConfig` object along side the `@marko/webpack/loader`. By default Babels regular [config file resolution](https://babeljs.io/docs/en/config-files) will be used.
98
-
99
- ```javascript
100
- export default {
101
- module: {
102
- rules: [
103
- {
104
- test: /\.marko$/,
105
- loader: "@marko/webpack/loader",
106
- options: {
107
- babelConfig: {
108
- presets: [
109
- ["@babel/preset-env", { node: "current" }]
110
- ]
111
- }
112
- }
113
- }
114
- ]
115
- }
116
- },
117
- ```
118
-
119
- ## Multiple client-side compilers
120
-
121
- Sometimes you need multiple compilers for your client-side bundles. For example, with [`i18n`](https://github.com/webpack/webpack/tree/master/examples/i18n) or [even shipping dynamic runtime bundles to the browser](https://github.com/eBay/arc/tree/master/packages/arc-webpack).
122
-
123
- The `@marko/webpack` plugin’s `.browser` property can be passed to multiple Webpack compilers. While rendering at runtime, you can provide a `$global.buildName` property to choose which assets from the Webpack compiler are included in the page.
124
-
125
- For example, with the Webpack internationalization plugin, you might have a config like the following:
126
-
127
- ```js
128
- import MarkoPlugin from "@marko/webpack/plugin";
129
- import I18nPlugin from "i18n-webpack-plugin";
130
- import germanTranslations from "./de.json";
131
-
132
- const languages = {
133
- en: null,
134
- de: germanTranslations,
135
- };
136
-
137
- const markoPlugin = new MarkoPlugin();
138
-
139
- export default [
140
- {
141
- name: "Server",
142
- entry: "./server.js",
143
- module: {
144
- rules: [
145
- {
146
- test: /\.marko$/,
147
- loader: "@marko/webpack/loader",
148
- },
149
- ],
150
- },
151
- plugins: [markoPlugin.server],
152
- },
153
- ...Object.keys(languages).map((language) => ({
154
- name: `Browser-${language}`,
155
- rules: [
156
- {
157
- test: /\.marko$/,
158
- loader: "@marko/webpack/loader",
159
- },
160
- // If using `style` blocks with Marko you must use an appropriate loader
161
- {
162
- test: /\.css$/,
163
- use: ["style-loader", "css-loader"],
164
- },
165
- ],
166
- plugins: [new I18nPlugin(languages[language]), markoPlugin.browser],
167
- })),
168
- ];
169
- ```
170
-
171
- With the above config, you can render your top-level Marko template server-side with a `$global.buildName` like so:
172
-
173
- ```javascript
174
- template.render({ $global: { buildName: "Browser-de" } });
175
- ```
176
-
177
- That will automatically send German assets. However, what you _probably_ want instead of always serving German is conditionally sending appropriate assets for a user’s locale. This can be done like so:
178
-
179
- ```javascript
180
- template.render({ $global: { buildName: `Browser-${req.language}` } });
181
- ```
182
-
183
- **Note:** If a bundle with the provided `buildName` does not exist, an error is thrown.
184
-
185
- ## Multiple copies of Marko
186
-
187
- In some cases you may want to embed multiple isolated copies of Marko on the page. Since Marko relies on some `window` properties to initialize this can cause issues. For example, by default Marko will read the server rendered hydration code from `window.$components`. In Marko you can change these `window` properties by rendering with `{ $global: { runtimeId: "MY_MARKO_RUNTIME_ID" } }` as input on the server side.
188
-
189
- This plugin exposes a `runtimeId` option produces output that automatically sets `$global.runtimeId` on the server side and initializes properly in the browser.
190
- The `runtimeId` will default to the [`uniqueName` option](https://webpack.js.org/configuration/output/#outputuniquename) from the server compiler in the webpack config.
191
-
192
- ```js
193
- import MarkoPlugin from "@marko/webpack/plugin";
194
-
195
- const markoPlugin = new MarkoPlugin({
196
- runtimeId: "MY_MARKO_RUNTIME_ID", // default to webpack `output.uniqueName` option.
197
- });
198
- ```
199
-
200
- Note: This option will also override the default values for the `jsonpFunction`, `chunkCallbackName` and `hotUpdateFunction` webpack `output` options, which all use global variables, to be prefixed with the `runtimeId`.
201
-
202
- ## Dynamic public paths
203
-
204
- When using the plugin, the server will automatically sync the runtime [`__webpack_public_path__`](https://webpack.js.org/guides/public-path/#on-the-fly) with the browser.
205
- This means that you only need to setup the dynamic public path on the server side.