@modern-js/utils 2.69.2 → 2.69.4

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 (18) hide show
  1. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js +8 -9
  2. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.production.js +7 -8
  3. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.development.js +6 -7
  4. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.edge.production.js +7 -8
  5. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.development.js +6 -7
  6. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.production.js +7 -8
  7. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.development.js +5 -5
  8. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.node.unbundled.production.js +6 -6
  9. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.development.js +430 -197
  10. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.browser.production.js +428 -204
  11. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.development.js +431 -198
  12. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.edge.production.js +429 -205
  13. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.development.js +474 -227
  14. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.production.js +472 -230
  15. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.development.js +472 -224
  16. package/dist/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-server.node.unbundled.production.js +470 -227
  17. package/dist/compiled/react-server-dom-webpack/package.json +5 -5
  18. package/package.json +2 -2
@@ -860,8 +860,8 @@ function serializeReadableStream(request, task, stream) {
860
860
  emitChunk(request, streamTask, streamTask.model),
861
861
  enqueueFlush(request),
862
862
  reader.read().then(progress, error);
863
- } catch (x$8) {
864
- error(x$8);
863
+ } catch (x$11) {
864
+ error(x$11);
865
865
  }
866
866
  }
867
867
  function error(reason) {
@@ -937,8 +937,8 @@ function serializeAsyncIterable(request, task, iterable, iterator) {
937
937
  emitChunk(request, streamTask, streamTask.model),
938
938
  enqueueFlush(request),
939
939
  iterator.next().then(progress, error);
940
- } catch (x$9) {
941
- error(x$9);
940
+ } catch (x$12) {
941
+ error(x$12);
942
942
  }
943
943
  }
944
944
  function error(reason) {
@@ -1057,11 +1057,11 @@ function renderFunctionComponent(request, task, key, Component, props) {
1057
1057
  Component instanceof ReadableStream)
1058
1058
  )
1059
1059
  ) {
1060
- var iterableChild$10 = Component;
1060
+ var iterableChild$13 = Component;
1061
1061
  Component = {};
1062
1062
  Component =
1063
1063
  ((Component[ASYNC_ITERATOR] = function () {
1064
- return iterableChild$10[ASYNC_ITERATOR]();
1064
+ return iterableChild$13[ASYNC_ITERATOR]();
1065
1065
  }),
1066
1066
  Component);
1067
1067
  }
@@ -1948,7 +1948,7 @@ function abort(request, reason) {
1948
1948
  }
1949
1949
  var abortListeners = request.abortListeners;
1950
1950
  if (0 < abortListeners.size) {
1951
- var error$23 =
1951
+ var error$26 =
1952
1952
  void 0 === reason
1953
1953
  ? Error("The render was aborted by the server without a reason.")
1954
1954
  : "object" === typeof reason &&
@@ -1957,16 +1957,17 @@ function abort(request, reason) {
1957
1957
  ? Error("The render was aborted by the server with a promise.")
1958
1958
  : reason;
1959
1959
  abortListeners.forEach(function (callback) {
1960
- return callback(error$23);
1960
+ return callback(error$26);
1961
1961
  });
1962
1962
  abortListeners.clear();
1963
1963
  }
1964
1964
  null !== request.destination &&
1965
1965
  flushCompletedChunks(request, request.destination);
1966
- } catch (error$24) {
1967
- logRecoverableError(request, error$24, null), fatalError(request, error$24);
1966
+ } catch (error$27) {
1967
+ logRecoverableError(request, error$27, null), fatalError(request, error$27);
1968
1968
  }
1969
1969
  }
