Skip to content

Commit bccbca4

Browse files
author
Vincent Comby
authored
Merge pull request #13 from slocka/renaming-types
Renaming types
2 parents 1d7a806 + a5c8b7a commit bccbca4

15 files changed

+139
-87
lines changed

src/buildQueryString.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IQueryParamsSchema, QueryParams } from './types';
1+
import { IQueryParamsStateSchema, QueryParamsState } from './types';
22

33
import { runParamsValidatorsPartial } from './validators';
44
import { serializeQueryParamsValues } from './internal/serializer/serialize';
@@ -8,7 +8,9 @@ import { createQueryString } from './internal/queryString';
88
* Create a new query string based on the provided schema and a matching query params object.
99
* An error will be thrown if the param does not match the type defined in the schema.
1010
*/
11-
export function buildQueryString<QueryParamsSchema extends IQueryParamsSchema>(
11+
export function buildQueryString<
12+
QueryParamsSchema extends IQueryParamsStateSchema
13+
>(
1214
/**
1315
* The parameters schema followed by the query string.
1416
*/
@@ -17,7 +19,7 @@ export function buildQueryString<QueryParamsSchema extends IQueryParamsSchema>(
1719
* The query parameters you want to add to the query string and belong
1820
* to the schema.
1921
*/
20-
newQueryParams: Partial<QueryParams<QueryParamsSchema>> = {},
22+
newQueryParams: Partial<QueryParamsState<QueryParamsSchema>> = {},
2123
contextData?: any,
2224
/**
2325
* The query parameters you want to add to the query string but don't

src/createUseQueryParamsStateHook.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IQueryParamsSchema } from './types';
1+
import { IQueryParamsStateSchema } from './types';
22
import { useQueryParamsState } from './useQueryParamsState';
33

44
/**
@@ -7,7 +7,7 @@ import { useQueryParamsState } from './useQueryParamsState';
77
* @param queryParamsConfig
88
*/
99
export function createUseQueryParamsStateHook<
10-
QueryParamsSchema extends IQueryParamsSchema
10+
QueryParamsSchema extends IQueryParamsStateSchema
1111
>(queryParamsSchena: QueryParamsSchema) {
1212
return (contextData?: any) => {
1313
return useQueryParamsState(queryParamsSchena, contextData);

src/internal/buildQueryStringFromCurrentURL.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { useLocation } from 'react-router-dom';
22

3-
import { IQueryParamsSchema, QueryParams, QS_BUILD_STRATEGY } from '../types';
3+
import {
4+
IQueryParamsStateSchema,
5+
QueryParamsState,
6+
QS_BUILD_STRATEGY,
7+
} from '../types';
48

59
import {
610
getAllRawQueryParamsFromURL,
@@ -15,11 +19,11 @@ import { buildQueryString } from '../buildQueryString';
1519
* @internal
1620
*/
1721
export function buildQueryStringFromCurrentURL<
18-
QueryParamsSchema extends IQueryParamsSchema
22+
QueryParamsSchema extends IQueryParamsStateSchema
1923
>(
2024
location: ReturnType<typeof useLocation>,
2125
queryParamsSchema: QueryParamsSchema,
22-
newQueryParams: Partial<QueryParams<QueryParamsSchema>> = {},
26+
newQueryParams: Partial<QueryParamsState<QueryParamsSchema>> = {},
2327
buildStrategy: QS_BUILD_STRATEGY = QS_BUILD_STRATEGY.PRESERVE_ALL,
2428
contextData?: any
2529
): string {
@@ -42,7 +46,7 @@ export function buildQueryStringFromCurrentURL<
4246
* Get object in which the new query params are going be merged into.
4347
* The returned object has its valued already stringified.
4448
*/
45-
function getMergeDestination<QueryParamsSchema extends IQueryParamsSchema>(
49+
function getMergeDestination<QueryParamsSchema extends IQueryParamsStateSchema>(
4650
location: ReturnType<typeof useLocation>,
4751
queryParamsSchema: QueryParamsSchema,
4852
buildStrategy: QS_BUILD_STRATEGY,
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
import { IQueryParamsSchema, QueryParams } from '../types';
1+
import { IQueryParamsStateSchema, QueryParamsState } from '../types';
22

33
/**
44
* @internal
55
*/
66
export function getDefaultQueryParamsState<
7-
QueryParamsSchema extends IQueryParamsSchema
7+
QueryParamsSchema extends IQueryParamsStateSchema
88
>(
99
queryParamsSchema: QueryParamsSchema,
1010
contextData?: any
11-
): QueryParams<QueryParamsSchema> {
11+
): QueryParamsState<QueryParamsSchema> {
1212
return Object.keys(queryParamsSchema).reduce(
1313
(acc, queryParamKey: keyof QueryParamsSchema) => {
1414
const queryParamDef = queryParamsSchema[queryParamKey];
1515
acc[queryParamKey] = queryParamDef.getDefaultValue(contextData);
1616
return acc;
1717
},
18-
{} as QueryParams<QueryParamsSchema>
18+
{} as QueryParamsState<QueryParamsSchema>
1919
);
2020
}

src/internal/getQueryParamsFromURL.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { IQueryParamsSchema, RawQueryParams } from '../types';
1+
import { IQueryParamsStateSchema, RawQueryParams } from '../types';
22

33
import { useLocation } from 'react-router-dom';
44

@@ -19,7 +19,7 @@ export function getAllRawQueryParamsFromURL(
1919
* @internal
2020
*/
2121
export function getRawQueryParamsInSchemaFromURL<
22-
QueryParamsSchema extends IQueryParamsSchema
22+
QueryParamsSchema extends IQueryParamsStateSchema
2323
>(
2424
location: ReturnType<typeof useLocation>,
2525
schema: QueryParamsSchema
@@ -45,7 +45,7 @@ export function getRawQueryParamsInSchemaFromURL<
4545
* @internal
4646
*/
4747
export function getExternalQueryParamsFromURL<
48-
QueryParamsSchema extends IQueryParamsSchema
48+
QueryParamsSchema extends IQueryParamsStateSchema
4949
>(
5050
location: ReturnType<typeof useLocation>,
5151
schema: QueryParamsSchema

src/internal/getRawQueryParams.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
1-
import { RawQueryParams, IQueryParamsSchema, QueryParams } from '../types';
1+
import {
2+
RawQueryParams,
3+
IQueryParamsStateSchema,
4+
QueryParamsState,
5+
} from '../types';
26
import { serializeQueryParamsValues } from '../internal/serializer/serialize';
37

48
/**
59
* Convert each queryParams value to its "raw" (stringified) version based
610
* on the provided schema.
711
* @internal
812
*/
9-
export function getRawQueryParams<QueryParamsSchema extends IQueryParamsSchema>(
10-
queryParams: QueryParams<QueryParamsSchema>,
13+
export function getRawQueryParams<
14+
QueryParamsSchema extends IQueryParamsStateSchema
15+
>(
16+
queryParams: QueryParamsState<QueryParamsSchema>,
1117
queryParamsSchema: QueryParamsSchema
1218
): RawQueryParams<QueryParamsSchema> {
1319
return serializeQueryParamsValues(queryParamsSchema, queryParams);

src/internal/serializer/serialize.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import { isUndefined } from '../typeChecking';
2-
import { QueryParams, RawQueryParams, IQueryParamsSchema } from '../../types';
2+
import {
3+
QueryParamsState,
4+
RawQueryParams,
5+
IQueryParamsStateSchema,
6+
} from '../../types';
37

48
import { Errors } from '../../errors';
59

@@ -12,12 +16,12 @@ import { Errors } from '../../errors';
1216
* @param queryParams - Raw query params extracted from the URL but not parsed.
1317
*/
1418
export function deserializeQueryParamsValues<
15-
QueryParamsSchema extends IQueryParamsSchema
19+
QueryParamsSchema extends IQueryParamsStateSchema
1620
>(
1721
queryParamsSchema: QueryParamsSchema,
1822
rawQueryParams: Partial<RawQueryParams<QueryParamsSchema>>,
1923
contextData?: any
20-
): QueryParams<QueryParamsSchema> {
24+
): QueryParamsState<QueryParamsSchema> {
2125
return Object.keys(queryParamsSchema).reduce(
2226
(acc, queryParamKey: keyof QueryParamsSchema) => {
2327
const queryParamDef = queryParamsSchema[queryParamKey];
@@ -28,15 +32,15 @@ export function deserializeQueryParamsValues<
2832

2933
return acc;
3034
},
31-
{} as QueryParams<QueryParamsSchema>
35+
{} as QueryParamsState<QueryParamsSchema>
3236
);
3337
}
3438

3539
export function serializeQueryParamsValues<
36-
QueryParamsSchema extends IQueryParamsSchema
40+
QueryParamsSchema extends IQueryParamsStateSchema
3741
>(
3842
queryParamsSchema: QueryParamsSchema,
39-
queryParams: Partial<QueryParams<QueryParamsSchema>>
43+
queryParams: Partial<QueryParamsState<QueryParamsSchema>>
4044
): RawQueryParams<QueryParamsSchema> {
4145
return Object.keys(queryParams).reduce(
4246
(acc, queryParamKey: keyof QueryParamsSchema) => {

src/internal/serializer/serializers.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { isNumber, isNil } from '../typeChecking';
1+
import { isNumber, isNil, getTypeName } from '../typeChecking';
22
import { Serializer } from '../../types';
33
import { Errors } from '../../errors';
44

@@ -23,7 +23,7 @@ const arrayStringsSerializer: Serializer<string[]> = {
2323

2424
if (!Array.isArray(array)) {
2525
throw new Errors.QueryParamsUpdateError(
26-
`was expecting an array but received a ${typeof array}.`
26+
`was expecting an array but received a ${getTypeName(array)}.`
2727
);
2828
}
2929

@@ -50,7 +50,7 @@ const arrayNumbersSerializer: Serializer<number[]> = {
5050

5151
if (!Array.isArray(array)) {
5252
throw new Errors.QueryParamsUpdateError(
53-
`was expecting an array but received a ${typeof array}.`
53+
`was expecting an array but received a ${getTypeName(array)}.`
5454
);
5555
}
5656

@@ -69,7 +69,7 @@ const stringSerializer: Serializer<string> = {
6969

7070
if (typeof str !== 'string') {
7171
throw new Errors.QueryParamsUpdateError(
72-
`was expecting a string but received a ${typeof str}.`
72+
`was expecting a string but received a ${getTypeName(str)}.`
7373
);
7474
}
7575

@@ -106,7 +106,7 @@ const booleanSerializer: Serializer<boolean> = {
106106

107107
if (typeof bool !== 'boolean') {
108108
throw new Errors.QueryParamsUpdateError(
109-
`was expecting a boolean but received a ${typeof bool}.`
109+
`was expecting a boolean but received a ${getTypeName(bool)}.`
110110
);
111111
}
112112

@@ -130,7 +130,7 @@ const numberSerializer: Serializer<number> = {
130130

131131
if (!isNumber(number)) {
132132
throw new Errors.QueryParamsUpdateError(
133-
`was expecting a number but received a ${typeof number}.`
133+
`was expecting a number but received a ${getTypeName(number)}.`
134134
);
135135
}
136136

src/internal/typeChecking.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,16 @@ export function isNumber(value: any): value is number {
2323
export function isNil(value: any): value is undefined | null {
2424
return isUndefined(value) || value === null;
2525
}
26+
27+
/**
28+
* Returns the type of the value.
29+
* This is a slightly smarter version of `typeof X`
30+
* which can handle arrays.
31+
*/
32+
export function getTypeName(value: any): string {
33+
if (Array.isArray(value)) {
34+
return 'array';
35+
}
36+
37+
return typeof value;
38+
}

src/pickQueryParamsMatchingSchema.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { QueryParams, IQueryParamsSchema } from './types';
1+
import { QueryParamsState, IQueryParamsStateSchema } from './types';
22

33
/**
44
* Take an object as input and return a new object keeping only
@@ -16,17 +16,17 @@ import { QueryParams, IQueryParamsSchema } from './types';
1616
* This util does not do any type validation.
1717
*/
1818
export function pickQueryParamsMatchingSchema<
19-
QueryParamsSchema extends IQueryParamsSchema
19+
QueryParamsSchema extends IQueryParamsStateSchema
2020
>(
2121
queryParamsSchema: QueryParamsSchema,
2222
queryParams: Record<string, any>
23-
): Partial<QueryParams<QueryParamsSchema>> {
23+
): Partial<QueryParamsState<QueryParamsSchema>> {
2424
if (!queryParams) {
2525
return {};
2626
}
2727
return Object.keys(queryParamsSchema).reduce(
2828
(
29-
acc: Partial<QueryParams<QueryParamsSchema>>,
29+
acc: Partial<QueryParamsState<QueryParamsSchema>>,
3030
queryParamsKey: keyof QueryParamsSchema
3131
) => {
3232
if (queryParams.hasOwnProperty(queryParamsKey)) {

0 commit comments

Comments
 (0)