Skip to content

Commit 07f9a08

Browse files
authored
Merge pull request #6 from z4nr34l/hotfix-double-slash-in-url
Fixed duplicated on root path, version bump, migrated to esnext
2 parents e2c30a3 + 3f74a50 commit 07f9a08

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "next-router-segments",
3-
"version": "1.0.3",
3+
"version": "1.0.4",
44
"description": "Parsing Next.js pathname to structured segments, which you can use in various ways.",
55
"files": [
66
"lib/**/*"

src/index.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
1-
export const getRouteSegments = (pathname: string) => {
2-
const segments = pathname.split('/').filter((segment) => segment || segment === '');
1+
export interface RouteSegment {
2+
slug: string;
3+
url: string;
4+
name: string;
5+
}
6+
7+
export const getRouteSegments = (pathname: string): RouteSegment[] => {
8+
const segmentsSet = new Set<string>();
9+
pathname.split('/').filter((segment) => {
10+
if (segment || segment === '') {
11+
segmentsSet.add(segment);
12+
return true;
13+
}
14+
return false;
15+
});
316

4-
return segments.map((segment, index) => {
17+
return Array.from(segmentsSet).map((segment, index) => {
518
const slug = segment || 'home';
6-
const urlSegments = segments.slice(0, index + 1);
19+
const urlSegments = Array.from(segmentsSet).slice(0, index + 1);
720
const url = urlSegments.length > 1 ? `${urlSegments.join('/')}` : '/';
821
const name = segment
922
? segment

tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"compilerOptions": {
3-
"target": "es5",
3+
"target": "esnext",
44
"module": "commonjs",
55
"declaration": true,
66
"outDir": "./lib",

0 commit comments

Comments
 (0)