1 | import { parseFileRedirects } from './line_parser.js'
|
2 | import { mergeRedirects } from './merge.js'
|
3 | import { parseConfigRedirects } from './netlify_config_parser.js'
|
4 | import { normalizeRedirects } from './normalize.js'
|
5 | import { splitResults, concatResults } from './results.js'
|
6 |
|
7 |
|
8 |
|
9 | export const parseAllRedirects = async function ({
|
10 | redirectsFiles = [],
|
11 | netlifyConfigPath,
|
12 | configRedirects = [],
|
13 | ...opts
|
14 | }) {
|
15 | const [
|
16 | { redirects: fileRedirects, errors: fileParseErrors },
|
17 | { redirects: parsedConfigRedirects, errors: configParseErrors },
|
18 | ] = await Promise.all([getFileRedirects(redirectsFiles), getConfigRedirects(netlifyConfigPath)])
|
19 | const { redirects: normalizedFileRedirects, errors: fileNormalizeErrors } = normalizeRedirects(fileRedirects, opts)
|
20 | const { redirects: normalizedParsedConfigRedirects, errors: parsedConfigNormalizeErrors } = normalizeRedirects(
|
21 | parsedConfigRedirects,
|
22 | opts,
|
23 | )
|
24 | const { redirects: normalizedConfigRedirects, errors: configNormalizeErrors } = normalizeRedirects(
|
25 | configRedirects,
|
26 | opts,
|
27 | )
|
28 | const { redirects, errors: mergeErrors } = mergeRedirects({
|
29 | fileRedirects: normalizedFileRedirects,
|
30 | configRedirects: [...normalizedParsedConfigRedirects, ...normalizedConfigRedirects],
|
31 | })
|
32 | const errors = [
|
33 | ...fileParseErrors,
|
34 | ...fileNormalizeErrors,
|
35 | ...configParseErrors,
|
36 | ...parsedConfigNormalizeErrors,
|
37 | ...configNormalizeErrors,
|
38 | ...mergeErrors,
|
39 | ]
|
40 | return { redirects, errors }
|
41 | }
|
42 |
|
43 | const getFileRedirects = async function (redirectsFiles) {
|
44 | const resultsArrays = await Promise.all(redirectsFiles.map(parseFileRedirects))
|
45 | return concatResults(resultsArrays)
|
46 | }
|
47 |
|
48 | const getConfigRedirects = async function (netlifyConfigPath) {
|
49 | if (netlifyConfigPath === undefined) {
|
50 | return splitResults([])
|
51 | }
|
52 |
|
53 | return await parseConfigRedirects(netlifyConfigPath)
|
54 | }
|