UNPKG

1.74 kBJavaScriptView Raw
1const { parseFileRedirects } = require('./line_parser')
2const { mergeRedirects } = require('./merge')
3const { parseConfigRedirects } = require('./netlify_config_parser')
4const { normalizeRedirects } = require('./normalize')
5const { splitResults, concatResults } = require('./results')
6
7// Parse all redirects from `netlify.toml` and `_redirects` file, then normalize
8// and validate those.
9const 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
33const getFileRedirects = async function (redirectsFiles) {
34 const resultsArrays = await Promise.all(redirectsFiles.map(parseFileRedirects))
35 return concatResults(resultsArrays)
36}
37
38const getConfigRedirects = async function (netlifyConfigPath) {
39 if (netlifyConfigPath === undefined) {
40 return splitResults([])
41 }
42
43 return await parseConfigRedirects(netlifyConfigPath)
44}
45
46module.exports = { parseAllRedirects }