1970
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
1970
1971
  function resolveServerReference(bundlerConfig, id) {
1971
1972
  var name = "",
1972
1973
  resolvedModuleData = bundlerConfig[id];
@@ -2034,60 +2035,97 @@ function requireModule(metadata) {
2034
2035
  if ("fulfilled" === moduleExports.status)
2035
2036
  moduleExports = moduleExports.value;
2036
2037
  else throw moduleExports.reason;
2037
- return "*" === metadata[2]
2038
- ? moduleExports
2039
- : "" === metadata[2]
2040
- ? moduleExports.__esModule
2041
- ? moduleExports.default
2042
- : moduleExports
2043
- : moduleExports[metadata[2]];
2044
- }
2045
- var hasOwnProperty = Object.prototype.hasOwnProperty;
2046
- function Chunk(status, value, reason, response) {
2038
+ if ("*" === metadata[2]) return moduleExports;
2039
+ if ("" === metadata[2])
2040
+ return moduleExports.__esModule ? moduleExports.default : moduleExports;
2041
+ if (hasOwnProperty.call(moduleExports, metadata[2]))
2042
+ return moduleExports[metadata[2]];
2043
+ }
2044
+ var RESPONSE_SYMBOL = Symbol();
2045
+ function ReactPromise(status, value, reason) {
2047
2046
  this.status = status;
2048
2047
  this.value = value;
2049
2048
  this.reason = reason;
2050
- this._response = response;
2051
2049
  }
2052
- Chunk.prototype = Object.create(Promise.prototype);
2053
- Chunk.prototype.then = function (resolve, reject) {
2050
+ ReactPromise.prototype = Object.create(Promise.prototype);
2051
+ ReactPromise.prototype.then = function (resolve, reject) {
2054
2052
  switch (this.status) {
2055
2053
  case "resolved_model":
2056
2054
  initializeModelChunk(this);
2057
2055
  }
2058
2056
  switch (this.status) {
2059
2057
  case "fulfilled":
2060
- resolve(this.value);
2058
+ "function" === typeof resolve && resolve(this.value);
2061
2059
  break;
2062
2060
  case "pending":
2063
2061
  case "blocked":
2064
- case "cyclic":
2065
- resolve &&
2062
+ "function" === typeof resolve &&
2066
2063
  (null === this.value && (this.value = []), this.value.push(resolve));
2067
- reject &&
2064
+ "function" === typeof reject &&
2068
2065
  (null === this.reason && (this.reason = []), this.reason.push(reject));
2069
2066
  break;
2070
2067
  default:
2071
- reject(this.reason);
2068
+ "function" === typeof reject && reject(this.reason);
2072
2069
  }
2073
2070
  };
2074
- function createPendingChunk(response) {
2075
- return new Chunk("pending", null, null, response);
2071
+ function wakeChunk(response, listeners, value) {
2072
+ for (var i = 0; i < listeners.length; i++) {
2073
+ var listener = listeners[i];
2074
+ "function" === typeof listener
2075
+ ? listener(value)
2076
+ : fulfillReference(response, listener, value);
2077
+ }
2076
2078
  }
2077
- function wakeChunk(listeners, value) {
2078
- for (var i = 0; i < listeners.length; i++) (0, listeners[i])(value);
2079
+ function rejectChunk(response, listeners, error) {
2080
+ for (var i = 0; i < listeners.length; i++) {
2081
+ var listener = listeners[i];
2082
+ "function" === typeof listener
2083
+ ? listener(error)
2084
+ : rejectReference(response, listener.handler, error);
2085
+ }
2079
2086
  }
2080
- function triggerErrorOnChunk(chunk, error) {
2087
+ function resolveBlockedCycle(resolvedChunk, reference) {
2088
+ var referencedChunk = reference.handler.chunk;
2089
+ if (null === referencedChunk) return null;
2090
+ if (referencedChunk === resolvedChunk) return reference.handler;
2091
+ reference = referencedChunk.value;
2092
+ if (null !== reference)
2093
+ for (
2094
+ referencedChunk = 0;
2095
+ referencedChunk < reference.length;
2096
+ referencedChunk++
2097
+ ) {
2098
+ var listener = reference[referencedChunk];
2099
+ if (
2100
+ "function" !== typeof listener &&
2101
+ ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2102
+ null !== listener)
2103
+ )
2104
+ return listener;
2105
+ }
2106
+ return null;
2107
+ }
2108
+ function triggerErrorOnChunk(response, chunk, error) {
2081
2109
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2082
2110
  chunk.reason.error(error);
2083
2111
  else {
2084
2112
  var listeners = chunk.reason;
2085
2113
  chunk.status = "rejected";
2086
2114
  chunk.reason = error;
2087
- null !== listeners && wakeChunk(listeners, error);
2115
+ null !== listeners && rejectChunk(response, listeners, error);
2088
2116
  }
2089
2117
  }
2090
- function resolveModelChunk(chunk, value, id) {
2118
+ function createResolvedModelChunk(response, value, id) {
2119
+ var $jscomp$compprop2 = {};
2120
+ return new ReactPromise(
2121
+ "resolved_model",
2122
+ value,
2123
+ (($jscomp$compprop2.id = id),
2124
+ ($jscomp$compprop2[RESPONSE_SYMBOL] = response),
2125
+ $jscomp$compprop2)
2126
+ );
2127
+ }
2128
+ function resolveModelChunk(response, chunk, value, id) {
2091
2129
  if ("pending" !== chunk.status)
2092
2130
  (chunk = chunk.reason),
2093
2131
  "C" === value[0]
@@ -2098,77 +2136,129 @@ function resolveModelChunk(chunk, value, id) {
2098
2136
  rejectListeners = chunk.reason;
2099
2137
  chunk.status = "resolved_model";
2100
2138
  chunk.value = value;
2101
- chunk.reason = id;
2139
+ value = {};
2140
+ chunk.reason =
2141
+ ((value.id = id), (value[RESPONSE_SYMBOL] = response), value);
2102
2142
  if (null !== resolveListeners)
2103
- switch ((initializeModelChunk(chunk), chunk.status)) {
2143
+ a: switch ((initializeModelChunk(chunk), chunk.status)) {
2104
2144
  case "fulfilled":
2105
- wakeChunk(resolveListeners, chunk.value);
2145
+ wakeChunk(response, resolveListeners, chunk.value);
2106
2146
  break;
2107
- case "pending":
2108
2147
  case "blocked":
2109
- case "cyclic":
2148
+ for (value = 0; value < resolveListeners.length; value++)
2149
+ if (((id = resolveListeners[value]), "function" !== typeof id)) {
2150
+ var cyclicHandler = resolveBlockedCycle(chunk, id);
2151
+ if (null !== cyclicHandler)
2152
+ switch (
2153
+ (fulfillReference(response, id, cyclicHandler.value),
2154
+ resolveListeners.splice(value, 1),
2155
+ value--,
2156
+ null !== rejectListeners &&
2157
+ ((id = rejectListeners.indexOf(id)),
2158
+ -1 !== id && rejectListeners.splice(id, 1)),
2159
+ chunk.status)
2160
+ ) {
2161
+ case "fulfilled":
2162
+ wakeChunk(response, resolveListeners, chunk.value);
2163
+ break a;
2164
+ case "rejected":
2165
+ null !== rejectListeners &&
2166
+ rejectChunk(response, rejectListeners, chunk.reason);
2167
+ break a;
2168
+ }
2169
+ }
2170
+ case "pending":
2110
2171
  if (chunk.value)
2111
- for (value = 0; value < resolveListeners.length; value++)
2112
- chunk.value.push(resolveListeners[value]);
2172
+ for (response = 0; response < resolveListeners.length; response++)
2173
+ chunk.value.push(resolveListeners[response]);
2113
2174
  else chunk.value = resolveListeners;
2114
2175
  if (chunk.reason) {
2115
2176
  if (rejectListeners)
2116
- for (value = 0; value < rejectListeners.length; value++)
2117
- chunk.reason.push(rejectListeners[value]);
2177
+ for (
2178
+ resolveListeners = 0;
2179
+ resolveListeners < rejectListeners.length;
2180
+ resolveListeners++
2181
+ )
2182
+ chunk.reason.push(rejectListeners[resolveListeners]);
2118
2183
  } else chunk.reason = rejectListeners;
2119
2184
  break;
2120
2185
  case "rejected":
2121
- rejectListeners && wakeChunk(rejectListeners, chunk.reason);
2186
+ rejectListeners && wakeChunk(response, rejectListeners, chunk.reason);
2122
2187
  }
2123
2188
  }
2124
2189
  }
2125
2190
  function createResolvedIteratorResultChunk(response, value, done) {
2126
- return new Chunk(
2191
+ var $jscomp$compprop4 = {};
2192
+ return new ReactPromise(
2127
2193
  "resolved_model",
2128
2194
  (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}",
2129
- -1,
2130
- response
2195
+ (($jscomp$compprop4.id = -1),
2196
+ ($jscomp$compprop4[RESPONSE_SYMBOL] = response),
2197
+ $jscomp$compprop4)
2131
2198
  );
2132
2199
  }
2133
- function resolveIteratorResultChunk(chunk, value, done) {
2200
+ function resolveIteratorResultChunk(response, chunk, value, done) {
2134
2201
  resolveModelChunk(
2202
+ response,
2135
2203
  chunk,
2136
2204
  (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}",
2137
2205
  -1
2138
2206
  );
2139
2207
  }
2140
- function loadServerReference$1(
2141
- response,
2142
- id,
2143
- bound,
2144
- parentChunk,
2145
- parentObject,
2146
- key
2147
- ) {
2208
+ function loadServerReference$1(response, metaData, parentObject, key) {
2209
+ var id = metaData.id;
2210
+ if ("string" !== typeof id) return null;
2148
2211
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2149
- id = preloadModule(serverReference);
2150
- if (bound)
2151
- bound = Promise.all([bound, id]).then(function (_ref) {
2152
- _ref = _ref[0];
2153
- var fn = requireModule(serverReference);
2154
- return fn.bind.apply(fn, [null].concat(_ref));
2155
- });
2156
- else if (id)
2157
- bound = Promise.resolve(id).then(function () {
2158
- return requireModule(serverReference);
2159
- });
2212
+ id = metaData.bound;
2213
+ var promise = preloadModule(serverReference);
2214
+ if (promise)
2215
+ id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2216
+ else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2160
2217
  else return requireModule(serverReference);
2161
- bound.then(
2162
- createModelResolver(
2163
- parentChunk,
2164
- parentObject,
2165
- key,
2166
- !1,
2167
- response,
2168
- createModel,
2169
- []
2170
- ),
2171
- createModelReject(parentChunk)
2218
+ if (initializingHandler) {
2219
+ var handler = initializingHandler;
2220
+ handler.deps++;
2221
+ } else
2222
+ handler = initializingHandler = {
2223
+ chunk: null,
2224
+ value: null,
2225
+ reason: null,
2226
+ deps: 1,
2227
+ errored: !1
2228
+ };
2229
+ promise.then(
2230
+ function () {
2231
+ var resolvedValue = requireModule(serverReference);
2232
+ if (metaData.bound) {
2233
+ var promiseValue = metaData.bound.value;
2234
+ promiseValue = Array.isArray(promiseValue) ? promiseValue.slice(0) : [];
2235
+ promiseValue.unshift(null);
2236
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2237
+ }
2238
+ parentObject[key] = resolvedValue;
2239
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2240
+ handler.deps--;
2241
+ 0 === handler.deps &&
2242
+ ((resolvedValue = handler.chunk),
2243
+ null !== resolvedValue &&
2244
+ "blocked" === resolvedValue.status &&
2245
+ ((promiseValue = resolvedValue.value),
2246
+ (resolvedValue.status = "fulfilled"),
2247
+ (resolvedValue.value = handler.value),
2248
+ null !== promiseValue &&
2249
+ wakeChunk(response, promiseValue, handler.value)));
2250
+ },
2251
+ function (error) {
2252
+ if (!handler.errored) {
2253
+ handler.errored = !0;
2254
+ handler.value = null;
2255
+ handler.reason = error;
2256
+ var chunk = handler.chunk;
2257
+ null !== chunk &&
2258
+ "blocked" === chunk.status &&
2259
+ triggerErrorOnChunk(response, chunk, error);
2260
+ }
2261
+ }
2172
2262
  );
2173
2263
  return null;
2174
2264
  }
@@ -2198,51 +2288,63 @@ function reviveModel(response, parentObj, parentKey, value, reference) {
2198
2288
  ? reference + ":" + i
2199
2289
  : void 0),
2200
2290
  (parentObj = reviveModel(response, value, i, value[i], parentObj)),
2201
- void 0 !== parentObj ? (value[i] = parentObj) : delete value[i]);
2291
+ void 0 !== parentObj || "__proto__" === i
2292
+ ? (value[i] = parentObj)
2293
+ : delete value[i]);
2202
2294
  return value;
2203
2295
  }
2204
- var initializingChunk = null,
2205
- initializingChunkBlockedModel = null;
2296
+ var initializingHandler = null;
2206
2297
  function initializeModelChunk(chunk) {
2207
- var prevChunk = initializingChunk,
2208
- prevBlocked = initializingChunkBlockedModel;
2209
- initializingChunk = chunk;
2210
- initializingChunkBlockedModel = null;
2211
- var rootReference = -1 === chunk.reason ? void 0 : chunk.reason.toString(16),
2212
- resolvedModel = chunk.value;
2213
- chunk.status = "cyclic";
2298
+ var prevHandler = initializingHandler;
2299
+ initializingHandler = null;
2300
+ var _chunk$reason = chunk.reason,
2301
+ response = _chunk$reason[RESPONSE_SYMBOL];
2302
+ _chunk$reason = _chunk$reason.id;
2303
+ _chunk$reason = -1 === _chunk$reason ? void 0 : _chunk$reason.toString(16);
2304
+ var resolvedModel = chunk.value;
2305
+ chunk.status = "blocked";
2214
2306
  chunk.value = null;
2215
2307
  chunk.reason = null;
2216
2308
  try {
2217
2309
  var rawModel = JSON.parse(resolvedModel),
2218
2310
  value = reviveModel(
2219
- chunk._response,
2311
+ response,
2220
2312
  { "": rawModel },
2221
2313
  "",
2222
2314
  rawModel,
2223
- rootReference
2224
- );
2225
- if (
2226
- null !== initializingChunkBlockedModel &&
2227
- 0 < initializingChunkBlockedModel.deps
2228
- )
2229
- (initializingChunkBlockedModel.value = value), (chunk.status = "blocked");
2230
- else {
2231
- var resolveListeners = chunk.value;
2232
- chunk.status = "fulfilled";
2233
- chunk.value = value;
2234
- null !== resolveListeners && wakeChunk(resolveListeners, value);
2315
+ _chunk$reason
2316
+ ),
2317
+ resolveListeners = chunk.value;
2318
+ if (null !== resolveListeners)
2319
+ for (
2320
+ chunk.value = null, chunk.reason = null, rawModel = 0;
2321
+ rawModel < resolveListeners.length;
2322
+ rawModel++
2323
+ ) {
2324
+ var listener = resolveListeners[rawModel];
2325
+ "function" === typeof listener
2326
+ ? listener(value)
2327
+ : fulfillReference(response, listener, value);
2328
+ }
2329
+ if (null !== initializingHandler) {
2330
+ if (initializingHandler.errored) throw initializingHandler.reason;
2331
+ if (0 < initializingHandler.deps) {
2332
+ initializingHandler.value = value;
2333
+ initializingHandler.chunk = chunk;
2334
+ return;
2335
+ }
2235
2336
  }
2337
+ chunk.status = "fulfilled";
2338
+ chunk.value = value;
2236
2339
  } catch (error) {
2237
2340
  (chunk.status = "rejected"), (chunk.reason = error);
2238
2341
  } finally {
2239
- (initializingChunk = prevChunk),
2240
- (initializingChunkBlockedModel = prevBlocked);
2342
+ initializingHandler = prevHandler;
2241
2343
  }
2242
2344
  }
2243
2345
  function reportGlobalError(response, error) {
2244
2346
  response._chunks.forEach(function (chunk) {
2245
- "pending" === chunk.status && triggerErrorOnChunk(chunk, error);
2347
+ "pending" === chunk.status && triggerErrorOnChunk(response, chunk, error);
2246
2348
  });
2247
2349
  }
2248
2350
  function getChunk(response, id) {
@@ -2251,46 +2353,102 @@ function getChunk(response, id) {
2251
2353
  chunk ||
2252
2354
  ((chunk = response._formData.get(response._prefix + id)),
2253
2355
  (chunk =
2254
- null != chunk
2255
- ? new Chunk("resolved_model", chunk, id, response)
2256
- : createPendingChunk(response)),
2356
+ "string" === typeof chunk
2357
+ ? createResolvedModelChunk(response, chunk, id)
2358
+ : new ReactPromise("pending", null, null)),
2257
2359
  chunks.set(id, chunk));
2258
2360
  return chunk;
2259
2361
  }
2260
- function createModelResolver(
2261
- chunk,
2362
+ function fulfillReference(response, reference, value) {
2363
+ for (
2364
+ var handler = reference.handler,
2365
+ parentObject = reference.parentObject,
2366
+ key = reference.key,
2367
+ map = reference.map,
2368
+ path = reference.path,
2369
+ i = 1;
2370
+ i < path.length;
2371
+ i++
2372
+ ) {
2373
+ for (; value instanceof ReactPromise; ) {
2374
+ switch (value.status) {
2375
+ case "resolved_model":
2376
+ initializeModelChunk(value);
2377
+ }
2378
+ switch (value.status) {
2379
+ case "fulfilled":
2380
+ value = value.value;
2381
+ continue;
2382
+ case "blocked":
2383
+ case "pending":
2384
+ path.splice(0, i - 1);
2385
+ null === value.value
2386
+ ? (value.value = [reference])
2387
+ : value.value.push(reference);
2388
+ null === value.reason
2389
+ ? (value.reason = [reference])
2390
+ : value.reason.push(reference);
2391
+ return;
2392
+ default:
2393
+ rejectReference(response, reference.handler, value.reason);
2394
+ return;
2395
+ }
2396
+ }
2397
+ var name = path[i];
2398
+ "object" === typeof value &&
2399
+ hasOwnProperty.call(value, name) &&
2400
+ (value = value[name]);
2401
+ }
2402
+ reference = map(response, value, parentObject, key);
2403
+ parentObject[key] = reference;
2404
+ "" === key && null === handler.value && (handler.value = reference);
2405
+ handler.deps--;
2406
+ 0 === handler.deps &&
2407
+ ((parentObject = handler.chunk),
2408
+ null !== parentObject &&
2409
+ "blocked" === parentObject.status &&
2410
+ ((key = parentObject.value),
2411
+ (parentObject.status = "fulfilled"),
2412
+ (parentObject.value = handler.value),
2413
+ (parentObject.reason = handler.reason),
2414
+ null !== key && wakeChunk(response, key, handler.value)));
2415
+ }
2416
+ function rejectReference(response, handler, error) {
2417
+ handler.errored ||
2418
+ ((handler.errored = !0),
2419
+ (handler.value = null),
2420
+ (handler.reason = error),
2421
+ (handler = handler.chunk),
2422
+ null !== handler &&
2423
+ "blocked" === handler.status &&
2424
+ triggerErrorOnChunk(response, handler, error));
2425
+ }
2426
+ function waitForReference(
2427
+ referencedChunk,
2262
2428
  parentObject,
2263
2429
  key,
2264
- cyclic,
2265
2430
  response,
2266
2431
  map,
2267
2432
  path
2268
2433
  ) {
2269
- if (initializingChunkBlockedModel) {
2270
- var blocked = initializingChunkBlockedModel;
2271
- cyclic || blocked.deps++;
2272
- } else
2273
- blocked = initializingChunkBlockedModel = {
2274
- deps: cyclic ? 0 : 1,
2275
- value: null
2276
- };
2277
- return function (value) {
2278
- for (var i = 1; i < path.length; i++) value = value[path[i]];
2279
- parentObject[key] = map(response, value);
2280
- "" === key && null === blocked.value && (blocked.value = parentObject[key]);
2281
- blocked.deps--;
2282
- 0 === blocked.deps &&
2283
- "blocked" === chunk.status &&
2284
- ((value = chunk.value),
2285
- (chunk.status = "fulfilled"),
2286
- (chunk.value = blocked.value),
2287
- null !== value && wakeChunk(value, blocked.value));
2288
- };
2289
- }
2290
- function createModelReject(chunk) {
2291
- return function (error) {
2292
- return triggerErrorOnChunk(chunk, error);
2434
+ initializingHandler
2435
+ ? ((response = initializingHandler), response.deps++)
2436
+ : (response = initializingHandler =
2437
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2438
+ parentObject = {
2439
+ handler: response,
2440
+ parentObject: parentObject,
2441
+ key: key,
2442
+ map: map,
2443
+ path: path
2293
2444
  };
2445
+ null === referencedChunk.value
2446
+ ? (referencedChunk.value = [parentObject])
2447
+ : referencedChunk.value.push(parentObject);
2448
+ null === referencedChunk.reason
2449
+ ? (referencedChunk.reason = [parentObject])
2450
+ : referencedChunk.reason.push(parentObject);
2451
+ return null;
2294
2452
  }
2295
2453
  function getOutlinedModel(response, reference, parentObject, key, map) {
2296
2454
  reference = reference.split(":");
@@ -2302,29 +2460,68 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2302
2460
  }
2303
2461
  switch (id.status) {
2304
2462
  case "fulfilled":
2305
- parentObject = id.value;
2306
- for (key = 1; key < reference.length; key++)
2307
- parentObject = parentObject[reference[key]];
2308
- return map(response, parentObject);
2463
+ var value = id.value;
2464
+ for (id = 1; id < reference.length; id++) {
2465
+ for (; value instanceof ReactPromise; ) {
2466
+ switch (value.status) {
2467
+ case "resolved_model":
2468
+ initializeModelChunk(value);
2469
+ }
2470
+ switch (value.status) {
2471
+ case "fulfilled":
2472
+ value = value.value;
2473
+ break;
2474
+ case "blocked":
2475
+ case "pending":
2476
+ return waitForReference(
2477
+ value,
2478
+ parentObject,
2479
+ key,
2480
+ response,
2481
+ map,
2482
+ reference.slice(id - 1)
2483
+ );
2484
+ default:
2485
+ return (
2486
+ initializingHandler
2487
+ ? ((initializingHandler.errored = !0),
2488
+ (initializingHandler.value = null),
2489
+ (initializingHandler.reason = value.reason))
2490
+ : (initializingHandler = {
2491
+ chunk: null,
2492
+ value: null,
2493
+ reason: value.reason,
2494
+ deps: 0,
2495
+ errored: !0
2496
+ }),
2497
+ null
2498
+ );
2499
+ }
2500
+ }
2501
+ var name = reference[id];
2502
+ "object" === typeof value &&
2503
+ hasOwnProperty.call(value, name) &&
2504
+ (value = value[name]);
2505
+ }
2506
+ return map(response, value, parentObject, key);
2309
2507
  case "pending":
2310
2508
  case "blocked":
2311
- case "cyclic":
2312
- var parentChunk = initializingChunk;
2313
- id.then(
2314
- createModelResolver(
2315
- parentChunk,
2316
- parentObject,
2317
- key,
2318
- "cyclic" === id.status,
2319
- response,
2320
- map,
2321
- reference
2322
- ),
2323
- createModelReject(parentChunk)
2324
- );
2325
- return null;
2509
+ return waitForReference(id, parentObject, key, response, map, reference);
2326
2510
  default:
2327
- throw id.reason;
2511
+ return (
2512
+ initializingHandler
2513
+ ? ((initializingHandler.errored = !0),
2514
+ (initializingHandler.value = null),
2515
+ (initializingHandler.reason = id.reason))
2516
+ : (initializingHandler = {
2517
+ chunk: null,
2518
+ value: null,
2519
+ reason: id.reason,
2520
+ deps: 0,
2521
+ errored: !0
2522
+ }),
2523
+ null
2524
+ );
2328
2525
  }
2329
2526
  }
2330
2527
  function createMap(response, model) {
@@ -2348,38 +2545,63 @@ function parseTypedArray(
2348
2545
  parentKey
2349
2546
  ) {
2350
2547
  reference = parseInt(reference.slice(2), 16);
2351
- reference = response._formData.get(response._prefix + reference);
2352
- reference =
2353
- constructor === ArrayBuffer
2354
- ? reference.arrayBuffer()
2355
- : reference.arrayBuffer().then(function (buffer) {
2356
- return new constructor(buffer);
2357
- });
2358
- bytesPerElement = initializingChunk;
2548
+ reference = response._formData
2549
+ .get(response._prefix + reference)
2550
+ .arrayBuffer();
2551
+ if (initializingHandler) {
2552
+ var handler = initializingHandler;
2553
+ handler.deps++;
2554
+ } else
2555
+ handler = initializingHandler = {
2556
+ chunk: null,
2557
+ value: null,
2558
+ reason: null,
2559
+ deps: 1,
2560
+ errored: !1
2561
+ };
2359
2562
  reference.then(
2360
- createModelResolver(
2361
- bytesPerElement,
2362
- parentObject,
2363
- parentKey,
2364
- !1,
2365
- response,
2366
- createModel,
2367
- []
2368
- ),
2369
- createModelReject(bytesPerElement)
2563
+ function (buffer) {
2564
+ buffer = constructor === ArrayBuffer ? buffer : new constructor(buffer);
2565
+ parentObject[parentKey] = buffer;
2566
+ "" === parentKey && null === handler.value && (handler.value = buffer);
2567
+ handler.deps--;
2568
+ if (
2569
+ 0 === handler.deps &&
2570
+ ((buffer = handler.chunk),
2571
+ null !== buffer && "blocked" === buffer.status)
2572
+ ) {
2573
+ var resolveListeners = buffer.value;
2574
+ buffer.status = "fulfilled";
2575
+ buffer.value = handler.value;
2576
+ null !== resolveListeners &&
2577
+ wakeChunk(response, resolveListeners, handler.value);
2578
+ }
2579
+ },
2580
+ function (error) {
2581
+ if (!handler.errored) {
2582
+ handler.errored = !0;
2583
+ handler.value = null;
2584
+ handler.reason = error;
2585
+ var chunk = handler.chunk;
2586
+ null !== chunk &&
2587
+ "blocked" === chunk.status &&
2588
+ triggerErrorOnChunk(response, chunk, error);
2589
+ }
2590
+ }
2370
2591
  );
2371
2592
  return null;
2372
2593
  }
2373
2594
  function resolveStream(response, id, stream, controller) {
2374
2595
  var chunks = response._chunks;
2375
- stream = new Chunk("fulfilled", stream, controller, response);
2596
+ stream = new ReactPromise("fulfilled", stream, controller);
2376
2597
  chunks.set(id, stream);
2377
2598
  response = response._formData.getAll(response._prefix + id);
2378
2599
  for (id = 0; id < response.length; id++)
2379
2600
  (chunks = response[id]),
2380
- "C" === chunks[0]
2381
- ? controller.close("C" === chunks ? '"$undefined"' : chunks.slice(1))
2382
- : controller.enqueueModel(chunks);
2601
+ "string" === typeof chunks &&
2602
+ ("C" === chunks[0]
2603
+ ? controller.close("C" === chunks ? '"$undefined"' : chunks.slice(1))
2604
+ : controller.enqueueModel(chunks));
2383
2605
  }
2384
2606
  function parseReadableStream(response, reference, type) {
2385
2607
  reference = parseInt(reference.slice(2), 16);
@@ -2394,7 +2616,7 @@ function parseReadableStream(response, reference, type) {
2394
2616
  resolveStream(response, reference, type, {
2395
2617
  enqueueModel: function (json) {
2396
2618
  if (null === previousBlockedChunk) {
2397
- var chunk = new Chunk("resolved_model", json, -1, response);
2619
+ var chunk = createResolvedModelChunk(response, json, -1);
2398
2620
  initializeModelChunk(chunk);
2399
2621
  "fulfilled" === chunk.status
2400
2622
  ? controller.enqueue(chunk.value)
@@ -2409,8 +2631,8 @@ function parseReadableStream(response, reference, type) {
2409
2631
  (previousBlockedChunk = chunk));
2410
2632
  } else {
2411
2633
  chunk = previousBlockedChunk;
2412
- var chunk$27 = createPendingChunk(response);
2413
- chunk$27.then(
2634
+ var chunk$31 = new ReactPromise("pending", null, null);
2635
+ chunk$31.then(
2414
2636
  function (v) {
2415
2637
  return controller.enqueue(v);
2416
2638
  },
@@ -2418,10 +2640,10 @@ function parseReadableStream(response, reference, type) {
2418
2640
  return controller.error(e);
2419
2641
  }
2420
2642
  );
2421
- previousBlockedChunk = chunk$27;
2643
+ previousBlockedChunk = chunk$31;
2422
2644
  chunk.then(function () {
2423
- previousBlockedChunk === chunk$27 && (previousBlockedChunk = null);
2424
- resolveModelChunk(chunk$27, json, -1);
2645
+ previousBlockedChunk === chunk$31 && (previousBlockedChunk = null);
2646
+ resolveModelChunk(response, chunk$31, json, -1);
2425
2647
  });
2426
2648
  }
2427
2649
  },
@@ -2461,9 +2683,9 @@ function parseAsyncIterable(response, reference, iterator) {
2461
2683
  var buffer = [],
2462
2684
  closed = !1,
2463
2685
  nextWriteIndex = 0,
2464
- $jscomp$compprop2 = {};
2465
- $jscomp$compprop2 =
2466
- (($jscomp$compprop2[ASYNC_ITERATOR] = function () {
2686
+ $jscomp$compprop5 = {};
2687
+ $jscomp$compprop5 =
2688
+ (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2467
2689
  var nextReadIndex = 0;
2468
2690
  return createIterator(function (arg) {
2469
2691
  if (void 0 !== arg)
@@ -2472,19 +2694,18 @@ function parseAsyncIterable(response, reference, iterator) {
2472
2694
  );
2473
2695
  if (nextReadIndex === buffer.length) {
2474
2696
  if (closed)
2475
- return new Chunk(
2697
+ return new ReactPromise(
2476
2698
  "fulfilled",
2477
2699
  { done: !0, value: void 0 },
2478
- null,
2479
- response
2700
+ null
2480
2701
  );
2481
- buffer[nextReadIndex] = createPendingChunk(response);
2702
+ buffer[nextReadIndex] = new ReactPromise("pending", null, null);
2482
2703
  }
2483
2704
  return buffer[nextReadIndex++];
2484
2705
  });
2485
2706
  }),
2486
- $jscomp$compprop2);
2487
- iterator = iterator ? $jscomp$compprop2[ASYNC_ITERATOR]() : $jscomp$compprop2;
2707
+ $jscomp$compprop5);
2708
+ iterator = iterator ? $jscomp$compprop5[ASYNC_ITERATOR]() : $jscomp$compprop5;
2488
2709
  resolveStream(response, reference, iterator, {
2489
2710
  enqueueModel: function (value) {
2490
2711
  nextWriteIndex === buffer.length
@@ -2493,7 +2714,12 @@ function parseAsyncIterable(response, reference, iterator) {
2493
2714
  value,
2494
2715
  !1
2495
2716
  ))
2496
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !1);
2717
+ : resolveIteratorResultChunk(
2718
+ response,
2719
+ buffer[nextWriteIndex],
2720
+ value,
2721
+ !1
2722
+ );
2497
2723
  nextWriteIndex++;
2498
2724
  },
2499
2725
  close: function (value) {
@@ -2504,9 +2730,15 @@ function parseAsyncIterable(response, reference, iterator) {
2504
2730
  value,
2505
2731
  !0
2506
2732
  ))
2507
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !0);
2733
+ : resolveIteratorResultChunk(
2734
+ response,
2735
+ buffer[nextWriteIndex],
2736
+ value,
2737
+ !0
2738
+ );
2508
2739
  for (nextWriteIndex++; nextWriteIndex < buffer.length; )
2509
2740
  resolveIteratorResultChunk(
2741
+ response,
2510
2742
  buffer[nextWriteIndex++],
2511
2743
  '"$undefined"',
2512
2744
  !0
@@ -2516,11 +2748,11 @@ function parseAsyncIterable(response, reference, iterator) {
2516
2748
  closed = !0;
2517
2749
  for (
2518
2750
  nextWriteIndex === buffer.length &&
2519
- (buffer[nextWriteIndex] = createPendingChunk(response));
2751
+ (buffer[nextWriteIndex] = new ReactPromise("pending", null, null));
2520
2752
  nextWriteIndex < buffer.length;
2521
2753
 
2522
2754
  )
2523
- triggerErrorOnChunk(buffer[nextWriteIndex++], error);
2755
+ triggerErrorOnChunk(response, buffer[nextWriteIndex++], error);
2524
2756
  }
2525
2757
  });
2526
2758
  return iterator;
@@ -2535,15 +2767,7 @@ function parseModelString(response, obj, key, value, reference) {
2535
2767
  case "F":
2536
2768
  return (
2537
2769
  (value = value.slice(2)),
2538
- (value = getOutlinedModel(response, value, obj, key, createModel)),
2539
- loadServerReference$1(
2540
- response,
2541
- value.id,
2542
- value.bound,
2543
- initializingChunk,
2544
- obj,
2545
- key
2546
- )
2770
+ getOutlinedModel(response, value, obj, key, loadServerReference$1)
2547
2771
  );
2548
2772
  case "T":
2549
2773
  if (void 0 === reference || void 0 === response._temporaryReferences)
@@ -2656,10 +2880,12 @@ function createResponse(bundlerConfig, formFieldPrefix, temporaryReferences) {
2656
2880
  function resolveField(response, key, value) {
2657
2881
  response._formData.append(key, value);
2658
2882
  var prefix = response._prefix;
2659
- key.startsWith(prefix) &&
2660
- ((response = response._chunks),
2661
- (key = +key.slice(prefix.length)),
2662
- (prefix = response.get(key)) && resolveModelChunk(prefix, value, key));
2883
+ if (key.startsWith(prefix)) {
2884
+ var chunks = response._chunks;
2885
+ key = +key.slice(prefix.length);
2886
+ (chunks = chunks.get(key)) &&
2887
+ resolveModelChunk(response, chunks, value, key);
2888
+ }
2663
2889
  }
2664
2890
  function close(response) {
2665
2891
  reportGlobalError(response, Error("Connection closed."));
@@ -2767,34 +2993,50 @@ exports.decodeReplyFromBusboy = function (busboyStream, webpackMap, options) {
2767
2993
  pendingFiles = 0,
2768
2994
  queuedFields = [];
2769
2995
  busboyStream.on("field", function (name, value) {
2770
- 0 < pendingFiles
2771
- ? queuedFields.push(name, value)
2772
- : resolveField(response, name, value);
2996
+ if (0 < pendingFiles) queuedFields.push(name, value);
2997
+ else
2998
+ try {
2999
+ resolveField(response, name, value);
3000
+ } catch (error) {
3001
+ busboyStream.destroy(error);
3002
+ }
2773
3003
  });
2774
3004
  busboyStream.on("file", function (name, value, _ref) {
2775
3005
  var filename = _ref.filename,
2776
3006
  mimeType = _ref.mimeType;
2777
3007
  if ("base64" === _ref.encoding.toLowerCase())
2778
- throw Error(
2779
- "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."
3008
+ busboyStream.destroy(
3009
+ Error(
3010
+ "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."
3011
+ )
2780
3012
  );
2781
- pendingFiles++;
2782
- var JSCompiler_object_inline_chunks_216 = [];
2783
- value.on("data", function (chunk) {
2784
- JSCompiler_object_inline_chunks_216.push(chunk);
2785
- });
2786
- value.on("end", function () {
2787
- var blob = new Blob(JSCompiler_object_inline_chunks_216, {
2788
- type: mimeType
3013
+ else {
3014
+ pendingFiles++;
3015
+ var JSCompiler_object_inline_chunks_223 = [];
3016
+ value.on("data", function (chunk) {
3017
+ JSCompiler_object_inline_chunks_223.push(chunk);
2789
3018
  });
2790
- response._formData.append(name, blob, filename);
2791
- pendingFiles--;
2792
- if (0 === pendingFiles) {
2793
- for (blob = 0; blob < queuedFields.length; blob += 2)
2794
- resolveField(response, queuedFields[blob], queuedFields[blob + 1]);
2795
- queuedFields.length = 0;
2796
- }
2797
- });
3019
+ value.on("end", function () {
3020
+ try {
3021
+ var blob = new Blob(JSCompiler_object_inline_chunks_223, {
3022
+ type: mimeType
3023
+ });
3024
+ response._formData.append(name, blob, filename);
3025
+ pendingFiles--;
3026
+ if (0 === pendingFiles) {
3027
+ for (blob = 0; blob < queuedFields.length; blob += 2)
3028
+ resolveField(
3029
+ response,
3030
+ queuedFields[blob],
3031
+ queuedFields[blob + 1]
3032
+ );
3033
+ queuedFields.length = 0;
3034
+ }
3035
+ } catch (error) {
3036
+ busboyStream.destroy(error);
3037
+ }
3038
+ });
3039
+ }
2798
3040
  });
2799
3041
  busboyStream.on("finish", function () {
2800
3042
  close(response);