1 | import normalizeTransformer from './normalize-transformer.js';
|
2 | import toArray from './to-array.js';
|
3 |
|
4 | const asyncMapObj = async (obj, fn) =>
|
5 | Object.fromEntries(
|
6 | await Promise.all(
|
7 | Object.entries(obj ?? {}).map(async ([key, val]) => [
|
8 | key,
|
9 | await fn(val, key)
|
10 | ])
|
11 | )
|
12 | );
|
13 |
|
14 | export default async config => {
|
15 | const buffers = {};
|
16 |
|
17 | config = await asyncMapObj(
|
18 | config,
|
19 | async ({ builds, transformers, manifestPath, requires }, name) => ({
|
20 | builds: await asyncMapObj(
|
21 | builds,
|
22 | async ({ maxChunkSize, transformers, ...build }) => ({
|
23 | ...build,
|
24 | maxChunkSize: maxChunkSize || Infinity,
|
25 | transformers: await Promise.all(
|
26 | toArray(transformers).map(normalizeTransformer)
|
27 | )
|
28 | })
|
29 | ),
|
30 | cache: { buffers, files: {} },
|
31 | manifestPath,
|
32 | name,
|
33 | requires: toArray(requires),
|
34 | transformers: await Promise.all(
|
35 | toArray(transformers).map(normalizeTransformer)
|
36 | )
|
37 | })
|
38 | );
|
39 |
|
40 | Object.values(config).forEach(
|
41 | env => (env.requires = toArray(env.requires).map(name => config[name]))
|
42 | );
|
43 |
|
44 | return config;
|
45 | };
|