react-server-dom-webpack 19.0.0 → 19.0.2

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.
@@ -1320,7 +1320,7 @@
1320
1320
  function serializeServerReference(request, serverReference) {
1321
1321
  var writtenServerReferences = request.writtenServerReferences,
1322
1322
  existingId = writtenServerReferences.get(serverReference);
1323
- if (void 0 !== existingId) return "$F" + existingId.toString(16);
1323
+ if (void 0 !== existingId) return "$h" + existingId.toString(16);
1324
1324
  existingId = serverReference.$$bound;
1325
1325
  existingId = null === existingId ? null : Promise.resolve(existingId);
1326
1326
  var id = serverReference.$$id,
@@ -1344,7 +1344,7 @@
1344
1344
  : { id: id, bound: existingId };
1345
1345
  request = outlineModel(request, existingId);
1346
1346
  writtenServerReferences.set(serverReference, request);
1347
- return "$F" + request.toString(16);
1347
+ return "$h" + request.toString(16);
1348
1348
  }
1349
1349
  function serializeLargeTextString(request, text) {
1350
1350
  request.pendingChunks++;
@@ -2538,37 +2538,65 @@
2538
2538
  if ("fulfilled" === moduleExports.status)
2539
2539
  moduleExports = moduleExports.value;
2540
2540
  else throw moduleExports.reason;
2541
- return "*" === metadata[2]
2542
- ? moduleExports
2543
- : "" === metadata[2]
2544
- ? moduleExports.__esModule
2545
- ? moduleExports.default
2546
- : moduleExports
2547
- : moduleExports[metadata[2]];
2548
- }
2549
- function Chunk(status, value, reason, response) {
2541
+ if ("*" === metadata[2]) return moduleExports;
2542
+ if ("" === metadata[2])
2543
+ return moduleExports.__esModule ? moduleExports.default : moduleExports;
2544
+ if (hasOwnProperty.call(moduleExports, metadata[2]))
2545
+ return moduleExports[metadata[2]];
2546
+ }
2547
+ function ReactPromise(status, value, reason) {
2550
2548
  this.status = status;
2551
2549
  this.value = value;
2552
2550
  this.reason = reason;
2553
- this._response = response;
2554
2551
  }
