react-server-dom-webpack 19.1.1 → 19.1.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.
@@ -855,8 +855,8 @@ function serializeReadableStream(request, task, stream) {
855
855
  emitChunk(request, streamTask, streamTask.model),
856
856
  enqueueFlush(request),
857
857
  reader.read().then(progress, error);
858
- } catch (x$7) {
859
- error(x$7);
858
+ } catch (x$10) {
859
+ error(x$10);
860
860
  }
861
861
  }
862
862
  function error(reason) {
@@ -928,8 +928,8 @@ function serializeAsyncIterable(request, task, iterable, iterator) {
928
928
  emitChunk(request, streamTask, streamTask.model),
929
929
  enqueueFlush(request),
930
930
  iterator.next().then(progress, error);
931
- } catch (x$8) {
932
- error(x$8);
931
+ } catch (x$11) {
932
+ error(x$11);
933
933
  }
934
934
  }
935
935
  function error(reason) {
@@ -1923,7 +1923,7 @@ function abort(request, reason) {
1923
1923
  }
1924
1924
  var abortListeners = request.abortListeners;
1925
1925
  if (0 < abortListeners.size) {
1926
- var error$22 =
1926
+ var error$25 =
1927
1927
  void 0 === reason
1928
1928
  ? Error("The render was aborted by the server without a reason.")
1929
1929
  : "object" === typeof reason &&
@@ -1932,16 +1932,17 @@ function abort(request, reason) {
1932
1932
  ? Error("The render was aborted by the server with a promise.")
1933
1933
  : reason;
1934
1934
  abortListeners.forEach(function (callback) {
1935
- return callback(error$22);
1935
+ return callback(error$25);
1936
1936
  });
1937
1937
  abortListeners.clear();
1938
1938
  }
1939
1939
  null !== request.destination &&
1940
1940
  flushCompletedChunks(request, request.destination);
1941
- } catch (error$23) {
1942
- logRecoverableError(request, error$23, null), fatalError(request, error$23);
1941
+ } catch (error$26) {
1942
+ logRecoverableError(request, error$26, null), fatalError(request, error$26);
1943
1943
  }
1944
1944
  }
