Skip to content

Commit 54d54d3

Browse files
authored
Merge pull request #60 from honey32/develop
prepare for v1.1.0
2 parents f3fb14b + 57bcee4 commit 54d54d3

File tree

7 files changed

+6416
-3154
lines changed

7 files changed

+6416
-3154
lines changed

.eslintrc.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@ module.exports = {
1919
'jest'
2020
],
2121
rules: {
22+
// workaround: to allow overload.
23+
// TODO: re-write for typescript
24+
'no-redeclare': 'off',
2225
}
2326
}

package-lock.json

Lines changed: 6368 additions & 3141 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "next-query-utils",
3-
"version": "1.0.0",
3+
"version": "1.1.0",
44
"source": "src/index.ts",
55
"main": "dist/main.js",
66
"module": "dist/module.js",
@@ -63,17 +63,17 @@
6363
"eslint-plugin-jest": "^26.2.2",
6464
"eslint-plugin-n": "^15.2.0",
6565
"eslint-plugin-promise": "^6.0.0",
66-
"jest": "^28.1.0",
66+
"jest": "^29.5.0",
6767
"lint-staged": "^12.4.1",
6868
"npm-run-all": "^4.1.5",
69-
"parcel": "^2.5.0",
69+
"parcel": "^2.9.3",
7070
"prettier": "^2.6.2",
7171
"simple-git-hooks": "^2.7.0",
72-
"ts-jest": "^28.0.2",
73-
"typedoc": "^0.22.15",
74-
"typescript": "^4.6.4"
72+
"ts-jest": "^29.1.0",
73+
"typedoc": "^0.24.8",
74+
"typescript": "^5.1.3"
7575
},
7676
"dependencies": {
77-
"@swc/helpers": "^0.3.17"
77+
"@swc/helpers": "^0.5.1"
7878
}
7979
}

src/getters/getMultipleQueryParams.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,10 @@ describe("getMultipleQueryParams(key, pred)(query)", () => {
2525
expect(getMultipleQueryParams(query, "key", (s) => s === "a")).toEqual(
2626
result
2727
);
28+
29+
// strictly typed
30+
expect<"a"[]>(
31+
getMultipleQueryParams(query, "key", (s): s is "a" => s === "a")
32+
).toEqual(result);
2833
});
2934
});

src/getters/getMultipleQueryParams.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
import { ParsedUrlQuery } from "../types/ParsedUrlQuery";
22

3+
export function getMultipleQueryParams<T extends string>(
4+
query: ParsedUrlQuery,
5+
key: string,
6+
pred?: (s: string) => s is T
7+
): T[];
8+
export function getMultipleQueryParams(
9+
query: ParsedUrlQuery,
10+
key: string,
11+
pred?: (s: string) => boolean
12+
): string[];
13+
314
/**
415
*
516
* Returns an array of the values for the specified *key* in the query object.
@@ -25,16 +36,16 @@ import { ParsedUrlQuery } from "../types/ParsedUrlQuery";
2536
*
2637
* @param pred *optional*. the values *that fit this predicate* will be returned.
2738
*/
28-
export const getMultipleQueryParams = (
39+
export function getMultipleQueryParams(
2940
query: ParsedUrlQuery,
3041
key: string,
3142
pred: (s: string) => boolean = () => true
32-
): string[] => {
43+
): string[] {
3344
const _value = query[key];
3445

3546
if (!_value) return [];
3647

3748
if (Array.isArray(_value)) return _value.filter(pred);
3849

3950
return pred(_value) ? [_value] : [];
40-
};
51+
}

src/getters/getSingleQueryParam.test.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,10 @@ describe("getSingleQueryParam(key, pred)(query)", () => {
2323
[{ key: ["b", "c"] }, undefined],
2424
])('(%p, "key", (s) => s === "a") === %s', (query, result) => {
2525
expect(getSingleQueryParam(query, "key", (s) => s === "a")).toEqual(result);
26+
27+
// strictly typed
28+
expect<"a" | undefined>(
29+
getSingleQueryParam(query, "key", (s): s is "a" => s === "a")
30+
).toEqual(result);
2631
});
2732
});

src/getters/getSingleQueryParam.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
import { ParsedUrlQuery } from "../types/ParsedUrlQuery";
22

3+
export function getSingleQueryParam<T extends string>(
4+
query: ParsedUrlQuery,
5+
key: string,
6+
pred?: (s: string) => s is T
7+
): T | undefined;
8+
export function getSingleQueryParam<T extends string>(
9+
query: ParsedUrlQuery,
10+
key: string,
11+
pred?: (s: string) => boolean
12+
): T | undefined;
13+
314
/**
415
* Returns the first value for the specified *key* in the query object.
516
* If `pred` specified, returns the first value *that meets it*.
@@ -24,16 +35,16 @@ import { ParsedUrlQuery } from "../types/ParsedUrlQuery";
2435
*
2536
* @param pred *optional*. the first value *that fits this predicate* will be returned.
2637
*/
27-
export const getSingleQueryParam = (
38+
export function getSingleQueryParam(
2839
query: ParsedUrlQuery,
2940
key: string,
3041
pred: (s: string) => boolean = () => true
31-
): string | undefined => {
42+
): string | undefined {
3243
const _value = query[key];
3344

3445
if (!_value) return undefined;
3546

3647
if (Array.isArray(_value)) return _value.filter(pred)[0];
3748

3849
return pred(_value) ? _value : undefined;
39-
};
50+
}

0 commit comments

Comments
 (0)