137
| symbol
138
| null
139
| void
140
+ | bigint
141
| Iterable<ReactClientValue>
142
| Array<ReactClientValue>
143
+ | Map<ReactClientValue, ReactClientValue>
144
+ | Set<ReactClientValue>
145
+ | Date
146
| ReactClientObject
147
| Promise<ReactClientValue>; // Thenable<ReactClientValue>
148
687
}
688
}
689
690
+function outlineModel(request: Request, value: any): number {
691
+ request.pendingChunks++;
692
+ const outlinedId = request.nextChunkId++;
693
+ // We assume that this object doesn't suspend, but a child might.
694
+ const processedChunk = processModelChunk(request, outlinedId, value);
695
+ request.completedRegularChunks.push(processedChunk);
696
+ return outlinedId;
697
+}
698
+
699
function serializeServerReference(
700
request: Request,
701
parent:
721
id: getServerReferenceId(request.bundlerConfig, serverReference),
722
bound: bound ? Promise.resolve(bound) : null,
723
};
711
- request.pendingChunks++;
712
- const metadataId = request.nextChunkId++;
713
- // We assume that this object doesn't suspend.
714
- const processedChunk = processModelChunk(
715
- request,
716
- metadataId,
717
- serverReferenceMetadata,
718
- );
719
- request.completedRegularChunks.push(processedChunk);
724
+ const metadataId = outlineModel(request, serverReferenceMetadata);
725
writtenServerReferences.set(serverReference, metadataId);
726
return serializeServerReferenceID(metadataId);
727
}
740
return serializeByValueID(textId);
741
}
742
743
+function serializeMap(
744
+ request: Request,
745
+ map: Map<ReactClientValue, ReactClientValue>,
746
+): string {
747
+ const id = outlineModel(request, Array.from(map));
748
+ return '$Q' + id.toString(16);
749
+}
750
+
751
+function serializeSet(request: Request, set: Set<ReactClientValue>): string {
752
+ const id = outlineModel(request, Array.from(set));
753
+ return '$W' + id.toString(16);
754
+}
755
+
756
function escapeStringValue(value: string): string {
757
if (value[0] === '$') {
758
// We need to escape $ prefixed strings since we use those to encode
942
}
943
return (undefined: any);
944
}
945
+ if (value instanceof Map) {
946
+ return serializeMap(request, value);
947
+ }
948
+ if (value instanceof Set) {
949
+ return serializeSet(request, value);
950
+ }
951
if (!isArray(value)) {
952
const iteratorFn = getIteratorFn(value);
953
if (iteratorFn) {