marko 6.3.33 → 6.3.34

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 (59) hide show
  1. package/cheatsheet.md +37 -33
  2. package/dist/common/errors.d.ts +1 -0
  3. package/dist/debug/dom/catch.feat.js +1 -1
  4. package/dist/debug/dom/catch.feat.mjs +1 -1
  5. package/dist/debug/dom/controllable-input.feat.js +1 -1
  6. package/dist/debug/dom/controllable-input.feat.mjs +1 -1
  7. package/dist/debug/dom/controllable-open.feat.js +1 -1
  8. package/dist/debug/dom/controllable-open.feat.mjs +1 -1
  9. package/dist/debug/dom/controllable-select.feat.js +1 -1
  10. package/dist/debug/dom/controllable-select.feat.mjs +1 -1
  11. package/dist/debug/dom/controllable-textarea.feat.js +1 -1
  12. package/dist/debug/dom/controllable-textarea.feat.mjs +1 -1
  13. package/dist/debug/dom/controllable.feat.js +1 -1
  14. package/dist/debug/dom/controllable.feat.mjs +1 -1
  15. package/dist/debug/{dom-CiFITSPN.js → dom-Bj58jt8y.js} +55 -30
  16. package/dist/debug/{dom-BJ93mcSe.mjs → dom-klf8Ec_o.mjs} +55 -30
  17. package/dist/debug/dom.js +3 -1
  18. package/dist/debug/dom.mjs +3 -1
  19. package/dist/debug/html.js +119 -79
  20. package/dist/debug/html.mjs +119 -79
  21. package/dist/dom/catch.feat.js +1 -1
  22. package/dist/dom/catch.feat.mjs +1 -1
  23. package/dist/dom/control-flow.d.ts +3 -1
  24. package/dist/dom/controllable-input.feat.js +1 -1
  25. package/dist/dom/controllable-input.feat.mjs +1 -1
  26. package/dist/dom/controllable-open.feat.js +1 -1
  27. package/dist/dom/controllable-open.feat.mjs +1 -1
  28. package/dist/dom/controllable-select.feat.js +1 -1
  29. package/dist/dom/controllable-select.feat.mjs +1 -1
  30. package/dist/dom/controllable-textarea.feat.js +1 -1
  31. package/dist/dom/controllable-textarea.feat.mjs +1 -1
  32. package/dist/dom/controllable.feat.js +1 -1
  33. package/dist/dom/controllable.feat.mjs +1 -1
  34. package/dist/{dom-Cj4HQ7T_.mjs → dom-6hBvZW7X.mjs} +27 -21
  35. package/dist/{dom-CI-06TZb.js → dom-B-XpL2_H.js} +27 -21
  36. package/dist/dom.js +3 -1
  37. package/dist/dom.mjs +3 -1
  38. package/dist/html/compat.d.ts +4 -2
  39. package/dist/html.js +73 -54
  40. package/dist/html.mjs +73 -54
  41. package/dist/translator/core/client.d.ts +1 -2
  42. package/dist/translator/core/server.d.ts +1 -2
  43. package/dist/translator/core/static.d.ts +1 -2
  44. package/dist/translator/index.js +377 -244
  45. package/dist/translator/util/constants/binding-type.d.ts +1 -0
  46. package/dist/translator/util/references.d.ts +8 -1
  47. package/dist/translator/util/serialize-reasons.d.ts +4 -4
  48. package/dist/translator/util/signals.d.ts +3 -0
  49. package/dist/translator/util/statement-tag.d.ts +2 -0
  50. package/dist/translator/visitors/program/index.d.ts +0 -1
  51. package/package.json +5 -4
  52. package/tags/html-comment.d.marko +2 -0
  53. package/tags/html-script.d.marko +2 -0
  54. package/tags/html-style.d.marko +2 -0
  55. package/tags/let.d.marko +2 -2
  56. package/tags/show.d.marko +6 -0
  57. package/tags/try.d.marko +1 -1
  58. package/tags-html.d.ts +6 -1
  59. /package/dist/translator/util/{get-accessor-char.d.ts → get-accessor-enums.d.ts} +0 -0