2555
- function createPendingChunk(response) {
2556
- return new Chunk("pending", null, null, response);
2552
+ function wakeChunk(response, listeners, value) {
2553
+ for (var i = 0; i < listeners.length; i++) {
2554
+ var listener = listeners[i];
2555
+ "function" === typeof listener
2556
+ ? listener(value)
2557
+ : fulfillReference(response, listener, value);
2558
+ }
2559
+ }
2560
+ function rejectChunk(response, listeners, error) {
2561
+ for (var i = 0; i < listeners.length; i++) {
2562
+ var listener = listeners[i];
2563
+ "function" === typeof listener
2564
+ ? listener(error)
2565
+ : rejectReference(response, listener.handler, error);
2566
+ }
2557
2567
  }
2558
- function wakeChunk(listeners, value) {
2559
- for (var i = 0; i < listeners.length; i++) (0, listeners[i])(value);
2568
+ function resolveBlockedCycle(resolvedChunk, reference) {
2569
+ var referencedChunk = reference.handler.chunk;
2570
+ if (null === referencedChunk) return null;
2571
+ if (referencedChunk === resolvedChunk) return reference.handler;
2572
+ reference = referencedChunk.value;
2573
+ if (null !== reference)
2574
+ for (
2575
+ referencedChunk = 0;
2576
+ referencedChunk < reference.length;
2577
+ referencedChunk++
2578
+ ) {
2579
+ var listener = reference[referencedChunk];
2580
+ if (
2581
+ "function" !== typeof listener &&
2582
+ ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2583
+ null !== listener)
2584
+ )
2585
+ return listener;
2586
+ }
2587
+ return null;
2560
2588
  }
2561
- function triggerErrorOnChunk(chunk, error) {
2589
+ function triggerErrorOnChunk(response, chunk, error) {
2562
2590
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2563
2591
  chunk.reason.error(error);
2564
2592
  else {
2565
2593
  var listeners = chunk.reason;
2566
2594
  chunk.status = "rejected";
2567
2595
  chunk.reason = error;
2568
- null !== listeners && wakeChunk(listeners, error);
2596
+ null !== listeners && rejectChunk(response, listeners, error);
2569
2597
  }
2570
2598
  }
2571
- function resolveModelChunk(chunk, value, id) {
2599
+ function resolveModelChunk(response, chunk, value, id) {
2572
2600
  if ("pending" !== chunk.status)
2573
2601
  (chunk = chunk.reason),
2574
2602
  "C" === value[0]
@@ -2579,42 +2607,74 @@
2579
2607
  rejectListeners = chunk.reason;
2580
2608
  chunk.status = "resolved_model";
2581
2609
  chunk.value = value;
2582
- chunk.reason = id;
2610
+ chunk.reason = _defineProperty({ id: id }, RESPONSE_SYMBOL, response);
2583
2611
  if (null !== resolveListeners)
2584
- switch ((initializeModelChunk(chunk), chunk.status)) {
2612
+ a: switch ((initializeModelChunk(chunk), chunk.status)) {
2585
2613
  case "fulfilled":
2586
- wakeChunk(resolveListeners, chunk.value);
2614
+ wakeChunk(response, resolveListeners, chunk.value);
2587
2615
  break;
2588
- case "pending":
2589
2616
  case "blocked":
2590
- case "cyclic":
2617
+ for (value = 0; value < resolveListeners.length; value++)
2618
+ if (
2619
+ ((id = resolveListeners[value]), "function" !== typeof id)
2620
+ ) {
2621
+ var cyclicHandler = resolveBlockedCycle(chunk, id);
2622
+ if (null !== cyclicHandler)
2623
+ switch (
2624
+ (fulfillReference(response, id, cyclicHandler.value),
2625
+ resolveListeners.splice(value, 1),
2626
+ value--,
2627
+ null !== rejectListeners &&
2628
+ ((id = rejectListeners.indexOf(id)),
2629
+ -1 !== id && rejectListeners.splice(id, 1)),
2630
+ chunk.status)
2631
+ ) {
2632
+ case "fulfilled":
2633
+ wakeChunk(response, resolveListeners, chunk.value);
2634
+ break a;
2635
+ case "rejected":
2636
+ null !== rejectListeners &&
2637
+ rejectChunk(response, rejectListeners, chunk.reason);
2638
+ break a;
2639
+ }
2640
+ }
2641
+ case "pending":
2591
2642
  if (chunk.value)
2592
- for (value = 0; value < resolveListeners.length; value++)
2593
- chunk.value.push(resolveListeners[value]);
2643
+ for (
2644
+ response = 0;
2645
+ response < resolveListeners.length;
2646
+ response++
2647
+ )
2648
+ chunk.value.push(resolveListeners[response]);
2594
2649
  else chunk.value = resolveListeners;
2595
2650
  if (chunk.reason) {
2596
2651
  if (rejectListeners)
2597
- for (value = 0; value < rejectListeners.length; value++)
2598
- chunk.reason.push(rejectListeners[value]);
2652
+ for (
2653
+ resolveListeners = 0;
2654
+ resolveListeners < rejectListeners.length;
2655
+ resolveListeners++
2656
+ )
2657
+ chunk.reason.push(rejectListeners[resolveListeners]);
2599
2658
  } else chunk.reason = rejectListeners;
2600
2659
  break;
2601
2660
  case "rejected":
2602
- rejectListeners && wakeChunk(rejectListeners, chunk.reason);
2661
+ rejectListeners &&
2662
+ wakeChunk(response, rejectListeners, chunk.reason);
2603
2663
  }
2604
2664
  }
2605
2665
  }
2606
2666
  function createResolvedIteratorResultChunk(response, value, done) {
2607
- return new Chunk(
2667
+ return new ReactPromise(
2608
2668
  "resolved_model",
2609
2669
  (done ? '{"done":true,"value":' : '{"done":false,"value":') +
2610
2670
  value +
2611
2671
  "}",
2612
- -1,
2613
- response
2672
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
2614
2673
  );
2615
2674
  }
2616
- function resolveIteratorResultChunk(chunk, value, done) {
2675
+ function resolveIteratorResultChunk(response, chunk, value, done) {
2617
2676
  resolveModelChunk(
2677
+ response,
2618
2678
  chunk,
2619
2679
  (done ? '{"done":true,"value":' : '{"done":false,"value":') +
2620
2680
  value +
@@ -2622,38 +2682,68 @@
2622
2682
  -1
2623
2683
  );
2624
2684
  }
2625
- function loadServerReference$1(
2626
- response,
2627
- id,
2628
- bound,
2629
- parentChunk,
2630
- parentObject,
2631
- key
2632
- ) {
2685
+ function loadServerReference$1(response, metaData, parentObject, key) {
2686
+ var id = metaData.id;
2687
+ if ("string" !== typeof id || "then" === key) return null;
2633
2688
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2634
- id = preloadModule(serverReference);
2635
- if (bound)
2636
- bound = Promise.all([bound, id]).then(function (_ref) {
2637
- _ref = _ref[0];
2638
- var fn = requireModule(serverReference);
2639
- return fn.bind.apply(fn, [null].concat(_ref));
2640
- });
2641
- else if (id)
2642
- bound = Promise.resolve(id).then(function () {
2643
- return requireModule(serverReference);
2644
- });
2689
+ id = metaData.bound;
2690
+ var promise = preloadModule(serverReference);
2691
+ if (promise)
2692
+ id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2693
+ else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2645
2694
  else return requireModule(serverReference);
2646
- bound.then(
2647
- createModelResolver(
2648
- parentChunk,
2649
- parentObject,
2650
- key,
2651
- !1,
2652
- response,
2653
- createModel,
2654
- []
2655
- ),
2656
- createModelReject(parentChunk)
2695
+ if (initializingHandler) {
2696
+ var handler = initializingHandler;
2697
+ handler.deps++;
2698
+ } else
2699
+ handler = initializingHandler = {
2700
+ chunk: null,
2701
+ value: null,
2702
+ reason: null,
2703
+ deps: 1,
2704
+ errored: !1
2705
+ };
2706
+ promise.then(
2707
+ function () {
2708
+ var resolvedValue = requireModule(serverReference);
2709
+ if (metaData.bound) {
2710
+ var promiseValue = metaData.bound.value;
2711
+ promiseValue = Array.isArray(promiseValue)
2712
+ ? promiseValue.slice(0)
2713
+ : [];
2714
+ promiseValue.unshift(null);
2715
+ resolvedValue = resolvedValue.bind.apply(
2716
+ resolvedValue,
2717
+ promiseValue
2718
+ );
2719
+ }
2720
+ parentObject[key] = resolvedValue;
2721
+ "" === key &&
2722
+ null === handler.value &&
2723
+ (handler.value = resolvedValue);
2724
+ handler.deps--;
2725
+ 0 === handler.deps &&
2726
+ ((resolvedValue = handler.chunk),
2727
+ null !== resolvedValue &&
2728
+ "blocked" === resolvedValue.status &&
2729
+ ((promiseValue = resolvedValue.value),
2730
+ (resolvedValue.status = "fulfilled"),
2731
+ (resolvedValue.value = handler.value),
2732
+ (resolvedValue.reason = null),
2733
+ null !== promiseValue &&
2734
+ wakeChunk(response, promiseValue, handler.value)));
2735
+ },
2736
+ function (error) {
2737
+ if (!handler.errored) {
2738
+ handler.errored = !0;
2739
+ handler.value = null;
2740
+ handler.reason = error;
2741
+ var chunk = handler.chunk;
2742
+ null !== chunk &&
2743
+ "blocked" === chunk.status &&
2744
+ triggerErrorOnChunk(response, chunk, error);
2745
+ }
2746
+ }
2657
2747
  );
2658
2748
  return null;
2659
2749
  }
@@ -2695,51 +2785,68 @@
2695
2785
  value[i],
2696
2786
  parentObj
2697
2787
  )),
2698
- void 0 !== parentObj ? (value[i] = parentObj) : delete value[i]);
2788
+ void 0 !== parentObj || "__proto__" === i
2789
+ ? (value[i] = parentObj)
2790
+ : delete value[i]);
2699
2791
  return value;
2700
2792
  }
2701
2793
  function initializeModelChunk(chunk) {
2702
- var prevChunk = initializingChunk,
2703
- prevBlocked = initializingChunkBlockedModel;
2704
- initializingChunk = chunk;
2705
- initializingChunkBlockedModel = null;
2706
- var rootReference =
2707
- -1 === chunk.reason ? void 0 : chunk.reason.toString(16),
2708
- resolvedModel = chunk.value;
2709
- chunk.status = "cyclic";
2794
+ var prevHandler = initializingHandler;
2795
+ initializingHandler = null;
2796
+ var _chunk$reason = chunk.reason,
2797
+ response = _chunk$reason[RESPONSE_SYMBOL];
2798
+ _chunk$reason = _chunk$reason.id;
2799
+ _chunk$reason =
2800
+ -1 === _chunk$reason ? void 0 : _chunk$reason.toString(16);
2801
+ var resolvedModel = chunk.value;
2802
+ chunk.status = "blocked";
2710
2803
  chunk.value = null;
2711
2804
  chunk.reason = null;
2712
2805
  try {
2713
2806
  var rawModel = JSON.parse(resolvedModel),
2714
2807
  value = reviveModel(
2715
- chunk._response,
2808
+ response,
2716
2809
  { "": rawModel },
2717
2810
  "",
2718
2811
  rawModel,
2719
- rootReference
2720
- );
2721
- if (
2722
- null !== initializingChunkBlockedModel &&
2723
- 0 < initializingChunkBlockedModel.deps
2724
- )
2725
- (initializingChunkBlockedModel.value = value),
2726
- (chunk.status = "blocked");
2727
- else {
2728
- var resolveListeners = chunk.value;
2729
- chunk.status = "fulfilled";
2730
- chunk.value = value;
2731
- null !== resolveListeners && wakeChunk(resolveListeners, value);
2812
+ _chunk$reason
2813
+ ),
2814
+ resolveListeners = chunk.value;
2815
+ if (null !== resolveListeners)
2816
+ for (
2817
+ chunk.value = null, chunk.reason = null, rawModel = 0;
2818
+ rawModel < resolveListeners.length;
2819
+ rawModel++
2820
+ ) {
2821
+ var listener = resolveListeners[rawModel];
2822
+ "function" === typeof listener
2823
+ ? listener(value)
2824
+ : fulfillReference(response, listener, value);
2825
+ }
2826
+ if (null !== initializingHandler) {
2827
+ if (initializingHandler.errored) throw initializingHandler.reason;
2828
+ if (0 < initializingHandler.deps) {
2829
+ initializingHandler.value = value;
2830
+ initializingHandler.chunk = chunk;
2831
+ return;
2832
+ }
2732
2833
  }
2834
+ chunk.status = "fulfilled";
2835
+ chunk.value = value;
2836
+ chunk.reason = null;
2733
2837
  } catch (error) {
2734
2838
  (chunk.status = "rejected"), (chunk.reason = error);
2735
2839
  } finally {
2736
- (initializingChunk = prevChunk),
2737
- (initializingChunkBlockedModel = prevBlocked);
2840
+ initializingHandler = prevHandler;
2738
2841
  }
2739
2842
  }
2740
2843
  function reportGlobalError(response, error) {
2741
2844
  response._chunks.forEach(function (chunk) {
2742
- "pending" === chunk.status && triggerErrorOnChunk(chunk, error);
2845
+ "pending" === chunk.status
2846
+ ? triggerErrorOnChunk(response, chunk, error)
2847
+ : "fulfilled" === chunk.status &&
2848
+ null !== chunk.reason &&
2849
+ chunk.reason.error(error);
2743
2850
  });
2744
2851
  }
2745
2852
  function getChunk(response, id) {
@@ -2748,48 +2855,60 @@
2748
2855
  chunk ||
2749
2856
  ((chunk = response._formData.get(response._prefix + id)),
2750
2857
  (chunk =
2751
- null != chunk
2752
- ? new Chunk("resolved_model", chunk, id, response)
2753
- : createPendingChunk(response)),
2858
+ "string" === typeof chunk
2859
+ ? new ReactPromise(
2860
+ "resolved_model",
2861
+ chunk,
2862
+ _defineProperty({ id: id }, RESPONSE_SYMBOL, response)
2863
+ )
2864
+ : new ReactPromise("pending", null, null)),
2754
2865
  chunks.set(id, chunk));
2755
2866
  return chunk;
2756
2867
  }
2757
- function createModelResolver(
2758
- chunk,
2759
- parentObject,
2760
- key,
2761
- cyclic,
2762
- response,
2763
- map,
2764
- path
2765
- ) {
2766
- if (initializingChunkBlockedModel) {
2767
- var blocked = initializingChunkBlockedModel;
2768
- cyclic || blocked.deps++;
2769
- } else
2770
- blocked = initializingChunkBlockedModel = {
2771
- deps: cyclic ? 0 : 1,
2772
- value: null
2773
- };
2774
- return function (value) {
2775
- for (var i = 1; i < path.length; i++) value = value[path[i]];
2776
- parentObject[key] = map(response, value);
2777
- "" === key &&
2778
- null === blocked.value &&
2779
- (blocked.value = parentObject[key]);
2780
- blocked.deps--;
2781
- 0 === blocked.deps &&
2782
- "blocked" === chunk.status &&
2783
- ((value = chunk.value),
2784
- (chunk.status = "fulfilled"),
2785
- (chunk.value = blocked.value),
2786
- null !== value && wakeChunk(value, blocked.value));
2787
- };
2788
- }
2789
- function createModelReject(chunk) {
2790
- return function (error) {
2791
- return triggerErrorOnChunk(chunk, error);
2792
- };
2868
+ function fulfillReference(response, reference, value) {
2869
+ var handler = reference.handler,
2870
+ parentObject = reference.parentObject,
2871
+ key = reference.key,
2872
+ map = reference.map,
2873
+ path = reference.path;
2874
+ try {
2875
+ for (var i = 1; i < path.length; i++) {
2876
+ var name = path[i];
2877
+ if (
2878
+ "object" !== typeof value ||
2879
+ !hasOwnProperty.call(value, name) ||
2880
+ value instanceof Promise
2881
+ )
2882
+ throw Error("Invalid reference.");
2883
+ value = value[name];
2884
+ }
2885
+ var mappedValue = map(response, value, parentObject, key);
2886
+ parentObject[key] = mappedValue;
2887
+ "" === key && null === handler.value && (handler.value = mappedValue);
2888
+ } catch (error) {
2889
+ rejectReference(response, reference.handler, error);
2890
+ return;
2891
+ }
2892
+ handler.deps--;
2893
+ 0 === handler.deps &&
2894
+ ((reference = handler.chunk),
2895
+ null !== reference &&
2896
+ "blocked" === reference.status &&
2897
+ ((value = reference.value),
2898
+ (reference.status = "fulfilled"),
2899
+ (reference.value = handler.value),
2900
+ (reference.reason = handler.reason),
2901
+ null !== value && wakeChunk(response, value, handler.value)));
2902
+ }
2903
+ function rejectReference(response, handler, error) {
2904
+ handler.errored ||
2905
+ ((handler.errored = !0),
2906
+ (handler.value = null),
2907
+ (handler.reason = error),
2908
+ (handler = handler.chunk),
2909
+ null !== handler &&
2910
+ "blocked" === handler.status &&
2911
+ triggerErrorOnChunk(response, handler, error));
2793
2912
  }
2794
2913
  function getOutlinedModel(response, reference, parentObject, key, map) {
2795
2914
  reference = reference.split(":");
@@ -2801,29 +2920,61 @@
2801
2920
  }
2802
2921
  switch (id.status) {
2803
2922
  case "fulfilled":
2804
- parentObject = id.value;
2805
- for (key = 1; key < reference.length; key++)
2806
- parentObject = parentObject[reference[key]];
2807
- return map(response, parentObject);
2923
+ id = id.value;
2924
+ for (var i = 1; i < reference.length; i++) {
2925
+ var name = reference[i];
2926
+ if (
2927
+ "object" !== typeof id ||
2928
+ !hasOwnProperty.call(id, name) ||
2929
+ id instanceof Promise
2930
+ )
2931
+ throw Error("Invalid reference.");
2932
+ id = id[name];
2933
+ }
2934
+ return map(response, id, parentObject, key);
2808
2935
  case "pending":
2809
2936
  case "blocked":
2810
- case "cyclic":
2811
- var parentChunk = initializingChunk;
2812
- id.then(
2813
- createModelResolver(
2814
- parentChunk,
2815
- parentObject,
2816
- key,
2817
- "cyclic" === id.status,
2818
- response,
2819
- map,
2820
- reference
2821
- ),
2822
- createModelReject(parentChunk)
2937
+ return (
2938
+ initializingHandler
2939
+ ? ((response = initializingHandler), response.deps++)
2940
+ : (response = initializingHandler =
2941
+ {
2942
+ chunk: null,
2943
+ value: null,
2944
+ reason: null,
2945
+ deps: 1,
2946
+ errored: !1
2947
+ }),
2948
+ (parentObject = {
2949
+ handler: response,
2950
+ parentObject: parentObject,
2951
+ key: key,
2952
+ map: map,
2953
+ path: reference
2954
+ }),
2955
+ null === id.value
2956
+ ? (id.value = [parentObject])
2957
+ : id.value.push(parentObject),
2958
+ null === id.reason
2959
+ ? (id.reason = [parentObject])
2960
+ : id.reason.push(parentObject),
2961
+ null
2823
2962
  );
2824
- return null;
2825
2963
  default:
2826
- throw id.reason;
2964
+ return (
2965
+ initializingHandler
2966
+ ? ((initializingHandler.errored = !0),
2967
+ (initializingHandler.value = null),
2968
+ (initializingHandler.reason = id.reason))
2969
+ : (initializingHandler = {
2970
+ chunk: null,
2971
+ value: null,
2972
+ reason: id.reason,
2973
+ deps: 0,
2974
+ errored: !0
2975
+ }),
2976
+ null
2977
+ );
2827
2978
  }
2828
2979
  }
2829
2980
  function createMap(response, model) {
@@ -2835,8 +2986,8 @@
2835
2986
  function extractIterator(response, model) {
2836
2987
  return model[Symbol.iterator]();
2837
2988
  }
2838
- function createModel(response, model) {
2839
- return model;
2989
+ function createModel(response, model, parentObject, key) {
2990
+ return "then" === key && "function" === typeof model ? null : model;
2840
2991
  }
2841
2992
  function parseTypedArray(
2842
2993
  response,
@@ -2847,44 +2998,77 @@
2847
2998
  parentKey
2848
2999
  ) {
2849
3000
  reference = parseInt(reference.slice(2), 16);
2850
- reference = response._formData.get(response._prefix + reference);
2851
- reference =
2852
- constructor === ArrayBuffer
2853
- ? reference.arrayBuffer()
2854
- : reference.arrayBuffer().then(function (buffer) {
2855
- return new constructor(buffer);
2856
- });
2857
- bytesPerElement = initializingChunk;
3001
+ bytesPerElement = response._prefix + reference;
3002
+ if (response._chunks.has(reference))
3003
+ throw Error("Already initialized typed array.");
3004
+ reference = response._formData.get(bytesPerElement).arrayBuffer();
3005
+ if (initializingHandler) {
3006
+ var handler = initializingHandler;
3007
+ handler.deps++;
3008
+ } else
3009
+ handler = initializingHandler = {
3010
+ chunk: null,
3011
+ value: null,
3012
+ reason: null,
3013
+ deps: 1,
3014
+ errored: !1
3015
+ };
2858
3016
  reference.then(
2859
- createModelResolver(
2860
- bytesPerElement,
2861
- parentObject,
2862
- parentKey,
2863
- !1,
2864
- response,
2865
- createModel,
2866
- []
2867
- ),
2868
- createModelReject(bytesPerElement)
3017
+ function (buffer) {
3018
+ buffer =
3019
+ constructor === ArrayBuffer ? buffer : new constructor(buffer);
3020
+ parentObject[parentKey] = buffer;
3021
+ "" === parentKey &&
3022
+ null === handler.value &&
3023
+ (handler.value = buffer);
3024
+ handler.deps--;
3025
+ if (
3026
+ 0 === handler.deps &&
3027
+ ((buffer = handler.chunk),
3028
+ null !== buffer && "blocked" === buffer.status)
3029
+ ) {
3030
+ var resolveListeners = buffer.value;
3031
+ buffer.status = "fulfilled";
3032
+ buffer.value = handler.value;
3033
+ buffer.reason = null;
3034
+ null !== resolveListeners &&
3035
+ wakeChunk(response, resolveListeners, handler.value);
3036
+ }
3037
+ },
3038
+ function (error) {
3039
+ if (!handler.errored) {
3040
+ handler.errored = !0;
3041
+ handler.value = null;
3042
+ handler.reason = error;
3043
+ var chunk = handler.chunk;
3044
+ null !== chunk &&
3045
+ "blocked" === chunk.status &&
3046
+ triggerErrorOnChunk(response, chunk, error);
3047
+ }
3048
+ }
2869
3049
  );
2870
3050
  return null;
2871
3051
  }
2872
3052
  function resolveStream(response, id, stream, controller) {
2873
3053
  var chunks = response._chunks;
2874
- stream = new Chunk("fulfilled", stream, controller, response);
3054
+ stream = new ReactPromise("fulfilled", stream, controller);
2875
3055
  chunks.set(id, stream);
2876
3056
  response = response._formData.getAll(response._prefix + id);
2877
3057
  for (id = 0; id < response.length; id++)
2878
3058
  (chunks = response[id]),
2879
- "C" === chunks[0]
2880
- ? controller.close(
2881
- "C" === chunks ? '"$undefined"' : chunks.slice(1)
2882
- )
2883
- : controller.enqueueModel(chunks);
3059
+ "string" === typeof chunks &&
3060
+ ("C" === chunks[0]
3061
+ ? controller.close(
3062
+ "C" === chunks ? '"$undefined"' : chunks.slice(1)
3063
+ )
3064
+ : controller.enqueueModel(chunks));
2884
3065
  }
2885
3066
  function parseReadableStream(response, reference, type) {
2886
3067
  reference = parseInt(reference.slice(2), 16);
2887
- var controller = null;
3068
+ if (response._chunks.has(reference))
3069
+ throw Error("Already initialized stream.");
3070
+ var controller = null,
3071
+ closed = !1;
2888
3072
  type = new ReadableStream({
2889
3073
  type: type,
2890
3074
  start: function (c) {
@@ -2895,7 +3079,11 @@
2895
3079
  resolveStream(response, reference, type, {
2896
3080
  enqueueModel: function (json) {
2897
3081
  if (null === previousBlockedChunk) {
2898
- var chunk = new Chunk("resolved_model", json, -1, response);
3082
+ var chunk = new ReactPromise(
3083
+ "resolved_model",
3084
+ json,
3085
+ _defineProperty({ id: -1 }, RESPONSE_SYMBOL, response)
3086
+ );
2899
3087
  initializeModelChunk(chunk);
2900
3088
  "fulfilled" === chunk.status
2901
3089
  ? controller.enqueue(chunk.value)
@@ -2910,7 +3098,7 @@
2910
3098
  (previousBlockedChunk = chunk));
2911
3099
  } else {
2912
3100
  chunk = previousBlockedChunk;
2913
- var _chunk = createPendingChunk(response);
3101
+ var _chunk = new ReactPromise("pending", null, null);
2914
3102
  _chunk.then(
2915
3103
  function (v) {
2916
3104
  return controller.enqueue(v);
@@ -2922,29 +3110,33 @@
2922
3110
  previousBlockedChunk = _chunk;
2923
3111
  chunk.then(function () {
2924
3112
  previousBlockedChunk === _chunk && (previousBlockedChunk = null);
2925
- resolveModelChunk(_chunk, json, -1);
3113
+ resolveModelChunk(response, _chunk, json, -1);
2926
3114
  });
2927
3115
  }
2928
3116
  },
2929
3117
  close: function () {
2930
- if (null === previousBlockedChunk) controller.close();
2931
- else {
2932
- var blockedChunk = previousBlockedChunk;
2933
- previousBlockedChunk = null;
2934
- blockedChunk.then(function () {
2935
- return controller.close();
2936
- });
2937
- }
3118
+ if (!closed)
3119
+ if (((closed = !0), null === previousBlockedChunk))
3120
+ controller.close();
3121
+ else {
3122
+ var blockedChunk = previousBlockedChunk;
3123
+ previousBlockedChunk = null;
3124
+ blockedChunk.then(function () {
3125
+ return controller.close();
3126
+ });
3127
+ }
2938
3128
  },
2939
3129
  error: function (error) {
2940
- if (null === previousBlockedChunk) controller.error(error);
2941
- else {
2942
- var blockedChunk = previousBlockedChunk;
2943
- previousBlockedChunk = null;
2944
- blockedChunk.then(function () {
2945
- return controller.error(error);
2946
- });
2947
- }
3130
+ if (!closed)
3131
+ if (((closed = !0), null === previousBlockedChunk))
3132
+ controller.error(error);
3133
+ else {
3134
+ var blockedChunk = previousBlockedChunk;
3135
+ previousBlockedChunk = null;
3136
+ blockedChunk.then(function () {
3137
+ return controller.error(error);
3138
+ });
3139
+ }
2948
3140
  }
2949
3141
  });
2950
3142
  return type;
@@ -2959,6 +3151,8 @@
2959
3151
  }
2960
3152
  function parseAsyncIterable(response, reference, iterator) {
2961
3153
  reference = parseInt(reference.slice(2), 16);
3154
+ if (response._chunks.has(reference))
3155
+ throw Error("Already initialized stream.");
2962
3156
  var buffer = [],
2963
3157
  closed = !1,
2964
3158
  nextWriteIndex = 0,
@@ -2971,13 +3165,12 @@
2971
3165
  );
2972
3166
  if (nextReadIndex === buffer.length) {
2973
3167
  if (closed)
2974
- return new Chunk(
3168
+ return new ReactPromise(
2975
3169
  "fulfilled",
2976
3170
  { done: !0, value: void 0 },
2977
- null,
2978
- response
3171
+ null
2979
3172
  );
2980
- buffer[nextReadIndex] = createPendingChunk(response);
3173
+ buffer[nextReadIndex] = new ReactPromise("pending", null, null);
2981
3174
  }
2982
3175
  return buffer[nextReadIndex++];
2983
3176
  });
@@ -2991,34 +3184,55 @@
2991
3184
  value,
2992
3185
  !1
2993
3186
  ))
2994
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !1);
3187
+ : resolveIteratorResultChunk(
3188
+ response,
3189
+ buffer[nextWriteIndex],
3190
+ value,
3191
+ !1
3192
+ );
2995
3193
  nextWriteIndex++;
2996
3194
  },
2997
3195
  close: function (value) {
2998
- closed = !0;
2999
- nextWriteIndex === buffer.length
3000
- ? (buffer[nextWriteIndex] = createResolvedIteratorResultChunk(
3196
+ if (!closed)
3197
+ for (
3198
+ closed = !0,
3199
+ nextWriteIndex === buffer.length
3200
+ ? (buffer[nextWriteIndex] = createResolvedIteratorResultChunk(
3201
+ response,
3202
+ value,
3203
+ !0
3204
+ ))
3205
+ : resolveIteratorResultChunk(
3206
+ response,
3207
+ buffer[nextWriteIndex],
3208
+ value,
3209
+ !0
3210
+ ),
3211
+ nextWriteIndex++;
3212
+ nextWriteIndex < buffer.length;
3213
+
3214
+ )
3215
+ resolveIteratorResultChunk(
3001
3216
  response,
3002
- value,
3217
+ buffer[nextWriteIndex++],
3218
+ '"$undefined"',
3003
3219
  !0
3004
- ))
3005
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !0);
3006
- for (nextWriteIndex++; nextWriteIndex < buffer.length; )
3007
- resolveIteratorResultChunk(
3008
- buffer[nextWriteIndex++],
3009
- '"$undefined"',
3010
- !0
3011
- );
3220
+ );
3012
3221
  },
3013
3222
  error: function (error) {
3014
- closed = !0;
3015
- for (
3016
- nextWriteIndex === buffer.length &&
3017
- (buffer[nextWriteIndex] = createPendingChunk(response));
3018
- nextWriteIndex < buffer.length;
3223
+ if (!closed)
3224
+ for (
3225
+ closed = !0,
3226
+ nextWriteIndex === buffer.length &&
3227
+ (buffer[nextWriteIndex] = new ReactPromise(
3228
+ "pending",
3229
+ null,
3230
+ null
3231
+ ));
3232
+ nextWriteIndex < buffer.length;
3019
3233
 
3020
- )
3021
- triggerErrorOnChunk(buffer[nextWriteIndex++], error);
3234
+ )
3235
+ triggerErrorOnChunk(response, buffer[nextWriteIndex++], error);
3022
3236
  }
3023
3237
  });
