Skip to content
This repository was archived by the owner on Oct 20, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions src/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const { parseRedirectsFormat } = require('./line_parser')
const { parseFileRedirects } = require('./line_parser')
const { mergeRedirects } = require('./merge')
const { parseNetlifyConfig } = require('./netlify_config_parser')
const { parseConfigRedirects } = require('./netlify_config_parser')
const { normalizeRedirects } = require('./normalize')

module.exports = { parseRedirectsFormat, parseNetlifyConfig, mergeRedirects }
module.exports = { parseFileRedirects, parseConfigRedirects, mergeRedirects, normalizeRedirects }
8 changes: 3 additions & 5 deletions src/line_parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ const { promisify } = require('util')

const pathExists = require('path-exists')

const { normalizeRedirects } = require('./common')
const { isUrl } = require('./url')

const readFileAsync = promisify(fs.readFile)
Expand All @@ -26,14 +25,13 @@ const readFileAsync = promisify(fs.readFile)
// - "Sign" is a special condition
// Unlike "redirects" in "netlify.toml", the "headers" and "edge_handlers"
// cannot be specified.
const parseRedirectsFormat = async function (filePath) {
const parseFileRedirects = async function (filePath) {
if (!(await pathExists(filePath))) {
return []
}

const text = await readFileAsync(filePath, 'utf-8')
const redirects = text.split('\n').map(normalizeLine).filter(hasRedirect).map(parseRedirect)
return normalizeRedirects(redirects)
return text.split('\n').map(normalizeLine).filter(hasRedirect).map(parseRedirect)
}

const normalizeLine = function (line, index) {
Expand Down Expand Up @@ -140,4 +138,4 @@ const parsePair = function (condition) {
return { [key]: value }
}

module.exports = { parseRedirectsFormat }
module.exports = { parseFileRedirects }
9 changes: 3 additions & 6 deletions src/netlify_config_parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,18 @@ const { promisify } = require('util')
const pathExists = require('path-exists')
const { parse: loadToml } = require('toml')

const { normalizeRedirects } = require('./common')

const pReadFile = promisify(readFile)

// Parse `redirects` field in "netlify.toml" to an array of objects.
// This field is already an array of objects so it only validates and
// normalizes it.
const parseNetlifyConfig = async function (configPath) {
const parseConfigRedirects = async function (configPath) {
if (!(await pathExists(configPath))) {
return []
}

const { redirects = [] } = await parseConfig(configPath)

return normalizeRedirects(redirects)
return redirects
}

// Load the configuration file and parse it (TOML)
Expand All @@ -33,4 +30,4 @@ const parseConfig = async function (configPath) {
}
}

module.exports = { parseNetlifyConfig }
module.exports = { parseConfigRedirects }
File renamed without changes.
5 changes: 3 additions & 2 deletions tests/line_parser.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
const test = require('ava')
const { each } = require('test-each')

const { parseRedirectsFormat } = require('..')
const { parseFileRedirects, normalizeRedirects } = require('..')

const { FIXTURES_DIR, normalizeRedirect } = require('./helpers/main')

const parseRedirects = async function (fixtureName) {
return await parseRedirectsFormat(`${FIXTURES_DIR}/redirects_file/${fixtureName}`)
const redirects = await parseFileRedirects(`${FIXTURES_DIR}/redirects_file/${fixtureName}`)
return normalizeRedirects(redirects)
}

each(
Expand Down
5 changes: 3 additions & 2 deletions tests/netlify_config_parser.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
const test = require('ava')
const { each } = require('test-each')

const { parseNetlifyConfig } = require('..')
const { parseConfigRedirects, normalizeRedirects } = require('..')

const { FIXTURES_DIR, normalizeRedirect } = require('./helpers/main')

const parseRedirects = async function (fixtureName) {
return await parseNetlifyConfig(`${FIXTURES_DIR}/netlify_config/${fixtureName}.toml`)
const redirects = await parseConfigRedirects(`${FIXTURES_DIR}/netlify_config/${fixtureName}.toml`)
return normalizeRedirects(redirects)
}

each(
Expand Down