in src/router/bundle/bundleParser.ts [123:169]
private static async updateReferenceRequestsIfNecessary(
requests: BatchReadWriteRequest[],
dataService: Persistence,
serverUrl: string,
): Promise<BatchReadWriteRequest[]> {
const fullUrlToRequest: Record<string, BatchReadWriteRequest> = {};
const idToRequestWithRef: Record<string, BatchReadWriteRequest> = {};
const allRequests: BatchReadWriteRequest[] = [];
const requestsWithReference: BatchReadWriteRequest[] = [];
const requestsWithoutReference: BatchReadWriteRequest[] = [];
const orderedBundleEntriesId: string[] = [];
requests.forEach((req) => {
orderedBundleEntriesId.push(req.id);
if (req.references) {
requestsWithReference.push(req);
} else {
requestsWithoutReference.push(req);
}
});
requestsWithoutReference.forEach((request) => {
if (request.fullUrl) {
fullUrlToRequest[request.fullUrl] = request;
} else {
// Resource without a fullUrl can't be referenced, therefore we won't need to do any transformation on it
allRequests.push(request);
}
});
requestsWithReference.forEach((request) => {
idToRequestWithRef[request.id] = request;
// request with a fullUrl have the potential of being referenced
if (request.fullUrl) {
fullUrlToRequest[request.fullUrl] = request;
}
});
return this.checkReferences(
orderedBundleEntriesId,
idToRequestWithRef,
fullUrlToRequest,
allRequests,
serverUrl,
dataService,
);
}