react-server-dom-webpack 18.3.0-next-4a4ef2706-20230212 → 18.3.0-next-189f70e17-20230216

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 (28) hide show
  1. package/cjs/react-server-dom-webpack-client.browser.development.js +947 -0
  2. package/cjs/react-server-dom-webpack-client.browser.production.min.js +28 -0
  3. package/cjs/{react-server-dom-webpack-client.development.js → react-server-dom-webpack-client.edge.development.js} +1 -1
  4. package/cjs/{react-server-dom-webpack-client.production.min.js → react-server-dom-webpack-client.edge.production.min.js} +1 -1
  5. package/cjs/react-server-dom-webpack-client.node.development.js +947 -0
  6. package/cjs/react-server-dom-webpack-client.node.production.min.js +28 -0
  7. package/cjs/react-server-dom-webpack-client.node.unbundled.development.js +947 -0
  8. package/cjs/react-server-dom-webpack-client.node.unbundled.production.min.js +28 -0
  9. package/cjs/react-server-dom-webpack-plugin.js +1 -1
  10. package/cjs/react-server-dom-webpack-server.browser.development.js +1 -0
  11. package/cjs/react-server-dom-webpack-server.browser.production.min.js +3 -3
  12. package/cjs/react-server-dom-webpack-server.edge.development.js +1 -0
  13. package/cjs/react-server-dom-webpack-server.edge.production.min.js +3 -3
  14. package/cjs/react-server-dom-webpack-server.node.development.js +1 -0
  15. package/cjs/react-server-dom-webpack-server.node.production.min.js +3 -3
  16. package/cjs/react-server-dom-webpack-server.node.unbundled.development.js +2580 -0
  17. package/cjs/react-server-dom-webpack-server.node.unbundled.production.min.js +63 -0
  18. package/client.browser.js +7 -0
  19. package/client.edge.js +7 -0
  20. package/client.js +1 -5
  21. package/client.node.js +7 -0
  22. package/client.node.unbundled.js +7 -0
  23. package/package.json +30 -6
  24. package/server.node.unbundled.js +7 -0
  25. package/umd/{react-server-dom-webpack-client.development.js → react-server-dom-webpack-client.browser.development.js} +1 -1
  26. package/umd/{react-server-dom-webpack-client.production.min.js → react-server-dom-webpack-client.browser.production.min.js} +1 -1
  27. package/umd/react-server-dom-webpack-server.browser.development.js +1 -0
  28. package/umd/react-server-dom-webpack-server.browser.production.min.js +1 -1
