@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
@@ -839,8 +839,8 @@ function serializeReadableStream(request, task, stream) {
839
839
  emitChunk(request, streamTask, streamTask.model),
840
840
  enqueueFlush(request),
841
841
  reader.read().then(progress, error);
842
- } catch (x$8) {
843
- error(x$8);
842
+ } catch (x$11) {
843
+ error(x$11);
844
844
  }
845
845
  }
846
846
  function error(reason) {
@@ -916,8 +916,8 @@ function serializeAsyncIterable(request, task, iterable, iterator) {
916
916
  emitChunk(request, streamTask, streamTask.model),
917
917
  enqueueFlush(request),
918
918
  iterator.next().then(progress, error);
919
- } catch (x$9) {
920
- error(x$9);
919
+ } catch (x$12) {
920
+ error(x$12);
921
921
  }
922
922
  }
923
923
  function error(reason) {
@@ -1037,11 +1037,11 @@ function renderFunctionComponent(request, task, key, Component, props) {
1037
1037
  Component instanceof ReadableStream)
1038
1038
  )
1039
1039
  ) {
1040
- var iterableChild$10 = Component;
1040
+ var iterableChild$13 = Component;
1041
1041
  Component = {};
1042
1042
  Component =
1043
1043
  ((Component[ASYNC_ITERATOR] = function () {
1044
- return iterableChild$10[ASYNC_ITERATOR]();
1044
+ return iterableChild$13[ASYNC_ITERATOR]();
1045
1045
  }),
1046
1046
  Component);
1047
1047
  }
@@ -1901,7 +1901,7 @@ function abort(request, reason) {
1901
1901
  }
1902
1902
  var abortListeners = request.abortListeners;
1903
1903
  if (0 < abortListeners.size) {
1904
- var error$23 =
1904
+ var error$26 =
1905
1905
  void 0 === reason
1906
1906
  ? Error("The render was aborted by the server without a reason.")
1907
1907
  : "object" === typeof reason &&
@@ -1910,16 +1910,17 @@ function abort(request, reason) {
1910
1910
  ? Error("The render was aborted by the server with a promise.")
1911
1911
  : reason;
1912
1912
  abortListeners.forEach(function (callback) {
1913
- return callback(error$23);
1913
+ return callback(error$26);
1914
1914
  });
1915
1915
  abortListeners.clear();
1916
1916
  }
1917
1917
  null !== request.destination &&
1918
1918
  flushCompletedChunks(request, request.destination);
1919
- } catch (error$24) {
1920
- logRecoverableError(request, error$24, null), fatalError(request, error$24);
1919
+ } catch (error$27) {
1920
+ logRecoverableError(request, error$27, null), fatalError(request, error$27);
1921
1921
  }
1922
1922
  }
