@cedarjs/router 7.0.1-next.467 → 7.1.0-rc.34
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/Route.d.ts +3 -4
- package/dist/Route.d.ts.map +1 -1
- package/dist/Set.d.ts +30 -46
- package/dist/Set.d.ts.map +1 -1
- package/dist/Set.js +2 -8
- package/dist/analyzeRoutes.d.ts +5 -13
- package/dist/analyzeRoutes.d.ts.map +1 -1
- package/dist/analyzeRoutes.js +9 -29
- package/dist/page.d.ts +1 -1
- package/dist/page.d.ts.map +1 -1
- package/dist/react-util.d.ts.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +8 -11
- package/dist/rsc/RscRoutes.d.ts +1 -1
- package/dist/rsc/RscRoutes.d.ts.map +1 -1
- package/dist/rsc/ServerRouter.d.ts.map +1 -1
- package/dist/rsc/ServerRouter.js +8 -11
- package/dist/skipNav.d.ts +2 -2
- package/dist/skipNav.d.ts.map +1 -1
- package/package.json +16 -16
package/dist/Route.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import type { ReactElement } from 'react';
|
|
3
2
|
import type { PageType } from './page.js';
|
|
4
3
|
export type RenderMode = 'stream' | 'html';
|
|
@@ -27,7 +26,7 @@ export type InternalRouteProps = Partial<RouteProps & RedirectRouteProps & NotFo
|
|
|
27
26
|
* it is actually never rendered. All the page loading logic happens in active-route-loader
|
|
28
27
|
* and all the validation happens within utility functions called from the Router
|
|
29
28
|
*/
|
|
30
|
-
export declare function Route(props: RouteProps):
|
|
31
|
-
export declare function Route(props: RedirectRouteProps):
|
|
32
|
-
export declare function Route(props: NotFoundRouteProps):
|
|
29
|
+
export declare function Route(props: RouteProps): JSX.Element;
|
|
30
|
+
export declare function Route(props: RedirectRouteProps): JSX.Element;
|
|
31
|
+
export declare function Route(props: NotFoundRouteProps): JSX.Element;
|
|
33
32
|
//# sourceMappingURL=Route.d.ts.map
|
package/dist/Route.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../src/Route.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Route.d.ts","sourceRoot":"","sources":["../src/Route.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE1C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,QAAQ,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAA;CAC7C;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,UAAU,GAAG,kBAAkB,GAAG,kBAAkB,CACrD,CAAA;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,CAAC,OAAO,CAAA;AACrD,wBAAgB,KAAK,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAA;AAC7D,wBAAgB,KAAK,CAAC,KAAK,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAA"}
|
package/dist/Set.d.ts
CHANGED
|
@@ -1,35 +1,29 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReactElement, ReactNode } from 'react';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
/**
|
|
4
|
-
* The props
|
|
5
|
-
* routes as `children
|
|
6
|
-
*/
|
|
7
|
-
export interface WrapperProps {
|
|
8
|
-
children: ReactNode;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* A component in a `<Set wrap>` prop, like a layout. The router renders it
|
|
12
|
-
* with {@link WrapperProps}, so it can't have any other required props.
|
|
13
|
-
* Optional props are fine.
|
|
4
|
+
* The props of a layout or other component in a `<Set wrap>` prop that only
|
|
5
|
+
* needs the wrapped routes, which it gets as `children`:
|
|
14
6
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* function PostsScaffoldLayout({ children }: WrapperProps) {
|
|
19
|
-
* return <ScaffoldLayout title="Posts" titleTo="posts">{children}</ScaffoldLayout>
|
|
7
|
+
* function MainLayout({ children }: WrapperProps) {
|
|
8
|
+
* return <main>{children}</main>
|
|
20
9
|
* }
|
|
21
10
|
*
|
|
22
|
-
* <Set wrap={
|
|
11
|
+
* <Set wrap={MainLayout}>
|
|
23
12
|
*/
|
|
24
|
-
export
|
|
25
|
-
|
|
13
|
+
export interface WrapperProps {
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export type WrapperType<WTProps> = (props: Omit<WTProps, 'wrap' | 'children'> & {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
}) => ReactElement | null;
|
|
19
|
+
type SetProps<P> = P & {
|
|
26
20
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* <Set wrap={
|
|
21
|
+
* P is the interface for the props that are forwarded to the wrapper
|
|
22
|
+
* components. TypeScript will most likely infer this for you, but if you
|
|
23
|
+
* need to you can specify it yourself in your JSX like so:
|
|
24
|
+
* <Set<{theme: string}> wrap={ThemableLayout} theme="dark">
|
|
31
25
|
*/
|
|
32
|
-
wrap?: WrapperType |
|
|
26
|
+
wrap?: WrapperType<P> | WrapperType<P>[];
|
|
33
27
|
/**
|
|
34
28
|
*`Routes` nested in a `<Set>` with `private` specified require
|
|
35
29
|
* authentication. When a user is not authenticated and attempts to visit
|
|
@@ -55,22 +49,20 @@ interface SetProps {
|
|
|
55
49
|
/** Loading state for auth to distinguish with whileLoading */
|
|
56
50
|
whileLoadingAuth?: () => ReactElement | null;
|
|
57
51
|
whileLoadingPage?: () => ReactElement | null;
|
|
58
|
-
}
|
|
52
|
+
};
|
|
59
53
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* <Set wrap={
|
|
64
|
-
* <Route path="/" page={HomePage} name="home" />
|
|
65
|
-
* </Set>
|
|
54
|
+
* TypeScript will often infer the type of the props you can forward to the
|
|
55
|
+
* wrappers for you, but if you need to you can specify it yourself in your
|
|
56
|
+
* JSX like so:
|
|
57
|
+
* <Set<{theme: string}> wrap={ThemeableLayout} theme="dark">
|
|
66
58
|
*/
|
|
67
|
-
export declare function Set(props: SetProps): React.JSX.Element;
|
|
68
|
-
type PrivateSetProps = Omit<SetProps
|
|
59
|
+
export declare function Set<WrapperProps>(props: SetProps<WrapperProps>): React.JSX.Element;
|
|
60
|
+
type PrivateSetProps<P> = P & Omit<SetProps<P>, 'private' | 'unauthenticated'> & {
|
|
69
61
|
/** The page name where a user will be redirected when not authenticated */
|
|
70
62
|
unauthenticated: string;
|
|
71
63
|
};
|
|
72
64
|
/** @deprecated Please use `<PrivateSet>` instead */
|
|
73
|
-
export declare function Private(props: PrivateSetProps): React.JSX.Element;
|
|
65
|
+
export declare function Private<WrapperProps>(props: PrivateSetProps<WrapperProps>): React.JSX.Element;
|
|
74
66
|
/**
|
|
75
67
|
* Wraps a set of routes that require the user to be authenticated before
|
|
76
68
|
* rendering. Unauthenticated users are redirected to the route named by
|
|
@@ -79,17 +71,9 @@ export declare function Private(props: PrivateSetProps): React.JSX.Element;
|
|
|
79
71
|
* Coming from React Router or a similar library and looking for something
|
|
80
72
|
* like `RequireAuth` or `ProtectedRoute`? This is the Cedar equivalent.
|
|
81
73
|
*/
|
|
82
|
-
export declare function PrivateSet(props: PrivateSetProps): React.JSX.Element;
|
|
83
|
-
export declare const isSetNode: (node: ReactNode) => node is ReactElement<SetProps
|
|
84
|
-
export declare const isPrivateSetNode: (node: ReactNode) => node is ReactElement<PrivateSetProps
|
|
85
|
-
export declare const isPrivateNode: (node: ReactNode) => node is ReactElement<
|
|
86
|
-
/**
|
|
87
|
-
* Wraps `children` in all `wrappers`, with the first wrapper as the outermost
|
|
88
|
-
* one. Every wrapper gets `children` as its only prop.
|
|
89
|
-
*
|
|
90
|
-
* wrapWithSetWrappers([A, B], '1', <Page />)
|
|
91
|
-
* // => <A><B><Page /></B></A>
|
|
92
|
-
*/
|
|
93
|
-
export declare function wrapWithSetWrappers(wrappers: readonly WrapperType[], setId: string, children: ReactNode): ReactNode;
|
|
74
|
+
export declare function PrivateSet<WrapperProps>(props: PrivateSetProps<WrapperProps>): React.JSX.Element;
|
|
75
|
+
export declare const isSetNode: (node: ReactNode) => node is ReactElement<SetProps<any>>;
|
|
76
|
+
export declare const isPrivateSetNode: (node: ReactNode) => node is ReactElement<PrivateSetProps<unknown>>;
|
|
77
|
+
export declare const isPrivateNode: (node: ReactNode) => node is ReactElement<SetProps<any>>;
|
|
94
78
|
export {};
|
|
95
79
|
//# sourceMappingURL=Set.d.ts.map
|
package/dist/Set.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Set.d.ts","sourceRoot":"","sources":["../src/Set.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Set.d.ts","sourceRoot":"","sources":["../src/Set.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,CAAC,OAAO,IAAI,CACjC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAAC,GAAG;IAC1C,QAAQ,EAAE,SAAS,CAAA;CACpB,KACE,YAAY,GAAG,IAAI,CAAA;AAExB,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAA;IACxC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,EAAE,SAAS,CAAA;IACnB,8DAA8D;IAC9D,gBAAgB,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAA;IAC5C,gBAAgB,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,CAAA;CAC7C,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,qBAI9D;AAED,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,GACzB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,iBAAiB,CAAC,GAAG;IACjD,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAEH,oDAAoD;AACpD,wBAAgB,OAAO,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,qBAIzE;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,qBAI5E;AAED,eAAO,MAAM,SAAS,GACpB,MAAM,SAAS,KACd,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAOpC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAC3B,MAAM,SAAS,KACd,IAAI,IAAI,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAE/C,CAAA;AAGD,eAAO,MAAM,aAAa,GACxB,MAAM,SAAS,KACd,IAAI,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAEpC,CAAA"}
|
package/dist/Set.js
CHANGED
|
@@ -10,7 +10,7 @@ function PrivateSet(props) {
|
|
|
10
10
|
}
|
|
11
11
|
const isSetNode = (node) => {
|
|
12
12
|
return React.isValidElement(node) && (node.type === Set || node.type === PrivateSet || node.type === Private) && // Don't even bother including Sets without children. They're useless.
|
|
13
|
-
|
|
13
|
+
node.props.children;
|
|
14
14
|
};
|
|
15
15
|
const isPrivateSetNode = (node) => {
|
|
16
16
|
return React.isValidElement(node) && node.type === PrivateSet;
|
|
@@ -18,17 +18,11 @@ const isPrivateSetNode = (node) => {
|
|
|
18
18
|
const isPrivateNode = (node) => {
|
|
19
19
|
return React.isValidElement(node) && node.type === Private;
|
|
20
20
|
};
|
|
21
|
-
function wrapWithSetWrappers(wrappers, setId, children) {
|
|
22
|
-
return wrappers.reduceRight((acc, Wrapper, index) => {
|
|
23
|
-
return /* @__PURE__ */ React.createElement(Wrapper, { key: setId + "-" + index }, acc);
|
|
24
|
-
}, children);
|
|
25
|
-
}
|
|
26
21
|
export {
|
|
27
22
|
Private,
|
|
28
23
|
PrivateSet,
|
|
29
24
|
Set,
|
|
30
25
|
isPrivateNode,
|
|
31
26
|
isPrivateSetNode,
|
|
32
|
-
isSetNode
|
|
33
|
-
wrapWithSetWrappers
|
|
27
|
+
isSetNode
|
|
34
28
|
};
|
package/dist/analyzeRoutes.d.ts
CHANGED
|
@@ -1,27 +1,19 @@
|
|
|
1
1
|
import type { ReactElement, ReactNode } from 'react';
|
|
2
2
|
import type { PageType } from './page.js';
|
|
3
|
-
import type { WrapperType } from './Set.js';
|
|
4
3
|
import { type ParamType } from './util.js';
|
|
5
4
|
type WhileLoadingPage = () => ReactElement | null;
|
|
6
5
|
export type GeneratedRoutesMap = {
|
|
7
6
|
[key: string]: (args?: Record<string | number, string | number | boolean>) => string;
|
|
8
7
|
};
|
|
9
|
-
export type Wrappers =
|
|
10
|
-
/**
|
|
11
|
-
* The props of a `<Set>`, `<PrivateSet>` or `<Private>` that the router needs
|
|
12
|
-
* when rendering a route in it
|
|
13
|
-
*/
|
|
14
|
-
interface SetRenderProps {
|
|
15
|
-
private?: boolean;
|
|
16
|
-
unauthenticated?: string;
|
|
17
|
-
roles?: string | string[];
|
|
18
|
-
whileLoadingAuth?: () => ReactElement | null;
|
|
19
|
-
}
|
|
8
|
+
export type Wrappers = ((props: any) => ReactNode)[];
|
|
20
9
|
interface Set {
|
|
21
10
|
id: string;
|
|
22
11
|
wrappers: Wrappers;
|
|
23
12
|
isPrivate: boolean;
|
|
24
|
-
props:
|
|
13
|
+
props: {
|
|
14
|
+
private?: boolean;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
25
17
|
}
|
|
26
18
|
type RoutePath = string;
|
|
27
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeRoutes.d.ts","sourceRoot":"","sources":["../src/analyzeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQzC,OAAO,
|
|
1
|
+
{"version":3,"file":"analyzeRoutes.d.ts","sourceRoot":"","sources":["../src/analyzeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQzC,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,WAAW,CAAA;AAElB,KAAK,gBAAgB,GAAG,MAAM,YAAY,GAAG,IAAI,CAAA;AAIjD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,CACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,KACtD,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,SAAS,CAAC,EAAE,CAAA;AAEpD,UAAU,GAAG;IACX,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACvB,CAAA;CACF;AAED,KAAK,SAAS,GAAG,MAAM,CAAA;AAEvB;;;;GAIG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAA;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,EAAE,GAAG,EAAE,CAAA;CACZ;AAED,UAAU,oBAAoB;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAC3C;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,EACnB,EAAE,eAAe,EAAE,cAAc,EAAE,EAAE,oBAAoB;;;;;;EA6K1D"}
|
package/dist/analyzeRoutes.js
CHANGED
|
@@ -11,31 +11,6 @@ import {
|
|
|
11
11
|
replaceParams,
|
|
12
12
|
validatePath
|
|
13
13
|
} from "./util.js";
|
|
14
|
-
function pickSetRenderProps(props) {
|
|
15
|
-
const picked = {};
|
|
16
|
-
if (props.private !== void 0) {
|
|
17
|
-
picked.private = props.private;
|
|
18
|
-
}
|
|
19
|
-
if (props.unauthenticated !== void 0) {
|
|
20
|
-
picked.unauthenticated = props.unauthenticated;
|
|
21
|
-
}
|
|
22
|
-
if (props.roles !== void 0) {
|
|
23
|
-
picked.roles = props.roles;
|
|
24
|
-
}
|
|
25
|
-
if (props.whileLoadingAuth !== void 0) {
|
|
26
|
-
picked.whileLoadingAuth = props.whileLoadingAuth;
|
|
27
|
-
}
|
|
28
|
-
return picked;
|
|
29
|
-
}
|
|
30
|
-
function toWrappersArray(wrap) {
|
|
31
|
-
if (!wrap) {
|
|
32
|
-
return [];
|
|
33
|
-
}
|
|
34
|
-
return isSingleWrapper(wrap) ? [wrap] : wrap;
|
|
35
|
-
}
|
|
36
|
-
function isSingleWrapper(wrap) {
|
|
37
|
-
return !Array.isArray(wrap);
|
|
38
|
-
}
|
|
39
14
|
function analyzeRoutes(children, { currentPathName, userParamTypes }) {
|
|
40
15
|
const pathRouteMap = {};
|
|
41
16
|
const namedRoutesMap = {};
|
|
@@ -103,8 +78,13 @@ function analyzeRoutes(children, { currentPathName, userParamTypes }) {
|
|
|
103
78
|
const {
|
|
104
79
|
children: children2,
|
|
105
80
|
whileLoadingPage: whileLoadingPageFromCurrentSet,
|
|
106
|
-
wrap: wrapFromCurrentSet
|
|
81
|
+
wrap: wrapFromCurrentSet,
|
|
82
|
+
...otherPropsFromCurrentSet
|
|
107
83
|
} = node.props;
|
|
84
|
+
let wrapperComponentsArray = [];
|
|
85
|
+
if (wrapFromCurrentSet) {
|
|
86
|
+
wrapperComponentsArray = Array.isArray(wrapFromCurrentSet) ? wrapFromCurrentSet : [wrapFromCurrentSet];
|
|
87
|
+
}
|
|
108
88
|
nextSetId = nextSetId + 1;
|
|
109
89
|
recurseThroughRouter({
|
|
110
90
|
nodes: Children.toArray(children2),
|
|
@@ -116,11 +96,11 @@ function analyzeRoutes(children, { currentPathName, userParamTypes }) {
|
|
|
116
96
|
...previousSets,
|
|
117
97
|
{
|
|
118
98
|
id: createSetId(nextSetId, previousSets),
|
|
119
|
-
wrappers:
|
|
99
|
+
wrappers: wrapperComponentsArray,
|
|
120
100
|
isPrivate: isPrivateSetNode(node) || // The following two conditions can be removed when we remove
|
|
121
101
|
// the deprecated private prop
|
|
122
|
-
isPrivateNode(node) || !!
|
|
123
|
-
props:
|
|
102
|
+
isPrivateNode(node) || !!otherPropsFromCurrentSet.private,
|
|
103
|
+
props: otherPropsFromCurrentSet
|
|
124
104
|
}
|
|
125
105
|
]
|
|
126
106
|
});
|
package/dist/page.d.ts
CHANGED
|
@@ -24,5 +24,5 @@ export declare function isSpec(specOrPage: Spec | React.ComponentType): specOrPa
|
|
|
24
24
|
* imported version into a spec.
|
|
25
25
|
*/
|
|
26
26
|
export declare function normalizePage(specOrPage: Spec | React.ComponentType<unknown>): Spec;
|
|
27
|
-
export type PageType = Spec | React.ComponentType<any> | ((props: any) =>
|
|
27
|
+
export type PageType = Spec | React.ComponentType<any> | ((props: any) => JSX.Element);
|
|
28
28
|
//# sourceMappingURL=page.d.ts.map
|
package/dist/page.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAA;IAC7E,aAAa,EACT,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GACvD,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;CACjC;AAED,wBAAgB,MAAM,CACpB,UAAU,EAAE,IAAI,GAAG,KAAK,CAAC,aAAa,GACrC,UAAU,IAAI,IAAI,CAEpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,GAC9C,IAAI,CAaN;AAED,MAAM,MAAM,QAAQ,GAClB,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,eAAe,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK;QAAE,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;KAAE,CAAA;IAC7E,aAAa,EACT,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GACvD,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;CACjC;AAED,wBAAgB,MAAM,CACpB,UAAU,EAAE,IAAI,GAAG,KAAK,CAAC,aAAa,GACrC,UAAU,IAAI,IAAI,CAEpB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,GAC9C,IAAI,CAaN;AAED,MAAM,MAAM,QAAQ,GAClB,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,CAAA"}
|
package/dist/react-util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-util.d.ts","sourceRoot":"","sources":["../src/react-util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"react-util.d.ts","sourceRoot":"","sources":["../src/react-util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGtC,wBAAgB,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAU3D"}
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAwB,MAAM,OAAO,CAAA;AAY5C,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAA;AAIrE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAErD,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,0BAA0B,EAC1B,QAAQ,GAAG,iBAAiB,CAC7B;IACC,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAoBxC,CAAA"}
|
package/dist/router.js
CHANGED
|
@@ -9,7 +9,6 @@ import { PageLoadingContextProvider } from "./PageLoadingContext.js";
|
|
|
9
9
|
import { ParamsProvider } from "./params.js";
|
|
10
10
|
import { Redirect } from "./redirect.js";
|
|
11
11
|
import { RouterContextProvider } from "./router-context.js";
|
|
12
|
-
import { wrapWithSetWrappers } from "./Set.js";
|
|
13
12
|
import { SplashPage } from "./splash-page.js";
|
|
14
13
|
import { matchPath, parseSearch, replaceParams, validatePath } from "./util.js";
|
|
15
14
|
const Router = ({
|
|
@@ -142,7 +141,13 @@ const WrappedPage = memo(({ sets, children }) => {
|
|
|
142
141
|
return children;
|
|
143
142
|
}
|
|
144
143
|
return sets.reduceRight((acc, set) => {
|
|
145
|
-
let wrapped =
|
|
144
|
+
let wrapped = set.wrappers.reduceRight((acc2, Wrapper, index) => {
|
|
145
|
+
return React.createElement(
|
|
146
|
+
Wrapper,
|
|
147
|
+
{ ...set.props, key: set.id + "-" + index },
|
|
148
|
+
acc2
|
|
149
|
+
);
|
|
150
|
+
}, acc);
|
|
146
151
|
if (set.isPrivate) {
|
|
147
152
|
const unauthenticated = set.props.unauthenticated;
|
|
148
153
|
if (!unauthenticated || typeof unauthenticated !== "string") {
|
|
@@ -150,15 +155,7 @@ const WrappedPage = memo(({ sets, children }) => {
|
|
|
150
155
|
"You must specify an `unauthenticated` route when using PrivateSet"
|
|
151
156
|
);
|
|
152
157
|
}
|
|
153
|
-
wrapped = /* @__PURE__ */ React.createElement(
|
|
154
|
-
AuthenticatedRoute,
|
|
155
|
-
{
|
|
156
|
-
unauthenticated,
|
|
157
|
-
roles: set.props.roles,
|
|
158
|
-
whileLoadingAuth: set.props.whileLoadingAuth
|
|
159
|
-
},
|
|
160
|
-
wrapped
|
|
161
|
-
);
|
|
158
|
+
wrapped = /* @__PURE__ */ React.createElement(AuthenticatedRoute, { ...set.props, unauthenticated }, wrapped);
|
|
162
159
|
}
|
|
163
160
|
return wrapped;
|
|
164
161
|
}, children);
|
package/dist/rsc/RscRoutes.d.ts
CHANGED
|
@@ -2,6 +2,6 @@ interface Props {
|
|
|
2
2
|
pathname: string;
|
|
3
3
|
search: string;
|
|
4
4
|
}
|
|
5
|
-
export declare const RscRoutes: ({ pathname, search }: Props) => import("react").ReactElement<
|
|
5
|
+
export declare const RscRoutes: ({ pathname, search }: Props) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=RscRoutes.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RscRoutes.d.ts","sourceRoot":"","sources":["../../src/rsc/RscRoutes.tsx"],"names":[],"mappings":"AAiIA,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,SAAS,GAAI,sBAAsB,KAAK
|
|
1
|
+
{"version":3,"file":"RscRoutes.d.ts","sourceRoot":"","sources":["../../src/rsc/RscRoutes.tsx"],"names":[],"mappings":"AAiIA,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,eAAO,MAAM,SAAS,GAAI,sBAAsB,KAAK,2FAkCpD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerRouter.d.ts","sourceRoot":"","sources":["../../src/rsc/ServerRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ServerRouter.d.ts","sourceRoot":"","sources":["../../src/rsc/ServerRouter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AAEtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAKtD,MAAM,WAAW,WAAY,SAAQ,IAAI,CACvC,0BAA0B,EAC1B,QAAQ,GAAG,iBAAiB,CAC7B;IACC,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CA4GxC,CAAA"}
|
package/dist/rsc/ServerRouter.js
CHANGED
|
@@ -3,7 +3,6 @@ import { getAuthState, getLocation } from "@cedarjs/server-store";
|
|
|
3
3
|
import { analyzeRoutes } from "../analyzeRoutes.js";
|
|
4
4
|
import { namedRoutes } from "../namedRoutes.js";
|
|
5
5
|
import { normalizePage } from "../page.js";
|
|
6
|
-
import { wrapWithSetWrappers } from "../Set.js";
|
|
7
6
|
import { SplashPage } from "../splash-page.js";
|
|
8
7
|
import { matchPath, parseSearch, replaceParams, validatePath } from "../util.js";
|
|
9
8
|
import { ServerRouteLoader } from "./ServerRouteLoader.js";
|
|
@@ -113,7 +112,13 @@ const WrappedPage = ({ routeLoaderElement, sets }) => {
|
|
|
113
112
|
return routeLoaderElement;
|
|
114
113
|
}
|
|
115
114
|
return sets.reduceRight((acc, set) => {
|
|
116
|
-
let wrapped =
|
|
115
|
+
let wrapped = set.wrappers.reduceRight((acc2, Wrapper, index) => {
|
|
116
|
+
return React.createElement(
|
|
117
|
+
Wrapper,
|
|
118
|
+
{ ...set.props, key: set.id + "-" + index },
|
|
119
|
+
acc2
|
|
120
|
+
);
|
|
121
|
+
}, acc);
|
|
117
122
|
if (set.isPrivate) {
|
|
118
123
|
const unauthenticated = set.props.unauthenticated;
|
|
119
124
|
if (!unauthenticated || typeof unauthenticated !== "string") {
|
|
@@ -121,15 +126,7 @@ const WrappedPage = ({ routeLoaderElement, sets }) => {
|
|
|
121
126
|
"You must specify an `unauthenticated` route when using PrivateSet"
|
|
122
127
|
);
|
|
123
128
|
}
|
|
124
|
-
wrapped = /* @__PURE__ */ React.createElement(
|
|
125
|
-
AuthenticatedRoute,
|
|
126
|
-
{
|
|
127
|
-
unauthenticated,
|
|
128
|
-
roles: set.props.roles,
|
|
129
|
-
whileLoadingAuth: set.props.whileLoadingAuth
|
|
130
|
-
},
|
|
131
|
-
wrapped
|
|
132
|
-
);
|
|
129
|
+
wrapped = /* @__PURE__ */ React.createElement(AuthenticatedRoute, { ...set.props, unauthenticated }, wrapped);
|
|
133
130
|
}
|
|
134
131
|
return wrapped;
|
|
135
132
|
}, routeLoaderElement);
|
package/dist/skipNav.d.ts
CHANGED
|
@@ -5,10 +5,10 @@ type ForwardRefExoticComponent<E, OwnProps> = React.ForwardRefExoticComponent<Me
|
|
|
5
5
|
}>>;
|
|
6
6
|
interface ForwardRefComponent<IntrinsicElementString, OwnProps = object> extends ForwardRefExoticComponent<IntrinsicElementString, OwnProps> {
|
|
7
7
|
<As = IntrinsicElementString>(props: As extends '' ? {
|
|
8
|
-
as: keyof
|
|
8
|
+
as: keyof JSX.IntrinsicElements;
|
|
9
9
|
} : As extends React.ComponentType<infer P> ? Merge<P, OwnProps & {
|
|
10
10
|
as: As;
|
|
11
|
-
}> : As extends keyof
|
|
11
|
+
}> : As extends keyof JSX.IntrinsicElements ? Merge<JSX.IntrinsicElements[As], OwnProps & {
|
|
12
12
|
as: As;
|
|
13
13
|
}> : never): React.ReactElement | null;
|
|
14
14
|
}
|
package/dist/skipNav.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skipNav.d.ts","sourceRoot":"","sources":["../src/skipNav.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,KAAK,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAA;AAE9D,KAAK,yBAAyB,CAAC,CAAC,EAAE,QAAQ,IAAI,KAAK,CAAC,yBAAyB,CAC3E,KAAK,CACH,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,EACpE,QAAQ,GAAG;IAAE,EAAE,CAAC,EAAE,CAAC,CAAA;CAAE,CACtB,CACF,CAAA;AAED,UAAU,mBAAmB,CAC3B,sBAAsB,EACtB,QAAQ,GAAG,MAAM,CAKjB,SAAQ,yBAAyB,CAAC,sBAAsB,EAAE,QAAQ,CAAC;IASnE,CAAC,EAAE,GAAG,sBAAsB,EAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,GAChB;QAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"skipNav.d.ts","sourceRoot":"","sources":["../src/skipNav.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,KAAK,KAAK,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,GAAG,MAAM,IAAI,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,CAAA;AAE9D,KAAK,yBAAyB,CAAC,CAAC,EAAE,QAAQ,IAAI,KAAK,CAAC,yBAAyB,CAC3E,KAAK,CACH,CAAC,SAAS,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,EACpE,QAAQ,GAAG;IAAE,EAAE,CAAC,EAAE,CAAC,CAAA;CAAE,CACtB,CACF,CAAA;AAED,UAAU,mBAAmB,CAC3B,sBAAsB,EACtB,QAAQ,GAAG,MAAM,CAKjB,SAAQ,yBAAyB,CAAC,sBAAsB,EAAE,QAAQ,CAAC;IASnE,CAAC,EAAE,GAAG,sBAAsB,EAC1B,KAAK,EAAE,EAAE,SAAS,EAAE,GAChB;QAAE,EAAE,EAAE,MAAM,GAAG,CAAC,iBAAiB,CAAA;KAAE,GACnC,EAAE,SAAS,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GACrC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG;QAAE,EAAE,EAAE,EAAE,CAAA;KAAE,CAAC,GAC/B,EAAE,SAAS,MAAM,GAAG,CAAC,iBAAiB,GACpC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG;QAAE,EAAE,EAAE,EAAE,CAAA;KAAE,CAAC,GACvD,KAAK,GACZ,KAAK,CAAC,YAAY,GAAG,IAAI,CAAA;CAC7B;AAWD;;;;;;GAMG;AACH,QAAA,MAAM,WAAW,EAiBX,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;AAEhD;;GAEG;AACH,UAAU,gBAAgB;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;;GAMG;AACH,QAAA,MAAM,cAAc,EAad,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAA;AAErD;;GAEG;AACH,UAAU,mBAAmB;IAC3B;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;;;;OAKG;IACH,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAOD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cedarjs/router",
|
|
3
|
-
"version": "7.0
|
|
3
|
+
"version": "7.1.0-rc.34",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git+https://github.com/cedarjs/cedar.git",
|
|
@@ -52,31 +52,31 @@
|
|
|
52
52
|
"test:watch": "vitest watch"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@cedarjs/project-config": "7.0
|
|
56
|
-
"@cedarjs/server-store": "7.0
|
|
57
|
-
"react-server-dom-webpack": "19.
|
|
55
|
+
"@cedarjs/project-config": "7.1.0-rc.34",
|
|
56
|
+
"@cedarjs/server-store": "7.1.0-rc.34",
|
|
57
|
+
"react-server-dom-webpack": "19.2.8",
|
|
58
58
|
"ts-toolbelt": "9.6.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@arethetypeswrong/cli": "0.18.5",
|
|
62
|
-
"@cedarjs/auth": "7.0
|
|
63
|
-
"@cedarjs/framework-tools": "7.0
|
|
62
|
+
"@cedarjs/auth": "7.1.0-rc.34",
|
|
63
|
+
"@cedarjs/framework-tools": "7.1.0-rc.34",
|
|
64
64
|
"@testing-library/jest-dom": "6.9.1",
|
|
65
|
-
"@types/react": "^
|
|
66
|
-
"@types/react-dom": "^
|
|
67
|
-
"concurrently": "9.2.
|
|
68
|
-
"publint": "0.3.
|
|
69
|
-
"react": "
|
|
70
|
-
"react-dom": "
|
|
65
|
+
"@types/react": "^18.2.55",
|
|
66
|
+
"@types/react-dom": "^18.2.19",
|
|
67
|
+
"concurrently": "9.2.4",
|
|
68
|
+
"publint": "0.3.24",
|
|
69
|
+
"react": "18.3.1",
|
|
70
|
+
"react-dom": "18.3.1",
|
|
71
71
|
"tstyche": "5.0.2",
|
|
72
72
|
"typescript": "5.9.3",
|
|
73
|
-
"vite": "7.3.
|
|
73
|
+
"vite": "7.3.6",
|
|
74
74
|
"vitest": "4.1.11"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
|
-
"@cedarjs/auth": "7.0
|
|
78
|
-
"react": "
|
|
79
|
-
"react-dom": "
|
|
77
|
+
"@cedarjs/auth": "7.1.0-rc.34",
|
|
78
|
+
"react": "18.3.1",
|
|
79
|
+
"react-dom": "18.3.1"
|
|
80
80
|
},
|
|
81
81
|
"engines": {
|
|
82
82
|
"node": ">=24"
|