sharec-schema
Version:
Utilities for configuration files merge
28 lines (21 loc) • 723 B
JavaScript
// @ts-check
const flow = require('lodash.flow')
const { trimEOF, linesToLists } = require('../helpers')
const listMergeAtom = require('./listMerge')
const primitiveAtom = require('./primitive')
/**
* @typedef {import('../').SchemaParams<string>} SchemaLinesParams
*/
/**
* Creates list of unique values from lists-params
* @param {SchemaLinesParams} params
* @returns {string}
*/
function linesMergeAtom(params) {
const { current, upcoming } = params
if (current === undefined && upcoming) return upcoming
if (current && upcoming === undefined) return current
const result = listMergeAtom(primitiveAtom)(flow(trimEOF, linesToLists)(params))
return result.join('\n')
}
module.exports = linesMergeAtom