3024
3238
  return iterator;
@@ -3032,24 +3246,10 @@
3032
3246
  return (
3033
3247
  (obj = parseInt(value.slice(2), 16)), getChunk(response, obj)
3034
3248
  );
3035
- case "F":
3249
+ case "h":
3036
3250
  return (
3037
3251
  (value = value.slice(2)),
3038
- (value = getOutlinedModel(
3039
- response,
3040
- value,
3041
- obj,
3042
- key,
3043
- createModel
3044
- )),
3045
- loadServerReference$1(
3046
- response,
3047
- value.id,
3048
- value.bound,
3049
- initializingChunk,
3050
- obj,
3051
- key
3052
- )
3252
+ getOutlinedModel(response, value, obj, key, loadServerReference$1)
3053
3253
  );
3054
3254
  case "T":
3055
3255
  if (
@@ -3224,6 +3424,13 @@
3224
3424
  SERVER_REFERENCE_TAG = Symbol.for("react.server.reference"),
3225
3425
  FunctionBind = Function.prototype.bind,
3226
3426
  ArraySlice = Array.prototype.slice,
3427
+ serverReferenceToString = {
3428
+ value: function () {
3429
+ return "function () { [omitted code] }";
3430
+ },
3431
+ configurable: !0,
3432
+ writable: !0
3433
+ },
3227
3434
  PROMISE_PROTOTYPE = Promise.prototype,
3228
3435
  deepProxyHandlers = {
3229
3436
  get: function (target, name) {
@@ -3638,34 +3845,49 @@
3638
3845
  debugID = null,
3639
3846
  modelRoot = !1,
3640
3847
  emptyRoot = {},
3848
+ hasOwnProperty = Object.prototype.hasOwnProperty,
3641
3849
  chunkCache = new Map(),
3642
- hasOwnProperty = Object.prototype.hasOwnProperty;
3643
- Chunk.prototype = Object.create(Promise.prototype);
3644
- Chunk.prototype.then = function (resolve, reject) {
3850
+ RESPONSE_SYMBOL = Symbol();
3851
+ ReactPromise.prototype = Object.create(Promise.prototype);
3852
+ ReactPromise.prototype.then = function (resolve, reject) {
3645
3853
  switch (this.status) {
3646
3854
  case "resolved_model":
3647
3855
  initializeModelChunk(this);
3648
3856
  }
3649
3857
  switch (this.status) {
3650
3858
  case "fulfilled":
3651
- resolve(this.value);
3859
+ if ("function" === typeof resolve) {
3860
+ for (
3861
+ var inspectedValue = this.value;
3862
+ inspectedValue instanceof ReactPromise;
3863
+
3864
+ ) {
3865
+ if (inspectedValue === this) {
3866
+ "function" === typeof reject &&
3867
+ reject(Error("Cannot have cyclic thenables."));
3868
+ return;
3869
+ }
3870
+ if ("fulfilled" === inspectedValue.status)
3871
+ inspectedValue = inspectedValue.value;
3872
+ else break;
3873
+ }
3874
+ resolve(this.value);
3875
+ }
3652
3876
  break;
3653
3877
  case "pending":
3654
3878
  case "blocked":
3655
- case "cyclic":
3656
- resolve &&
3879
+ "function" === typeof resolve &&
3657
3880
  (null === this.value && (this.value = []),
3658
3881
  this.value.push(resolve));
3659
- reject &&
3882
+ "function" === typeof reject &&
3660
3883
  (null === this.reason && (this.reason = []),
3661
3884
  this.reason.push(reject));
3662
3885
  break;
3663
3886
  default:
3664
- reject(this.reason);
3887
+ "function" === typeof reject && reject(this.reason);
3665
3888
  }
3666
3889
  };
3667
- var initializingChunk = null,
3668
- initializingChunkBlockedModel = null;
3890
+ var initializingHandler = null;
3669
3891
  exports.createClientModuleProxy = function (moduleId) {
3670
3892
  moduleId = registerClientReferenceImpl({}, moduleId, !1);
3671
3893
  return new Proxy(moduleId, proxyHandlers$1);
@@ -3750,7 +3972,8 @@
3750
3972
  },
3751
3973
  $$bound: { value: null, configurable: !0 },
3752
3974
  $$location: { value: Error("react-stack-top-frame"), configurable: !0 },
3753
- bind: { value: bind, configurable: !0 }
3975
+ bind: { value: bind, configurable: !0 },
3976
+ toString: serverReferenceToString
3754
3977
  });
3755
3978
  };
3756
3979
  exports.renderToReadableStream = function (model, webpackMap, options) {