Skip to content

Commit 0ab46f7

Browse files
committed
refactor(compartment-mapper): break out creation of archiveCompartmentMap
1 parent df9d146 commit 0ab46f7

File tree

1 file changed

+42
-21
lines changed

1 file changed

+42
-21
lines changed

packages/compartment-mapper/src/archive.js

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
/** @typedef {import('./types.js').ArchiveOptions} ArchiveOptions */
55
/** @typedef {import('./types.js').ArchiveWriter} ArchiveWriter */
66
/** @typedef {import('./types.js').CompartmentDescriptor} CompartmentDescriptor */
7+
/** @typedef {import('./types.js').CompartmentMapDescriptor} CompartmentMapDescriptor */
78
/** @typedef {import('./types.js').ModuleDescriptor} ModuleDescriptor */
89
/** @typedef {import('./types.js').ParserImplementation} ParserImplementation */
910
/** @typedef {import('./types.js').ReadFn} ReadFn */
@@ -243,6 +244,44 @@ const captureSourceLocations = async (sources, captureSourceLocation) => {
243244
}
244245
};
245246

247+
/**
248+
* @param {CompartmentMapDescriptor} compartmentMap
249+
* @param {Sources} sources
250+
* @returns {{archiveCompartmentMap: CompartmentMapDescriptor, archiveSources: Sources}}
251+
*/
252+
export const makeArchiveCompartmentMap = (compartmentMap, sources) => {
253+
const {
254+
compartments,
255+
entry: { compartment: entryCompartmentName, module: entryModuleSpecifier },
256+
} = compartmentMap;
257+
258+
const compartmentRenames = renameCompartments(compartments);
259+
const archiveCompartments = translateCompartmentMap(
260+
compartments,
261+
sources,
262+
compartmentRenames,
263+
);
264+
const archiveEntryCompartmentName = compartmentRenames[entryCompartmentName];
265+
const archiveSources = renameSources(sources, compartmentRenames);
266+
267+
const archiveCompartmentMap = {
268+
tags: [],
269+
entry: {
270+
compartment: archiveEntryCompartmentName,
271+
module: entryModuleSpecifier,
272+
},
273+
compartments: archiveCompartments,
274+
};
275+
276+
// Cross-check:
277+
// We assert that we have constructed a valid compartment map, not because it
278+
// might not be, but to ensure that the assertCompartmentMap function can
279+
// accept all valid compartment maps.
280+
assertCompartmentMap(archiveCompartmentMap);
281+
282+
return { archiveCompartmentMap, archiveSources };
283+
};
284+
246285
/**
247286
* @param {ReadFn | ReadPowers} powers
248287
* @param {string} moduleLocation
@@ -287,7 +326,7 @@ const digestLocation = async (powers, moduleLocation, options) => {
287326

288327
const {
289328
compartments,
290-
entry: { compartment: entryCompartmentName, module: entryModuleSpecifier },
329+
entry: { module: entryModuleSpecifier },
291330
} = compartmentMap;
292331

293332
/** @type {Sources} */
@@ -322,28 +361,10 @@ const digestLocation = async (powers, moduleLocation, options) => {
322361
);
323362
}
324363

325-
const compartmentRenames = renameCompartments(compartments);
326-
const archiveCompartments = translateCompartmentMap(
327-
compartments,
364+
const { archiveCompartmentMap, archiveSources } = makeArchiveCompartmentMap(
365+
compartmentMap,
328366
sources,
329-
compartmentRenames,
330367
);
331-
const archiveEntryCompartmentName = compartmentRenames[entryCompartmentName];
332-
const archiveSources = renameSources(sources, compartmentRenames);
333-
334-
const archiveCompartmentMap = {
335-
entry: {
336-
compartment: archiveEntryCompartmentName,
337-
module: moduleSpecifier,
338-
},
339-
compartments: archiveCompartments,
340-
};
341-
342-
// Cross-check:
343-
// We assert that we have constructed a valid compartment map, not because it
344-
// might not be, but to ensure that the assertCompartmentMap function can
345-
// accept all valid compartment maps.
346-
assertCompartmentMap(archiveCompartmentMap);
347368

348369
const archiveCompartmentMapText = JSON.stringify(
349370
archiveCompartmentMap,

0 commit comments

Comments
 (0)