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