normalize-url-search-params
v0.2.0
Published
Normalize a URLSearchParams
Downloads
12
Readme
normalize-url-search-params
Normalize a URLSearchParams
Installation
npm install normalize-url-search-params
Available Options
| parameter | type | default | description |
| :-----------------: | :---------------------: | :-------------: | :------------------------------------------------------------------ |
| removeEmpty | boolean
| true
| Removes params with an empty string as the value. |
| removeNullUndefined | boolean
| true
| Removes params with null
or undefined
as the value. |
| booleanAsNumber | boolean
| true
| Forces the boolean value into a number is 0
or 1
. |
| removePage1 | boolean
| true
| Removes page
param with the value is 1
. |
| sort | boolean
| false
| Sorts all key/value pairs, if any, by their keys. |
| data | Object
| {}
| A record of string keys and any values. |
| removeParameters | Array<string\|RegExp>
| [/^utm_\w+/i]
| Removes params that matches any of the provided strings or regexes. |
Example:
test('simple', () => {
expect(
normalizeUrlSearchParams('/admin/posts', {
data: {
page: 2,
sort: 'created_at',
},
})
).toEqual('/admin/posts?page=2&sort=created_at');
});
test('test with removeEmpty', () => {
expect(
normalizeUrlSearchParams('/admin/posts?abc', {
data: {
xyz: '',
},
removeEmpty: true,
})
).toEqual('/admin/posts');
});
test('test with booleanAsNumber', () => {
expect(
normalizeUrlSearchParams('/admin/posts?active=true', {
data: {
admin: false,
},
booleanAsNumber: true,
})
).toEqual('/admin/posts?active=1&admin=0');
});
test('test with removePage1', () => {
expect(
normalizeUrlSearchParams('/admin/posts?page=1', {
data: {
active: true,
role: 'admin',
},
removePage1: true,
})
).toEqual('/admin/posts?active=1&role=admin');
});
test('test with sort', () => {
expect(
normalizeUrlSearchParams('/admin/posts?page=2&active=true', {
data: {
active: false,
},
sort: true,
})
).toEqual('/admin/posts?active=0&page=2');
});
test('test with removeParameters', () => {
expect(
normalizeUrlSearchParams('/admin/posts?page=2&sort=created_at&ref=123', {
removeParameters: ['ref'],
})
).toEqual('/admin/posts?page=2&sort=created_at');
});
test('test with full url', () => {
expect(
normalizeUrlSearchParams('http://domain.com/admin/posts?page=2', {
data: {
admin: true,
},
})
).toEqual('http://domain.com/admin/posts?page=2&admin=1');
});
License
MIT