@ldapjs/filter
Version:
API for handling LDAP-style filters
34 lines (28 loc) • 905 B
JavaScript
const escapeFilterValue = require('../utils/escape-filter-value')
/**
* In an extensible filter, the righthand size of the filter can have
* substrings delimeted by `*` characters, e.g. `foo=*foo*bar*baz*`. This
* function is used to encode those substrings.
*
* @param {string} str In `*foo*bar*baz*` it would be `foo*bar*baz`.
*
* @returns {object} An object with extensible filter properties.
*
* @throws When the separator is missing from the input string.
*/
module.exports = function escapeSubstring (str) {
const fields = str.split('*')
const out = {
initial: '',
final: '',
any: []
}
if (fields.length <= 1) {
throw Error('extensible filter delimiter missing')
}
out.initial = escapeFilterValue(fields.shift())
out.final = escapeFilterValue(fields.pop())
Array.prototype.push.apply(out.any, fields.map(escapeFilterValue))
return out
}