Skip to content

Commit 3a5ea3b

Browse files
committed
ref: Reuse parseAsInteger logic, add positive check
1 parent 30df519 commit 3a5ea3b

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

packages/nuqs/src/parsers.test.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ import {
33
parseAsArrayOf,
44
parseAsFloat,
55
parseAsHex,
6+
parseAsIndex,
67
parseAsInteger,
7-
parseAsIsoDateTime,
88
parseAsIsoDate,
9+
parseAsIsoDateTime,
910
parseAsString,
10-
parseAsTimestamp,
11-
parseAsIndex
11+
parseAsTimestamp
1212
} from './parsers'
1313

1414
describe('parsers', () => {
@@ -33,6 +33,8 @@ describe('parsers', () => {
3333
expect(parseAsIndex.parse('1')).toBe(0)
3434
expect(parseAsIndex.parse('3.14')).toBe(2)
3535
expect(parseAsIndex.parse('3,14')).toBe(2)
36+
expect(parseAsIndex.parse('0')).toBeNull()
37+
expect(parseAsIndex.parse('-1')).toBeNull()
3638
expect(parseAsIndex.serialize(0)).toBe('1')
3739
expect(parseAsIndex.serialize(3.14)).toBe('4')
3840
})

packages/nuqs/src/parsers.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,13 @@ export const parseAsInteger = createParser({
157157

158158
export const parseAsIndex = createParser({
159159
parse: v => {
160-
const int = parseInt(v)
161-
if (Number.isNaN(int)) {
160+
const int = parseAsInteger.parse(v)
161+
if (int === null || int <= 0) {
162162
return null
163163
}
164164
return int - 1
165165
},
166-
serialize: v => Math.round(v + 1).toFixed()
166+
serialize: v => parseAsInteger.serialize(v + 1)
167167
})
168168

169169
export const parseAsHex = createParser({

0 commit comments

Comments
 (0)