1945
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
1945
1946
  function resolveServerReference(bundlerConfig, id) {
1946
1947
  var name = "",
1947
1948
  resolvedModuleData = bundlerConfig[id];
@@ -2009,60 +2010,97 @@ function requireModule(metadata) {
2009
2010
  if ("fulfilled" === moduleExports.status)
2010
2011
  moduleExports = moduleExports.value;
2011
2012
  else throw moduleExports.reason;
2012
- return "*" === metadata[2]
2013
- ? moduleExports
2014
- : "" === metadata[2]
2015
- ? moduleExports.__esModule
2016
- ? moduleExports.default
2017
- : moduleExports
2018
- : moduleExports[metadata[2]];
2019
- }
2020
- var hasOwnProperty = Object.prototype.hasOwnProperty;
2021
- function Chunk(status, value, reason, response) {
2013
+ if ("*" === metadata[2]) return moduleExports;
2014
+ if ("" === metadata[2])
2015
+ return moduleExports.__esModule ? moduleExports.default : moduleExports;
2016
+ if (hasOwnProperty.call(moduleExports, metadata[2]))
2017
+ return moduleExports[metadata[2]];
2018
+ }
2019
+ var RESPONSE_SYMBOL = Symbol();
2020
+ function ReactPromise(status, value, reason) {
2022
2021
  this.status = status;
2023
2022
  this.value = value;
2024
2023
  this.reason = reason;
2025
- this._response = response;
2026
2024
  }
2027
- Chunk.prototype = Object.create(Promise.prototype);
2028
- Chunk.prototype.then = function (resolve, reject) {
2025
+ ReactPromise.prototype = Object.create(Promise.prototype);
2026
+ ReactPromise.prototype.then = function (resolve, reject) {
2029
2027
  switch (this.status) {
2030
2028
  case "resolved_model":
2031
2029
  initializeModelChunk(this);
2032
2030
  }
2033
2031
  switch (this.status) {
2034
2032
  case "fulfilled":
2035
- resolve(this.value);
2033
+ "function" === typeof resolve && resolve(this.value);
2036
2034
  break;
2037
2035
  case "pending":
2038
2036
  case "blocked":
2039
- case "cyclic":
2040
- resolve &&
2037
+ "function" === typeof resolve &&
2041
2038
  (null === this.value && (this.value = []), this.value.push(resolve));
2042
- reject &&
2039
+ "function" === typeof reject &&
2043
2040
  (null === this.reason && (this.reason = []), this.reason.push(reject));
2044
2041
  break;
2045
2042
  default:
2046
- reject(this.reason);
2043
+ "function" === typeof reject && reject(this.reason);
2047
2044
  }
2048
2045
  };
2049
- function createPendingChunk(response) {
2050
- return new Chunk("pending", null, null, response);
2046
+ function wakeChunk(response, listeners, value) {
2047
+ for (var i = 0; i < listeners.length; i++) {
2048
+ var listener = listeners[i];
2049
+ "function" === typeof listener
2050
+ ? listener(value)
2051
+ : fulfillReference(response, listener, value);
2052
+ }
2051
2053
  }
2052
- function wakeChunk(listeners, value) {
2053
- for (var i = 0; i < listeners.length; i++) (0, listeners[i])(value);
2054
+ function rejectChunk(response, listeners, error) {
2055
+ for (var i = 0; i < listeners.length; i++) {
2056
+ var listener = listeners[i];
2057
+ "function" === typeof listener
2058
+ ? listener(error)
2059
+ : rejectReference(response, listener.handler, error);
2060
+ }
2054
2061
  }
2055
- function triggerErrorOnChunk(chunk, error) {
2062
+ function resolveBlockedCycle(resolvedChunk, reference) {
2063
+ var referencedChunk = reference.handler.chunk;
2064
+ if (null === referencedChunk) return null;
2065
+ if (referencedChunk === resolvedChunk) return reference.handler;
2066
+ reference = referencedChunk.value;
2067
+ if (null !== reference)
2068
+ for (
2069
+ referencedChunk = 0;
2070
+ referencedChunk < reference.length;
2071
+ referencedChunk++
2072
+ ) {
2073
+ var listener = reference[referencedChunk];
2074
+ if (
2075
+ "function" !== typeof listener &&
2076
+ ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2077
+ null !== listener)
2078
+ )
2079
+ return listener;
2080
+ }
2081
+ return null;
2082
+ }
2083
+ function triggerErrorOnChunk(response, chunk, error) {
2056
2084
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2057
2085
  chunk.reason.error(error);
2058
2086
  else {
2059
2087
  var listeners = chunk.reason;
2060
2088
  chunk.status = "rejected";
2061
2089
  chunk.reason = error;
2062
- null !== listeners && wakeChunk(listeners, error);
2090
+ null !== listeners && rejectChunk(response, listeners, error);
2063
2091
  }
2064
2092
  }
2065
- function resolveModelChunk(chunk, value, id) {
2093
+ function createResolvedModelChunk(response, value, id) {
2094
+ var $jscomp$compprop2 = {};
2095
+ return new ReactPromise(
2096
+ "resolved_model",
2097
+ value,
2098
+ (($jscomp$compprop2.id = id),
2099
+ ($jscomp$compprop2[RESPONSE_SYMBOL] = response),
2100
+ $jscomp$compprop2)
2101
+ );
2102
+ }
2103
+ function resolveModelChunk(response, chunk, value, id) {
2066
2104
  if ("pending" !== chunk.status)
2067
2105
  (chunk = chunk.reason),
2068
2106
  "C" === value[0]
@@ -2073,77 +2111,129 @@ function resolveModelChunk(chunk, value, id) {
2073
2111
  rejectListeners = chunk.reason;
2074
2112
  chunk.status = "resolved_model";
2075
2113
  chunk.value = value;
2076
- chunk.reason = id;
2114
+ value = {};
2115
+ chunk.reason =
2116
+ ((value.id = id), (value[RESPONSE_SYMBOL] = response), value);
2077
2117
  if (null !== resolveListeners)
2078
- switch ((initializeModelChunk(chunk), chunk.status)) {
2118
+ a: switch ((initializeModelChunk(chunk), chunk.status)) {
2079
2119
  case "fulfilled":
2080
- wakeChunk(resolveListeners, chunk.value);
2120
+ wakeChunk(response, resolveListeners, chunk.value);
2081
2121
  break;
2082
- case "pending":
2083
2122
  case "blocked":
2084
- case "cyclic":
2123
+ for (value = 0; value < resolveListeners.length; value++)
2124
+ if (((id = resolveListeners[value]), "function" !== typeof id)) {
2125
+ var cyclicHandler = resolveBlockedCycle(chunk, id);
2126
+ if (null !== cyclicHandler)
2127
+ switch (
2128
+ (fulfillReference(response, id, cyclicHandler.value),
2129
+ resolveListeners.splice(value, 1),
2130
+ value--,
2131
+ null !== rejectListeners &&
2132
+ ((id = rejectListeners.indexOf(id)),
2133
+ -1 !== id && rejectListeners.splice(id, 1)),
2134
+ chunk.status)
2135
+ ) {
2136
+ case "fulfilled":
2137
+ wakeChunk(response, resolveListeners, chunk.value);
2138
+ break a;
2139
+ case "rejected":
2140
+ null !== rejectListeners &&
2141
+ rejectChunk(response, rejectListeners, chunk.reason);
2142
+ break a;
2143
+ }
2144
+ }
2145
+ case "pending":
2085
2146
  if (chunk.value)
2086
- for (value = 0; value < resolveListeners.length; value++)
2087
- chunk.value.push(resolveListeners[value]);
2147
+ for (response = 0; response < resolveListeners.length; response++)
2148
+ chunk.value.push(resolveListeners[response]);
2088
2149
  else chunk.value = resolveListeners;
2089
2150
  if (chunk.reason) {
2090
2151
  if (rejectListeners)
2091
- for (value = 0; value < rejectListeners.length; value++)
2092
- chunk.reason.push(rejectListeners[value]);
2152
+ for (
2153
+ resolveListeners = 0;
2154
+ resolveListeners < rejectListeners.length;
2155
+ resolveListeners++
2156
+ )
2157
+ chunk.reason.push(rejectListeners[resolveListeners]);
2093
2158
  } else chunk.reason = rejectListeners;
2094
2159
  break;
2095
2160
  case "rejected":
2096
- rejectListeners && wakeChunk(rejectListeners, chunk.reason);
2161
+ rejectListeners && wakeChunk(response, rejectListeners, chunk.reason);
2097
2162
  }
2098
2163
  }
2099
2164
  }
2100
2165
  function createResolvedIteratorResultChunk(response, value, done) {
2101
- return new Chunk(
2166
+ var $jscomp$compprop4 = {};
2167
+ return new ReactPromise(
2102
2168
  "resolved_model",
2103
2169
  (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}",
2104
- -1,
2105
- response
2170
+ (($jscomp$compprop4.id = -1),
2171
+ ($jscomp$compprop4[RESPONSE_SYMBOL] = response),
2172
+ $jscomp$compprop4)
2106
2173
  );
2107
2174
  }
2108
- function resolveIteratorResultChunk(chunk, value, done) {
2175
+ function resolveIteratorResultChunk(response, chunk, value, done) {
2109
2176
  resolveModelChunk(
2177
+ response,
2110
2178
  chunk,
2111
2179
  (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}",
2112
2180
  -1
2113
2181
  );
2114
2182
  }
2115
- function loadServerReference$1(
2116
- response,
2117
- id,
2118
- bound,
2119
- parentChunk,
2120
- parentObject,
2121
- key
2122
- ) {
2183
+ function loadServerReference$1(response, metaData, parentObject, key) {
2184
+ var id = metaData.id;
2185
+ if ("string" !== typeof id) return null;
2123
2186
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2124
- id = preloadModule(serverReference);
2125
- if (bound)
2126
- bound = Promise.all([bound, id]).then(function (_ref) {
2127
- _ref = _ref[0];
2128
- var fn = requireModule(serverReference);
2129
- return fn.bind.apply(fn, [null].concat(_ref));
2130
- });
2131
- else if (id)
2132
- bound = Promise.resolve(id).then(function () {
2133
- return requireModule(serverReference);
2134
- });
2187
+ id = metaData.bound;
2188
+ var promise = preloadModule(serverReference);
2189
+ if (promise)
2190
+ id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2191
+ else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2135
2192
  else return requireModule(serverReference);
2136
- bound.then(
2137
- createModelResolver(
2138
- parentChunk,
2139
- parentObject,
2140
- key,
2141
- !1,
2142
- response,
2143
- createModel,
2144
- []
2145
- ),
2146
- createModelReject(parentChunk)
2193
+ if (initializingHandler) {
2194
+ var handler = initializingHandler;
2195
+ handler.deps++;
2196
+ } else
2197
+ handler = initializingHandler = {
2198
+ chunk: null,
2199
+ value: null,
2200
+ reason: null,
2201
+ deps: 1,
2202
+ errored: !1
2203
+ };
2204
+ promise.then(
2205
+ function () {
2206
+ var resolvedValue = requireModule(serverReference);
2207
+ if (metaData.bound) {
2208
+ var promiseValue = metaData.bound.value;
2209
+ promiseValue = Array.isArray(promiseValue) ? promiseValue.slice(0) : [];
2210
+ promiseValue.unshift(null);
2211
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2212
+ }
2213
+ parentObject[key] = resolvedValue;
2214
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2215
+ handler.deps--;
2216
+ 0 === handler.deps &&
2217
+ ((resolvedValue = handler.chunk),
2218
+ null !== resolvedValue &&
2219
+ "blocked" === resolvedValue.status &&
2220
+ ((promiseValue = resolvedValue.value),
2221
+ (resolvedValue.status = "fulfilled"),
2222
+ (resolvedValue.value = handler.value),
2223
+ null !== promiseValue &&
2224
+ wakeChunk(response, promiseValue, handler.value)));
2225
+ },
2226
+ function (error) {
2227
+ if (!handler.errored) {
2228
+ handler.errored = !0;
2229
+ handler.value = null;
2230
+ handler.reason = error;
2231
+ var chunk = handler.chunk;
2232
+ null !== chunk &&
2233
+ "blocked" === chunk.status &&
2234
+ triggerErrorOnChunk(response, chunk, error);
2235
+ }
2236
+ }
2147
2237
  );
2148
2238
  return null;
2149
2239
  }
@@ -2173,53 +2263,65 @@ function reviveModel(response, parentObj, parentKey, value, reference) {
2173
2263
  ? reference + ":" + i
2174
2264
  : void 0),
2175
2265
  (parentObj = reviveModel(response, value, i, value[i], parentObj)),
2176
- void 0 !== parentObj ? (value[i] = parentObj) : delete value[i]);
2266
+ void 0 !== parentObj || "__proto__" === i
2267
+ ? (value[i] = parentObj)
2268
+ : delete value[i]);
2177
2269
  return value;
2178
2270
  }
2179
- var initializingChunk = null,
2180
- initializingChunkBlockedModel = null;
2271
+ var initializingHandler = null;
2181
2272
  function initializeModelChunk(chunk) {
2182
- var prevChunk = initializingChunk,
2183
- prevBlocked = initializingChunkBlockedModel;
2184
- initializingChunk = chunk;
2185
- initializingChunkBlockedModel = null;
2186
- var rootReference = -1 === chunk.reason ? void 0 : chunk.reason.toString(16),
2187
- resolvedModel = chunk.value;
2188
- chunk.status = "cyclic";
2273
+ var prevHandler = initializingHandler;
2274
+ initializingHandler = null;
2275
+ var _chunk$reason = chunk.reason,
2276
+ response = _chunk$reason[RESPONSE_SYMBOL];
2277
+ _chunk$reason = _chunk$reason.id;
2278
+ _chunk$reason = -1 === _chunk$reason ? void 0 : _chunk$reason.toString(16);
2279
+ var resolvedModel = chunk.value;
2280
+ chunk.status = "blocked";
2189
2281
  chunk.value = null;
2190
2282
  chunk.reason = null;
2191
2283
  try {
2192
2284
  var rawModel = JSON.parse(resolvedModel),
2193
2285
  value = reviveModel(
2194
- chunk._response,
2286
+ response,
2195
2287
  { "": rawModel },
2196
2288
  "",
2197
2289
  rawModel,
2198
- rootReference
2199
- );
2200
- if (
2201
- null !== initializingChunkBlockedModel &&
2202
- 0 < initializingChunkBlockedModel.deps
2203
- )
2204
- (initializingChunkBlockedModel.value = value), (chunk.status = "blocked");
2205
- else {
2206
- var resolveListeners = chunk.value;
2207
- chunk.status = "fulfilled";
2208
- chunk.value = value;
2209
- null !== resolveListeners && wakeChunk(resolveListeners, value);
2290
+ _chunk$reason
2291
+ ),
2292
+ resolveListeners = chunk.value;
2293
+ if (null !== resolveListeners)
2294
+ for (
2295
+ chunk.value = null, chunk.reason = null, rawModel = 0;
2296
+ rawModel < resolveListeners.length;
2297
+ rawModel++
2298
+ ) {
2299
+ var listener = resolveListeners[rawModel];
2300
+ "function" === typeof listener
2301
+ ? listener(value)
2302
+ : fulfillReference(response, listener, value);
2303
+ }
2304
+ if (null !== initializingHandler) {
2305
+ if (initializingHandler.errored) throw initializingHandler.reason;
2306
+ if (0 < initializingHandler.deps) {
2307
+ initializingHandler.value = value;
2308
+ initializingHandler.chunk = chunk;
2309
+ return;
2310
+ }
2210
2311
  }
2312
+ chunk.status = "fulfilled";
2313
+ chunk.value = value;
2211
2314
  } catch (error) {
2212
2315
  (chunk.status = "rejected"), (chunk.reason = error);
2213
2316
  } finally {
2214
- (initializingChunk = prevChunk),
2215
- (initializingChunkBlockedModel = prevBlocked);
2317
+ initializingHandler = prevHandler;
2216
2318
  }
2217
2319
  }
2218
2320
  function reportGlobalError(response, error) {
2219
2321
  response._closed = !0;
2220
2322
  response._closedReason = error;
2221
2323
  response._chunks.forEach(function (chunk) {
2222
- "pending" === chunk.status && triggerErrorOnChunk(chunk, error);
2324
+ "pending" === chunk.status && triggerErrorOnChunk(response, chunk, error);
2223
2325
  });
2224
2326
  }
2225
2327
  function getChunk(response, id) {
@@ -2228,48 +2330,104 @@ function getChunk(response, id) {
2228
2330
  chunk ||
2229
2331
  ((chunk = response._formData.get(response._prefix + id)),
2230
2332
  (chunk =
2231
- null != chunk
2232
- ? new Chunk("resolved_model", chunk, id, response)
2333
+ "string" === typeof chunk
2334
+ ? createResolvedModelChunk(response, chunk, id)
2233
2335
  : response._closed
2234
- ? new Chunk("rejected", null, response._closedReason, response)
2235
- : createPendingChunk(response)),
2336
+ ? new ReactPromise("rejected", null, response._closedReason)
2337
+ : new ReactPromise("pending", null, null)),
2236
2338
  chunks.set(id, chunk));
2237
2339
  return chunk;
2238
2340
  }
2239
- function createModelResolver(
2240
- chunk,
2341
+ function fulfillReference(response, reference, value) {
2342
+ for (
2343
+ var handler = reference.handler,
2344
+ parentObject = reference.parentObject,
2345
+ key = reference.key,
2346
+ map = reference.map,
2347
+ path = reference.path,
2348
+ i = 1;
2349
+ i < path.length;
2350
+ i++
2351
+ ) {
2352
+ for (; value instanceof ReactPromise; ) {
2353
+ switch (value.status) {
2354
+ case "resolved_model":
2355
+ initializeModelChunk(value);
2356
+ }
2357
+ switch (value.status) {
2358
+ case "fulfilled":
2359
+ value = value.value;
2360
+ continue;
2361
+ case "blocked":
2362
+ case "pending":
2363
+ path.splice(0, i - 1);
2364
+ null === value.value
2365
+ ? (value.value = [reference])
2366
+ : value.value.push(reference);
2367
+ null === value.reason
2368
+ ? (value.reason = [reference])
2369
+ : value.reason.push(reference);
2370
+ return;
2371
+ default:
2372
+ rejectReference(response, reference.handler, value.reason);
2373
+ return;
2374
+ }
2375
+ }
2376
+ var name = path[i];
2377
+ "object" === typeof value &&
2378
+ hasOwnProperty.call(value, name) &&
2379
+ (value = value[name]);
2380
+ }
2381
+ reference = map(response, value, parentObject, key);
2382
+ parentObject[key] = reference;
2383
+ "" === key && null === handler.value && (handler.value = reference);
2384
+ handler.deps--;
2385
+ 0 === handler.deps &&
2386
+ ((parentObject = handler.chunk),
2387
+ null !== parentObject &&
2388
+ "blocked" === parentObject.status &&
2389
+ ((key = parentObject.value),
2390
+ (parentObject.status = "fulfilled"),
2391
+ (parentObject.value = handler.value),
2392
+ (parentObject.reason = handler.reason),
2393
+ null !== key && wakeChunk(response, key, handler.value)));
2394
+ }
2395
+ function rejectReference(response, handler, error) {
2396
+ handler.errored ||
2397
+ ((handler.errored = !0),
2398
+ (handler.value = null),
2399
+ (handler.reason = error),
2400
+ (handler = handler.chunk),
2401
+ null !== handler &&
2402
+ "blocked" === handler.status &&
2403
+ triggerErrorOnChunk(response, handler, error));
2404
+ }
2405
+ function waitForReference(
2406
+ referencedChunk,
2241
2407
  parentObject,
2242
2408
  key,
2243
- cyclic,
2244
2409
  response,
2245
2410
  map,
2246
2411
  path
2247
2412
  ) {
2248
- if (initializingChunkBlockedModel) {
2249
- var blocked = initializingChunkBlockedModel;
2250
- cyclic || blocked.deps++;
2251
- } else
2252
- blocked = initializingChunkBlockedModel = {
2253
- deps: cyclic ? 0 : 1,
2254
- value: null
2255
- };
2256
- return function (value) {
2257
- for (var i = 1; i < path.length; i++) value = value[path[i]];
2258
- parentObject[key] = map(response, value);
2259
- "" === key && null === blocked.value && (blocked.value = parentObject[key]);
2260
- blocked.deps--;
2261
- 0 === blocked.deps &&
2262
- "blocked" === chunk.status &&
2263
- ((value = chunk.value),
2264
- (chunk.status = "fulfilled"),
2265
- (chunk.value = blocked.value),
2266
- null !== value && wakeChunk(value, blocked.value));
2267
- };
2268
- }
2269
- function createModelReject(chunk) {
2270
- return function (error) {
2271
- return triggerErrorOnChunk(chunk, error);
2413
+ initializingHandler
2414
+ ? ((response = initializingHandler), response.deps++)
2415
+ : (response = initializingHandler =
2416
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2417
+ parentObject = {
2418
+ handler: response,
2419
+ parentObject: parentObject,
2420
+ key: key,
2421
+ map: map,
2422
+ path: path
2272
2423
  };
2424
+ null === referencedChunk.value
2425
+ ? (referencedChunk.value = [parentObject])
2426
+ : referencedChunk.value.push(parentObject);
2427
+ null === referencedChunk.reason
2428
+ ? (referencedChunk.reason = [parentObject])
2429
+ : referencedChunk.reason.push(parentObject);
2430
+ return null;
2273
2431
  }
2274
2432
  function getOutlinedModel(response, reference, parentObject, key, map) {
2275
2433
  reference = reference.split(":");
@@ -2281,29 +2439,68 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2281
2439
  }
2282
2440
  switch (id.status) {
2283
2441
  case "fulfilled":
2284
- parentObject = id.value;
2285
- for (key = 1; key < reference.length; key++)
2286
- parentObject = parentObject[reference[key]];
2287
- return map(response, parentObject);
2442
+ var value = id.value;
2443
+ for (id = 1; id < reference.length; id++) {
2444
+ for (; value instanceof ReactPromise; ) {
2445
+ switch (value.status) {
2446
+ case "resolved_model":
2447
+ initializeModelChunk(value);
2448
+ }
2449
+ switch (value.status) {
2450
+ case "fulfilled":
2451
+ value = value.value;
2452
+ break;
2453
+ case "blocked":
2454
+ case "pending":
2455
+ return waitForReference(
2456
+ value,
2457
+ parentObject,
2458
+ key,
2459
+ response,
2460
+ map,
2461
+ reference.slice(id - 1)
2462
+ );
2463
+ default:
2464
+ return (
2465
+ initializingHandler
2466
+ ? ((initializingHandler.errored = !0),
2467
+ (initializingHandler.value = null),
2468
+ (initializingHandler.reason = value.reason))
2469
+ : (initializingHandler = {
2470
+ chunk: null,
2471
+ value: null,
2472
+ reason: value.reason,
2473
+ deps: 0,
2474
+ errored: !0
2475
+ }),
2476
+ null
2477
+ );
2478
+ }
2479
+ }
2480
+ var name = reference[id];
2481
+ "object" === typeof value &&
2482
+ hasOwnProperty.call(value, name) &&
2483
+ (value = value[name]);
2484
+ }
2485
+ return map(response, value, parentObject, key);
2288
2486
  case "pending":
2289
2487
  case "blocked":
2290
- case "cyclic":
2291
- var parentChunk = initializingChunk;
2292
- id.then(
2293
- createModelResolver(
2294
- parentChunk,
2295
- parentObject,
2296
- key,
2297
- "cyclic" === id.status,
2298
- response,
2299
- map,
2300
- reference
2301
- ),
2302
- createModelReject(parentChunk)
2303
- );
2304
- return null;
2488
+ return waitForReference(id, parentObject, key, response, map, reference);
2305
2489
  default:
2306
- throw id.reason;
2490
+ return (
2491
+ initializingHandler
2492
+ ? ((initializingHandler.errored = !0),
2493
+ (initializingHandler.value = null),
2494
+ (initializingHandler.reason = id.reason))
2495
+ : (initializingHandler = {
2496
+ chunk: null,
2497
+ value: null,
2498
+ reason: id.reason,
2499
+ deps: 0,
2500
+ errored: !0
2501
+ }),
2502
+ null
2503
+ );
2307
2504
  }
2308
2505
  }
2309
2506
  function createMap(response, model) {
@@ -2327,38 +2524,63 @@ function parseTypedArray(
2327
2524
  parentKey
2328
2525
  ) {
2329
2526
  reference = parseInt(reference.slice(2), 16);
2330
- reference = response._formData.get(response._prefix + reference);
2331
- reference =
2332
- constructor === ArrayBuffer
2333
- ? reference.arrayBuffer()
2334
- : reference.arrayBuffer().then(function (buffer) {
2335
- return new constructor(buffer);
2336
- });
2337
- bytesPerElement = initializingChunk;
2527
+ reference = response._formData
2528
+ .get(response._prefix + reference)
2529
+ .arrayBuffer();
2530
+ if (initializingHandler) {
2531
+ var handler = initializingHandler;
2532
+ handler.deps++;
2533
+ } else
2534
+ handler = initializingHandler = {
2535
+ chunk: null,
2536
+ value: null,
2537
+ reason: null,
2538
+ deps: 1,
2539
+ errored: !1
2540
+ };
2338
2541
  reference.then(
2339
- createModelResolver(
2340
- bytesPerElement,
2341
- parentObject,
2342
- parentKey,
2343
- !1,
2344
- response,
2345
- createModel,
2346
- []
2347
- ),
2348
- createModelReject(bytesPerElement)
2542
+ function (buffer) {
2543
+ buffer = constructor === ArrayBuffer ? buffer : new constructor(buffer);
2544
+ parentObject[parentKey] = buffer;
2545
+ "" === parentKey && null === handler.value && (handler.value = buffer);
2546
+ handler.deps--;
2547
+ if (
2548
+ 0 === handler.deps &&
2549
+ ((buffer = handler.chunk),
2550
+ null !== buffer && "blocked" === buffer.status)
2551
+ ) {
2552
+ var resolveListeners = buffer.value;
2553
+ buffer.status = "fulfilled";
2554
+ buffer.value = handler.value;
2555
+ null !== resolveListeners &&
2556
+ wakeChunk(response, resolveListeners, handler.value);
2557
+ }
2558
+ },
2559
+ function (error) {
2560
+ if (!handler.errored) {
2561
+ handler.errored = !0;
2562
+ handler.value = null;
2563
+ handler.reason = error;
2564
+ var chunk = handler.chunk;
2565
+ null !== chunk &&
2566
+ "blocked" === chunk.status &&
2567
+ triggerErrorOnChunk(response, chunk, error);
2568
+ }
2569
+ }
2349
2570
  );
2350
2571
  return null;
2351
2572
  }
2352
2573
  function resolveStream(response, id, stream, controller) {
2353
2574
  var chunks = response._chunks;
2354
- stream = new Chunk("fulfilled", stream, controller, response);
2575
+ stream = new ReactPromise("fulfilled", stream, controller);
2355
2576
  chunks.set(id, stream);
2356
2577
  response = response._formData.getAll(response._prefix + id);
2357
2578
  for (id = 0; id < response.length; id++)
2358
2579
  (chunks = response[id]),
2359
- "C" === chunks[0]
2360
- ? controller.close("C" === chunks ? '"$undefined"' : chunks.slice(1))
2361
- : controller.enqueueModel(chunks);
2580
+ "string" === typeof chunks &&
2581
+ ("C" === chunks[0]
2582
+ ? controller.close("C" === chunks ? '"$undefined"' : chunks.slice(1))
2583
+ : controller.enqueueModel(chunks));
2362
2584
  }
2363
2585
  function parseReadableStream(response, reference, type) {
2364
2586
  reference = parseInt(reference.slice(2), 16);
@@ -2373,7 +2595,7 @@ function parseReadableStream(response, reference, type) {
2373
2595
  resolveStream(response, reference, type, {
2374
2596
  enqueueModel: function (json) {
2375
2597
  if (null === previousBlockedChunk) {
2376
- var chunk = new Chunk("resolved_model", json, -1, response);
2598
+ var chunk = createResolvedModelChunk(response, json, -1);
2377
2599
  initializeModelChunk(chunk);
2378
2600
  "fulfilled" === chunk.status
2379
2601
  ? controller.enqueue(chunk.value)
@@ -2388,8 +2610,8 @@ function parseReadableStream(response, reference, type) {
2388
2610
  (previousBlockedChunk = chunk));
2389
2611
  } else {
2390
2612
  chunk = previousBlockedChunk;
2391
- var chunk$26 = createPendingChunk(response);
2392
- chunk$26.then(
2613
+ var chunk$30 = new ReactPromise("pending", null, null);
2614
+ chunk$30.then(
2393
2615
  function (v) {
2394
2616
  return controller.enqueue(v);
2395
2617
  },
@@ -2397,10 +2619,10 @@ function parseReadableStream(response, reference, type) {
2397
2619
  return controller.error(e);
2398
2620
  }
2399
2621
  );
2400
- previousBlockedChunk = chunk$26;
2622
+ previousBlockedChunk = chunk$30;
2401
2623
  chunk.then(function () {
2402
- previousBlockedChunk === chunk$26 && (previousBlockedChunk = null);
2403
- resolveModelChunk(chunk$26, json, -1);
2624
+ previousBlockedChunk === chunk$30 && (previousBlockedChunk = null);
2625
+ resolveModelChunk(response, chunk$30, json, -1);
2404
2626
  });
2405
2627
  }
2406
2628
  },
@@ -2440,9 +2662,9 @@ function parseAsyncIterable(response, reference, iterator) {
2440
2662
  var buffer = [],
2441
2663
  closed = !1,
2442
2664
  nextWriteIndex = 0,
2443
- $jscomp$compprop2 = {};
2444
- $jscomp$compprop2 =
2445
- (($jscomp$compprop2[ASYNC_ITERATOR] = function () {
2665
+ $jscomp$compprop5 = {};
2666
+ $jscomp$compprop5 =
2667
+ (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2446
2668
  var nextReadIndex = 0;
2447
2669
  return createIterator(function (arg) {
2448
2670
  if (void 0 !== arg)
@@ -2451,19 +2673,18 @@ function parseAsyncIterable(response, reference, iterator) {
2451
2673
  );
2452
2674
  if (nextReadIndex === buffer.length) {
2453
2675
  if (closed)
2454
- return new Chunk(
2676
+ return new ReactPromise(
2455
2677
  "fulfilled",
2456
2678
  { done: !0, value: void 0 },
2457
- null,
2458
- response
2679
+ null
2459
2680
  );
2460
- buffer[nextReadIndex] = createPendingChunk(response);
2681
+ buffer[nextReadIndex] = new ReactPromise("pending", null, null);
2461
2682
  }
2462
2683
  return buffer[nextReadIndex++];
2463
2684
  });
2464
2685
  }),
2465
- $jscomp$compprop2);
2466
- iterator = iterator ? $jscomp$compprop2[ASYNC_ITERATOR]() : $jscomp$compprop2;
2686
+ $jscomp$compprop5);
2687
+ iterator = iterator ? $jscomp$compprop5[ASYNC_ITERATOR]() : $jscomp$compprop5;
2467
2688
  resolveStream(response, reference, iterator, {
2468
2689
  enqueueModel: function (value) {
2469
2690
  nextWriteIndex === buffer.length
@@ -2472,7 +2693,12 @@ function parseAsyncIterable(response, reference, iterator) {
2472
2693
  value,
2473
2694
  !1
2474
2695
  ))
2475
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !1);
2696
+ : resolveIteratorResultChunk(
2697
+ response,
2698
+ buffer[nextWriteIndex],
2699
+ value,
2700
+ !1
2701
+ );
2476
2702
  nextWriteIndex++;
2477
2703
  },
2478
2704
  close: function (value) {
@@ -2483,9 +2709,15 @@ function parseAsyncIterable(response, reference, iterator) {
2483
2709
  value,
2484
2710
  !0
2485
2711
  ))
2486
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !0);
2712
+ : resolveIteratorResultChunk(
2713
+ response,
2714
+ buffer[nextWriteIndex],
2715
+ value,
2716
+ !0
2717
+ );
2487
2718
  for (nextWriteIndex++; nextWriteIndex < buffer.length; )
2488
2719
  resolveIteratorResultChunk(
2720
+ response,
2489
2721
  buffer[nextWriteIndex++],
2490
2722
  '"$undefined"',
2491
2723
  !0
@@ -2495,11 +2727,11 @@ function parseAsyncIterable(response, reference, iterator) {
2495
2727
  closed = !0;
2496
2728
  for (
2497
2729
  nextWriteIndex === buffer.length &&
2498
- (buffer[nextWriteIndex] = createPendingChunk(response));
2730
+ (buffer[nextWriteIndex] = new ReactPromise("pending", null, null));
2499
2731
  nextWriteIndex < buffer.length;
2500
2732
 
2501
2733
  )
2502
- triggerErrorOnChunk(buffer[nextWriteIndex++], error);
2734
+ triggerErrorOnChunk(response, buffer[nextWriteIndex++], error);
2503
2735
  }
2504
2736
  });
2505
2737
  return iterator;
@@ -2514,15 +2746,7 @@ function parseModelString(response, obj, key, value, reference) {
2514
2746
  case "F":
2515
2747
  return (
2516
2748
  (value = value.slice(2)),
2517
- (value = getOutlinedModel(response, value, obj, key, createModel)),
2518
- loadServerReference$1(
2519
- response,
2520
- value.id,
2521
- value.bound,
2522
- initializingChunk,
2523
- obj,
2524
- key
2525
- )
2749
+ getOutlinedModel(response, value, obj, key, loadServerReference$1)
2526
2750
  );
2527
2751
  case "T":
2528
2752
  if (void 0 === reference || void 0 === response._temporaryReferences)
@@ -2637,10 +2861,12 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
2637
2861
  function resolveField(response, key, value) {
2638
2862
  response._formData.append(key, value);
2639
2863
  var prefix = response._prefix;
2640
- key.startsWith(prefix) &&
2641
- ((response = response._chunks),
2642
- (key = +key.slice(prefix.length)),
2643
- (prefix = response.get(key)) && resolveModelChunk(prefix, value, key));
2864
+ if (key.startsWith(prefix)) {
2865
+ var chunks = response._chunks;
2866
+ key = +key.slice(prefix.length);
2867
+ (chunks = chunks.get(key)) &&
2868
+ resolveModelChunk(response, chunks, value, key);
2869
+ }
2644
2870
  }
2645
2871
  function close(response) {
2646
2872
  reportGlobalError(response, Error("Connection closed."));
@@ -2761,34 +2987,50 @@ exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
2761
2987
  pendingFiles = 0,
2762
2988
  queuedFields = [];
2763
2989
  busboyStream.on("field", function (name, value) {
2764
- 0 < pendingFiles
2765
- ? queuedFields.push(name, value)
2766
- : resolveField(response, name, value);
2990
+ if (0 < pendingFiles) queuedFields.push(name, value);
2991
+ else
2992
+ try {
2993
+ resolveField(response, name, value);
2994
+ } catch (error) {
2995
+ busboyStream.destroy(error);
2996
+ }
2767
2997
  });
2768
2998
  busboyStream.on("file", function (name, value, _ref) {
2769
2999
  var filename = _ref.filename,
2770
3000
  mimeType = _ref.mimeType;
2771
3001
  if ("base64" === _ref.encoding.toLowerCase())
2772
- throw Error(
2773
- "React doesn't accept base64 encoded file uploads because we don't expect form data passed from a browser to ever encode data that way. If that's the wrong assumption, we can easily fix it."
3002
+ busboyStream.destroy(
3003
+ Error(
3004
+ "React doesn't accept base64 encoded file uploads because we don't expect form data passed from a browser to ever encode data that way. If that's the wrong assumption, we can easily fix it."
3005
+ )
2774
3006
  );
2775
- pendingFiles++;
2776
- var JSCompiler_object_inline_chunks_227 = [];
2777
- value.on("data", function (chunk) {
2778
- JSCompiler_object_inline_chunks_227.push(chunk);
2779
- });
2780
- value.on("end", function () {
2781
- var blob = new Blob(JSCompiler_object_inline_chunks_227, {
2782
- type: mimeType
3007
+ else {
3008
+ pendingFiles++;
3009
+ var JSCompiler_object_inline_chunks_234 = [];
3010
+ value.on("data", function (chunk) {
3011
+ JSCompiler_object_inline_chunks_234.push(chunk);
2783
3012
  });
2784
- response._formData.append(name, blob, filename);
2785
- pendingFiles--;
2786
- if (0 === pendingFiles) {
2787
- for (blob = 0; blob < queuedFields.length; blob += 2)
2788
- resolveField(response, queuedFields[blob], queuedFields[blob + 1]);
2789
- queuedFields.length = 0;
2790
- }
2791
- });
3013
+ value.on("end", function () {
3014
+ try {
3015
+ var blob = new Blob(JSCompiler_object_inline_chunks_234, {
3016
+ type: mimeType
3017
+ });
3018
+ response._formData.append(name, blob, filename);
3019
+ pendingFiles--;
3020
+ if (0 === pendingFiles) {
3021
+ for (blob = 0; blob < queuedFields.length; blob += 2)
3022
+ resolveField(
3023
+ response,
3024
+ queuedFields[blob],
3025
+ queuedFields[blob + 1]
3026
+ );
3027
+ queuedFields.length = 0;
3028
+ }
3029
+ } catch (error) {
3030
+ busboyStream.destroy(error);
3031
+ }
3032
+ });
3033
+ }
2792
3034
  });
2793
3035
  busboyStream.on("finish", function () {
2794
3036
  close(response);