Query Params
This module provides utility functions for extracting and parsing query parameters from URLs, especially for search and filter operations. It is useful for handling URL-based navigation and state in search-driven applications.
Types
QueryParams
Extends the base Query type with additional properties for path, filters, document id, and query name.
export type QueryParams = Query & {
path?: string;
filters?: LegacyFilter[];
id?: string;
queryName?: string;
}
Functions
getQueryParamsFromUrl()
Parses a URL string and returns a QueryParams object.
function getQueryParamsFromUrl(url: string | undefined): QueryParams | undefined
Example
import { getQueryParamsFromUrl } from '@sinequa/atomic';
const url = 'https://example.com/search?q=test&f=%5B%7B%22field%22%3A%22type%22%2C%22value%22%3A%22document%22%7D%5D&id=abc123&n=main';
const params = getQueryParamsFromUrl(url);
/*
params: {
path: '/search',
text: 'test',
filters: [{ field: 'type', value: 'document' }],
name: 'main'
}
*/
getUrlParamsFromQueryParams()
Converts a QueryParams object to a URL query string.
function getUrlParamsFromQueryParams(queryParams: QueryParams | undefined): string
Example
import { getUrlParamsFromQueryParams, QueryParams } from '@sinequa/atomic';
const queryParams: QueryParams = {
path: "/search/all",
text: "example",
filters: [{ field: "type", value: "document" }],
page: 1,
sort: "relevance",
tab: "results",
name: "John Doe",
basket: "12345",
};
const urlParams = getUrlParamsFromQueryParams(queryParams);
// urlParams: "q=example&f=%5B%7B%22field%22%3A%22type%22%2C%22value%22%3A%22document%22%7D%5D&p=1&s=relevance&t=results&n=John%20Doe&b=12345"
getFiltersFromUrl()
Extracts an array of LegacyFilter objects from a URL string.
function getFiltersFromUrl(url: string | undefined): LegacyFilter[]
getFiltersFromURI()
Parses a URI-encoded string and returns an array of LegacyFilter objects.
function getFiltersFromURI(uri: string): LegacyFilter[]
queryParamsFromUrl()
Returns an object of query parameters from the given URL.
function queryParamsFromUrl(url: string): Record<string, string>
Example
import { getQueryParamsFromUrl, getFiltersFromUrl } from '@sinequa/atomic';
const url = 'https://example.com/search?q=hello&f=%5B%7B%22field%22%3A%22type%22%2C%22value%22%3A%22document%22%7D%5D';
const params = getQueryParamsFromUrl(url);
// params: { path: '/search', text: 'hello', filters: [{ field: 'type', value: 'document' }], ... }
const filters = getFiltersFromUrl(url);
// filters: [{ field: 'type', value: 'document' }]
Notes
- All functions expect valid URL or URI-encoded strings.
- The utilities are designed to work with Sinequa's query and filter types.