@@ -0,0 +1,947 @@
1
+ /**
2
+ * @license React
3
+ * react-server-dom-webpack-client.browser.development.js
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * This source code is licensed under the MIT license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+
11
+ 'use strict';
12
+
13
+ if (process.env.NODE_ENV !== "production") {
14
+ (function() {
15
+ 'use strict';
16
+
17
+ var React = require('react');
18
+
19
+ function createStringDecoder() {
20
+ return new TextDecoder();
21
+ }
22
+ var decoderOptions = {
23
+ stream: true
24
+ };
25
+ function readPartialStringChunk(decoder, buffer) {
26
+ return decoder.decode(buffer, decoderOptions);
27
+ }
28
+ function readFinalStringChunk(decoder, buffer) {
29
+ return decoder.decode(buffer);
30
+ }
31
+
32
+ function parseModel(response, json) {
33
+ return JSON.parse(json, response._fromJSON);
34
+ }
35
+
36
+ // eslint-disable-next-line no-unused-vars
37
+ function resolveClientReference(bundlerConfig, metadata) {
38
+ if (bundlerConfig) {
39
+ var resolvedModuleData = bundlerConfig[metadata.id][metadata.name];
40
+
41
+ if (metadata.async) {
42
+ return {
43
+ id: resolvedModuleData.id,
44
+ chunks: resolvedModuleData.chunks,
45
+ name: resolvedModuleData.name,
46
+ async: true
47
+ };
48
+ } else {
49
+ return resolvedModuleData;
50
+ }
51
+ }
52
+
53
+ return metadata;
54
+ } // The chunk cache contains all the chunks we've preloaded so far.
55
+ // If they're still pending they're a thenable. This map also exists
56
+ // in Webpack but unfortunately it's not exposed so we have to
57
+ // replicate it in user space. null means that it has already loaded.
58
+
59
+ var chunkCache = new Map();
60
+ var asyncModuleCache = new Map();
61
+
62
+ function ignoreReject() {// We rely on rejected promises to be handled by another listener.
63
+ } // Start preloading the modules since we might need them soon.
64
+ // This function doesn't suspend.
65
+
66
+
67
+ function preloadModule(metadata) {
68
+ var chunks = metadata.chunks;
69
+ var promises = [];
70
+
71
+ for (var i = 0; i < chunks.length; i++) {
72
+ var chunkId = chunks[i];
73
+ var entry = chunkCache.get(chunkId);
74
+
75
+ if (entry === undefined) {
76
+ var thenable = __webpack_chunk_load__(chunkId);
77
+
78
+ promises.push(thenable); // $FlowFixMe[method-unbinding]
79
+
80
+ var resolve = chunkCache.set.bind(chunkCache, chunkId, null);
81
+ thenable.then(resolve, ignoreReject);
82
+ chunkCache.set(chunkId, thenable);
83
+ } else if (entry !== null) {
84
+ promises.push(entry);
85
+ }
86
+ }
87
+
88
+ if (metadata.async) {
89
+ var existingPromise = asyncModuleCache.get(metadata.id);
90
+
91
+ if (existingPromise) {
92
+ if (existingPromise.status === 'fulfilled') {
93
+ return null;
94
+ }
95
+
96
+ return existingPromise;
97
+ } else {
98
+ var modulePromise = Promise.all(promises).then(function () {
99
+ return __webpack_require__(metadata.id);
100
+ });
101
+ modulePromise.then(function (value) {
102
+ var fulfilledThenable = modulePromise;
103
+ fulfilledThenable.status = 'fulfilled';
104
+ fulfilledThenable.value = value;
105
+ }, function (reason) {
106
+ var rejectedThenable = modulePromise;
107
+ rejectedThenable.status = 'rejected';
108
+ rejectedThenable.reason = reason;
109
+ });
110
+ asyncModuleCache.set(metadata.id, modulePromise);
111
+ return modulePromise;
112
+ }
113
+ } else if (promises.length > 0) {
114
+ return Promise.all(promises);
115
+ } else {
116
+ return null;
117
+ }
118
+ } // Actually require the module or suspend if it's not yet ready.
119
+ // Increase priority if necessary.
120
+
121
+ function requireModule(metadata) {
122
+ var moduleExports;
123
+
124
+ if (metadata.async) {
125
+ // We assume that preloadModule has been called before, which
126
+ // should have added something to the module cache.
127
+ var promise = asyncModuleCache.get(metadata.id);
128
+
129
+ if (promise.status === 'fulfilled') {
130
+ moduleExports = promise.value;
131
+ } else {
132
+ throw promise.reason;
133
+ }
134
+ } else {
135
+ moduleExports = __webpack_require__(metadata.id);
136
+ }
137
+
138
+ if (metadata.name === '*') {
139
+ // This is a placeholder value that represents that the caller imported this
140
+ // as a CommonJS module as is.
141
+ return moduleExports;
142
+ }
143
+
144
+ if (metadata.name === '') {
145
+ // This is a placeholder value that represents that the caller accessed the
146
+ // default property of this if it was an ESM interop module.
147
+ return moduleExports.__esModule ? moduleExports.default : moduleExports;
148
+ }
149
+
150
+ return moduleExports[metadata.name];
151
+ }
152
+
153
+ // ATTENTION
154
+ // When adding new symbols to this file,
155
+ // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
156
+ // The Symbol used to tag the ReactElement-like types.
157
+ var REACT_ELEMENT_TYPE = Symbol.for('react.element');
158
+ var REACT_LAZY_TYPE = Symbol.for('react.lazy');
159
+ var REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED = Symbol.for('react.default_value');
160
+
161
+ var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
162
+
163
+ var ContextRegistry = ReactSharedInternals.ContextRegistry;
164
+ function getOrCreateServerContext(globalName) {
165
+ if (!ContextRegistry[globalName]) {
166
+ ContextRegistry[globalName] = React.createServerContext(globalName, // $FlowFixMe function signature doesn't reflect the symbol value
167
+ REACT_SERVER_CONTEXT_DEFAULT_VALUE_NOT_LOADED);
168
+ }
169
+
170
+ return ContextRegistry[globalName];
171
+ }
172
+
173
+ var PENDING = 'pending';
174
+ var BLOCKED = 'blocked';
175
+ var RESOLVED_MODEL = 'resolved_model';
176
+ var RESOLVED_MODULE = 'resolved_module';
177
+ var INITIALIZED = 'fulfilled';
178
+ var ERRORED = 'rejected'; // $FlowFixMe[missing-this-annot]
179
+
180
+ function Chunk(status, value, reason, response) {
181
+ this.status = status;
182
+ this.value = value;
183
+ this.reason = reason;
184
+ this._response = response;
185
+ } // We subclass Promise.prototype so that we get other methods like .catch
186
+
187
+
188
+ Chunk.prototype = Object.create(Promise.prototype); // TODO: This doesn't return a new Promise chain unlike the real .then
189
+
190
+ Chunk.prototype.then = function (resolve, reject) {
191
+ var chunk = this; // If we have resolved content, we try to initialize it first which
192
+ // might put us back into one of the other states.
193
+
194
+ switch (chunk.status) {
195
+ case RESOLVED_MODEL:
196
+ initializeModelChunk(chunk);
197
+ break;
198
+
199
+ case RESOLVED_MODULE:
200
+ initializeModuleChunk(chunk);
201
+ break;
202
+ } // The status might have changed after initialization.
203
+
204
+
205
+ switch (chunk.status) {
206
+ case INITIALIZED:
207
+ resolve(chunk.value);
208
+ break;
209
+
210
+ case PENDING:
211
+ case BLOCKED:
212
+ if (resolve) {
213
+ if (chunk.value === null) {
214
+ chunk.value = [];
215
+ }
216
+
217
+ chunk.value.push(resolve);
218
+ }
219
+
220
+ if (reject) {
221
+ if (chunk.reason === null) {
222
+ chunk.reason = [];
223
+ }
224
+
225
+ chunk.reason.push(reject);
226
+ }
227
+
228
+ break;
229
+
230
+ default:
231
+ reject(chunk.reason);
232
+ break;
233
+ }
234
+ };
235
+
236
+ function readChunk(chunk) {
237
+ // If we have resolved content, we try to initialize it first which
238
+ // might put us back into one of the other states.
239
+ switch (chunk.status) {
240
+ case RESOLVED_MODEL:
241
+ initializeModelChunk(chunk);
242
+ break;
243
+
244
+ case RESOLVED_MODULE:
245
+ initializeModuleChunk(chunk);
246
+ break;
247
+ } // The status might have changed after initialization.
248
+
249
+
250
+ switch (chunk.status) {
251
+ case INITIALIZED:
252
+ return chunk.value;
253
+
254
+ case PENDING:
255
+ case BLOCKED:
256
+ // eslint-disable-next-line no-throw-literal
257
+ throw chunk;
258
+
259
+ default:
260
+ throw chunk.reason;
261
+ }
262
+ }
263
+
264
+ function getRoot(response) {
265
+ var chunk = getChunk(response, 0);
266
+ return chunk;
267
+ }
268
+
269
+ function createPendingChunk(response) {
270
+ // $FlowFixMe Flow doesn't support functions as constructors
271
+ return new Chunk(PENDING, null, null, response);
272
+ }
273
+
274
+ function createBlockedChunk(response) {
275
+ // $FlowFixMe Flow doesn't support functions as constructors
276
+ return new Chunk(BLOCKED, null, null, response);
277
+ }
278
+
279
+ function createErrorChunk(response, error) {
280
+ // $FlowFixMe Flow doesn't support functions as constructors
281
+ return new Chunk(ERRORED, null, error, response);
282
+ }
283
+
284
+ function wakeChunk(listeners, value) {
285
+ for (var i = 0; i < listeners.length; i++) {
286
+ var listener = listeners[i];
287
+ listener(value);
288
+ }
289
+ }
290
+
291
+ function wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners) {
292
+ switch (chunk.status) {
293
+ case INITIALIZED:
294
+ wakeChunk(resolveListeners, chunk.value);
295
+ break;
296
+
297
+ case PENDING:
298
+ case BLOCKED:
299
+ chunk.value = resolveListeners;
300
+ chunk.reason = rejectListeners;
301
+ break;
302
+
303
+ case ERRORED:
304
+ if (rejectListeners) {
305
+ wakeChunk(rejectListeners, chunk.reason);
306
+ }
307
+
308
+ break;
309
+ }
310
+ }
311
+
312
+ function triggerErrorOnChunk(chunk, error) {
313
+ if (chunk.status !== PENDING && chunk.status !== BLOCKED) {
314
+ // We already resolved. We didn't expect to see this.
315
+ return;
316
+ }
317
+
318
+ var listeners = chunk.reason;
319
+ var erroredChunk = chunk;
320
+ erroredChunk.status = ERRORED;
321
+ erroredChunk.reason = error;
322
+
323
+ if (listeners !== null) {
324
+ wakeChunk(listeners, error);
325
+ }
326
+ }
327
+
328
+ function createResolvedModelChunk(response, value) {
329
+ // $FlowFixMe Flow doesn't support functions as constructors
330
+ return new Chunk(RESOLVED_MODEL, value, null, response);
331
+ }
332
+
333
+ function createResolvedModuleChunk(response, value) {
334
+ // $FlowFixMe Flow doesn't support functions as constructors
335
+ return new Chunk(RESOLVED_MODULE, value, null, response);
336
+ }
337
+
338
+ function resolveModelChunk(chunk, value) {
339
+ if (chunk.status !== PENDING) {
340
+ // We already resolved. We didn't expect to see this.
341
+ return;
342
+ }
343
+
344
+ var resolveListeners = chunk.value;
345
+ var rejectListeners = chunk.reason;
346
+ var resolvedChunk = chunk;
347
+ resolvedChunk.status = RESOLVED_MODEL;
348
+ resolvedChunk.value = value;
349
+
350
+ if (resolveListeners !== null) {
351
+ // This is unfortunate that we're reading this eagerly if
352
+ // we already have listeners attached since they might no
353
+ // longer be rendered or might not be the highest pri.
354
+ initializeModelChunk(resolvedChunk); // The status might have changed after initialization.
355
+
356
+ wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners);
357
+ }
358
+ }
359
+
360
+ function resolveModuleChunk(chunk, value) {
361
+ if (chunk.status !== PENDING && chunk.status !== BLOCKED) {
362
+ // We already resolved. We didn't expect to see this.
363
+ return;
364
+ }
365
+
366
+ var resolveListeners = chunk.value;
367
+ var rejectListeners = chunk.reason;
368
+ var resolvedChunk = chunk;
369
+ resolvedChunk.status = RESOLVED_MODULE;
370
+ resolvedChunk.value = value;
371
+
372
+ if (resolveListeners !== null) {
373
+ initializeModuleChunk(resolvedChunk);
374
+ wakeChunkIfInitialized(chunk, resolveListeners, rejectListeners);
375
+ }
376
+ }
377
+
378
+ var initializingChunk = null;
379
+ var initializingChunkBlockedModel = null;
380
+
381
+ function initializeModelChunk(chunk) {
382
+ var prevChunk = initializingChunk;
383
+ var prevBlocked = initializingChunkBlockedModel;
384
+ initializingChunk = chunk;
385
+ initializingChunkBlockedModel = null;
386
+
387
+ try {
388
+ var value = parseModel(chunk._response, chunk.value);
389
+
390
+ if (initializingChunkBlockedModel !== null && initializingChunkBlockedModel.deps > 0) {
391
+ initializingChunkBlockedModel.value = value; // We discovered new dependencies on modules that are not yet resolved.
392
+ // We have to go the BLOCKED state until they're resolved.
393
+
394
+ var blockedChunk = chunk;
395
+ blockedChunk.status = BLOCKED;
396
+ blockedChunk.value = null;
397
+ blockedChunk.reason = null;
398
+ } else {
399
+ var initializedChunk = chunk;
400
+ initializedChunk.status = INITIALIZED;
401
+ initializedChunk.value = value;
402
+ }
403
+ } catch (error) {
404
+ var erroredChunk = chunk;
405
+ erroredChunk.status = ERRORED;
406
+ erroredChunk.reason = error;
407
+ } finally {
408
+ initializingChunk = prevChunk;
409
+ initializingChunkBlockedModel = prevBlocked;
410
+ }
411
+ }
412
+
413
+ function initializeModuleChunk(chunk) {
414
+ try {
415
+ var value = requireModule(chunk.value);
416
+ var initializedChunk = chunk;
417
+ initializedChunk.status = INITIALIZED;
418
+ initializedChunk.value = value;
419
+ } catch (error) {
420
+ var erroredChunk = chunk;
421
+ erroredChunk.status = ERRORED;
422
+ erroredChunk.reason = error;
423
+ }
424
+ } // Report that any missing chunks in the model is now going to throw this
425
+ // error upon read. Also notify any pending promises.
426
+
427
+
428
+ function reportGlobalError(response, error) {
429
+ response._chunks.forEach(function (chunk) {
430
+ // If this chunk was already resolved or errored, it won't
431
+ // trigger an error but if it wasn't then we need to
432
+ // because we won't be getting any new data to resolve it.
433
+ if (chunk.status === PENDING) {
434
+ triggerErrorOnChunk(chunk, error);
435
+ }
436
+ });
437
+ }
438
+
439
+ function createElement(type, key, props) {
440
+ var element = {
441
+ // This tag allows us to uniquely identify this as a React Element
442
+ $$typeof: REACT_ELEMENT_TYPE,
443
+ // Built-in properties that belong on the element
444
+ type: type,
445
+ key: key,
446
+ ref: null,
447
+ props: props,
448
+ // Record the component responsible for creating this element.
449
+ _owner: null
450
+ };
451
+
452
+ {
453
+ // We don't really need to add any of these but keeping them for good measure.
454
+ // Unfortunately, _store is enumerable in jest matchers so for equality to
455
+ // work, I need to keep it or make _store non-enumerable in the other file.
456
+ element._store = {};
457
+ Object.defineProperty(element._store, 'validated', {
458
+ configurable: false,
459
+ enumerable: false,
460
+ writable: true,
461
+ value: true // This element has already been validated on the server.
462
+
463
+ });
464
+ Object.defineProperty(element, '_self', {
465
+ configurable: false,
466
+ enumerable: false,
467
+ writable: false,
468
+ value: null
469
+ });
470
+ Object.defineProperty(element, '_source', {
471
+ configurable: false,
472
+ enumerable: false,
473
+ writable: false,
474
+ value: null
475
+ });
476
+ }
477
+
478
+ return element;
479
+ }
480
+
481
+ function createLazyChunkWrapper(chunk) {
482
+ var lazyType = {
483
+ $$typeof: REACT_LAZY_TYPE,
484
+ _payload: chunk,
485
+ _init: readChunk
486
+ };
487
+ return lazyType;
488
+ }
489
+
490
+ function getChunk(response, id) {
491
+ var chunks = response._chunks;
492
+ var chunk = chunks.get(id);
493
+
494
+ if (!chunk) {
495
+ chunk = createPendingChunk(response);
496
+ chunks.set(id, chunk);
497
+ }
498
+
499
+ return chunk;
500
+ }
501
+
502
+ function createModelResolver(chunk, parentObject, key) {
503
+ var blocked;
504
+
505
+ if (initializingChunkBlockedModel) {
506
+ blocked = initializingChunkBlockedModel;
507
+ blocked.deps++;
508
+ } else {
509
+ blocked = initializingChunkBlockedModel = {
510
+ deps: 1,
511
+ value: null
512
+ };
513
+ }
514
+
515
+ return function (value) {
516
+ parentObject[key] = value;
517
+ blocked.deps--;
518
+
519
+ if (blocked.deps === 0) {
520
+ if (chunk.status !== BLOCKED) {
521
+ return;
522
+ }
523
+
524
+ var resolveListeners = chunk.value;
525
+ var initializedChunk = chunk;
526
+ initializedChunk.status = INITIALIZED;
527
+ initializedChunk.value = blocked.value;
528
+
529
+ if (resolveListeners !== null) {
530
+ wakeChunk(resolveListeners, blocked.value);
531
+ }
532
+ }
533
+ };
534
+ }
535
+
536
+ function createModelReject(chunk) {
537
+ return function (error) {
538
+ return triggerErrorOnChunk(chunk, error);
539
+ };
540
+ }
541
+
542
+ function createServerReferenceProxy(response, metaData) {
543
+ var callServer = response._callServer;
544
+
545
+ var proxy = function () {
546
+ // $FlowFixMe[method-unbinding]
547
+ var args = Array.prototype.slice.call(arguments);
548
+ var p = metaData.bound;
549
+
550
+ if (p.status === INITIALIZED) {
551
+ var bound = p.value;
552
+ return callServer(metaData, bound.concat(args));
553
+ } // Since this is a fake Promise whose .then doesn't chain, we have to wrap it.
554
+ // TODO: Remove the wrapper once that's fixed.
555
+
556
+
557
+ return Promise.resolve(p).then(function (bound) {
558
+ return callServer(metaData, bound.concat(args));
559
+ });
560
+ };
561
+
562
+ return proxy;
563
+ }
564
+
565
+ function parseModelString(response, parentObject, key, value) {
566
+ if (value[0] === '$') {
567
+ if (value === '$') {
568
+ // A very common symbol.
569
+ return REACT_ELEMENT_TYPE;
570
+ }
571
+
572
+ switch (value[1]) {
573
+ case '$':
574
+ {
575
+ // This was an escaped string value.
576
+ return value.substring(1);
577
+ }
578
+
579
+ case 'L':
580
+ {
581
+ // Lazy node
582
+ var id = parseInt(value.substring(2), 16);
583
+ var chunk = getChunk(response, id); // We create a React.lazy wrapper around any lazy values.
584
+ // When passed into React, we'll know how to suspend on this.
585
+
586
+ return createLazyChunkWrapper(chunk);
587
+ }
588
+
589
+ case '@':
590
+ {
591
+ // Promise
592
+ var _id = parseInt(value.substring(2), 16);
593
+
594
+ var _chunk = getChunk(response, _id);
595
+
596
+ return _chunk;
597
+ }
598
+
599
+ case 'S':
600
+ {
601
+ // Symbol
602
+ return Symbol.for(value.substring(2));
603
+ }
604
+
605
+ case 'P':
606
+ {
607
+ // Server Context Provider
608
+ return getOrCreateServerContext(value.substring(2)).Provider;
609
+ }
610
+
611
+ case 'F':
612
+ {
613
+ // Server Reference
614
+ var _id2 = parseInt(value.substring(2), 16);
615
+
616
+ var _chunk2 = getChunk(response, _id2);
617
+
618
+ switch (_chunk2.status) {
619
+ case RESOLVED_MODEL:
620
+ initializeModelChunk(_chunk2);
621
+ break;
622
+ } // The status might have changed after initialization.
623
+
624
+
625
+ switch (_chunk2.status) {
626
+ case INITIALIZED:
627
+ {
628
+ var metadata = _chunk2.value;
629
+ return createServerReferenceProxy(response, metadata);
630
+ }
631
+ // We always encode it first in the stream so it won't be pending.
632
+
633
+ default:
634
+ throw _chunk2.reason;
635
+ }
636
+ }
637
+
638
+ default:
639
+ {
640
+ // We assume that anything else is a reference ID.
641
+ var _id3 = parseInt(value.substring(1), 16);
642
+
643
+ var _chunk3 = getChunk(response, _id3);
644
+
645
+ switch (_chunk3.status) {
646
+ case RESOLVED_MODEL:
647
+ initializeModelChunk(_chunk3);
648
+ break;
649
+
650
+ case RESOLVED_MODULE:
651
+ initializeModuleChunk(_chunk3);
652
+ break;
653
+ } // The status might have changed after initialization.
654
+
655
+
656
+ switch (_chunk3.status) {
657
+ case INITIALIZED:
658
+ return _chunk3.value;
659
+
660
+ case PENDING:
661
+ case BLOCKED:
662
+ var parentChunk = initializingChunk;
663
+
664
+ _chunk3.then(createModelResolver(parentChunk, parentObject, key), createModelReject(parentChunk));
665
+
666
+ return null;
667
+
668
+ default:
669
+ throw _chunk3.reason;
670
+ }
671
+ }
672
+ }
673
+ }
674
+
675
+ return value;
676
+ }
677
+ function parseModelTuple(response, value) {
678
+ var tuple = value;
679
+
680
+ if (tuple[0] === REACT_ELEMENT_TYPE) {
681
+ // TODO: Consider having React just directly accept these arrays as elements.
682
+ // Or even change the ReactElement type to be an array.
683
+ return createElement(tuple[1], tuple[2], tuple[3]);
684
+ }
685
+
686
+ return value;
687
+ }
688
+
689
+ function missingCall() {
690
+ throw new Error('Trying to call a function from "use server" but the callServer option ' + 'was not implemented in your router runtime.');
691
+ }
692
+
693
+ function createResponse(bundlerConfig, callServer) {
694
+ var chunks = new Map();
695
+ var response = {
696
+ _bundlerConfig: bundlerConfig,
697
+ _callServer: callServer !== undefined ? callServer : missingCall,
698
+ _chunks: chunks
699
+ };
700
+ return response;
701
+ }
702
+ function resolveModel(response, id, model) {
703
+ var chunks = response._chunks;
704
+ var chunk = chunks.get(id);
705
+
706
+ if (!chunk) {
707
+ chunks.set(id, createResolvedModelChunk(response, model));
708
+ } else {
709
+ resolveModelChunk(chunk, model);
710
+ }
711
+ }
712
+ function resolveModule(response, id, model) {
713
+ var chunks = response._chunks;
714
+ var chunk = chunks.get(id);
715
+ var clientReferenceMetadata = parseModel(response, model);
716
+ var clientReference = resolveClientReference(response._bundlerConfig, clientReferenceMetadata); // TODO: Add an option to encode modules that are lazy loaded.
717
+ // For now we preload all modules as early as possible since it's likely
718
+ // that we'll need them.
719
+
720
+ var promise = preloadModule(clientReference);
721
+
722
+ if (promise) {
723
+ var blockedChunk;
724
+
725
+ if (!chunk) {
726
+ // Technically, we should just treat promise as the chunk in this
727
+ // case. Because it'll just behave as any other promise.
728
+ blockedChunk = createBlockedChunk(response);
729
+ chunks.set(id, blockedChunk);
730
+ } else {
731
+ // This can't actually happen because we don't have any forward
732
+ // references to modules.
733
+ blockedChunk = chunk;
734
+ blockedChunk.status = BLOCKED;
735
+ }
736
+
737
+ promise.then(function () {
738
+ return resolveModuleChunk(blockedChunk, clientReference);
739
+ }, function (error) {
740
+ return triggerErrorOnChunk(blockedChunk, error);
741
+ });
742
+ } else {
743
+ if (!chunk) {
744
+ chunks.set(id, createResolvedModuleChunk(response, clientReference));
745
+ } else {
746
+ // This can't actually happen because we don't have any forward
747
+ // references to modules.
748
+ resolveModuleChunk(chunk, clientReference);
749
+ }
750
+ }
751
+ }
752
+ function resolveErrorDev(response, id, digest, message, stack) {
753
+
754
+
755
+ var error = new Error(message || 'An error occurred in the Server Components render but no message was provided');
756
+ error.stack = stack;
757
+ error.digest = digest;
758
+ var errorWithDigest = error;
759
+ var chunks = response._chunks;
760
+ var chunk = chunks.get(id);
761
+
762
+ if (!chunk) {
763
+ chunks.set(id, createErrorChunk(response, errorWithDigest));
764
+ } else {
765
+ triggerErrorOnChunk(chunk, errorWithDigest);
766
+ }
767
+ }
768
+ function close(response) {
769
+ // In case there are any remaining unresolved chunks, they won't
770
+ // be resolved now. So we need to issue an error to those.
771
+ // Ideally we should be able to early bail out if we kept a
772
+ // ref count of pending chunks.
773
+ reportGlobalError(response, new Error('Connection closed.'));
774
+ }
775
+
776
+ function processFullRow(response, row) {
777
+ if (row === '') {
778
+ return;
779
+ }
780
+
781
+ var colon = row.indexOf(':', 0);
782
+ var id = parseInt(row.substring(0, colon), 16);
783
+ var tag = row[colon + 1]; // When tags that are not text are added, check them here before
784
+ // parsing the row as text.
785
+ // switch (tag) {
786
+ // }
787
+
788
+ switch (tag) {
789
+ case 'I':
790
+ {
791
+ resolveModule(response, id, row.substring(colon + 2));
792
+ return;
793
+ }
794
+
795
+ case 'E':
796
+ {
797
+ var errorInfo = JSON.parse(row.substring(colon + 2));
798
+
799
+ {
800
+ resolveErrorDev(response, id, errorInfo.digest, errorInfo.message, errorInfo.stack);
801
+ }
802
+
803
+ return;
804
+ }
805
+
806
+ default:
807
+ {
808
+ // We assume anything else is JSON.
809
+ resolveModel(response, id, row.substring(colon + 1));
810
+ return;
811
+ }
812
+ }
813
+ }
814
+
815
+ function processStringChunk(response, chunk, offset) {
816
+ var linebreak = chunk.indexOf('\n', offset);
817
+
818
+ while (linebreak > -1) {
819
+ var fullrow = response._partialRow + chunk.substring(offset, linebreak);
820
+ processFullRow(response, fullrow);
821
+ response._partialRow = '';
822
+ offset = linebreak + 1;
823
+ linebreak = chunk.indexOf('\n', offset);
824
+ }
825
+
826
+ response._partialRow += chunk.substring(offset);
827
+ }
828
+ function processBinaryChunk(response, chunk) {
829
+
830
+ var stringDecoder = response._stringDecoder;
831
+ var linebreak = chunk.indexOf(10); // newline
832
+
833
+ while (linebreak > -1) {
834
+ var fullrow = response._partialRow + readFinalStringChunk(stringDecoder, chunk.subarray(0, linebreak));
835
+ processFullRow(response, fullrow);
836
+ response._partialRow = '';
837
+ chunk = chunk.subarray(linebreak + 1);
838
+ linebreak = chunk.indexOf(10); // newline
839
+ }
840
+
841
+ response._partialRow += readPartialStringChunk(stringDecoder, chunk);
842
+ }
843
+
844
+ function createFromJSONCallback(response) {
845
+ // $FlowFixMe[missing-this-annot]
846
+ return function (key, value) {
847
+ if (typeof value === 'string') {
848
+ // We can't use .bind here because we need the "this" value.
849
+ return parseModelString(response, this, key, value);
850
+ }
851
+
852
+ if (typeof value === 'object' && value !== null) {
853
+ return parseModelTuple(response, value);
854
+ }
855
+
856
+ return value;
857
+ };
858
+ }
859
+
860
+ function createResponse$1(bundlerConfig, callServer) {
861
+ // NOTE: CHECK THE COMPILER OUTPUT EACH TIME YOU CHANGE THIS.
862
+ // It should be inlined to one object literal but minor changes can break it.
863
+ var stringDecoder = createStringDecoder() ;
864
+ var response = createResponse(bundlerConfig, callServer);
865
+ response._partialRow = '';
866
+
867
+ {
868
+ response._stringDecoder = stringDecoder;
869
+ } // Don't inline this call because it causes closure to outline the call above.
870
+
871
+
872
+ response._fromJSON = createFromJSONCallback(response);
873
+ return response;
874
+ }
875
+
876
+ function startReadingFromStream(response, stream) {
877
+ var reader = stream.getReader();
878
+
879
+ function progress(_ref) {
880
+ var done = _ref.done,
881
+ value = _ref.value;
882
+
883
+ if (done) {
884
+ close(response);
885
+ return;
886
+ }
887
+
888
+ var buffer = value;
889
+ processBinaryChunk(response, buffer);
890
+ return reader.read().then(progress).catch(error);
891
+ }
892
+
893
+ function error(e) {
894
+ reportGlobalError(response, e);
895
+ }
896
+
897
+ reader.read().then(progress).catch(error);
898
+ }
899
+
900
+ function createFromReadableStream(stream, options) {
901
+ var response = createResponse$1(options && options.moduleMap ? options.moduleMap : null, options && options.callServer ? options.callServer : undefined);
902
+ startReadingFromStream(response, stream);
903
+ return getRoot(response);
904
+ }
905
+
906
+ function createFromFetch(promiseForResponse, options) {
907
+ var response = createResponse$1(options && options.moduleMap ? options.moduleMap : null, options && options.callServer ? options.callServer : undefined);
908
+ promiseForResponse.then(function (r) {
909
+ startReadingFromStream(response, r.body);
910
+ }, function (e) {
911
+ reportGlobalError(response, e);
912
+ });
913
+ return getRoot(response);
914
+ }
915
+
916
+ function createFromXHR(request, options) {
917
+ var response = createResponse$1(options && options.moduleMap ? options.moduleMap : null, options && options.callServer ? options.callServer : undefined);
918
+ var processedLength = 0;
919
+
920
+ function progress(e) {
921
+ var chunk = request.responseText;
922
+ processStringChunk(response, chunk, processedLength);
923
+ processedLength = chunk.length;
924
+ }
925
+
926
+ function load(e) {
927
+ progress();
928
+ close(response);
929
+ }
930
+
931
+ function error(e) {
932
+ reportGlobalError(response, new TypeError('Network error'));
933
+ }
934
+
935
+ request.addEventListener('progress', progress);
936
+ request.addEventListener('load', load);
937
+ request.addEventListener('error', error);
938
+ request.addEventListener('abort', error);
939
+ request.addEventListener('timeout', error);
940
+ return getRoot(response);
941
+ }
942
+
943
+ exports.createFromFetch = createFromFetch;
944
+ exports.createFromReadableStream = createFromReadableStream;
945
+ exports.createFromXHR = createFromXHR;
946
+ })();
947
+ }