package/dist/html.mjs CHANGED
@@ -247,7 +247,7 @@ let empty = [], rest = Symbol(), unsafeStyleAttrReg = /[\\;]/g, replaceUnsafeSty
247
247
  }, unsafeQuoteReg = /["\\<\n\r\u2028\u2029\0\ud800-\udfff]/u, $chunk, kPendingContexts = Symbol("Pending Contexts"), kBranchId = Symbol("Branch Id"), kIsAsync = Symbol("Is Async"), writeScope = (scopeId, partialScope) => {
248
248
  let { state } = $chunk.boundary, target = $chunk.serializeState, scope = scopeWithId(state, scopeId), pending = target.writeScopes[scopeId];
249
249
  return state.needsMainRuntime = !0, Object.assign(scope, partialScope), pending && pending !== partialScope ? Object.assign(pending, partialScope) : target.writeScopes[scopeId] = partialScope, target.flushScopes = !0, scope;
250
- }, NOOP$2 = () => {}, tick = globalThis.setImmediate || globalThis.setTimeout || globalThis.queueMicrotask || ((cb) => Promise.resolve().then(cb)), tickQueue, kSelectedValue = Symbol("selectedValue"), checkedValuesRefs = /* @__PURE__ */ new WeakMap(), singleQuoteAttrReplacements = /'|&(?=[#a-zA-Z])/g, doubleQuoteAttrReplacements = /"|&(?=[#a-zA-Z])/g, needsQuotedAttr = /["'>\s]|&[#a-zA-Z]|\/$/g, voidElementsReg = /^(?:area|b(?:ase|r)|col|embed|hr|i(?:mg|nput)|link|meta|param|source|track|wbr)$/, _dynamic_tag = (scopeId, accessor, tag, inputOrArgs, content, inputIsArgs, serializeReason) => {
250
+ }, NOOP$2 = () => {}, tick = globalThis.setImmediate || globalThis.setTimeout || globalThis.queueMicrotask || ((cb) => Promise.resolve().then(cb)), tickQueue, kSelectedValue = Symbol("selectedValue"), checkedValuesRefs = /* @__PURE__ */ new WeakMap(), singleQuoteAttrReplacements = /['\r]|&(?=[#a-zA-Z])/g, doubleQuoteAttrReplacements = /["\r]|&(?=[#a-zA-Z])/g, needsQuotedAttr = /["'>\s]|&[#a-zA-Z]|\/$/g, voidElementsReg = /^(?:area|b(?:ase|r)|col|embed|hr|i(?:mg|nput)|link|meta|param|source|track|wbr)$/, _dynamic_tag = (scopeId, accessor, tag, inputOrArgs, content, inputIsArgs, serializeReason) => {
251
251
  let shouldResume = serializeReason !== 0, renderer = normalizeDynamicRenderer(tag), state = getState(), branchId = _peek_scope_id(), rendered, result;
252
252
  if (typeof renderer == "string") {
253
253
  let input = (inputIsArgs ? inputOrArgs[0] : inputOrArgs) || {};
@@ -293,6 +293,7 @@ let empty = [], rest = Symbol(), unsafeStyleAttrReg = /[\\;]/g, replaceUnsafeSty
293
293
  peekNextScopeId: _peek_scope_id,
294
294
  isInResumedBranch,
295
295
  withChunk,
296
+ getChunk,
296
297
  ensureState($global) {
297
298
  let state = $global[K_TAGS_API_STATE] ||= getChunk()?.boundary.state;
298
299
  return state || ($global.runtimeId ||= "M", $global.renderId ||= $global.componentIdPrefix || $global.widgetIdPrefix || "_", $global[K_TAGS_API_STATE] = state = new State($global)), state;
@@ -326,10 +327,18 @@ let empty = [], rest = Symbol(), unsafeStyleAttrReg = /[\\;]/g, replaceUnsafeSty
326
327
  return compatRegistered;
327
328
  };
328
329
  },
329
- flushScript($global) {
330
- let state = this.ensureState($global), boundary = new Boundary(state);
331
- if (boundary.flush() === 1) throw Error("Cannot serialize promise across tags/class compat layer.");
332
- return new Chunk(boundary, null, null, state).flushScript().scripts;
330
+ createChunk($global) {
331
+ let state = this.ensureState($global);
332
+ return new Chunk(new Boundary(state), null, null, state);
333
+ },
334
+ flushScript($global, chunk) {
335
+ chunk ||= this.createChunk($global);
336
+ let { boundary } = chunk;
337
+ switch (boundary.flush()) {
338
+ case 2: throw boundary.signal.reason;
339
+ case 1: throw Error("Cannot serialize promise across tags/class compat layer.");
340
+ }
341
+ return chunk.flushScript().scripts;
333
342
  },
334
343
  render(renderer, willRerender, classAPIOut, component, input, completeChunks, registerChildScope) {
335
344
  let state = this.ensureState(classAPIOut.global), boundary = new Boundary(state), head = new Chunk(boundary, null, getChunk()?.context ?? null, state), normalizedInput = input;
@@ -449,28 +458,28 @@ function _escape_comment(val) {
449
458
  patchIteratorNext(Generator.prototype), patchIteratorNext(AsyncGenerator.prototype);
450
459
  var State$1 = class {
451
460
  ids = 0;
452
- flush = 0;
461
+ flushId = 0;
453
462
  wroteUndefined = !1;
454
463
  buf = [];
455
464
  strs = /* @__PURE__ */ new Map();
456
465
  refs = /* @__PURE__ */ new WeakMap();
457
- assigned = /* @__PURE__ */ new Set();
466
+ pendingAssignments = /* @__PURE__ */ new Set();
458
467
  boundary = void 0;
459
468
  channel = void 0;
460
469
  channelDeps = null;
461
470
  mutated = [];
462
471
  }, Reference = class {
463
- assigns = null;
472
+ assignments = null;
464
473
  calls = null;
465
474
  scopeId = void 0;
466
475
  channel = void 0;
467
476
  parent;
468
477
  accessor;
469
- flush;
478
+ flushId;
470
479
  pos;
471
480
  id;
472
- constructor(parent, accessor, flush, pos = null, id = null) {
473
- this.parent = parent, this.accessor = accessor, this.flush = flush, this.pos = pos, this.id = id;
481
+ constructor(parent, accessor, flushId, pos = null, id = null) {
482
+ this.parent = parent, this.accessor = accessor, this.flushId = flushId, this.pos = pos, this.id = id;
474
483
  }
475
484
  }, Serializer = class {
476
485
  #state = new State$1();
@@ -484,7 +493,7 @@ var State$1 = class {
484
493
  try {
485
494
  return this.#state.boundary = boundary, this.#state.channel = channel, writeScopesRoot(this.#state, flushes);
486
495
  } finally {
487
- this.#state.flush++, this.#state.buf = [];
496
+ this.#state.flushId++, this.#state.buf = [];
488
497
  }
489
498
  }
490
499
  written(val) {
@@ -525,20 +534,20 @@ function writeScopesRoot(state, flushes) {
525
534
  }
526
535
  nextSlotId !== -1 && buf.push("]");
527
536
  let extras = "";
528
- (state.assigned.size || hasChannelMutations(state)) && (extras = ",0)", fillIndex !== -1 && (buf[fillIndex] = "_(" + buf[fillIndex], buf.push(")")), writeAssigned(state));
537
+ (state.pendingAssignments.size || hasChannelMutations(state)) && (extras = ",0)", fillIndex !== -1 && (buf[fillIndex] = "_(" + buf[fillIndex], buf.push(")")), writeAssigned(state));
529
538
  let result = extras && "(";
530
539
  for (let chunk of buf) result += chunk;
531
540
  return result += extras, result ? state.wroteUndefined ? (state.wroteUndefined = !1, "(_,$)=>" + result) : "_=>" + result : "";
532
541
  }
533
542
  function writeAssigned(state) {
534
543
  let sep = state.buf.length ? "," : "";
535
- if (state.assigned.size) {
536
- let assigned = state.assigned;
537
- state.assigned = /* @__PURE__ */ new Set();
544
+ if (state.pendingAssignments.size) {
545
+ let pending = state.pendingAssignments;
546
+ state.pendingAssignments = /* @__PURE__ */ new Set();
538
547
  let buf = "", hasCalls = !1;
539
- for (let ref of assigned) ref.assigns && (buf += sep + assignsToString(ref.assigns, ref.id), ref.assigns = null, sep = ","), hasCalls ||= ref.calls !== null;
548
+ for (let ref of pending) ref.assignments && (buf += sep + assignmentsToString(ref.assignments, ref.id), ref.assignments = null, sep = ","), hasCalls ||= ref.calls !== null;
540
549
  if (buf && state.buf.push(buf), hasCalls) {
541
- for (let ref of assigned) if (ref.calls) {
550
+ for (let ref of pending) if (ref.calls) {
542
551
  for (let { method, args } of ref.calls) {
543
552
  state.buf.push((state.buf.length ? "," : "") + ref.id + "." + method + "(");
544
553
  for (let a = 0; a < args.length; a++) a && state.buf.push(","), writeCallArg(state, args[a]);
@@ -569,10 +578,14 @@ function writeAssigned(state) {
569
578
  }
570
579
  state.mutated = remaining;
571
580
  }
572
- state.assigned.size && writeAssigned(state);
581
+ state.pendingAssignments.size && writeAssigned(state);
573
582
  }
574
583
  function writeCallArg(state, val) {
575
- val === void 0 ? (state.wroteUndefined = !0, state.buf.push("$")) : writeProp(state, val, null, "") || state.buf.push("void 0");
584
+ if (val === void 0) state.wroteUndefined = !0, state.buf.push("$");
585
+ else if (writeProp(state, val, null, "")) {
586
+ let ref = state.refs.get(val) || state.strs.get(val);
587
+ ref && ref.id === null && assignId(state, ref);
588
+ } else state.buf.push("void 0");
576
589
  }
577
590
  function hasChannelMutations(state) {
578
591
  return hasMatchingMutations(state.mutated, state.channel?.readyId);
@@ -598,22 +611,22 @@ function writeProp(state, val, parent, accessor) {
598
611
  }
599
612
  function writeReferenceOr(state, write, val, parent, accessor) {
600
613
  let ref = state.refs.get(val);
601
- if (ref) return trackChannel(state, ref) ? parent && isCircular(parent, ref) ? (ensureId(state, ref), state.assigned.add(ref), addAssignment(ref, accessId(state, parent) + toAccess(accessor)), !1) : (state.buf.push(ensureId(state, ref)), !0) : !1;
614
+ if (ref) return trackChannel(state, ref) ? parent && isCircular(parent, ref) ? (ensureId(state, ref), state.pendingAssignments.add(ref), addAssignment(ref, accessId(state, parent) + toAccess(accessor)), !1) : (state.buf.push(ensureId(state, ref)), !0) : !1;
602
615
  let registered = REGISTRY.get(val);
603
- return registered ? writeRegistered(state, val, parent, accessor, registered) : (state.refs.set(val, ref = new Reference(parent, accessor, state.flush, state.buf.length)), ref.channel = state.channel, write(state, val, ref) ? !0 : (state.refs.delete(val), !1));
616
+ return registered ? writeRegistered(state, val, parent, accessor, registered) : (state.refs.set(val, ref = new Reference(parent, accessor, state.flushId, state.buf.length)), ref.channel = state.channel, write(state, val, ref) ? !0 : (state.refs.delete(val), !1));
604
617
  }
605
618
  function trackScope(state, val, scopeId) {
606
619
  let ref = state.refs.get(val);
607
620
  ref ? trackChannel(state, ref) : newScopeReference(state, val, scopeId);
608
621
  }
609
622
  function newScopeReference(state, val, scopeId) {
610
- let ref = new Reference(null, null, state.flush);
623
+ let ref = new Reference(null, null, state.flushId);
611
624
  return ref.scopeId = scopeId, ref.channel = state.channel, state.refs.set(val, ref), ref;
612
625
  }
613
626
  function writeRegistered(state, val, parent, accessor, registered) {
614
627
  let { scope } = registered;
615
628
  if (scope) {
616
- let ref = new Reference(parent, accessor, state.flush, state.buf.length);
629
+ let ref = new Reference(parent, accessor, state.flushId, state.buf.length);
617
630
  ref.channel = state.channel, state.refs.set(val, ref);
618
631
  let scopeId = scope[K_SCOPE_ID];
619
632
  trackScope(state, scope, scopeId), state.buf.push("_(" + scopeId + "," + quote(registered.id, 0) + ")");
@@ -626,7 +639,7 @@ function writeString(state, val, parent, accessor) {
626
639
  if (ref) {
627
640
  if (trackChannel(state, ref)) return state.buf.push(ensureId(state, ref)), !0;
628
641
  } else {
629
- let ref = new Reference(parent, accessor, state.flush, state.buf.length);
642
+ let ref = new Reference(parent, accessor, state.flushId, state.buf.length);
630
643
  ref.channel = state.channel, state.strs.set(val, ref);
631
644
  }
632
645
  }
@@ -758,44 +771,44 @@ function writePromise(state, val, ref) {
758
771
  return state.buf.push("(p=>p=new Promise((f,r)=>" + pId + "={f,r(e){p.catch(_=>0);r(e)}}))()"), val.then((v) => writeAsyncCall(state, boundary, handle, "f", v, channel, pId), (v) => writeAsyncCall(state, boundary, handle, "r", v, channel, pId)), boundary.startAsync(), !0;
759
772
  }
760
773
  function newAsyncHandle(state, parent, id) {
761
- let handle = {}, handleRef = new Reference(parent, null, state.flush, null, id);
774
+ let handle = {}, handleRef = new Reference(parent, null, state.flushId, null, id);
762
775
  return handleRef.channel = state.channel, state.refs.set(handle, handleRef), handle;
763
776
  }
764
777
  function writeMap(state, val, ref) {
765
778
  if (!val.size) return state.buf.push("new Map"), !0;
766
- let items = [], assigns, needsId, deferring = !1, i = 0;
779
+ let items = [], assignments, needsId, deferring = !1, i = 0;
767
780
  if (val.size < 25) {
768
781
  for (let [itemKey, itemValue] of val) {
769
782
  if (!deferring && (itemKey !== val && isAncestorMember(state, ref, itemKey) || itemValue !== val && isAncestorMember(state, ref, itemValue)) && (deferring = !0), deferring) {
770
783
  deferCall(state, ref, "set", [itemKey, itemValue]);
771
784
  continue;
772
785
  }
773
- itemKey === val && (itemKey = void 0, (assigns ||= []).push("a[" + i + "][0]")), itemValue === val && (itemValue = void 0, (assigns ||= []).push("a[" + i + "][1]")), needsId ||= isDedupedMember(itemKey) || isDedupedMember(itemValue), i = items.push(itemValue === void 0 ? itemKey === void 0 ? [] : [itemKey] : [itemKey, itemValue]);
786
+ itemKey === val && (itemKey = void 0, (assignments ||= []).push("a[" + i + "][0]")), itemValue === val && (itemValue = void 0, (assignments ||= []).push("a[" + i + "][1]")), needsId ||= isDedupedMember(itemKey) || isDedupedMember(itemValue), i = items.push(itemValue === void 0 ? itemKey === void 0 ? [] : [itemKey] : [itemKey, itemValue]);
774
787
  }
775
- writeArrayArg(state, ref, items, assigns && "((m,a)=>(" + assignsToString(assigns, "m") + ",a.forEach(i=>m.set(i[0],i[1])),m))(new Map,", "new Map(", needsId);
788
+ writeArrayArg(state, ref, items, assignments && "((m,a)=>(" + assignmentsToString(assignments, "m") + ",a.forEach(i=>m.set(i[0],i[1])),m))(new Map,", "new Map(", needsId);
776
789
  } else {
777
790
  for (let [itemKey, itemValue] of val) {
778
791
  if (!deferring && (itemKey !== val && isAncestorMember(state, ref, itemKey) || itemValue !== val && isAncestorMember(state, ref, itemValue)) && (deferring = !0), deferring) {
779
792
  deferCall(state, ref, "set", [itemKey, itemValue]);
780
793
  continue;
781
794
  }
782
- itemKey === val && (itemKey = 0, (assigns ||= []).push("a[" + i + "]")), itemValue === val && (itemValue = 0, (assigns ||= []).push("a[" + (i + 1) + "]")), needsId ||= isDedupedMember(itemKey) || isDedupedMember(itemValue), i = items.push(itemKey, itemValue);
795
+ itemKey === val && (itemKey = 0, (assignments ||= []).push("a[" + i + "]")), itemValue === val && (itemValue = 0, (assignments ||= []).push("a[" + (i + 1) + "]")), needsId ||= isDedupedMember(itemKey) || isDedupedMember(itemValue), i = items.push(itemKey, itemValue);
783
796
  }
784
- writeArrayArg(state, ref, items, assigns && "(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1])," + assignsToString(assigns, "new Map") + "))(", "(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),new Map))(", needsId);
797
+ writeArrayArg(state, ref, items, assignments && "(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1])," + assignmentsToString(assignments, "new Map") + "))(", "(a=>a.reduce((m,v,i)=>i%2?m:m.set(v,a[i+1]),new Map))(", needsId);
785
798
  }
786
799
  return !0;
787
800
  }
788
801
  function writeSet(state, val, ref) {
789
802
  if (!val.size) return state.buf.push("new Set"), !0;
790
- let items = [], assigns, needsId, deferring = !1, i = 0;
803
+ let items = [], assignments, needsId, deferring = !1, i = 0;
791
804
  for (let item of val) {
792
805
  if (!deferring && item !== val && isAncestorMember(state, ref, item) && (deferring = !0), deferring) {
793
806
  deferCall(state, ref, "add", [item]);
794
807
  continue;
795
808
  }
796
- item === val ? (item = 0, (assigns ||= []).push("i[" + i + "]")) : needsId ||= isDedupedMember(item), i = items.push(item);
809
+ item === val ? (item = 0, (assignments ||= []).push("i[" + i + "]")) : needsId ||= isDedupedMember(item), i = items.push(item);
797
810
  }
798
- return writeArrayArg(state, ref, items, assigns && "((s,i)=>(" + assignsToString(assigns, "s") + ",i.forEach(i=>s.add(i)),s))(new Set,", "new Set(", needsId), !0;
811
+ return writeArrayArg(state, ref, items, assignments && "((s,i)=>(" + assignmentsToString(assignments, "s") + ",i.forEach(i=>s.add(i)),s))(new Set,", "new Set(", needsId), !0;
799
812
  }
800
813
  function isAncestorMember(state, container, member) {
801
814
  if (member === null || typeof member != "object" && typeof member != "function") return !1;
@@ -806,13 +819,13 @@ function deferCall(state, ref, method, args) {
806
819
  ensureId(state, ref), (ref.calls ||= []).push({
807
820
  method,
808
821
  args
809
- }), state.assigned.add(ref);
822
+ }), state.pendingAssignments.add(ref);
810
823
  }
811
824
  function writeArrayArg(state, ref, items, assignsPrefix, plainPrefix, needsId) {
812
825
  if (assignsPrefix || needsId) {
813
- let arrayRef = new Reference(ref, null, state.flush, null, nextRefAccess(state));
826
+ let arrayRef = new Reference(ref, null, state.flushId, null, nextRefAccess(state));
814
827
  state.buf.push((assignsPrefix || plainPrefix) + arrayRef.id + "="), writeArray(state, items, arrayRef);
815
- } else state.buf.push(plainPrefix), writeArray(state, items, new Reference(ref, null, state.flush, state.buf.length));
828
+ } else state.buf.push(plainPrefix), writeArray(state, items, new Reference(ref, null, state.flushId, state.buf.length));
816
829
  state.buf.push(")");
817
830
  }
818
831
  function isDedupedMember(val) {
@@ -846,7 +859,7 @@ function writeTypedArray(state, val, ref) {
846
859
  if (!canWriteBuffer(state, val.buffer, ref)) return !1;
847
860
  let needsLength = val.byteOffset + val.byteLength < val.buffer.byteLength;
848
861
  state.buf.push("new " + val.constructor.name + "("), writeProp(state, val.buffer, ref, "buffer"), state.buf.push((val.byteOffset || needsLength ? "," + val.byteOffset + (needsLength ? "," + val.length : "") : "") + ")");
849
- } else state.refs.set(val.buffer, new Reference(ref, "buffer", state.flush, null)), state.buf.push("new " + val.constructor.name + (val.length === 0 ? "" : "(" + (hasOnlyZeros(val) ? val.length : typedArrayToInitString(val)) + ")"));
862
+ } else state.refs.set(val.buffer, new Reference(ref, "buffer", state.flushId, null)), state.buf.push("new " + val.constructor.name + (val.length === 0 ? "" : "(" + (hasOnlyZeros(val) ? val.length : typedArrayToInitString(val)) + ")"));
850
863
  return !0;
851
864
  }
852
865
  function writeWeakSet(state) {
@@ -868,7 +881,7 @@ function writeAggregateError(state, val, ref) {
868
881
  let inlined = writeProp(state, val.errors, ref, "errors");
869
882
  if (inlined || state.buf.push("[]"), val.message ? state.buf.push("," + quote(val.message + "", 0) + ")") : state.buf.push(")"), inlined) {
870
883
  let errorsRef = state.refs.get(val.errors);
871
- errorsRef?.id && (state.assigned.add(errorsRef), addAssignment(errorsRef, accessId(state, ref) + toAccess("errors")));
884
+ errorsRef?.id && (state.pendingAssignments.add(errorsRef), addAssignment(errorsRef, accessId(state, ref) + toAccess("errors")));
872
885
  }
873
886
  return !0;
874
887
  }
@@ -899,7 +912,7 @@ function writeRequest(state, val, ref) {
899
912
  let seenHeaders = state.refs.get(val.headers);
900
913
  if (seenHeaders) options += sep + "headers:" + ensureId(state, seenHeaders), sep = ",";
901
914
  else {
902
- state.refs.set(val.headers, new Reference(ref, "headers", state.flush, null));
915
+ state.refs.set(val.headers, new Reference(ref, "headers", state.flushId, null));
903
916
  let headers = stringEntriesToHeadersInit(val.headers);
904
917
  headers && (options += sep + "headers:" + headers, sep = ",");
905
918
  }
@@ -911,7 +924,7 @@ function writeResponse(state, val, ref) {
911
924
  let seenHeaders = state.refs.get(val.headers);
912
925
  if (seenHeaders) options += sep + "headers:" + ensureId(state, seenHeaders);
913
926
  else {
914
- state.refs.set(val.headers, new Reference(ref, "headers", state.flush, null));
927
+ state.refs.set(val.headers, new Reference(ref, "headers", state.flushId, null));
915
928
  let headers = stringEntriesToHeadersInit(val.headers);
916
929
  headers && (options += sep + "headers:" + headers);
917
930
  }
@@ -925,7 +938,7 @@ function writeIntl(state, val, name, ref) {
925
938
  }
926
939
  state.buf.push("new Intl." + name + "(" + quote(locale, 0) + ",");
927
940
  let optionsRef;
928
- return needsId ? (optionsRef = new Reference(ref, null, state.flush, null, nextRefAccess(state)), state.buf.push(optionsRef.id + "={")) : (optionsRef = new Reference(ref, null, state.flush, state.buf.length), state.buf.push("{")), writeObjectProps(state, options, optionsRef), state.buf.push("})"), !0;
941
+ return needsId ? (optionsRef = new Reference(ref, null, state.flushId, null, nextRefAccess(state)), state.buf.push(optionsRef.id + "={")) : (optionsRef = new Reference(ref, null, state.flushId, state.buf.length), state.buf.push("{")), writeObjectProps(state, options, optionsRef), state.buf.push("})"), !0;
929
942
  }
930
943
  function writeIntlLocale(state, val) {
931
944
  return state.buf.push("new Intl.Locale(" + quote(val.toString(), 0) + ")"), !0;
@@ -957,11 +970,11 @@ function writeGenerator(state, iter, ref) {
957
970
  if (returnValue === void 0 && !yields.length) return state.buf.push("(function*(){})()"), !0;
958
971
  let heldReturn = returnValue !== void 0 && isAncestorMember(state, ref, returnValue);
959
972
  if (state.buf.push(returnValue === void 0 ? "(function*(a){yield*a})(" : heldReturn ? "(function*(a,r){yield*a;return r.v})(" : "(function*(a,r){yield*a;return r})("), needsId) {
960
- let arrayRef = new Reference(ref, null, state.flush, null, nextRefAccess(state));
973
+ let arrayRef = new Reference(ref, null, state.flushId, null, nextRefAccess(state));
961
974
  state.buf.push(arrayRef.id + "="), writeArray(state, yields, arrayRef);
962
- } else writeArray(state, yields, new Reference(ref, null, state.flush, state.buf.length));
975
+ } else writeArray(state, yields, new Reference(ref, null, state.flushId, state.buf.length));
963
976
  if (heldReturn) {
964
- let holder = new Reference(ref, null, state.flush, null, nextRefAccess(state));
977
+ let holder = new Reference(ref, null, state.flushId, null, nextRefAccess(state));
965
978
  state.buf.push("," + holder.id + "={}"), writeProp(state, returnValue, holder, "v");
966
979
  } else if (returnValue !== void 0) {
967
980
  let sepIndex = state.buf.push(",") - 1;
@@ -1000,7 +1013,7 @@ function writeMaybeIterableProps(state, val, ref) {
1000
1013
  let yieldSelf = "", iterArr = [];
1001
1014
  for (let item of val) item === val && !(yieldSelf || iterArr.length) ? yieldSelf = "yield this;" : iterArr.push(item);
1002
1015
  if (iterArr.length) {
1003
- let iterRef = new Reference(ref, null, state.flush, null, nextRefAccess(state));
1016
+ let iterRef = new Reference(ref, null, state.flushId, null, nextRefAccess(state));
1004
1017
  state.buf.push(sep + "*[(" + iterRef.id + "="), writeArray(state, iterArr, iterRef), state.buf.push(",Symbol.iterator)](){" + yieldSelf + "yield*" + iterRef.id + "}");
1005
1018
  } else state.buf.push(sep + "*[Symbol.iterator](){" + yieldSelf.slice(0, -1) + "}");
1006
1019
  sep = ",";
@@ -1112,7 +1125,7 @@ function accessId(state, ref) {
1112
1125
  }
1113
1126
  function assignId(state, ref) {
1114
1127
  let { pos } = ref;
1115
- if (ref.id = nextRefAccess(state), pos !== null && ref.flush === state.flush) return pos === 0 ? state.buf[0] = ref.id + "=" + state.buf[0] : state.buf[pos - 1] += ref.id + "=", ref.id;
1128
+ if (ref.id = nextRefAccess(state), pos !== null && ref.flushId === state.flushId) return pos === 0 ? state.buf[0] = ref.id + "=" + state.buf[0] : state.buf[pos - 1] += ref.id + "=", ref.id;
1116
1129
  ref.channel = state.channel;
1117
1130
  let cur = ref, accessPrevValue = "";
1118
1131
  do {
@@ -1122,7 +1135,7 @@ function assignId(state, ref) {
1122
1135
  accessPrevValue = parent.id + accessPrevValue;
1123
1136
  break;
1124
1137
  }
1125
- if (parent.flush === state.flush || parent.scopeId !== void 0) {
1138
+ if (parent.flushId === state.flushId || parent.scopeId !== void 0) {
1126
1139
  accessPrevValue = accessId(state, parent) + accessPrevValue;
1127
1140
  break;
1128
1141
  }
@@ -1130,11 +1143,11 @@ function assignId(state, ref) {
1130
1143
  } while (cur);
1131
1144
  return ref.id + "=" + accessPrevValue;
1132
1145
  }
1133
- function assignsToString(assigns, value) {
1134
- return assigns.length > 100 ? "($=>(" + assigns.join("=$,") + "=$))(" + value + ")" : assigns.join("=") + "=" + value;
1146
+ function assignmentsToString(assignments, value) {
1147
+ return assignments.length > 100 ? "($=>(" + assignments.join("=$,") + "=$))(" + value + ")" : assignments.join("=") + "=" + value;
1135
1148
  }
1136
1149
  function addAssignment(ref, assign) {
1137
- ref.assigns ? ref.assigns.push(assign) : ref.assigns = [assign];
1150
+ ref.assignments ? ref.assignments.push(assign) : ref.assignments = [assign];
1138
1151
  }
1139
1152
  function nextRefAccess(state) {
1140
1153
  return "_." + nextId(state);
@@ -1815,7 +1828,13 @@ function offTick(cb) {
1815
1828
  function flushTickQueue() {
1816
1829
  let queue = tickQueue;
1817
1830
  tickQueue = void 0;
1818
- for (let cb of queue) cb(!0);
1831
+ for (let cb of queue) try {
1832
+ cb(!0);
1833
+ } catch (err) {
1834
+ tick(() => {
1835
+ throw err;
1836
+ });
1837
+ }
1819
1838
  }
1820
1839
  //#endregion
1821
1840
  //#region src/html/attrs.ts
@@ -1954,13 +1973,13 @@ function escapeSingleQuotedAttrValue(value) {
1954
1973
  return singleQuoteAttrReplacements.test(value) ? value.replace(singleQuoteAttrReplacements, replaceUnsafeSingleQuoteAttrChar) : value;
1955
1974
  }
1956
1975
  function replaceUnsafeSingleQuoteAttrChar(match) {
1957
- return match === "'" ? "&#39;" : "&amp;";
1976
+ return match === "'" ? "&#39;" : match === "\r" ? "&#13;" : "&amp;";
1958
1977
  }
1959
1978
  function escapeDoubleQuotedAttrValue(value) {
1960
1979
  return doubleQuoteAttrReplacements.test(value) ? value.replace(doubleQuoteAttrReplacements, replaceUnsafeDoubleQuoteAttrChar) : value;
1961
1980
  }
1962
1981
  function replaceUnsafeDoubleQuoteAttrChar(match) {
1963
- return match === "\"" ? "&#34;" : "&amp;";
1982
+ return match === "\"" ? "&#34;" : match === "\r" ? "&#13;" : "&amp;";
1964
1983
  }
1965
1984
  function normalizedValueMatches(a, b) {
1966
1985
  let value = normalizeStrAttrValue(b);
@@ -1,3 +1,2 @@
1
- import { type Tag } from "@marko/compiler/babel-utils";
2
- declare const _default: Tag;
1
+ declare const _default: import("@marko/compiler/babel-utils").Tag;
3
2
  export default _default;
@@ -1,3 +1,2 @@
1
- import { type Tag } from "@marko/compiler/babel-utils";
2
- declare const _default: Tag;
1
+ declare const _default: import("@marko/compiler/babel-utils").Tag;
3
2
  export default _default;
@@ -1,3 +1,2 @@
1
- import { type Tag } from "@marko/compiler/babel-utils";
2
- declare const _default: Tag;
1
+ declare const _default: import("@marko/compiler/babel-utils").Tag;
3
2
  export default _default;