Skip to content

Releases: marko-js/marko

@marko/runtime-tags@6.3.46

Choose a tag to compare

@github-actions github-actions released this 26 Aug 21:18
b92887e

Patch Changes

  • #4058 a9a95c3 Thanks @rturnq! - Fix <if>/<for> as the only child of a custom tag whose name shadows a native element (eg tags/menu.marko) borrowing that tag's node marker; the content crashed when re-rendered on the client because the marker lives in the parent's scope.

  • #4055 d8973d8 Thanks @DylanPiercey! - Make the server runtime tree-shakable: patchDynamicTag, the generator prototype patch, and the serializer's well-known tables are no longer module-import side effects, so bundlers can drop unused SSR runtime (a bare static-page SSR bundle drops ~4.7 kB minified / ~1.6 kB brotli).

  • #4062 cfa45f2 Thanks @rturnq! - Fix a custom tag's returned value not reaching a later tag's variable in the browser when an earlier tag returns synchronously during setup (eg <child/value/> feeding <Wrapper/wrapped=value/>).

  • #4048 121d28c Thanks @DylanPiercey! - Report lazy module load failures in development: a loader script error or a
    rejected chunk import now logs a diagnostic (and records the dead channel)
    instead of leaving server-rendered content silently inert. Production
    output is unchanged.

  • #4053 13a4d9c Thanks @DylanPiercey! - <try> boundaries with a <@catch> now share their parent's abort signal, so a consumer disconnecting mid-stream stops pending <await> regions under the try instead of leaving them rendering into a dead stream. Disconnects never fire the @catch content.

@marko/runtime-tags@6.3.45

Choose a tag to compare

Patch Changes

  • #4041 5193509 Thanks @DylanPiercey! - Fix content sections passed through another tag's body parameter resolving serialization from the child template's raw analysis: serialize reasons now dereference through the call site's expressions, fixing Unable to serialize "input.<attrTag>" (reading content) errors and dropping serialized data and registered renderers that were never needed.

  • #4035 b8c9b0d Thanks @DylanPiercey! - Report a child template's compile error instead of marking the parent tag unresolved, and name an imported tag in the missing-tag error rather than printing <undefined>.

  • #4037 4bdda78 Thanks @DylanPiercey! - Page entries now link the topmost templates with client work instead of the root-most template, and only pull in and initialize the resume runtime when something actually resumes; a page whose only client code is static client {} statements just loads its modules.

  • #4043 b619291 Thanks @DylanPiercey! - Fix serializing a RegExp whose source contains <: a named group or lookbehind previously shipped as invalid regexp syntax (/(?\x3Cname>a)/), which threw a SyntaxError while parsing the resume script and broke hydration entirely. Sources containing < now serialize through the RegExp constructor and round-trip exactly.

  • #4044 55b76d1 Thanks @DylanPiercey! - Suggest static when a module level JavaScript statement (function, class, type, interface, enum, async function, declare) parses as an unknown tag, instead of a misleading nearest-tag guess like Did you mean `<section>`?.

  • Updated dependencies [b8c9b0d, ea72f0e, 90e206e]:

    • @marko/compiler@5.42.3

@marko/compiler@5.42.3

Choose a tag to compare

Patch Changes

  • #4035 b8c9b0d Thanks @DylanPiercey! - Report a child template's compile error instead of marking the parent tag unresolved, and name an imported tag in the missing-tag error rather than printing <undefined>.

  • #4045 ea72f0e Thanks @DylanPiercey! - Stop folding unusual characters in template ids to /, which let distinct paths collide (foo+bar.marko and foo/bar.marko produced one id, silently cross-wiring the two templates in the resume registry). Only characters unsafe in a string/URL/filesystem context are percent-encoded now; benign punctuation such as +, [, ( and @ passes through literally. Also documents the getTemplateId config override.

  • #4042 90e206e Thanks @DylanPiercey! - Reject an unrecognized output compiler option with an error naming the accepted values (html, dom, source, migrate, hydrate) instead of silently compiling to the DOM runtime. Also stop caching a taglib whose JSON failed to parse, so fixing a broken marko-tag.json takes effect without restarting, and include the JSON parse error in the message.

@marko/runtime-tags@6.3.44

Choose a tag to compare

Patch Changes

  • #4025 0d16035 Thanks @DylanPiercey! - Report a dev-mode error when a client-reactive expression reads a $global key that was not serialized, instead of silently evaluating to undefined.

  • #4021 51d797a Thanks @DylanPiercey! - Report an unresolvable tag name during analyze, so its <let>/<const> hint survives and every bad tag in a template reports instead of only the first.

  • #4018 242877d Thanks @DylanPiercey! - Decode character references in a <textarea> body, so <textarea>&lt;p&gt;</textarea> renders <p> as <title> does.

  • #4022 32deb43 Thanks @DylanPiercey! - Report a compile error when a tags API template lazily imports a class API tag, instead of throwing ReferenceError at first render.

  • Updated dependencies [15b32e4, 242877d]:

    • @marko/compiler@5.42.2

@marko/compiler@5.42.2

Choose a tag to compare

Patch Changes

  • #4019 15b32e4 Thanks @DylanPiercey! - Stop installing entities in consumer projects; it is bundled into the published output.

  • #4018 242877d Thanks @DylanPiercey! - Replace the he dependency with entities, bundled and exposed as a decodeHTML babel-utils export.

@marko/runtime-tags@6.3.43

Choose a tag to compare

Patch Changes

  • #4002 0ecd0a2 Thanks @LuLaValva! - Separate a template's static text edges so they cannot merge with a parent's adjacent text into a single DOM node, which desynchronized the client-side walk and left later accessors undefined.

@marko/runtime-tags@6.3.42

Choose a tag to compare

@github-actions github-actions released this 19 Aug 00:19
159bc5f

Patch Changes

  • #4000 cda5ae4 Thanks @LuLaValva! - Fix the published ./tags-html subpath export, which was dropped from the production exports map, breaking Marko 5's global HTML/SVG type declarations for consumers.

@marko/runtime-tags@6.3.41

Choose a tag to compare

@github-actions github-actions released this 18 Aug 22:02
2fec13f

Patch Changes

  • #3995 2a4fe2e Thanks @DylanPiercey! - A render-time hoist of a tag-variable alias no longer emits an undeclared $name_getter; it calls _hoist_read_error like other illegal hoist reads.

  • #3997 d3ded54 Thanks @DylanPiercey! - Resume a Class-API parent's direct inline event handlers on a Tags-API child, including under a split parent. They previously serialized as a noop, so a split parent's handler never fired and the rest only worked once the parent rerendered.

  • #3999 cb6e6f4 Thanks @LuLaValva! - Improve types for Marko 5 w/ interop

@marko/runtime-tags@6.3.40

Choose a tag to compare

Patch Changes

  • #3990 c425ea9 Thanks @DylanPiercey! - A streamed <try> placeholder with state now resumes as its own branch: its scopes ship with the flush that registers its effects (so lifecycles see their input), and swapping the body in destroys it — its listeners and effects no longer outlive it.

  • #3991 a909c03 Thanks @DylanPiercey! - Hoist a single $global read per template in HTML output so deferred callbacks close over the value instead of throwing when the render chunk is gone.

@marko/runtime-tags@6.3.39

Choose a tag to compare

Patch Changes

  • #3986 e9ea619 Thanks @DylanPiercey! - Fix a derived value computed only from closures inside a branch (<if>, <for>) rendering one update late when the same event also updated an input of the tag that consumes it.