1923
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
1923
1924
  function resolveServerReference(bundlerConfig, id) {
1924
1925
  var name = "",
1925
1926
  resolvedModuleData = bundlerConfig[id];
@@ -1988,13 +1989,11 @@ function requireModule(metadata) {
1988
1989
  if ("fulfilled" === moduleExports.status)
1989
1990
  moduleExports = moduleExports.value;
1990
1991
  else throw moduleExports.reason;
1991
- return "*" === metadata[2]
1992
- ? moduleExports
1993
- : "" === metadata[2]
1994
- ? moduleExports.__esModule
1995
- ? moduleExports.default
1996
- : moduleExports
1997
- : moduleExports[metadata[2]];
1992
+ if ("*" === metadata[2]) return moduleExports;
1993
+ if ("" === metadata[2])
1994
+ return moduleExports.__esModule ? moduleExports.default : moduleExports;
1995
+ if (hasOwnProperty.call(moduleExports, metadata[2]))
1996
+ return moduleExports[metadata[2]];
1998
1997
  }
1999
1998
  var chunkMap = new Map(),
2000
1999
  webpackGetChunkFilename = __webpack_require__.u;
@@ -2004,52 +2003,91 @@ __webpack_require__.u = function (chunkId) {
2004
2003
  ? flightChunk
2005
2004
  : webpackGetChunkFilename(chunkId);
2006
2005
  };
2007
- var hasOwnProperty = Object.prototype.hasOwnProperty;
2008
- function Chunk(status, value, reason, response) {
2006
+ var RESPONSE_SYMBOL = Symbol();
2007
+ function ReactPromise(status, value, reason) {
2009
2008
  this.status = status;
2010
2009
  this.value = value;
2011
2010
  this.reason = reason;
2012
- this._response = response;
2013
2011
  }
2014
- Chunk.prototype = Object.create(Promise.prototype);
2015
- Chunk.prototype.then = function (resolve, reject) {
2012
+ ReactPromise.prototype = Object.create(Promise.prototype);
2013
+ ReactPromise.prototype.then = function (resolve, reject) {
2016
2014
  switch (this.status) {
2017
2015
  case "resolved_model":
2018
2016
  initializeModelChunk(this);
2019
2017
  }
2020
2018
  switch (this.status) {
2021
2019
  case "fulfilled":
2022
- resolve(this.value);
2020
+ "function" === typeof resolve && resolve(this.value);
2023
2021
  break;
2024
2022
  case "pending":
2025
2023
  case "blocked":
2026
- case "cyclic":
2027
- resolve &&
2024
+ "function" === typeof resolve &&
2028
2025
  (null === this.value && (this.value = []), this.value.push(resolve));
2029
- reject &&
2026
+ "function" === typeof reject &&
2030
2027
  (null === this.reason && (this.reason = []), this.reason.push(reject));
2031
2028
  break;
2032
2029
  default:
2033
- reject(this.reason);
2030
+ "function" === typeof reject && reject(this.reason);
2034
2031
  }
2035
2032
  };
2036
- function createPendingChunk(response) {
2037
- return new Chunk("pending", null, null, response);
2033
+ function wakeChunk(response, listeners, value) {
2034
+ for (var i = 0; i < listeners.length; i++) {
2035
+ var listener = listeners[i];
2036
+ "function" === typeof listener
2037
+ ? listener(value)
2038
+ : fulfillReference(response, listener, value);
2039
+ }
2038
2040
  }
2039
- function wakeChunk(listeners, value) {
2040
- for (var i = 0; i < listeners.length; i++) (0, listeners[i])(value);
2041
+ function rejectChunk(response, listeners, error) {
2042
+ for (var i = 0; i < listeners.length; i++) {
2043
+ var listener = listeners[i];
2044
+ "function" === typeof listener
2045
+ ? listener(error)
2046
+ : rejectReference(response, listener.handler, error);
2047
+ }
2041
2048
  }
2042
- function triggerErrorOnChunk(chunk, error) {
2049
+ function resolveBlockedCycle(resolvedChunk, reference) {
2050
+ var referencedChunk = reference.handler.chunk;
2051
+ if (null === referencedChunk) return null;
2052
+ if (referencedChunk === resolvedChunk) return reference.handler;
2053
+ reference = referencedChunk.value;
2054
+ if (null !== reference)
2055
+ for (
2056
+ referencedChunk = 0;
2057
+ referencedChunk < reference.length;
2058
+ referencedChunk++
2059
+ ) {
2060
+ var listener = reference[referencedChunk];
2061
+ if (
2062
+ "function" !== typeof listener &&
2063
+ ((listener = resolveBlockedCycle(resolvedChunk, listener)),
2064
+ null !== listener)
2065
+ )
2066
+ return listener;
2067
+ }
2068
+ return null;
2069
+ }
2070
+ function triggerErrorOnChunk(response, chunk, error) {
2043
2071
  if ("pending" !== chunk.status && "blocked" !== chunk.status)
2044
2072
  chunk.reason.error(error);
2045
2073
  else {
2046
2074
  var listeners = chunk.reason;
2047
2075
  chunk.status = "rejected";
2048
2076
  chunk.reason = error;
2049
- null !== listeners && wakeChunk(listeners, error);
2077
+ null !== listeners && rejectChunk(response, listeners, error);
2050
2078
  }
2051
2079
  }
2052
- function resolveModelChunk(chunk, value, id) {
2080
+ function createResolvedModelChunk(response, value, id) {
2081
+ var $jscomp$compprop2 = {};
2082
+ return new ReactPromise(
2083
+ "resolved_model",
2084
+ value,
2085
+ (($jscomp$compprop2.id = id),
2086
+ ($jscomp$compprop2[RESPONSE_SYMBOL] = response),
2087
+ $jscomp$compprop2)
2088
+ );
2089
+ }
2090
+ function resolveModelChunk(response, chunk, value, id) {
2053
2091
  if ("pending" !== chunk.status)
2054
2092
  (chunk = chunk.reason),
2055
2093
  "C" === value[0]
@@ -2060,77 +2098,129 @@ function resolveModelChunk(chunk, value, id) {
2060
2098
  rejectListeners = chunk.reason;
2061
2099
  chunk.status = "resolved_model";
2062
2100
  chunk.value = value;
2063
- chunk.reason = id;
2101
+ value = {};
2102
+ chunk.reason =
2103
+ ((value.id = id), (value[RESPONSE_SYMBOL] = response), value);
2064
2104
  if (null !== resolveListeners)
2065
- switch ((initializeModelChunk(chunk), chunk.status)) {
2105
+ a: switch ((initializeModelChunk(chunk), chunk.status)) {
2066
2106
  case "fulfilled":
2067
- wakeChunk(resolveListeners, chunk.value);
2107
+ wakeChunk(response, resolveListeners, chunk.value);
2068
2108
  break;
2069
- case "pending":
2070
2109
  case "blocked":
2071
- case "cyclic":
2110
+ for (value = 0; value < resolveListeners.length; value++)
2111
+ if (((id = resolveListeners[value]), "function" !== typeof id)) {
2112
+ var cyclicHandler = resolveBlockedCycle(chunk, id);
2113
+ if (null !== cyclicHandler)
2114
+ switch (
2115
+ (fulfillReference(response, id, cyclicHandler.value),
2116
+ resolveListeners.splice(value, 1),
2117
+ value--,
2118
+ null !== rejectListeners &&
2119
+ ((id = rejectListeners.indexOf(id)),
2120
+ -1 !== id && rejectListeners.splice(id, 1)),
2121
+ chunk.status)
2122
+ ) {
2123
+ case "fulfilled":
2124
+ wakeChunk(response, resolveListeners, chunk.value);
2125
+ break a;
2126
+ case "rejected":
2127
+ null !== rejectListeners &&
2128
+ rejectChunk(response, rejectListeners, chunk.reason);
2129
+ break a;
2130
+ }
2131
+ }
2132
+ case "pending":
2072
2133
  if (chunk.value)
2073
- for (value = 0; value < resolveListeners.length; value++)
2074
- chunk.value.push(resolveListeners[value]);
2134
+ for (response = 0; response < resolveListeners.length; response++)
2135
+ chunk.value.push(resolveListeners[response]);
2075
2136
  else chunk.value = resolveListeners;
2076
2137
  if (chunk.reason) {
2077
2138
  if (rejectListeners)
2078
- for (value = 0; value < rejectListeners.length; value++)
2079
- chunk.reason.push(rejectListeners[value]);
2139
+ for (
2140
+ resolveListeners = 0;
2141
+ resolveListeners < rejectListeners.length;
2142
+ resolveListeners++
2143
+ )
2144
+ chunk.reason.push(rejectListeners[resolveListeners]);
2080
2145
  } else chunk.reason = rejectListeners;
2081
2146
  break;
2082
2147
  case "rejected":
2083
- rejectListeners && wakeChunk(rejectListeners, chunk.reason);
2148
+ rejectListeners && wakeChunk(response, rejectListeners, chunk.reason);
2084
2149
  }
2085
2150
  }
2086
2151
  }
2087
2152
  function createResolvedIteratorResultChunk(response, value, done) {
2088
- return new Chunk(
2153
+ var $jscomp$compprop4 = {};
2154
+ return new ReactPromise(
2089
2155
  "resolved_model",
2090
2156
  (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}",
2091
- -1,
2092
- response
2157
+ (($jscomp$compprop4.id = -1),
2158
+ ($jscomp$compprop4[RESPONSE_SYMBOL] = response),
2159
+ $jscomp$compprop4)
2093
2160
  );
2094
2161
  }
2095
- function resolveIteratorResultChunk(chunk, value, done) {
2162
+ function resolveIteratorResultChunk(response, chunk, value, done) {
2096
2163
  resolveModelChunk(
2164
+ response,
2097
2165
  chunk,
2098
2166
  (done ? '{"done":true,"value":' : '{"done":false,"value":') + value + "}",
2099
2167
  -1
2100
2168
  );
2101
2169
  }
2102
- function loadServerReference$1(
2103
- response,
2104
- id,
2105
- bound,
2106
- parentChunk,
2107
- parentObject,
2108
- key
2109
- ) {
2170
+ function loadServerReference$1(response, metaData, parentObject, key) {
2171
+ var id = metaData.id;
2172
+ if ("string" !== typeof id) return null;
2110
2173
  var serverReference = resolveServerReference(response._bundlerConfig, id);
2111
- id = preloadModule(serverReference);
2112
- if (bound)
2113
- bound = Promise.all([bound, id]).then(function (_ref) {
2114
- _ref = _ref[0];
2115
- var fn = requireModule(serverReference);
2116
- return fn.bind.apply(fn, [null].concat(_ref));
2117
- });
2118
- else if (id)
2119
- bound = Promise.resolve(id).then(function () {
2120
- return requireModule(serverReference);
2121
- });
2174
+ id = metaData.bound;
2175
+ var promise = preloadModule(serverReference);
2176
+ if (promise)
2177
+ id instanceof ReactPromise && (promise = Promise.all([promise, id]));
2178
+ else if (id instanceof ReactPromise) promise = Promise.resolve(id);
2122
2179
  else return requireModule(serverReference);
2123
- bound.then(
2124
- createModelResolver(
2125
- parentChunk,
2126
- parentObject,
2127
- key,
2128
- !1,
2129
- response,
2130
- createModel,
2131
- []
2132
- ),
2133
- createModelReject(parentChunk)
2180
+ if (initializingHandler) {
2181
+ var handler = initializingHandler;
2182
+ handler.deps++;
2183
+ } else
2184
+ handler = initializingHandler = {
2185
+ chunk: null,
2186
+ value: null,
2187
+ reason: null,
2188
+ deps: 1,
2189
+ errored: !1
2190
+ };
2191
+ promise.then(
2192
+ function () {
2193
+ var resolvedValue = requireModule(serverReference);
2194
+ if (metaData.bound) {
2195
+ var promiseValue = metaData.bound.value;
2196
+ promiseValue = Array.isArray(promiseValue) ? promiseValue.slice(0) : [];
2197
+ promiseValue.unshift(null);
2198
+ resolvedValue = resolvedValue.bind.apply(resolvedValue, promiseValue);
2199
+ }
2200
+ parentObject[key] = resolvedValue;
2201
+ "" === key && null === handler.value && (handler.value = resolvedValue);
2202
+ handler.deps--;
2203
+ 0 === handler.deps &&
2204
+ ((resolvedValue = handler.chunk),
2205
+ null !== resolvedValue &&
2206
+ "blocked" === resolvedValue.status &&
2207
+ ((promiseValue = resolvedValue.value),
2208
+ (resolvedValue.status = "fulfilled"),
2209
+ (resolvedValue.value = handler.value),
2210
+ null !== promiseValue &&
2211
+ wakeChunk(response, promiseValue, handler.value)));
2212
+ },
2213
+ function (error) {
2214
+ if (!handler.errored) {
2215
+ handler.errored = !0;
2216
+ handler.value = null;
2217
+ handler.reason = error;
2218
+ var chunk = handler.chunk;
2219
+ null !== chunk &&
2220
+ "blocked" === chunk.status &&
2221
+ triggerErrorOnChunk(response, chunk, error);
2222
+ }
2223
+ }
2134
2224
  );
2135
2225
  return null;
2136
2226
  }
@@ -2160,51 +2250,63 @@ function reviveModel(response, parentObj, parentKey, value, reference) {
2160
2250
  ? reference + ":" + i
2161
2251
  : void 0),
2162
2252
  (parentObj = reviveModel(response, value, i, value[i], parentObj)),
2163
- void 0 !== parentObj ? (value[i] = parentObj) : delete value[i]);
2253
+ void 0 !== parentObj || "__proto__" === i
2254
+ ? (value[i] = parentObj)
2255
+ : delete value[i]);
2164
2256
  return value;
2165
2257
  }
2166
- var initializingChunk = null,
2167
- initializingChunkBlockedModel = null;
2258
+ var initializingHandler = null;
2168
2259
  function initializeModelChunk(chunk) {
2169
- var prevChunk = initializingChunk,
2170
- prevBlocked = initializingChunkBlockedModel;
2171
- initializingChunk = chunk;
2172
- initializingChunkBlockedModel = null;
2173
- var rootReference = -1 === chunk.reason ? void 0 : chunk.reason.toString(16),
2174
- resolvedModel = chunk.value;
2175
- chunk.status = "cyclic";
2260
+ var prevHandler = initializingHandler;
2261
+ initializingHandler = null;
2262
+ var _chunk$reason = chunk.reason,
2263
+ response = _chunk$reason[RESPONSE_SYMBOL];
2264
+ _chunk$reason = _chunk$reason.id;
2265
+ _chunk$reason = -1 === _chunk$reason ? void 0 : _chunk$reason.toString(16);
2266
+ var resolvedModel = chunk.value;
2267
+ chunk.status = "blocked";
2176
2268
  chunk.value = null;
2177
2269
  chunk.reason = null;
2178
2270
  try {
2179
2271
  var rawModel = JSON.parse(resolvedModel),
2180
2272
  value = reviveModel(
2181
- chunk._response,
2273
+ response,
2182
2274
  { "": rawModel },
2183
2275
  "",
2184
2276
  rawModel,
2185
- rootReference
2186
- );
2187
- if (
2188
- null !== initializingChunkBlockedModel &&
2189
- 0 < initializingChunkBlockedModel.deps
2190
- )
2191
- (initializingChunkBlockedModel.value = value), (chunk.status = "blocked");
2192
- else {
2193
- var resolveListeners = chunk.value;
2194
- chunk.status = "fulfilled";
2195
- chunk.value = value;
2196
- null !== resolveListeners && wakeChunk(resolveListeners, value);
2277
+ _chunk$reason
2278
+ ),
2279
+ resolveListeners = chunk.value;
2280
+ if (null !== resolveListeners)
2281
+ for (
2282
+ chunk.value = null, chunk.reason = null, rawModel = 0;
2283
+ rawModel < resolveListeners.length;
2284
+ rawModel++
2285
+ ) {
2286
+ var listener = resolveListeners[rawModel];
2287
+ "function" === typeof listener
2288
+ ? listener(value)
2289
+ : fulfillReference(response, listener, value);
2290
+ }
2291
+ if (null !== initializingHandler) {
2292
+ if (initializingHandler.errored) throw initializingHandler.reason;
2293
+ if (0 < initializingHandler.deps) {
2294
+ initializingHandler.value = value;
2295
+ initializingHandler.chunk = chunk;
2296
+ return;
2297
+ }
2197
2298
  }
2299
+ chunk.status = "fulfilled";
2300
+ chunk.value = value;
2198
2301
  } catch (error) {
2199
2302
  (chunk.status = "rejected"), (chunk.reason = error);
2200
2303
  } finally {
2201
- (initializingChunk = prevChunk),
2202
- (initializingChunkBlockedModel = prevBlocked);
2304
+ initializingHandler = prevHandler;
2203
2305
  }
2204
2306
  }
2205
2307
  function reportGlobalError(response, error) {
2206
2308
  response._chunks.forEach(function (chunk) {
2207
- "pending" === chunk.status && triggerErrorOnChunk(chunk, error);
2309
+ "pending" === chunk.status && triggerErrorOnChunk(response, chunk, error);
2208
2310
  });
2209
2311
  }
2210
2312
  function getChunk(response, id) {
@@ -2213,46 +2315,102 @@ function getChunk(response, id) {
2213
2315
  chunk ||
2214
2316
  ((chunk = response._formData.get(response._prefix + id)),
2215
2317
  (chunk =
2216
- null != chunk
2217
- ? new Chunk("resolved_model", chunk, id, response)
2218
- : createPendingChunk(response)),
2318
+ "string" === typeof chunk
2319
+ ? createResolvedModelChunk(response, chunk, id)
2320
+ : new ReactPromise("pending", null, null)),
2219
2321
  chunks.set(id, chunk));
2220
2322
  return chunk;
2221
2323
  }
2222
- function createModelResolver(
2223
- chunk,
2324
+ function fulfillReference(response, reference, value) {
2325
+ for (
2326
+ var handler = reference.handler,
2327
+ parentObject = reference.parentObject,
2328
+ key = reference.key,
2329
+ map = reference.map,
2330
+ path = reference.path,
2331
+ i = 1;
2332
+ i < path.length;
2333
+ i++
2334
+ ) {
2335
+ for (; value instanceof ReactPromise; ) {
2336
+ switch (value.status) {
2337
+ case "resolved_model":
2338
+ initializeModelChunk(value);
2339
+ }
2340
+ switch (value.status) {
2341
+ case "fulfilled":
2342
+ value = value.value;
2343
+ continue;
2344
+ case "blocked":
2345
+ case "pending":
2346
+ path.splice(0, i - 1);
2347
+ null === value.value
2348
+ ? (value.value = [reference])
2349
+ : value.value.push(reference);
2350
+ null === value.reason
2351
+ ? (value.reason = [reference])
2352
+ : value.reason.push(reference);
2353
+ return;
2354
+ default:
2355
+ rejectReference(response, reference.handler, value.reason);
2356
+ return;
2357
+ }
2358
+ }
2359
+ var name = path[i];
2360
+ "object" === typeof value &&
2361
+ hasOwnProperty.call(value, name) &&
2362
+ (value = value[name]);
2363
+ }
2364
+ reference = map(response, value, parentObject, key);
2365
+ parentObject[key] = reference;
2366
+ "" === key && null === handler.value && (handler.value = reference);
2367
+ handler.deps--;
2368
+ 0 === handler.deps &&
2369
+ ((parentObject = handler.chunk),
2370
+ null !== parentObject &&
2371
+ "blocked" === parentObject.status &&
2372
+ ((key = parentObject.value),
2373
+ (parentObject.status = "fulfilled"),
2374
+ (parentObject.value = handler.value),
2375
+ (parentObject.reason = handler.reason),
2376
+ null !== key && wakeChunk(response, key, handler.value)));
2377
+ }
2378
+ function rejectReference(response, handler, error) {
2379
+ handler.errored ||
2380
+ ((handler.errored = !0),
2381
+ (handler.value = null),
2382
+ (handler.reason = error),
2383
+ (handler = handler.chunk),
2384
+ null !== handler &&
2385
+ "blocked" === handler.status &&
2386
+ triggerErrorOnChunk(response, handler, error));
2387
+ }
2388
+ function waitForReference(
2389
+ referencedChunk,
2224
2390
  parentObject,
2225
2391
  key,
2226
- cyclic,
2227
2392
  response,
2228
2393
  map,
2229
2394
  path
2230
2395
  ) {
2231
- if (initializingChunkBlockedModel) {
2232
- var blocked = initializingChunkBlockedModel;
2233
- cyclic || blocked.deps++;
2234
- } else
2235
- blocked = initializingChunkBlockedModel = {
2236
- deps: cyclic ? 0 : 1,
2237
- value: null
2238
- };
2239
- return function (value) {
2240
- for (var i = 1; i < path.length; i++) value = value[path[i]];
2241
- parentObject[key] = map(response, value);
2242
- "" === key && null === blocked.value && (blocked.value = parentObject[key]);
2243
- blocked.deps--;
2244
- 0 === blocked.deps &&
2245
- "blocked" === chunk.status &&
2246
- ((value = chunk.value),
2247
- (chunk.status = "fulfilled"),
2248
- (chunk.value = blocked.value),
2249
- null !== value && wakeChunk(value, blocked.value));
2250
- };
2251
- }
2252
- function createModelReject(chunk) {
2253
- return function (error) {
2254
- return triggerErrorOnChunk(chunk, error);
2396
+ initializingHandler
2397
+ ? ((response = initializingHandler), response.deps++)
2398
+ : (response = initializingHandler =
2399
+ { chunk: null, value: null, reason: null, deps: 1, errored: !1 });
2400
+ parentObject = {
2401
+ handler: response,
2402
+ parentObject: parentObject,
2403
+ key: key,
2404
+ map: map,
2405
+ path: path
2255
2406
  };
2407
+ null === referencedChunk.value
2408
+ ? (referencedChunk.value = [parentObject])
2409
+ : referencedChunk.value.push(parentObject);
2410
+ null === referencedChunk.reason
2411
+ ? (referencedChunk.reason = [parentObject])
2412
+ : referencedChunk.reason.push(parentObject);
2413
+ return null;
2256
2414
  }
2257
2415
  function getOutlinedModel(response, reference, parentObject, key, map) {
2258
2416
  reference = reference.split(":");
@@ -2264,29 +2422,68 @@ function getOutlinedModel(response, reference, parentObject, key, map) {
2264
2422
  }
2265
2423
  switch (id.status) {
2266
2424
  case "fulfilled":
2267
- parentObject = id.value;
2268
- for (key = 1; key < reference.length; key++)
2269
- parentObject = parentObject[reference[key]];
2270
- return map(response, parentObject);
2425
+ var value = id.value;
2426
+ for (id = 1; id < reference.length; id++) {
2427
+ for (; value instanceof ReactPromise; ) {
2428
+ switch (value.status) {
2429
+ case "resolved_model":
2430
+ initializeModelChunk(value);
2431
+ }
2432
+ switch (value.status) {
2433
+ case "fulfilled":
2434
+ value = value.value;
2435
+ break;
2436
+ case "blocked":
2437
+ case "pending":
2438
+ return waitForReference(
2439
+ value,
2440
+ parentObject,
2441
+ key,
2442
+ response,
2443
+ map,
2444
+ reference.slice(id - 1)
2445
+ );
2446
+ default:
2447
+ return (
2448
+ initializingHandler
2449
+ ? ((initializingHandler.errored = !0),
2450
+ (initializingHandler.value = null),
2451
+ (initializingHandler.reason = value.reason))
2452
+ : (initializingHandler = {
2453
+ chunk: null,
2454
+ value: null,
2455
+ reason: value.reason,
2456
+ deps: 0,
2457
+ errored: !0
2458
+ }),
2459
+ null
2460
+ );
2461
+ }
2462
+ }
2463
+ var name = reference[id];
2464
+ "object" === typeof value &&
2465
+ hasOwnProperty.call(value, name) &&
2466
+ (value = value[name]);
2467
+ }
2468
+ return map(response, value, parentObject, key);
2271
2469
  case "pending":
2272
2470
  case "blocked":
2273
- case "cyclic":
2274
- var parentChunk = initializingChunk;
2275
- id.then(
2276
- createModelResolver(
2277
- parentChunk,
2278
- parentObject,
2279
- key,
2280
- "cyclic" === id.status,
2281
- response,
2282
- map,
2283
- reference
2284
- ),
2285
- createModelReject(parentChunk)
2286
- );
2287
- return null;
2471
+ return waitForReference(id, parentObject, key, response, map, reference);
2288
2472
  default:
2289
- throw id.reason;
2473
+ return (
2474
+ initializingHandler
2475
+ ? ((initializingHandler.errored = !0),
2476
+ (initializingHandler.value = null),
2477
+ (initializingHandler.reason = id.reason))
2478
+ : (initializingHandler = {
2479
+ chunk: null,
2480
+ value: null,
2481
+ reason: id.reason,
2482
+ deps: 0,
2483
+ errored: !0
2484
+ }),
2485
+ null
2486
+ );
2290
2487
  }
2291
2488
  }
2292
2489
  function createMap(response, model) {
@@ -2310,38 +2507,63 @@ function parseTypedArray(
2310
2507
  parentKey
2311
2508
  ) {
2312
2509
  reference = parseInt(reference.slice(2), 16);
2313
- reference = response._formData.get(response._prefix + reference);
2314
- reference =
2315
- constructor === ArrayBuffer
2316
- ? reference.arrayBuffer()
2317
- : reference.arrayBuffer().then(function (buffer) {
2318
- return new constructor(buffer);
2319
- });
2320
- bytesPerElement = initializingChunk;
2510
+ reference = response._formData
2511
+ .get(response._prefix + reference)
2512
+ .arrayBuffer();
2513
+ if (initializingHandler) {
2514
+ var handler = initializingHandler;
2515
+ handler.deps++;
2516
+ } else
2517
+ handler = initializingHandler = {
2518
+ chunk: null,
2519
+ value: null,
2520
+ reason: null,
2521
+ deps: 1,
2522
+ errored: !1
2523
+ };
2321
2524
  reference.then(
2322
- createModelResolver(
2323
- bytesPerElement,
2324
- parentObject,
2325
- parentKey,
2326
- !1,
2327
- response,
2328
- createModel,
2329
- []
2330
- ),
2331
- createModelReject(bytesPerElement)
2525
+ function (buffer) {
2526
+ buffer = constructor === ArrayBuffer ? buffer : new constructor(buffer);
2527
+ parentObject[parentKey] = buffer;
2528
+ "" === parentKey && null === handler.value && (handler.value = buffer);
2529
+ handler.deps--;
2530
+ if (
2531
+ 0 === handler.deps &&
2532
+ ((buffer = handler.chunk),
2533
+ null !== buffer && "blocked" === buffer.status)
2534
+ ) {
2535
+ var resolveListeners = buffer.value;
2536
+ buffer.status = "fulfilled";
2537
+ buffer.value = handler.value;
2538
+ null !== resolveListeners &&
2539
+ wakeChunk(response, resolveListeners, handler.value);
2540
+ }
2541
+ },
2542
+ function (error) {
2543
+ if (!handler.errored) {
2544
+ handler.errored = !0;
2545
+ handler.value = null;
2546
+ handler.reason = error;
2547
+ var chunk = handler.chunk;
2548
+ null !== chunk &&
2549
+ "blocked" === chunk.status &&
2550
+ triggerErrorOnChunk(response, chunk, error);
2551
+ }
2552
+ }
2332
2553
  );
2333
2554
  return null;
2334
2555
  }
2335
2556
  function resolveStream(response, id, stream, controller) {
2336
2557
  var chunks = response._chunks;
2337
- stream = new Chunk("fulfilled", stream, controller, response);
2558
+ stream = new ReactPromise("fulfilled", stream, controller);
2338
2559
  chunks.set(id, stream);
2339
2560
  response = response._formData.getAll(response._prefix + id);
2340
2561
  for (id = 0; id < response.length; id++)
2341
2562
  (chunks = response[id]),
2342
- "C" === chunks[0]
2343
- ? controller.close("C" === chunks ? '"$undefined"' : chunks.slice(1))
2344
- : controller.enqueueModel(chunks);
2563
+ "string" === typeof chunks &&
2564
+ ("C" === chunks[0]
2565
+ ? controller.close("C" === chunks ? '"$undefined"' : chunks.slice(1))
2566
+ : controller.enqueueModel(chunks));
2345
2567
  }
2346
2568
  function parseReadableStream(response, reference, type) {
2347
2569
  reference = parseInt(reference.slice(2), 16);
@@ -2356,7 +2578,7 @@ function parseReadableStream(response, reference, type) {
2356
2578
  resolveStream(response, reference, type, {
2357
2579
  enqueueModel: function (json) {
2358
2580
  if (null === previousBlockedChunk) {
2359
- var chunk = new Chunk("resolved_model", json, -1, response);
2581
+ var chunk = createResolvedModelChunk(response, json, -1);
2360
2582
  initializeModelChunk(chunk);
2361
2583
  "fulfilled" === chunk.status
2362
2584
  ? controller.enqueue(chunk.value)
@@ -2371,8 +2593,8 @@ function parseReadableStream(response, reference, type) {
2371
2593
  (previousBlockedChunk = chunk));
2372
2594
  } else {
2373
2595
  chunk = previousBlockedChunk;
2374
- var chunk$27 = createPendingChunk(response);
2375
- chunk$27.then(
2596
+ var chunk$31 = new ReactPromise("pending", null, null);
2597
+ chunk$31.then(
2376
2598
  function (v) {
2377
2599
  return controller.enqueue(v);
2378
2600
  },
@@ -2380,10 +2602,10 @@ function parseReadableStream(response, reference, type) {
2380
2602
  return controller.error(e);
2381
2603
  }
2382
2604
  );
2383
- previousBlockedChunk = chunk$27;
2605
+ previousBlockedChunk = chunk$31;
2384
2606
  chunk.then(function () {
2385
- previousBlockedChunk === chunk$27 && (previousBlockedChunk = null);
2386
- resolveModelChunk(chunk$27, json, -1);
2607
+ previousBlockedChunk === chunk$31 && (previousBlockedChunk = null);
2608
+ resolveModelChunk(response, chunk$31, json, -1);
2387
2609
  });
2388
2610
  }
2389
2611
  },
@@ -2423,9 +2645,9 @@ function parseAsyncIterable(response, reference, iterator) {
2423
2645
  var buffer = [],
2424
2646
  closed = !1,
2425
2647
  nextWriteIndex = 0,
2426
- $jscomp$compprop2 = {};
2427
- $jscomp$compprop2 =
2428
- (($jscomp$compprop2[ASYNC_ITERATOR] = function () {
2648
+ $jscomp$compprop5 = {};
2649
+ $jscomp$compprop5 =
2650
+ (($jscomp$compprop5[ASYNC_ITERATOR] = function () {
2429
2651
  var nextReadIndex = 0;
2430
2652
  return createIterator(function (arg) {
2431
2653
  if (void 0 !== arg)
@@ -2434,19 +2656,18 @@ function parseAsyncIterable(response, reference, iterator) {
2434
2656
  );
2435
2657
  if (nextReadIndex === buffer.length) {
2436
2658
  if (closed)
2437
- return new Chunk(
2659
+ return new ReactPromise(
2438
2660
  "fulfilled",
2439
2661
  { done: !0, value: void 0 },
2440
- null,
2441
- response
2662
+ null
2442
2663
  );
2443
- buffer[nextReadIndex] = createPendingChunk(response);
2664
+ buffer[nextReadIndex] = new ReactPromise("pending", null, null);
2444
2665
  }
2445
2666
  return buffer[nextReadIndex++];
2446
2667
  });
2447
2668
  }),
2448
- $jscomp$compprop2);
2449
- iterator = iterator ? $jscomp$compprop2[ASYNC_ITERATOR]() : $jscomp$compprop2;
2669
+ $jscomp$compprop5);
2670
+ iterator = iterator ? $jscomp$compprop5[ASYNC_ITERATOR]() : $jscomp$compprop5;
2450
2671
  resolveStream(response, reference, iterator, {
2451
2672
  enqueueModel: function (value) {
2452
2673
  nextWriteIndex === buffer.length
@@ -2455,7 +2676,12 @@ function parseAsyncIterable(response, reference, iterator) {
2455
2676
  value,
2456
2677
  !1
2457
2678
  ))
2458
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !1);
2679
+ : resolveIteratorResultChunk(
2680
+ response,
2681
+ buffer[nextWriteIndex],
2682
+ value,
2683
+ !1
2684
+ );
2459
2685
  nextWriteIndex++;
2460
2686
  },
2461
2687
  close: function (value) {
@@ -2466,9 +2692,15 @@ function parseAsyncIterable(response, reference, iterator) {
2466
2692
  value,
2467
2693
  !0
2468
2694
  ))
2469
- : resolveIteratorResultChunk(buffer[nextWriteIndex], value, !0);
2695
+ : resolveIteratorResultChunk(
2696
+ response,
2697
+ buffer[nextWriteIndex],
2698
+ value,
2699
+ !0
2700
+ );
2470
2701
  for (nextWriteIndex++; nextWriteIndex < buffer.length; )
2471
2702
  resolveIteratorResultChunk(
2703
+ response,
2472
2704
  buffer[nextWriteIndex++],
2473
2705
  '"$undefined"',
2474
2706
  !0
@@ -2478,11 +2710,11 @@ function parseAsyncIterable(response, reference, iterator) {
2478
2710
  closed = !0;
2479
2711
  for (
2480
2712
  nextWriteIndex === buffer.length &&
2481
- (buffer[nextWriteIndex] = createPendingChunk(response));
2713
+ (buffer[nextWriteIndex] = new ReactPromise("pending", null, null));
2482
2714
  nextWriteIndex < buffer.length;
2483
2715
 
2484
2716
  )
2485
- triggerErrorOnChunk(buffer[nextWriteIndex++], error);
2717
+ triggerErrorOnChunk(response, buffer[nextWriteIndex++], error);
2486
2718
  }
2487
2719
  });
2488
2720
  return iterator;
@@ -2497,15 +2729,7 @@ function parseModelString(response, obj, key, value, reference) {
2497
2729
  case "F":
2498
2730
  return (
2499
2731
  (value = value.slice(2)),
2500
- (value = getOutlinedModel(response, value, obj, key, createModel)),
2501
- loadServerReference$1(
2502
- response,
2503
- value.id,
2504
- value.bound,
2505
- initializingChunk,
2506
- obj,
2507
- key
2508
- )
2732
+ getOutlinedModel(response, value, obj, key, loadServerReference$1)
2509
2733
  );
2510
2734
  case "T":
2511
2735
  if (void 0 === reference || void 0 === response._temporaryReferences)