@hyeonqyu/typed-router-next 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -3,7 +3,7 @@ import * as react from 'react';
|
|
|
3
3
|
import { ComponentProps } from 'react';
|
|
4
4
|
import Link from 'next/link';
|
|
5
5
|
import { BaseMetadata, PartialRouteTree, RouteTree, RoutePathname } from '@hyeonqyu/typed-router-core';
|
|
6
|
-
export
|
|
6
|
+
export * from '@hyeonqyu/typed-router-core';
|
|
7
7
|
|
|
8
8
|
type QueryValue = string | number | boolean | readonly (string | number | boolean)[];
|
|
9
9
|
type QueryParams = Record<string, QueryValue>;
|
|
@@ -45,7 +45,7 @@ declare const createAppRoutes: <TMetadata extends BaseMetadata, TContext>() => <
|
|
|
45
45
|
children: react.ReactNode;
|
|
46
46
|
}) => react_jsx_runtime.JSX.Element;
|
|
47
47
|
useAppRoutes: () => TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree> & RouteTree<TMetadata, TContext, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>>;
|
|
48
|
-
useCurrentRouteNode: <TPath extends RoutePathname<TMetadata, TContext, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>>>(pathname: TPath) => TPath extends "/" ? TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree> : TPath extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof TRouteTree ? `/${R}` extends infer T ? T extends `/${R}` ? T extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] : T extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] ? `/${R}` extends infer T_1 ? T_1 extends `/${R}` ? T_1 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] : T_1 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] ? `/${R}` extends infer T_2 ? T_2 extends `/${R}` ? T_2 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] : T_2 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] ? `/${R}` extends infer T_3 ? T_3 extends `/${R}` ? T_3 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] : T_3 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] ?
|
|
48
|
+
useCurrentRouteNode: <TPath extends RoutePathname<TMetadata, TContext, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>>>(pathname: TPath) => TPath extends "/" ? TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree> : TPath extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof TRouteTree ? `/${R}` extends infer T ? T extends `/${R}` ? T extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] : T extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] ? `/${R}` extends infer T_1 ? T_1 extends `/${R}` ? T_1 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] : T_1 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] ? `/${R}` extends infer T_2 ? T_2 extends `/${R}` ? T_2 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] : T_2 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] ? `/${R}` extends infer T_3 ? T_3 extends `/${R}` ? T_3 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] : T_3 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] ? never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K][Rest] : never : never : never : never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][Rest] : never : never : never : never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][Rest] : never : never : never : never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][Rest] : never : never : never : never : never : Rest extends keyof TRouteTree ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[Rest] : never : never;
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
export { type TypedLinkProps, createAppRoutes };
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import * as react from 'react';
|
|
|
3
3
|
import { ComponentProps } from 'react';
|
|
4
4
|
import Link from 'next/link';
|
|
5
5
|
import { BaseMetadata, PartialRouteTree, RouteTree, RoutePathname } from '@hyeonqyu/typed-router-core';
|
|
6
|
-
export
|
|
6
|
+
export * from '@hyeonqyu/typed-router-core';
|
|
7
7
|
|
|
8
8
|
type QueryValue = string | number | boolean | readonly (string | number | boolean)[];
|
|
9
9
|
type QueryParams = Record<string, QueryValue>;
|
|
@@ -45,7 +45,7 @@ declare const createAppRoutes: <TMetadata extends BaseMetadata, TContext>() => <
|
|
|
45
45
|
children: react.ReactNode;
|
|
46
46
|
}) => react_jsx_runtime.JSX.Element;
|
|
47
47
|
useAppRoutes: () => TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree> & RouteTree<TMetadata, TContext, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>>;
|
|
48
|
-
useCurrentRouteNode: <TPath extends RoutePathname<TMetadata, TContext, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>>>(pathname: TPath) => TPath extends "/" ? TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree> : TPath extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof TRouteTree ? `/${R}` extends infer T ? T extends `/${R}` ? T extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] : T extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] ? `/${R}` extends infer T_1 ? T_1 extends `/${R}` ? T_1 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] : T_1 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] ? `/${R}` extends infer T_2 ? T_2 extends `/${R}` ? T_2 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] : T_2 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] ? `/${R}` extends infer T_3 ? T_3 extends `/${R}` ? T_3 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] : T_3 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] ?
|
|
48
|
+
useCurrentRouteNode: <TPath extends RoutePathname<TMetadata, TContext, TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>>>(pathname: TPath) => TPath extends "/" ? TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree> : TPath extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof TRouteTree ? `/${R}` extends infer T ? T extends `/${R}` ? T extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] : T extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] ? `/${R}` extends infer T_1 ? T_1 extends `/${R}` ? T_1 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] : T_1 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] ? `/${R}` extends infer T_2 ? T_2 extends `/${R}` ? T_2 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] : T_2 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] ? `/${R}` extends infer T_3 ? T_3 extends `/${R}` ? T_3 extends "/" ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] : T_3 extends `/${infer Rest}` ? Rest extends `${infer K}/${infer R}` ? K extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] ? never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][K][Rest] : never : never : never : never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][K][Rest] : never : never : never : never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][K][Rest] : never : never : never : never : never : Rest extends keyof (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K] ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[K][Rest] : never : never : never : never : never : Rest extends keyof TRouteTree ? (TRouteTree & RouteTree<TMetadata, TContext, TRouteTree, TRouteTree>)[Rest] : never : never;
|
|
49
49
|
};
|
|
50
50
|
|
|
51
51
|
export { type TypedLinkProps, createAppRoutes };
|
package/dist/index.js
CHANGED
|
@@ -73,8 +73,6 @@ var createTypedLink = () => {
|
|
|
73
73
|
TypedLink.displayName = "TypedLink";
|
|
74
74
|
return TypedLink;
|
|
75
75
|
};
|
|
76
|
-
|
|
77
|
-
// src/index.tsx
|
|
78
76
|
var createAppRoutes = () => {
|
|
79
77
|
return (appRoutes) => {
|
|
80
78
|
const { _types, ...rest } = typedRouterCore.createAppRoutes()(appRoutes);
|
|
@@ -92,5 +90,11 @@ var createAppRoutes = () => {
|
|
|
92
90
|
};
|
|
93
91
|
|
|
94
92
|
exports.createAppRoutes = createAppRoutes;
|
|
93
|
+
Object.keys(typedRouterCore).forEach(function (k) {
|
|
94
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
95
|
+
enumerable: true,
|
|
96
|
+
get: function () { return typedRouterCore[k]; }
|
|
97
|
+
});
|
|
98
|
+
});
|
|
95
99
|
//# sourceMappingURL=index.js.map
|
|
96
100
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pathname.hooks.ts","../../core/src/object.utils.ts","../src/router.hooks.ts","../src/TypedLink.tsx","../src/index.tsx"],"names":["usePathname","useRouter","forwardRef","jsx","Link","createAppRoutesCore"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/pathname.hooks.ts","../../core/src/object.utils.ts","../src/router.hooks.ts","../src/TypedLink.tsx","../src/index.tsx"],"names":["usePathname","useRouter","forwardRef","jsx","Link","createAppRoutesCore"],"mappings":";;;;;;;;;;;;;AAEO,IAAM,sBAAsB,MAAyC;AAC1E,EAAA,OAAO,MAAM;AACX,IAAA,MAAM,WAAWA,sBAAA,EAAY;AAC7B,IAAA,OAAO,QAAA;AAAA,EACT,CAAA;AACF,CAAA;;;ACsBO,IAAM,gBAAgB,CAAC,KAAA,EAAoB,UAAgC,EAAE,mBAAA,EAAqB,MAAK,KAAc;AAC1H,EAAA,MAAM,SAAmB,EAAC;AAE1B,EAAA,MAAA,CAAO,OAAA,CAAQ,KAAK,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC9C,IAAA,IAAI,KAAA,KAAU,MAAA,IAAa,KAAA,KAAU,IAAA,EAAM;AACzC,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GAAa,mBAAmB,GAAG,CAAA;AAEzC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,IAAA,KAAS;AACtB,QAAA,IAAI,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,EAAM;AACvC,UAAA,MAAA,CAAO,IAAA,CAAK,GAAG,UAAU,CAAA,CAAA,EAAI,mBAAmB,MAAA,CAAO,IAAI,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,QACjE;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,UAAU,CAAA,CAAA,EAAI,mBAAmB,MAAA,CAAO,KAAK,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA,IAClE;AAAA,EACF,CAAC,CAAA;AAED,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA;AACnC,EAAA,OAAO,OAAA,CAAQ,mBAAA,GAAsB,CAAA,CAAA,EAAI,WAAW,CAAA,CAAA,GAAK,WAAA;AAC3D,CAAA;;;AC9CO,IAAM,oBAAoB,MAAyC;AACxE,EAAA,MAAM,gBAAA,GAAmB,CAAC,IAAA,EAAiB,KAAA,KAAwB;AACjE,IAAA,OAAO,IAAA,GAAO,cAAc,KAAA,IAAS,IAAI,EAAE,mBAAA,EAAqB,MAAM,CAAA;AAAA,EACxE,CAAA;AAEA,EAAA,OAAO,MAAM;AACX,IAAA,MAAM,SAASC,oBAAA,EAAU;AAEzB,IAAA,OAAO;AAAA,MACL,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,SAAS,MAAA,CAAO,OAAA;AAAA,MAChB,IAAA,EAAM,CAAC,IAAA,EAAiB,OAAA,KAA8B;AACpD,QAAA,OAAO,OAAO,IAAA,CAAK,gBAAA,CAAiB,MAAM,OAAA,EAAS,KAAK,GAAG,OAAO,CAAA;AAAA,MACpE,CAAA;AAAA,MACA,OAAA,EAAS,CAAC,IAAA,EAAiB,OAAA,KAA8B;AACvD,QAAA,OAAO,OAAO,OAAA,CAAQ,gBAAA,CAAiB,MAAM,OAAA,EAAS,KAAK,GAAG,OAAO,CAAA;AAAA,MACvE,CAAA;AAAA,MACA,QAAA,EAAU,CAAC,IAAA,EAAiB,OAAA,KAA8B;AACxD,QAAA,OAAO,OAAO,QAAA,CAAS,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,KAAK,CAAC,CAAA;AAAA,MAC/D;AAAA,KACF;AAAA,EACF,CAAA;AACF,CAAA;ACjBO,IAAM,kBAAkB,MAAyC;AACtE,EAAA,MAAM,SAAA,GAAYC,gBAAA,CAAiE,CAAC,KAAA,EAAO,GAAA,KAAQ;AACjG,IAAA,uBAAOC,cAAA,CAACC,qBAAA,EAAA,EAAK,GAAA,EAAW,GAAI,KAAA,EAAyB,CAAA;AAAA,EACvD,CAAC,CAAA;AAED,EAAA,SAAA,CAAU,WAAA,GAAc,WAAA;AAExB,EAAA,OAAO,SAAA;AACT,CAAA;ACbO,IAAM,kBAAkB,MAAgD;AAC7E,EAAA,OAAO,CAA2D,SAAA,KAAuE;AACvI,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,MAAK,GAAIC,+BAAA,GAA2C,SAAS,CAAA;AAGhF,IAAA,MAAM,YAAY,eAAA,EAA0B;AAC5C,IAAA,MAAM,iBAAiB,iBAAA,EAA4B;AACnD,IAAA,MAAM,mBAAmB,mBAAA,EAA8B;AAEvD,IAAA,OAAO;AAAA,MACL,GAAG,IAAA;AAAA,MACH,SAAA;AAAA,MACA,cAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF,CAAA;AACF","file":"index.js","sourcesContent":["import { usePathname } from 'next/navigation';\n\nexport const createTypedPathname = <TPathname extends string = string>() => {\n return () => {\n const pathname = usePathname();\n return pathname as TPathname;\n };\n};\n","import { Paths, PathValue } from './path.types';\n\nexport const getSafely = <TObject, TSplitter extends string, TPath extends string & Paths<TObject, TSplitter>>(\n splitter: TSplitter,\n obj: TObject,\n path: TPath,\n): PathValue<TObject, TPath, TSplitter> => {\n if (path === '' || path === splitter) return obj as PathValue<TObject, TPath, TSplitter>;\n\n const keys = (path as string).split(splitter);\n let value: unknown = obj;\n\n for (const key of keys) {\n if (typeof value === 'object' && value !== null && key in value) {\n value = (value as Record<string, unknown>)[key];\n } else {\n return undefined as PathValue<TObject, TPath, TSplitter>;\n }\n }\n\n return value as PathValue<TObject, TPath, TSplitter>;\n};\n\nexport type QueryValue = string | number | boolean | readonly (string | number | boolean)[];\nexport type QueryParams = Record<string, QueryValue>;\nexport type ToQueryStringOptions = {\n includeQuestionMark?: boolean;\n};\n\nexport const toQueryString = (query: QueryParams, options: ToQueryStringOptions = { includeQuestionMark: true }): string => {\n const params: string[] = [];\n\n Object.entries(query).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n\n const encodedKey = encodeURIComponent(key);\n\n if (Array.isArray(value)) {\n value.forEach((item) => {\n if (item !== undefined && item !== null) {\n params.push(`${encodedKey}=${encodeURIComponent(String(item))}`);\n }\n });\n } else {\n params.push(`${encodedKey}=${encodeURIComponent(String(value))}`);\n }\n });\n\n if (params.length === 0) {\n return '';\n }\n\n const queryString = params.join('&');\n return options.includeQuestionMark ? `?${queryString}` : queryString;\n};\n","import { useRouter } from 'next/navigation';\nimport { QueryParams, toQueryString } from 'packages/core/src/object.utils';\n\ntype NavigateOptions = {\n scroll?: boolean;\n query?: QueryParams;\n};\n\ntype PrefetchOptions = Pick<NavigateOptions, 'query'>;\n\nexport const createTypedRouter = <TPathname extends string = string>() => {\n const getHrefWithQuery = (href: TPathname, query?: QueryParams) => {\n return href + toQueryString(query || {}, { includeQuestionMark: true });\n };\n\n return () => {\n const router = useRouter();\n\n return {\n back: router.back,\n forward: router.forward,\n refresh: router.refresh,\n push: (href: TPathname, options?: NavigateOptions) => {\n return router.push(getHrefWithQuery(href, options?.query), options);\n },\n replace: (href: TPathname, options?: NavigateOptions) => {\n return router.replace(getHrefWithQuery(href, options?.query), options);\n },\n prefetch: (href: TPathname, options?: PrefetchOptions) => {\n return router.prefetch(getHrefWithQuery(href, options?.query));\n },\n };\n };\n};\n","import Link from 'next/link';\nimport type { ComponentProps, ComponentRef } from 'react';\nimport { forwardRef } from 'react';\n\ntype NextLinkProps = ComponentProps<typeof Link>;\n\nexport type TypedLinkProps<TPathname extends string = string> = Omit<NextLinkProps, 'href'> & {\n href:\n | TPathname\n | {\n pathname: TPathname;\n query?: Record<string, string | number | boolean | readonly (string | number | boolean)[]>;\n hash?: string;\n };\n};\n\nexport const createTypedLink = <TPathname extends string = string>() => {\n const TypedLink = forwardRef<ComponentRef<typeof Link>, TypedLinkProps<TPathname>>((props, ref) => {\n return <Link ref={ref} {...(props as NextLinkProps)} />;\n });\n\n TypedLink.displayName = 'TypedLink';\n\n return TypedLink;\n};\n","import {\n createAppRoutes as createAppRoutesCore,\n type BaseMetadata,\n type PartialRouteTree,\n type RoutePathname,\n type RouteTree,\n} from '@hyeonqyu/typed-router-core';\nimport { createTypedPathname } from 'packages/next/src/pathname.hooks';\nimport { createTypedRouter } from 'packages/next/src/router.hooks';\nimport { createTypedLink } from './TypedLink';\n\nexport const createAppRoutes = <TMetadata extends BaseMetadata, TContext>() => {\n return <TRouteTree extends PartialRouteTree<TMetadata, TContext>>(appRoutes: TRouteTree & RouteTree<TMetadata, TContext, TRouteTree>) => {\n const { _types, ...rest } = createAppRoutesCore<TMetadata, TContext>()(appRoutes);\n\n type Pathname = RoutePathname<TMetadata, TContext, TRouteTree>;\n const TypedLink = createTypedLink<Pathname>();\n const useTypedRouter = createTypedRouter<Pathname>();\n const useTypedPathname = createTypedPathname<Pathname>();\n\n return {\n ...rest,\n TypedLink,\n useTypedRouter,\n useTypedPathname,\n _types,\n };\n };\n};\n\nexport * from '@hyeonqyu/typed-router-core';\nexport type { TypedLinkProps } from './TypedLink';\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createAppRoutes as createAppRoutes$1 } from '@hyeonqyu/typed-router-core';
|
|
2
|
+
export * from '@hyeonqyu/typed-router-core';
|
|
2
3
|
import { usePathname, useRouter } from 'next/navigation';
|
|
3
4
|
import Link from 'next/link';
|
|
4
5
|
import { forwardRef } from 'react';
|
|
@@ -67,8 +68,6 @@ var createTypedLink = () => {
|
|
|
67
68
|
TypedLink.displayName = "TypedLink";
|
|
68
69
|
return TypedLink;
|
|
69
70
|
};
|
|
70
|
-
|
|
71
|
-
// src/index.tsx
|
|
72
71
|
var createAppRoutes = () => {
|
|
73
72
|
return (appRoutes) => {
|
|
74
73
|
const { _types, ...rest } = createAppRoutes$1()(appRoutes);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/pathname.hooks.ts","../../core/src/object.utils.ts","../src/router.hooks.ts","../src/TypedLink.tsx","../src/index.tsx"],"names":["createAppRoutesCore"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/pathname.hooks.ts","../../core/src/object.utils.ts","../src/router.hooks.ts","../src/TypedLink.tsx","../src/index.tsx"],"names":["createAppRoutesCore"],"mappings":"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","file":"index.mjs","sourcesContent":["import { usePathname } from 'next/navigation';\n\nexport const createTypedPathname = <TPathname extends string = string>() => {\n return () => {\n const pathname = usePathname();\n return pathname as TPathname;\n };\n};\n","import { Paths, PathValue } from './path.types';\n\nexport const getSafely = <TObject, TSplitter extends string, TPath extends string & Paths<TObject, TSplitter>>(\n splitter: TSplitter,\n obj: TObject,\n path: TPath,\n): PathValue<TObject, TPath, TSplitter> => {\n if (path === '' || path === splitter) return obj as PathValue<TObject, TPath, TSplitter>;\n\n const keys = (path as string).split(splitter);\n let value: unknown = obj;\n\n for (const key of keys) {\n if (typeof value === 'object' && value !== null && key in value) {\n value = (value as Record<string, unknown>)[key];\n } else {\n return undefined as PathValue<TObject, TPath, TSplitter>;\n }\n }\n\n return value as PathValue<TObject, TPath, TSplitter>;\n};\n\nexport type QueryValue = string | number | boolean | readonly (string | number | boolean)[];\nexport type QueryParams = Record<string, QueryValue>;\nexport type ToQueryStringOptions = {\n includeQuestionMark?: boolean;\n};\n\nexport const toQueryString = (query: QueryParams, options: ToQueryStringOptions = { includeQuestionMark: true }): string => {\n const params: string[] = [];\n\n Object.entries(query).forEach(([key, value]) => {\n if (value === undefined || value === null) {\n return;\n }\n\n const encodedKey = encodeURIComponent(key);\n\n if (Array.isArray(value)) {\n value.forEach((item) => {\n if (item !== undefined && item !== null) {\n params.push(`${encodedKey}=${encodeURIComponent(String(item))}`);\n }\n });\n } else {\n params.push(`${encodedKey}=${encodeURIComponent(String(value))}`);\n }\n });\n\n if (params.length === 0) {\n return '';\n }\n\n const queryString = params.join('&');\n return options.includeQuestionMark ? `?${queryString}` : queryString;\n};\n","import { useRouter } from 'next/navigation';\nimport { QueryParams, toQueryString } from 'packages/core/src/object.utils';\n\ntype NavigateOptions = {\n scroll?: boolean;\n query?: QueryParams;\n};\n\ntype PrefetchOptions = Pick<NavigateOptions, 'query'>;\n\nexport const createTypedRouter = <TPathname extends string = string>() => {\n const getHrefWithQuery = (href: TPathname, query?: QueryParams) => {\n return href + toQueryString(query || {}, { includeQuestionMark: true });\n };\n\n return () => {\n const router = useRouter();\n\n return {\n back: router.back,\n forward: router.forward,\n refresh: router.refresh,\n push: (href: TPathname, options?: NavigateOptions) => {\n return router.push(getHrefWithQuery(href, options?.query), options);\n },\n replace: (href: TPathname, options?: NavigateOptions) => {\n return router.replace(getHrefWithQuery(href, options?.query), options);\n },\n prefetch: (href: TPathname, options?: PrefetchOptions) => {\n return router.prefetch(getHrefWithQuery(href, options?.query));\n },\n };\n };\n};\n","import Link from 'next/link';\nimport type { ComponentProps, ComponentRef } from 'react';\nimport { forwardRef } from 'react';\n\ntype NextLinkProps = ComponentProps<typeof Link>;\n\nexport type TypedLinkProps<TPathname extends string = string> = Omit<NextLinkProps, 'href'> & {\n href:\n | TPathname\n | {\n pathname: TPathname;\n query?: Record<string, string | number | boolean | readonly (string | number | boolean)[]>;\n hash?: string;\n };\n};\n\nexport const createTypedLink = <TPathname extends string = string>() => {\n const TypedLink = forwardRef<ComponentRef<typeof Link>, TypedLinkProps<TPathname>>((props, ref) => {\n return <Link ref={ref} {...(props as NextLinkProps)} />;\n });\n\n TypedLink.displayName = 'TypedLink';\n\n return TypedLink;\n};\n","import {\n createAppRoutes as createAppRoutesCore,\n type BaseMetadata,\n type PartialRouteTree,\n type RoutePathname,\n type RouteTree,\n} from '@hyeonqyu/typed-router-core';\nimport { createTypedPathname } from 'packages/next/src/pathname.hooks';\nimport { createTypedRouter } from 'packages/next/src/router.hooks';\nimport { createTypedLink } from './TypedLink';\n\nexport const createAppRoutes = <TMetadata extends BaseMetadata, TContext>() => {\n return <TRouteTree extends PartialRouteTree<TMetadata, TContext>>(appRoutes: TRouteTree & RouteTree<TMetadata, TContext, TRouteTree>) => {\n const { _types, ...rest } = createAppRoutesCore<TMetadata, TContext>()(appRoutes);\n\n type Pathname = RoutePathname<TMetadata, TContext, TRouteTree>;\n const TypedLink = createTypedLink<Pathname>();\n const useTypedRouter = createTypedRouter<Pathname>();\n const useTypedPathname = createTypedPathname<Pathname>();\n\n return {\n ...rest,\n TypedLink,\n useTypedRouter,\n useTypedPathname,\n _types,\n };\n };\n};\n\nexport * from '@hyeonqyu/typed-router-core';\nexport type { TypedLinkProps } from './TypedLink';\n"]}
|