react-iten 0.0.2 → 0.4.2
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/README.md +103 -2
- package/dist/components/Link.cjs +21 -0
- package/dist/components/Link.d.cts +13 -0
- package/dist/components/Link.d.ts +13 -0
- package/dist/components/Link.mjs +21 -0
- package/dist/components/Navigate.cjs +15 -0
- package/dist/components/Navigate.d.cts +10 -0
- package/dist/components/Navigate.d.ts +10 -0
- package/dist/components/Navigate.mjs +15 -0
- package/dist/components/Route.cjs +22 -0
- package/dist/components/Route.d.cts +17 -0
- package/dist/components/Route.d.ts +17 -0
- package/dist/components/Route.mjs +22 -0
- package/dist/components/Switch.cjs +21 -0
- package/dist/components/Switch.d.cts +9 -0
- package/dist/components/Switch.d.ts +9 -0
- package/dist/components/Switch.mjs +21 -0
- package/dist/create-router.cjs +18 -0
- package/dist/create-router.d.cts +18 -0
- package/dist/create-router.d.ts +18 -0
- package/dist/create-router.mjs +18 -0
- package/dist/headless.cjs +83 -0
- package/dist/headless.d.cts +21 -0
- package/dist/headless.d.ts +21 -0
- package/dist/headless.mjs +40 -0
- package/dist/hooks.cjs +52 -0
- package/dist/hooks.d.cts +21 -0
- package/dist/hooks.d.ts +21 -0
- package/dist/hooks.mjs +52 -0
- package/dist/index.cjs +48 -0
- package/dist/index.d.cts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.mjs +4 -0
- package/dist/types.d.cts +19 -0
- package/dist/types.d.ts +19 -0
- package/dist/url.cjs +20 -0
- package/dist/url.d.cts +14 -0
- package/dist/url.d.ts +14 -0
- package/dist/url.mjs +19 -0
- package/dist/utils.cjs +44 -0
- package/dist/utils.d.cts +3 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.mjs +2 -0
- package/dist/zod.cjs +77 -0
- package/dist/zod.d.cts +48 -0
- package/dist/zod.d.ts +48 -0
- package/dist/zod.mjs +73 -0
- package/package.json +99 -5
- package/src/components/Link.tsx +36 -0
- package/src/components/Navigate.tsx +26 -0
- package/src/components/Route.tsx +53 -0
- package/src/components/Switch.tsx +30 -0
- package/src/create-router.ts +33 -0
- package/src/headless.ts +91 -0
- package/src/hooks.ts +74 -0
- package/src/index.ts +35 -0
- package/src/types.ts +47 -0
- package/src/url.ts +49 -0
- package/src/utils.ts +23 -0
- package/src/zod.ts +150 -0
- package/index.js +0 -1
package/dist/hooks.cjs
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
let react = require("react");
|
|
2
|
+
//#region src/hooks.ts
|
|
3
|
+
function makeHooks(store) {
|
|
4
|
+
function useRouterState() {
|
|
5
|
+
return (0, react.useSyncExternalStore)((listener) => store.subscribe({ listener }), store.getState, store.getState);
|
|
6
|
+
}
|
|
7
|
+
function useCurrentRoute() {
|
|
8
|
+
return useRouterState().route;
|
|
9
|
+
}
|
|
10
|
+
function useRoute({ name }) {
|
|
11
|
+
const route = useRouterState().route;
|
|
12
|
+
if (route?.name === name) return {
|
|
13
|
+
isActive: true,
|
|
14
|
+
params: route
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
isActive: false,
|
|
18
|
+
params: null
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function useNavigate() {
|
|
22
|
+
return store.navigate;
|
|
23
|
+
}
|
|
24
|
+
function useGoBack() {
|
|
25
|
+
return store.goBack;
|
|
26
|
+
}
|
|
27
|
+
function useIsNavigating() {
|
|
28
|
+
return useRouterState().isNavigating;
|
|
29
|
+
}
|
|
30
|
+
function useCanGoBack() {
|
|
31
|
+
return useRouterState().canGoBack;
|
|
32
|
+
}
|
|
33
|
+
function useRouteLoading({ name }) {
|
|
34
|
+
return useRouterState().pendingRoute?.name === name;
|
|
35
|
+
}
|
|
36
|
+
function useRouterError() {
|
|
37
|
+
return useRouterState().error;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
useRouterState,
|
|
41
|
+
useCurrentRoute,
|
|
42
|
+
useRoute,
|
|
43
|
+
useNavigate,
|
|
44
|
+
useGoBack,
|
|
45
|
+
useIsNavigating,
|
|
46
|
+
useCanGoBack,
|
|
47
|
+
useRouteLoading,
|
|
48
|
+
useRouterError
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.makeHooks = makeHooks;
|
package/dist/hooks.d.cts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { UseRouteResult } from "./types.cjs";
|
|
2
|
+
import { NavigateInput, RouteMapDef, RouteUnion, RouterError, RouterState } from "iten-core";
|
|
3
|
+
|
|
4
|
+
//#region src/hooks.d.ts
|
|
5
|
+
type HookBundle<M extends RouteMapDef> = {
|
|
6
|
+
useRouterState: () => RouterState<M>;
|
|
7
|
+
useCurrentRoute: () => RouteUnion<M> | null;
|
|
8
|
+
useRoute: <K extends keyof M>(input: {
|
|
9
|
+
name: K;
|
|
10
|
+
}) => UseRouteResult<M, K>;
|
|
11
|
+
useNavigate: () => (input: NavigateInput<M>) => Promise<void>;
|
|
12
|
+
useGoBack: () => () => void;
|
|
13
|
+
useIsNavigating: () => boolean;
|
|
14
|
+
useCanGoBack: () => boolean;
|
|
15
|
+
useRouteLoading: (input: {
|
|
16
|
+
name: keyof M;
|
|
17
|
+
}) => boolean;
|
|
18
|
+
useRouterError: () => RouterError | null;
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { HookBundle };
|
package/dist/hooks.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { UseRouteResult } from "./types.js";
|
|
2
|
+
import { NavigateInput, RouteMapDef, RouteUnion, RouterError, RouterState } from "iten-core";
|
|
3
|
+
|
|
4
|
+
//#region src/hooks.d.ts
|
|
5
|
+
type HookBundle<M extends RouteMapDef> = {
|
|
6
|
+
useRouterState: () => RouterState<M>;
|
|
7
|
+
useCurrentRoute: () => RouteUnion<M> | null;
|
|
8
|
+
useRoute: <K extends keyof M>(input: {
|
|
9
|
+
name: K;
|
|
10
|
+
}) => UseRouteResult<M, K>;
|
|
11
|
+
useNavigate: () => (input: NavigateInput<M>) => Promise<void>;
|
|
12
|
+
useGoBack: () => () => void;
|
|
13
|
+
useIsNavigating: () => boolean;
|
|
14
|
+
useCanGoBack: () => boolean;
|
|
15
|
+
useRouteLoading: (input: {
|
|
16
|
+
name: keyof M;
|
|
17
|
+
}) => boolean;
|
|
18
|
+
useRouterError: () => RouterError | null;
|
|
19
|
+
};
|
|
20
|
+
//#endregion
|
|
21
|
+
export { HookBundle };
|
package/dist/hooks.mjs
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useSyncExternalStore } from "react";
|
|
2
|
+
//#region src/hooks.ts
|
|
3
|
+
function makeHooks(store) {
|
|
4
|
+
function useRouterState() {
|
|
5
|
+
return useSyncExternalStore((listener) => store.subscribe({ listener }), store.getState, store.getState);
|
|
6
|
+
}
|
|
7
|
+
function useCurrentRoute() {
|
|
8
|
+
return useRouterState().route;
|
|
9
|
+
}
|
|
10
|
+
function useRoute({ name }) {
|
|
11
|
+
const route = useRouterState().route;
|
|
12
|
+
if (route?.name === name) return {
|
|
13
|
+
isActive: true,
|
|
14
|
+
params: route
|
|
15
|
+
};
|
|
16
|
+
return {
|
|
17
|
+
isActive: false,
|
|
18
|
+
params: null
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function useNavigate() {
|
|
22
|
+
return store.navigate;
|
|
23
|
+
}
|
|
24
|
+
function useGoBack() {
|
|
25
|
+
return store.goBack;
|
|
26
|
+
}
|
|
27
|
+
function useIsNavigating() {
|
|
28
|
+
return useRouterState().isNavigating;
|
|
29
|
+
}
|
|
30
|
+
function useCanGoBack() {
|
|
31
|
+
return useRouterState().canGoBack;
|
|
32
|
+
}
|
|
33
|
+
function useRouteLoading({ name }) {
|
|
34
|
+
return useRouterState().pendingRoute?.name === name;
|
|
35
|
+
}
|
|
36
|
+
function useRouterError() {
|
|
37
|
+
return useRouterState().error;
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
useRouterState,
|
|
41
|
+
useCurrentRoute,
|
|
42
|
+
useRoute,
|
|
43
|
+
useNavigate,
|
|
44
|
+
useGoBack,
|
|
45
|
+
useIsNavigating,
|
|
46
|
+
useCanGoBack,
|
|
47
|
+
useRouteLoading,
|
|
48
|
+
useRouterError
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
export { makeHooks };
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_headless = require("./headless.cjs");
|
|
3
|
+
const require_create_router = require("./create-router.cjs");
|
|
4
|
+
let iten_core = require("iten-core");
|
|
5
|
+
exports.createHeadlessRouter = require_headless.createHeadlessRouter;
|
|
6
|
+
Object.defineProperty(exports, "createRoute", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function() {
|
|
9
|
+
return iten_core.createRoute;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.createRouter = require_create_router.createRouter;
|
|
13
|
+
Object.defineProperty(exports, "defineRouteConfig", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function() {
|
|
16
|
+
return iten_core.defineRouteConfig;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, "defineRoutes", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function() {
|
|
22
|
+
return iten_core.defineRoutes;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(exports, "isRoute", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function() {
|
|
28
|
+
return iten_core.isRoute;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, "isRouteName", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function() {
|
|
34
|
+
return iten_core.isRouteName;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(exports, "matchRoute", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function() {
|
|
40
|
+
return iten_core.matchRoute;
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, "route", {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function() {
|
|
46
|
+
return iten_core.route;
|
|
47
|
+
}
|
|
48
|
+
});
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InferRoutes, NoParams, QueryClientLike, ReactRouterConfig, RouteConfigMap, RouteDefinition, RouteDefinitions, RouteMap, RouteMapDef, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion, RouterError, RouterState, UseRouteResult } from "./types.cjs";
|
|
2
|
+
import { HeadlessReactRouter, ReactRouterStore, createHeadlessRouter } from "./headless.cjs";
|
|
3
|
+
import { LinkProps } from "./components/Link.cjs";
|
|
4
|
+
import { NavigateProps } from "./components/Navigate.cjs";
|
|
5
|
+
import { RouteProps } from "./components/Route.cjs";
|
|
6
|
+
import { ReactRouter, createRouter } from "./create-router.cjs";
|
|
7
|
+
import { createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core";
|
|
8
|
+
export { type HeadlessReactRouter, type InferRoutes, type LinkProps, type NavigateProps, type NoParams, type QueryClientLike, type ReactRouter, type ReactRouterConfig, type ReactRouterStore, type RouteConfigMap, type RouteDefinition, type RouteDefinitions, type RouteMap, type RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteProps, type RouteUnion, type RouterError, type RouterState, type UseRouteResult, createHeadlessRouter, createRoute, createRouter, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { InferRoutes, NoParams, QueryClientLike, ReactRouterConfig, RouteConfigMap, RouteDefinition, RouteDefinitions, RouteMap, RouteMapDef, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion, RouterError, RouterState, UseRouteResult } from "./types.js";
|
|
2
|
+
import { HeadlessReactRouter, ReactRouterStore, createHeadlessRouter } from "./headless.js";
|
|
3
|
+
import { LinkProps } from "./components/Link.js";
|
|
4
|
+
import { NavigateProps } from "./components/Navigate.js";
|
|
5
|
+
import { RouteProps } from "./components/Route.js";
|
|
6
|
+
import { ReactRouter, createRouter } from "./create-router.js";
|
|
7
|
+
import { createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core";
|
|
8
|
+
export { type HeadlessReactRouter, type InferRoutes, type LinkProps, type NavigateProps, type NoParams, type QueryClientLike, type ReactRouter, type ReactRouterConfig, type ReactRouterStore, type RouteConfigMap, type RouteDefinition, type RouteDefinitions, type RouteMap, type RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteProps, type RouteUnion, type RouterError, type RouterState, type UseRouteResult, createHeadlessRouter, createRoute, createRouter, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createHeadlessRouter } from "./headless.mjs";
|
|
2
|
+
import { createRouter } from "./create-router.mjs";
|
|
3
|
+
import { createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core";
|
|
4
|
+
export { createHeadlessRouter, createRoute, createRouter, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route };
|
package/dist/types.d.cts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InferRoutes, NoParams, QueryClientLike, RouteConfigMap, RouteDefinition, RouteDefinitions, RouteMap as RouteMap$1, RouteMapDef as RouteMapDef$1, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion as RouteUnion$1, RouterError as RouterError$1, RouterState as RouterState$1 } from "iten-core";
|
|
2
|
+
|
|
3
|
+
//#region src/types.d.ts
|
|
4
|
+
type ReactRouterConfig<M extends RouteMapDef$1, Ctx = unknown> = {
|
|
5
|
+
initial: RouteUnion$1<M> | null;
|
|
6
|
+
routeConfig?: RouteConfigMap<M, Ctx> | undefined;
|
|
7
|
+
maxHistoryLength?: number | undefined;
|
|
8
|
+
context?: Ctx | (() => Ctx) | undefined;
|
|
9
|
+
queryClient?: QueryClientLike | null | undefined;
|
|
10
|
+
};
|
|
11
|
+
type UseRouteResult<M extends RouteMapDef$1, K extends keyof M> = {
|
|
12
|
+
isActive: true;
|
|
13
|
+
params: M[K];
|
|
14
|
+
} | {
|
|
15
|
+
isActive: false;
|
|
16
|
+
params: null;
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { type InferRoutes, type NoParams, type QueryClientLike, ReactRouterConfig, type RouteConfigMap, type RouteDefinition, type RouteDefinitions, type RouteMap$1 as RouteMap, type RouteMapDef$1 as RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion$1 as RouteUnion, type RouterError$1 as RouterError, type RouterState$1 as RouterState, UseRouteResult };
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InferRoutes, NoParams, QueryClientLike, RouteConfigMap, RouteDefinition, RouteDefinitions, RouteMap as RouteMap$1, RouteMapDef as RouteMapDef$1, RouteMatcher, RouteName, RouteOf, RouteParams, RouteUnion as RouteUnion$1, RouterError as RouterError$1, RouterState as RouterState$1 } from "iten-core";
|
|
2
|
+
|
|
3
|
+
//#region src/types.d.ts
|
|
4
|
+
type ReactRouterConfig<M extends RouteMapDef$1, Ctx = unknown> = {
|
|
5
|
+
initial: RouteUnion$1<M> | null;
|
|
6
|
+
routeConfig?: RouteConfigMap<M, Ctx> | undefined;
|
|
7
|
+
maxHistoryLength?: number | undefined;
|
|
8
|
+
context?: Ctx | (() => Ctx) | undefined;
|
|
9
|
+
queryClient?: QueryClientLike | null | undefined;
|
|
10
|
+
};
|
|
11
|
+
type UseRouteResult<M extends RouteMapDef$1, K extends keyof M> = {
|
|
12
|
+
isActive: true;
|
|
13
|
+
params: M[K];
|
|
14
|
+
} | {
|
|
15
|
+
isActive: false;
|
|
16
|
+
params: null;
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { type InferRoutes, type NoParams, type QueryClientLike, ReactRouterConfig, type RouteConfigMap, type RouteDefinition, type RouteDefinitions, type RouteMap$1 as RouteMap, type RouteMapDef$1 as RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion$1 as RouteUnion, type RouterError$1 as RouterError, type RouterState$1 as RouterState, UseRouteResult };
|
package/dist/url.cjs
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let iten_core_url = require("iten-core/url");
|
|
3
|
+
//#region src/url.ts
|
|
4
|
+
function createUrlSync({ router, ...input }) {
|
|
5
|
+
const coreLike = {
|
|
6
|
+
getState: () => router.store.getState(),
|
|
7
|
+
navigate: (navigateInput) => router.store.navigate(navigateInput),
|
|
8
|
+
goBack: () => router.store.goBack(),
|
|
9
|
+
subscribe: ({ listener }) => router.store.subscribe({ listener: () => {
|
|
10
|
+
listener(router.store.getState());
|
|
11
|
+
} }),
|
|
12
|
+
dispose: () => {}
|
|
13
|
+
};
|
|
14
|
+
return (0, iten_core_url.createUrlSync)({
|
|
15
|
+
...input,
|
|
16
|
+
router: coreLike
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
exports.createUrlSync = createUrlSync;
|
package/dist/url.d.cts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HeadlessReactRouter } from "./headless.cjs";
|
|
2
|
+
import { RouteMapDef } from "iten-core";
|
|
3
|
+
import { CreateUrlSyncInput as CreateUrlSyncInput$1, FormatUrlInput, ParseUrlInput, UrlHydrateInput, UrlParseErrorInput, UrlStartInput, UrlSubscribeInput, UrlSync, UrlSync as UrlSync$1, UrlWriteInput, UrlWriteMode } from "iten-core/url";
|
|
4
|
+
|
|
5
|
+
//#region src/url.d.ts
|
|
6
|
+
type CreateUrlSyncInput<M extends RouteMapDef> = Omit<CreateUrlSyncInput$1<M>, "router"> & {
|
|
7
|
+
router: HeadlessReactRouter<M>;
|
|
8
|
+
};
|
|
9
|
+
declare function createUrlSync<M extends RouteMapDef>({
|
|
10
|
+
router,
|
|
11
|
+
...input
|
|
12
|
+
}: CreateUrlSyncInput<M>): UrlSync$1<M>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { CreateUrlSyncInput, type FormatUrlInput, type ParseUrlInput, type UrlHydrateInput, type UrlParseErrorInput, type UrlStartInput, type UrlSubscribeInput, type UrlSync, type UrlWriteInput, type UrlWriteMode, createUrlSync };
|
package/dist/url.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { HeadlessReactRouter } from "./headless.js";
|
|
2
|
+
import { RouteMapDef } from "iten-core";
|
|
3
|
+
import { CreateUrlSyncInput as CreateUrlSyncInput$1, FormatUrlInput, ParseUrlInput, UrlHydrateInput, UrlParseErrorInput, UrlStartInput, UrlSubscribeInput, UrlSync, UrlSync as UrlSync$1, UrlWriteInput, UrlWriteMode } from "iten-core/url";
|
|
4
|
+
|
|
5
|
+
//#region src/url.d.ts
|
|
6
|
+
type CreateUrlSyncInput<M extends RouteMapDef> = Omit<CreateUrlSyncInput$1<M>, "router"> & {
|
|
7
|
+
router: HeadlessReactRouter<M>;
|
|
8
|
+
};
|
|
9
|
+
declare function createUrlSync<M extends RouteMapDef>({
|
|
10
|
+
router,
|
|
11
|
+
...input
|
|
12
|
+
}: CreateUrlSyncInput<M>): UrlSync$1<M>;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { CreateUrlSyncInput, type FormatUrlInput, type ParseUrlInput, type UrlHydrateInput, type UrlParseErrorInput, type UrlStartInput, type UrlSubscribeInput, type UrlSync, type UrlWriteInput, type UrlWriteMode, createUrlSync };
|
package/dist/url.mjs
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { createUrlSync as createUrlSync$1 } from "iten-core/url";
|
|
2
|
+
//#region src/url.ts
|
|
3
|
+
function createUrlSync({ router, ...input }) {
|
|
4
|
+
const coreLike = {
|
|
5
|
+
getState: () => router.store.getState(),
|
|
6
|
+
navigate: (navigateInput) => router.store.navigate(navigateInput),
|
|
7
|
+
goBack: () => router.store.goBack(),
|
|
8
|
+
subscribe: ({ listener }) => router.store.subscribe({ listener: () => {
|
|
9
|
+
listener(router.store.getState());
|
|
10
|
+
} }),
|
|
11
|
+
dispose: () => {}
|
|
12
|
+
};
|
|
13
|
+
return createUrlSync$1({
|
|
14
|
+
...input,
|
|
15
|
+
router: coreLike
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { createUrlSync };
|
package/dist/utils.cjs
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let iten_core_utils = require("iten-core/utils");
|
|
3
|
+
Object.defineProperty(exports, "createRoute", {
|
|
4
|
+
enumerable: true,
|
|
5
|
+
get: function() {
|
|
6
|
+
return iten_core_utils.createRoute;
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
Object.defineProperty(exports, "defineRouteConfig", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function() {
|
|
12
|
+
return iten_core_utils.defineRouteConfig;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, "defineRoutes", {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function() {
|
|
18
|
+
return iten_core_utils.defineRoutes;
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
Object.defineProperty(exports, "isRoute", {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function() {
|
|
24
|
+
return iten_core_utils.isRoute;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(exports, "isRouteName", {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function() {
|
|
30
|
+
return iten_core_utils.isRouteName;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
Object.defineProperty(exports, "matchRoute", {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
get: function() {
|
|
36
|
+
return iten_core_utils.matchRoute;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(exports, "route", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function() {
|
|
42
|
+
return iten_core_utils.route;
|
|
43
|
+
}
|
|
44
|
+
});
|
package/dist/utils.d.cts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InferRoutes, NoParams, RouteConfigMap, RouteMap, RouteMapDef, RouteUnion } from "iten-core";
|
|
2
|
+
import { RouteMatcher, RouteName, RouteOf, RouteParams, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core/utils";
|
|
3
|
+
export { type InferRoutes, type NoParams, type RouteConfigMap, type RouteMap, type RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route };
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InferRoutes, NoParams, RouteConfigMap, RouteMap, RouteMapDef, RouteUnion } from "iten-core";
|
|
2
|
+
import { RouteMatcher, RouteName, RouteOf, RouteParams, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route } from "iten-core/utils";
|
|
3
|
+
export { type InferRoutes, type NoParams, type RouteConfigMap, type RouteMap, type RouteMapDef, type RouteMatcher, type RouteName, type RouteOf, type RouteParams, type RouteUnion, createRoute, defineRouteConfig, defineRoutes, isRoute, isRouteName, matchRoute, route };
|
package/dist/utils.mjs
ADDED
package/dist/zod.cjs
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
let zod = require("zod");
|
|
3
|
+
//#region src/zod.ts
|
|
4
|
+
function hasOwnName({ value }) {
|
|
5
|
+
return typeof value === "object" && value !== null && Object.hasOwn(value, "name");
|
|
6
|
+
}
|
|
7
|
+
function splitInput({ value }) {
|
|
8
|
+
if (typeof value !== "object" || value === null || !Object.hasOwn(value, "name")) return null;
|
|
9
|
+
const { name, ...params } = value;
|
|
10
|
+
return {
|
|
11
|
+
name,
|
|
12
|
+
params
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function getSchema({ schemas, name }) {
|
|
16
|
+
if (typeof name !== "string" || !Object.hasOwn(schemas, name)) return null;
|
|
17
|
+
const routeName = name;
|
|
18
|
+
return {
|
|
19
|
+
name: routeName,
|
|
20
|
+
schema: schemas[routeName]
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function defineZodRoutes(schemas) {
|
|
24
|
+
return schemas;
|
|
25
|
+
}
|
|
26
|
+
function zodNoParams() {
|
|
27
|
+
return zod.z.object({}).strict().default({});
|
|
28
|
+
}
|
|
29
|
+
function createZodRoute(schemas) {
|
|
30
|
+
return (({ name, input }) => {
|
|
31
|
+
const schema = schemas[name];
|
|
32
|
+
if (!schema) throw new TypeError(`[iten] Unknown route name: ${String(name)}`);
|
|
33
|
+
if (hasOwnName({ value: input })) throw new TypeError("[iten] Zod route params must not include a name field");
|
|
34
|
+
const params = schema.parse(input ?? {});
|
|
35
|
+
if (hasOwnName({ value: params })) throw new TypeError("[iten] Zod route params must not include a name field");
|
|
36
|
+
return {
|
|
37
|
+
name,
|
|
38
|
+
...params
|
|
39
|
+
};
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
function parseZodRoute({ schemas, value }) {
|
|
43
|
+
const input = splitInput({ value });
|
|
44
|
+
if (!input) return {
|
|
45
|
+
success: false,
|
|
46
|
+
error: /* @__PURE__ */ new TypeError("[iten] Expected a route object with a name field")
|
|
47
|
+
};
|
|
48
|
+
const resolved = getSchema({
|
|
49
|
+
schemas,
|
|
50
|
+
name: input.name
|
|
51
|
+
});
|
|
52
|
+
if (!resolved) return {
|
|
53
|
+
success: false,
|
|
54
|
+
error: /* @__PURE__ */ new TypeError(`[iten] Unknown route name: ${String(input.name)}`)
|
|
55
|
+
};
|
|
56
|
+
const result = resolved.schema.safeParse(input.params);
|
|
57
|
+
if (!result.success) return {
|
|
58
|
+
success: false,
|
|
59
|
+
error: result.error
|
|
60
|
+
};
|
|
61
|
+
if (hasOwnName({ value: result.data })) return {
|
|
62
|
+
success: false,
|
|
63
|
+
error: /* @__PURE__ */ new TypeError("[iten] Zod route params must not include a name field")
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
success: true,
|
|
67
|
+
route: {
|
|
68
|
+
name: resolved.name,
|
|
69
|
+
...result.data
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
exports.createZodRoute = createZodRoute;
|
|
75
|
+
exports.defineZodRoutes = defineZodRoutes;
|
|
76
|
+
exports.parseZodRoute = parseZodRoute;
|
|
77
|
+
exports.zodNoParams = zodNoParams;
|
package/dist/zod.d.cts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { RouteMap, RouteUnion } from "iten-core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
|
|
4
|
+
//#region src/zod.d.ts
|
|
5
|
+
type ObjectParams = Record<string, unknown> & {
|
|
6
|
+
name?: never;
|
|
7
|
+
};
|
|
8
|
+
declare const noParamsBrand: unique symbol;
|
|
9
|
+
type ZodNoParamsSchema = z.ZodDefault<z.ZodObject<Record<string, never>>> & {
|
|
10
|
+
readonly [noParamsBrand]: true;
|
|
11
|
+
};
|
|
12
|
+
type ZodRouteSchemas = Record<string, z.ZodType<ObjectParams, unknown>>;
|
|
13
|
+
type ZodRouteMap<Schemas extends ZodRouteSchemas> = RouteMap<{ [K in Extract<keyof Schemas, string>]: z.output<Schemas[K]> }>;
|
|
14
|
+
type ZodRouteUnion<Schemas extends ZodRouteSchemas> = RouteUnion<ZodRouteMap<Schemas>>;
|
|
15
|
+
type EmptySchemaKeys<Schemas extends ZodRouteSchemas> = { [K in keyof Schemas]: Schemas[K] extends ZodNoParamsSchema ? K : never }[keyof Schemas];
|
|
16
|
+
type ZodRouteFactory<Schemas extends ZodRouteSchemas> = {
|
|
17
|
+
<K extends Extract<EmptySchemaKeys<Schemas>, string>>(input: {
|
|
18
|
+
name: K;
|
|
19
|
+
input?: never;
|
|
20
|
+
}): Extract<ZodRouteUnion<Schemas>, {
|
|
21
|
+
name: K;
|
|
22
|
+
}>;
|
|
23
|
+
<K extends Exclude<Extract<keyof Schemas, string>, Extract<EmptySchemaKeys<Schemas>, string>>>(input: {
|
|
24
|
+
name: K;
|
|
25
|
+
input: z.input<Schemas[K]>;
|
|
26
|
+
}): Extract<ZodRouteUnion<Schemas>, {
|
|
27
|
+
name: K;
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
type ZodRouteParseResult<Schemas extends ZodRouteSchemas> = {
|
|
31
|
+
success: true;
|
|
32
|
+
route: ZodRouteUnion<Schemas>;
|
|
33
|
+
} | {
|
|
34
|
+
success: false;
|
|
35
|
+
error: unknown;
|
|
36
|
+
};
|
|
37
|
+
declare function defineZodRoutes<const Schemas extends ZodRouteSchemas>(schemas: Schemas): Schemas;
|
|
38
|
+
declare function zodNoParams(): ZodNoParamsSchema;
|
|
39
|
+
declare function createZodRoute<const Schemas extends ZodRouteSchemas>(schemas: Schemas): ZodRouteFactory<Schemas>;
|
|
40
|
+
declare function parseZodRoute<const Schemas extends ZodRouteSchemas>({
|
|
41
|
+
schemas,
|
|
42
|
+
value
|
|
43
|
+
}: {
|
|
44
|
+
schemas: Schemas;
|
|
45
|
+
value: unknown;
|
|
46
|
+
}): ZodRouteParseResult<Schemas>;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { ZodRouteFactory, ZodRouteMap, ZodRouteParseResult, ZodRouteSchemas, ZodRouteUnion, createZodRoute, defineZodRoutes, parseZodRoute, zodNoParams };
|
package/dist/zod.d.ts
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { RouteMap, RouteUnion } from "iten-core";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
|
|
4
|
+
//#region src/zod.d.ts
|
|
5
|
+
type ObjectParams = Record<string, unknown> & {
|
|
6
|
+
name?: never;
|
|
7
|
+
};
|
|
8
|
+
declare const noParamsBrand: unique symbol;
|
|
9
|
+
type ZodNoParamsSchema = z.ZodDefault<z.ZodObject<Record<string, never>>> & {
|
|
10
|
+
readonly [noParamsBrand]: true;
|
|
11
|
+
};
|
|
12
|
+
type ZodRouteSchemas = Record<string, z.ZodType<ObjectParams, unknown>>;
|
|
13
|
+
type ZodRouteMap<Schemas extends ZodRouteSchemas> = RouteMap<{ [K in Extract<keyof Schemas, string>]: z.output<Schemas[K]> }>;
|
|
14
|
+
type ZodRouteUnion<Schemas extends ZodRouteSchemas> = RouteUnion<ZodRouteMap<Schemas>>;
|
|
15
|
+
type EmptySchemaKeys<Schemas extends ZodRouteSchemas> = { [K in keyof Schemas]: Schemas[K] extends ZodNoParamsSchema ? K : never }[keyof Schemas];
|
|
16
|
+
type ZodRouteFactory<Schemas extends ZodRouteSchemas> = {
|
|
17
|
+
<K extends Extract<EmptySchemaKeys<Schemas>, string>>(input: {
|
|
18
|
+
name: K;
|
|
19
|
+
input?: never;
|
|
20
|
+
}): Extract<ZodRouteUnion<Schemas>, {
|
|
21
|
+
name: K;
|
|
22
|
+
}>;
|
|
23
|
+
<K extends Exclude<Extract<keyof Schemas, string>, Extract<EmptySchemaKeys<Schemas>, string>>>(input: {
|
|
24
|
+
name: K;
|
|
25
|
+
input: z.input<Schemas[K]>;
|
|
26
|
+
}): Extract<ZodRouteUnion<Schemas>, {
|
|
27
|
+
name: K;
|
|
28
|
+
}>;
|
|
29
|
+
};
|
|
30
|
+
type ZodRouteParseResult<Schemas extends ZodRouteSchemas> = {
|
|
31
|
+
success: true;
|
|
32
|
+
route: ZodRouteUnion<Schemas>;
|
|
33
|
+
} | {
|
|
34
|
+
success: false;
|
|
35
|
+
error: unknown;
|
|
36
|
+
};
|
|
37
|
+
declare function defineZodRoutes<const Schemas extends ZodRouteSchemas>(schemas: Schemas): Schemas;
|
|
38
|
+
declare function zodNoParams(): ZodNoParamsSchema;
|
|
39
|
+
declare function createZodRoute<const Schemas extends ZodRouteSchemas>(schemas: Schemas): ZodRouteFactory<Schemas>;
|
|
40
|
+
declare function parseZodRoute<const Schemas extends ZodRouteSchemas>({
|
|
41
|
+
schemas,
|
|
42
|
+
value
|
|
43
|
+
}: {
|
|
44
|
+
schemas: Schemas;
|
|
45
|
+
value: unknown;
|
|
46
|
+
}): ZodRouteParseResult<Schemas>;
|
|
47
|
+
//#endregion
|
|
48
|
+
export { ZodRouteFactory, ZodRouteMap, ZodRouteParseResult, ZodRouteSchemas, ZodRouteUnion, createZodRoute, defineZodRoutes, parseZodRoute, zodNoParams };
|
package/dist/zod.mjs
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
//#region src/zod.ts
|
|
3
|
+
function hasOwnName({ value }) {
|
|
4
|
+
return typeof value === "object" && value !== null && Object.hasOwn(value, "name");
|
|
5
|
+
}
|
|
6
|
+
function splitInput({ value }) {
|
|
7
|
+
if (typeof value !== "object" || value === null || !Object.hasOwn(value, "name")) return null;
|
|
8
|
+
const { name, ...params } = value;
|
|
9
|
+
return {
|
|
10
|
+
name,
|
|
11
|
+
params
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function getSchema({ schemas, name }) {
|
|
15
|
+
if (typeof name !== "string" || !Object.hasOwn(schemas, name)) return null;
|
|
16
|
+
const routeName = name;
|
|
17
|
+
return {
|
|
18
|
+
name: routeName,
|
|
19
|
+
schema: schemas[routeName]
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function defineZodRoutes(schemas) {
|
|
23
|
+
return schemas;
|
|
24
|
+
}
|
|
25
|
+
function zodNoParams() {
|
|
26
|
+
return z.object({}).strict().default({});
|
|
27
|
+
}
|
|
28
|
+
function createZodRoute(schemas) {
|
|
29
|
+
return (({ name, input }) => {
|
|
30
|
+
const schema = schemas[name];
|
|
31
|
+
if (!schema) throw new TypeError(`[iten] Unknown route name: ${String(name)}`);
|
|
32
|
+
if (hasOwnName({ value: input })) throw new TypeError("[iten] Zod route params must not include a name field");
|
|
33
|
+
const params = schema.parse(input ?? {});
|
|
34
|
+
if (hasOwnName({ value: params })) throw new TypeError("[iten] Zod route params must not include a name field");
|
|
35
|
+
return {
|
|
36
|
+
name,
|
|
37
|
+
...params
|
|
38
|
+
};
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function parseZodRoute({ schemas, value }) {
|
|
42
|
+
const input = splitInput({ value });
|
|
43
|
+
if (!input) return {
|
|
44
|
+
success: false,
|
|
45
|
+
error: /* @__PURE__ */ new TypeError("[iten] Expected a route object with a name field")
|
|
46
|
+
};
|
|
47
|
+
const resolved = getSchema({
|
|
48
|
+
schemas,
|
|
49
|
+
name: input.name
|
|
50
|
+
});
|
|
51
|
+
if (!resolved) return {
|
|
52
|
+
success: false,
|
|
53
|
+
error: /* @__PURE__ */ new TypeError(`[iten] Unknown route name: ${String(input.name)}`)
|
|
54
|
+
};
|
|
55
|
+
const result = resolved.schema.safeParse(input.params);
|
|
56
|
+
if (!result.success) return {
|
|
57
|
+
success: false,
|
|
58
|
+
error: result.error
|
|
59
|
+
};
|
|
60
|
+
if (hasOwnName({ value: result.data })) return {
|
|
61
|
+
success: false,
|
|
62
|
+
error: /* @__PURE__ */ new TypeError("[iten] Zod route params must not include a name field")
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
success: true,
|
|
66
|
+
route: {
|
|
67
|
+
name: resolved.name,
|
|
68
|
+
...result.data
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
export { createZodRoute, defineZodRoutes, parseZodRoute, zodNoParams };
|