@oarepo/vue-query-synchronizer
Version:
Browser vue-router query synchronization library
50 lines (49 loc) • 1.98 kB
TypeScript
import { LocationQuery, Router } from 'vue-router';
import { DataType, GenericParsedQuery, NavigationOperation, ParsedQuery, QueryParameterDefinitions, TypedParsedQuery } from './types';
export * from './datatypes';
export * from './types';
declare const proxiedQuery: ParsedQuery;
/**
* The main composition API entrypoint. Returns a reactive Query object with parsed values
*
* @typeParam T The type of the returned query object. An interface defining query parameters and their types
* might be passed. If not a generic (untyped) interface is used.
*/
export declare function useQuery<T = GenericParsedQuery>(): TypedParsedQuery<T>;
/**
* @internal
*/
export declare function useRawQuery(): {
query: {
[x: string]: any;
define: (key: string, datatype: DataType<any>, defaultValue: any) => void;
addValue: (key: string, value: any, datatype?: DataType<any> | undefined) => void;
removeValue: (key: string, value: any, datatype?: DataType<any> | undefined) => void;
__definition: QueryParameterDefinitions;
};
rawQuery: LocationQuery;
enabled: boolean;
serializedId: number;
};
export declare function watchQuery(fn: (...x: any[]) => any): void;
export declare function queryWatchSource(): number;
declare const QuerySynchronizer: {
install(app: any, { router, datatypes, debug, navigationOperation }: {
router: Router;
datatypes?: DataType<any>[] | undefined;
debug?: boolean | undefined;
navigationOperation?: NavigationOperation | undefined;
}): void;
};
/**
* Vue plugin. Usage:
* ```
* createApp(App).use(router).use(QuerySynchronizer, { router, debug: true })
* ```
*
* @param router application's router
* @param datatypes an optional array of custom (user-defined) datatypes
* @param debug if set to true, print library's debug messages
*/
export default QuerySynchronizer;
export { proxiedQuery as query };