@darajs/core 1.21.0 → 1.21.1

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.
Files changed (91) hide show
  1. package/dist/api/core.d.ts +8 -1
  2. package/dist/api/core.d.ts.map +1 -1
  3. package/dist/api/core.js +4 -1
  4. package/dist/api/core.js.map +1 -1
  5. package/dist/components/link.d.ts +1 -1
  6. package/dist/components/link.d.ts.map +1 -1
  7. package/dist/components/link.js +49 -5
  8. package/dist/components/link.js.map +1 -1
  9. package/dist/{dara_core-1.21.0-py3-none-any.whl → dara_core-1.21.1-py3-none-any.whl} +0 -0
  10. package/dist/router/cache.d.ts +19 -0
  11. package/dist/router/cache.d.ts.map +1 -0
  12. package/dist/router/cache.js +56 -0
  13. package/dist/router/cache.js.map +1 -0
  14. package/dist/router/context.d.ts +17 -0
  15. package/dist/router/context.d.ts.map +1 -0
  16. package/dist/router/context.js +21 -0
  17. package/dist/router/context.js.map +1 -0
  18. package/dist/router/create-router.d.ts +22 -0
  19. package/dist/router/create-router.d.ts.map +1 -0
  20. package/dist/{shared/router.js → router/create-router.js} +24 -13
  21. package/dist/router/create-router.js.map +1 -0
  22. package/dist/router/fetching.d.ts +115 -0
  23. package/dist/router/fetching.d.ts.map +1 -0
  24. package/dist/router/fetching.js +280 -0
  25. package/dist/router/fetching.js.map +1 -0
  26. package/dist/router/index.d.ts +7 -0
  27. package/dist/router/index.d.ts.map +1 -0
  28. package/dist/router/index.js +7 -0
  29. package/dist/router/index.js.map +1 -0
  30. package/dist/router/route-content.d.ts +16 -0
  31. package/dist/router/route-content.d.ts.map +1 -0
  32. package/dist/router/route-content.js +112 -0
  33. package/dist/router/route-content.js.map +1 -0
  34. package/dist/router/router-root.d.ts +7 -0
  35. package/dist/router/router-root.d.ts.map +1 -0
  36. package/dist/router/router-root.js +15 -0
  37. package/dist/router/router-root.js.map +1 -0
  38. package/dist/run.d.ts +12 -1
  39. package/dist/run.d.ts.map +1 -1
  40. package/dist/run.js +9 -16
  41. package/dist/run.js.map +1 -1
  42. package/dist/shared/interactivity/derived-variable.d.ts +62 -17
  43. package/dist/shared/interactivity/derived-variable.d.ts.map +1 -1
  44. package/dist/shared/interactivity/derived-variable.js +162 -96
  45. package/dist/shared/interactivity/derived-variable.js.map +1 -1
  46. package/dist/shared/interactivity/persistence.js +2 -2
  47. package/dist/shared/interactivity/persistence.js.map +1 -1
  48. package/dist/shared/interactivity/plain-variable.js +2 -2
  49. package/dist/shared/interactivity/plain-variable.js.map +1 -1
  50. package/dist/shared/interactivity/store.d.ts +0 -1
  51. package/dist/shared/interactivity/store.d.ts.map +1 -1
  52. package/dist/shared/interactivity/store.js.map +1 -1
  53. package/dist/shared/interactivity/tabular-variable.d.ts.map +1 -1
  54. package/dist/shared/interactivity/tabular-variable.js +5 -2
  55. package/dist/shared/interactivity/tabular-variable.js.map +1 -1
  56. package/dist/shared/interactivity/triggers.d.ts +7 -2
  57. package/dist/shared/interactivity/triggers.d.ts.map +1 -1
  58. package/dist/shared/interactivity/triggers.js +15 -2
  59. package/dist/shared/interactivity/triggers.js.map +1 -1
  60. package/dist/shared/interactivity/use-server-component.d.ts +4 -1
  61. package/dist/shared/interactivity/use-server-component.d.ts.map +1 -1
  62. package/dist/shared/interactivity/use-server-component.js +107 -38
  63. package/dist/shared/interactivity/use-server-component.js.map +1 -1
  64. package/dist/shared/interactivity/use-variable.js +1 -1
  65. package/dist/shared/interactivity/use-variable.js.map +1 -1
  66. package/dist/shared/root/authenticated-root.js +1 -1
  67. package/dist/shared/root/authenticated-root.js.map +1 -1
  68. package/dist/shared/utils/deferred.d.ts +10 -0
  69. package/dist/shared/utils/deferred.d.ts.map +1 -0
  70. package/dist/shared/utils/deferred.js +13 -0
  71. package/dist/shared/utils/deferred.js.map +1 -0
  72. package/dist/shared/utils/index.d.ts +1 -0
  73. package/dist/shared/utils/index.d.ts.map +1 -1
  74. package/dist/shared/utils/index.js +1 -0
  75. package/dist/shared/utils/index.js.map +1 -1
  76. package/dist/types/core.d.ts +18 -11
  77. package/dist/types/core.d.ts.map +1 -1
  78. package/dist/types/core.js +5 -0
  79. package/dist/types/core.js.map +1 -1
  80. package/dist/types/utils.d.ts +2 -2
  81. package/dist/types/utils.d.ts.map +1 -1
  82. package/dist/types/utils.js.map +1 -1
  83. package/dist/umd/dara.core.umd.cjs +61046 -57648
  84. package/package.json +11 -10
  85. package/dist/shared/root/route-content.d.ts +0 -21
  86. package/dist/shared/root/route-content.d.ts.map +0 -1
  87. package/dist/shared/root/route-content.js +0 -164
  88. package/dist/shared/root/route-content.js.map +0 -1
  89. package/dist/shared/router.d.ts +0 -14
  90. package/dist/shared/router.d.ts.map +0 -1
  91. package/dist/shared/router.js.map +0 -1
@@ -1,11 +1,17 @@
1
1
  import { type RequestExtras } from './http';
2
+ type TaskResult<T> = {
3
+ status: 'not_found';
4
+ } | {
5
+ status: 'ok';
6
+ result: T;
7
+ };
2
8
  /**
3
9
  * Fetch the result of a task from the backend by it's id
4
10
  *
5
11
  * @param taskId the id of the task to fetch
6
12
  * @param token the session token to use
7
13
  */
8
- export declare function fetchTaskResult<T>(taskId: string, extras: RequestExtras): Promise<T>;
14
+ export declare function fetchTaskResult<T>(taskId: string, extras: RequestExtras): Promise<TaskResult<T>>;
9
15
  /**
10
16
  * Cancel a task by it's id
11
17
  *
@@ -13,4 +19,5 @@ export declare function fetchTaskResult<T>(taskId: string, extras: RequestExtras
13
19
  * @param token the session token to use
14
20
  */
15
21
  export declare function cancelTask(taskId: string, extras: RequestExtras): Promise<boolean>;
22
+ export {};
16
23
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../js/api/core.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,QAAQ,CAAC;AAErD;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAY1F;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxF"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../js/api/core.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,aAAa,EAAW,MAAM,QAAQ,CAAC;AAErD,KAAK,UAAU,CAAC,CAAC,IAAI;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAC;AAE3E;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAiBtG;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAKxF"}
package/dist/api/core.js CHANGED
@@ -20,12 +20,15 @@ export function fetchTaskResult(taskId, extras) {
20
20
  return __awaiter(this, void 0, void 0, function* () {
21
21
  const res = yield request(`/api/core/tasks/${taskId}`, { method: HTTP_METHOD.GET }, extras);
22
22
  yield handleAuthErrors(res, true);
23
+ if (res.status === 404) {
24
+ return { status: 'not_found' };
25
+ }
23
26
  yield validateResponse(res, `Failed to fetch the result of task with id: ${taskId}`);
24
27
  const resJson = yield res.json();
25
28
  if (typeof resJson === 'object' && 'error' in resJson) {
26
29
  throw new Error(resJson.error);
27
30
  }
28
- return resJson;
31
+ return { status: 'ok', result: resJson };
29
32
  });
30
33
  }
31
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../js/api/core.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAsB,OAAO,EAAE,MAAM,QAAQ,CAAC;AAErD;;;;;GAKG;AACH,MAAM,UAAgB,eAAe,CAAI,MAAc,EAAE,MAAqB;;QAC1E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,mBAAmB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5F,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,gBAAgB,CAAC,GAAG,EAAE,+CAA+C,MAAM,EAAE,CAAC,CAAC;QAErF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAgB,UAAU,CAAC,MAAc,EAAE,MAAqB;;QAClE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,mBAAmB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/F,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,gBAAgB,CAAC,GAAG,EAAE,kCAAkC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../js/api/core.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAsB,OAAO,EAAE,MAAM,QAAQ,CAAC;AAIrD;;;;;GAKG;AACH,MAAM,UAAgB,eAAe,CAAI,MAAc,EAAE,MAAqB;;QAC1E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,mBAAmB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5F,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAElC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACrB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACnC,CAAC;QAED,MAAM,gBAAgB,CAAC,GAAG,EAAE,+CAA+C,MAAM,EAAE,CAAC,CAAC;QAErF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAgB,UAAU,CAAC,MAAc,EAAE,MAAqB;;QAClE,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,mBAAmB,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/F,MAAM,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,gBAAgB,CAAC,GAAG,EAAE,kCAAkC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IAChB,CAAC;CAAA"}
@@ -5,7 +5,7 @@ export interface LinkProps extends StyledComponentProps {
5
5
  className?: string;
6
6
  case_sensitive: boolean;
7
7
  children: Array<ComponentInstance>;
8
- prefetch: NavLinkProps['prefetch'];
8
+ prefetch?: boolean;
9
9
  relative: NavLinkProps['relative'];
10
10
  replace: NavLinkProps['replace'];
11
11
  to: NavLinkProps['to'];
@@ -1 +1 @@
1
- {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../js/components/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAM1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,WAAW,SAAU,SAAQ,oBAAoB;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAGnC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAGvB,UAAU,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE7C,YAAY,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CAC5B;AAwCD,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS,CA8B/C;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../js/components/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAO1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,WAAW,SAAU,SAAQ,oBAAoB;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAGvB,UAAU,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE7C,YAAY,CAAC,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC/C,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;CAC5B;AAyCD,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,SAAS,CAwF/C;AAED,eAAe,IAAI,CAAC"}
@@ -13,11 +13,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
13
13
  import * as React from 'react';
14
14
  import { NavLink } from 'react-router';
15
15
  import styled from 'styled-components';
16
+ import { usePreloadRoute } from '../router/fetching';
16
17
  import { DisplayCtx } from '../shared/context';
17
18
  import DynamicComponent from '../shared/dynamic-component/dynamic-component';
18
19
  import useComponentStyles from '../shared/utils/use-component-styles';
19
20
  const NavLinkWrapper = React.forwardRef((props, ref) => {
20
- const { to, className, style, activeStyle, inactiveStyle } = props, rest = __rest(props, ["to", "className", "style", "activeStyle", "inactiveStyle"]);
21
+ const { to, className, style, activeStyle, inactiveStyle, prefetch } = props, rest = __rest(props, ["to", "className", "style", "activeStyle", "inactiveStyle", "prefetch"]);
21
22
  return (_jsx(NavLink, Object.assign({ ref: ref, to: to, className: className, style: ({ isActive }) => {
22
23
  return Object.assign(Object.assign({}, style), (isActive ? activeStyle : inactiveStyle));
23
24
  } }, rest, { children: props.children })));
@@ -36,10 +37,53 @@ function Link(props) {
36
37
  const [style, css] = useComponentStyles(props);
37
38
  const [activeStyle, activeCss] = useComponentStyles(props, true, 'active_css');
38
39
  const [inactiveStyle, inactiveCss] = useComponentStyles(props, false, 'inactive_css');
39
- return (_jsx(DisplayCtx.Provider, { value: { component: 'anchor', direction: displayCtx.direction }, children: _jsx(StyledNavLink, { id: props.id_, className: props.className, to: props.to, end: props.end,
40
- // TODO: native prefetch doesn't work in Data mode, instead reimplement and call prefetchQuery manually
41
- // prefetch={props.prefetch}
42
- caseSensitive: props.case_sensitive, replace: props.replace, relative: props.relative, "$activeCss": css + activeCss, "$inactiveCss": css + inactiveCss, style: style, activeStyle: activeStyle, inactiveStyle: inactiveStyle, children: props.children.map((child, idx) => (_jsx(DynamicComponent, { component: child }, idx))) }) }));
40
+ // Prefetching approach inspired by SolidJS's router:
41
+ // https://github.com/solidjs/solid-router/blob/30f08665e87829736a9333d55863d27905f4a92d/src/data/events.ts#L7
42
+ const preloadRoute = usePreloadRoute();
43
+ const preloadTimeoutRef = React.useRef(null);
44
+ // Clear any existing timeout
45
+ const clearPreloadTimeout = React.useCallback(() => {
46
+ if (preloadTimeoutRef.current !== null) {
47
+ clearTimeout(preloadTimeoutRef.current);
48
+ preloadTimeoutRef.current = null;
49
+ }
50
+ }, []);
51
+ // Immediate preload (for focus/touch events)
52
+ const handleImmediatePreload = React.useCallback(() => {
53
+ if (!props.prefetch) {
54
+ return;
55
+ }
56
+ preloadRoute(props.to);
57
+ }, [props.prefetch, preloadRoute, props.to]);
58
+ // Delayed preload (for mouse move events)
59
+ const handleDelayedPreload = React.useCallback(() => {
60
+ if (!props.prefetch) {
61
+ return;
62
+ }
63
+ // Clear any existing timeout
64
+ clearPreloadTimeout();
65
+ // Set timeout for delayed preload (20ms)
66
+ preloadTimeoutRef.current = window.setTimeout(() => {
67
+ preloadRoute(props.to);
68
+ }, 20);
69
+ }, [props.prefetch, props.to, clearPreloadTimeout, preloadRoute]);
70
+ // Event handlers
71
+ const handleMouseMove = React.useCallback(() => {
72
+ handleDelayedPreload();
73
+ }, [handleDelayedPreload]);
74
+ const handleFocus = React.useCallback(() => {
75
+ handleImmediatePreload();
76
+ }, [handleImmediatePreload]);
77
+ const handleTouchStart = React.useCallback(() => {
78
+ handleImmediatePreload();
79
+ }, [handleImmediatePreload]);
80
+ // Cleanup timeout on unmount
81
+ React.useEffect(() => {
82
+ return () => {
83
+ clearPreloadTimeout();
84
+ };
85
+ }, [clearPreloadTimeout]);
86
+ return (_jsx(DisplayCtx.Provider, { value: { component: 'anchor', direction: displayCtx.direction }, children: _jsx(StyledNavLink, { id: props.id_, className: props.className, to: props.to, end: props.end, caseSensitive: props.case_sensitive, replace: props.replace, relative: props.relative, "$activeCss": css + activeCss, "$inactiveCss": css + inactiveCss, style: style, activeStyle: activeStyle, inactiveStyle: inactiveStyle, onMouseMove: props.prefetch ? handleMouseMove : undefined, onFocus: props.prefetch ? handleFocus : undefined, onTouchStart: props.prefetch ? handleTouchStart : undefined, children: props.children.map((child, idx) => (_jsx(DynamicComponent, { component: child }, idx))) }) }));
43
87
  }
44
88
  export default Link;
45
89
  //# sourceMappingURL=link.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"link.js","sourceRoot":"","sources":["../../js/components/link.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC1D,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,8CAA8C,CAAC;AAC5E,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AAqBrE,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CACnC,CACI,KAGC,EACD,GAAiC,EACnC,EAAE;IACA,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAArE,4DAA6D,CAAQ,CAAC;IAC5E,OAAO,CACH,KAAC,OAAO,kBACJ,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACpB,uCACO,KAAK,GACL,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,EAC7C;QACN,CAAC,IACG,IAAI,cAEP,KAAK,CAAC,QAAQ,IACT,CACb,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,MAAM,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC,CAA8C;;UAEhF,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU;;;;UAI3B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY;;CAEtC,CAAC;AAEF,SAAS,IAAI,CAAC,KAAgB;IAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC/C,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/E,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IAEtF,OAAO,CACH,KAAC,UAAU,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,YAChF,KAAC,aAAa,IACV,EAAE,EAAE,KAAK,CAAC,GAAG,EACb,SAAS,EAAE,KAAK,CAAC,SAAS,EAC1B,EAAE,EAAE,KAAK,CAAC,EAAE,EACZ,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,uGAAuG;YACvG,4BAA4B;YAC5B,aAAa,EAAE,KAAK,CAAC,cAAc,EACnC,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,gBACZ,GAAG,GAAG,SAAS,kBACb,GAAG,GAAG,WAAW,EAC/B,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,YAE3B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,KAAC,gBAAgB,IAAC,SAAS,EAAE,KAAK,IAAO,GAAG,CAAI,CACnD,CAAC,GACU,GACE,CACzB,CAAC;AACN,CAAC;AAED,eAAe,IAAI,CAAC"}
1
+ {"version":3,"file":"link.js","sourceRoot":"","sources":["../../js/components/link.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface CacheOptions {
2
+ defaultTimeout?: number;
3
+ }
4
+ export declare class SingleUseCache<T> {
5
+ private cache;
6
+ private readonly defaultTimeout;
7
+ constructor(options?: CacheOptions);
8
+ private isEntryStale;
9
+ has(key: string, timeout?: number): boolean;
10
+ get(key: string, timeout?: number): Promise<T> | undefined;
11
+ set(key: string, value: Promise<T>): void;
12
+ delete(key: string): boolean;
13
+ clear(): void;
14
+ setIfMissing(key: string, computeFn: () => Promise<T>, timeout?: number): void;
15
+ size(): number;
16
+ keys(): IterableIterator<string>;
17
+ entries(): Array<[string, T | Promise<T>]>;
18
+ }
19
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../js/router/cache.tsx"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,cAAc,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,CAAoC;IAEjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAE5B,OAAO,GAAE,YAAiB;IAItC,OAAO,CAAC,YAAY;IAKpB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IAK3C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS;IAU1D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IAOzC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,KAAK,IAAI,IAAI;IAIb,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAY9E,IAAI,IAAI,MAAM;IAId,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIhC,OAAO,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;CAG7C"}
@@ -0,0 +1,56 @@
1
+ export class SingleUseCache {
2
+ constructor(options = {}) {
3
+ var _a;
4
+ this.cache = new Map();
5
+ this.defaultTimeout = (_a = options.defaultTimeout) !== null && _a !== void 0 ? _a : 5000;
6
+ }
7
+ isEntryStale(entry, timeout) {
8
+ const timeoutMs = timeout !== null && timeout !== void 0 ? timeout : this.defaultTimeout;
9
+ return Date.now() - entry.timestamp > timeoutMs;
10
+ }
11
+ has(key, timeout) {
12
+ const entry = this.cache.get(key);
13
+ return entry ? !this.isEntryStale(entry, timeout) : false;
14
+ }
15
+ get(key, timeout) {
16
+ const entry = this.cache.get(key);
17
+ if (!entry || this.isEntryStale(entry, timeout)) {
18
+ return undefined;
19
+ }
20
+ // Single use
21
+ this.delete(key);
22
+ return entry.data;
23
+ }
24
+ set(key, value) {
25
+ this.cache.set(key, {
26
+ data: value,
27
+ timestamp: Date.now(),
28
+ });
29
+ }
30
+ delete(key) {
31
+ return this.cache.delete(key);
32
+ }
33
+ clear() {
34
+ this.cache.clear();
35
+ }
36
+ setIfMissing(key, computeFn, timeout) {
37
+ // Check cache first WITHOUT consuming it - just check if valid entry exists
38
+ const entry = this.cache.get(key);
39
+ if (entry && !this.isEntryStale(entry, timeout)) {
40
+ return; // Already cached and valid, nothing to do
41
+ }
42
+ // Create new computation and store it
43
+ const promise = computeFn();
44
+ this.set(key, promise);
45
+ }
46
+ size() {
47
+ return this.cache.size;
48
+ }
49
+ keys() {
50
+ return this.cache.keys();
51
+ }
52
+ entries() {
53
+ return Array.from(this.cache.entries()).map(([key, entry]) => [key, entry.data]);
54
+ }
55
+ }
56
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../js/router/cache.tsx"],"names":[],"mappings":"AASA,MAAM,OAAO,cAAc;IAKvB,YAAY,UAAwB,EAAE;;QAJ9B,UAAK,GAAG,IAAI,GAAG,EAAyB,CAAC;QAK7C,IAAI,CAAC,cAAc,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,IAAI,CAAC;IACzD,CAAC;IAEO,YAAY,CAAC,KAAoB,EAAE,OAAgB;QACvD,MAAM,SAAS,GAAG,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,IAAI,CAAC,cAAc,CAAC;QACjD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,OAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9D,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,OAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAC9C,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,aAAa;QACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,KAAiB;QAC9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAChB,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,GAAW;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,SAA2B,EAAE,OAAgB;QACnE,4EAA4E;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,0CAA0C;QACtD,CAAC;QAED,sCAAsC;QACtC,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,IAAI;QACA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,CAAC;CACJ"}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { type RouteObject } from 'react-router';
3
+ import { type RouteDefinition } from '../types';
4
+ interface RouterContextValue {
5
+ routeDefinitions: RouteDefinition[];
6
+ routeObjects: RouteObject[];
7
+ routeDefMap: Map<string, RouteDefinition>;
8
+ }
9
+ export declare function RouterContextProvider({ children, routeDefinitions, routeObjects, routeDefMap, }: {
10
+ children: React.ReactNode;
11
+ routeDefinitions: RouteDefinition[];
12
+ routeObjects: RouteObject[];
13
+ routeDefMap: Map<string, RouteDefinition>;
14
+ }): React.ReactElement;
15
+ export declare function useRouterContext(): RouterContextValue;
16
+ export {};
17
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../js/router/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,kBAAkB;IACxB,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAID,wBAAgB,qBAAqB,CAAC,EAClC,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,WAAW,GACd,EAAE;IACC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C,GAAG,KAAK,CAAC,YAAY,CAWrB;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAMrD"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import {} from 'react-router';
4
+ import {} from '../types';
5
+ const RouterContext = React.createContext(null);
6
+ export function RouterContextProvider({ children, routeDefinitions, routeObjects, routeDefMap, }) {
7
+ const value = React.useMemo(() => ({
8
+ routeDefinitions,
9
+ routeObjects,
10
+ routeDefMap,
11
+ }), [routeDefinitions, routeObjects, routeDefMap]);
12
+ return _jsx(RouterContext.Provider, { value: value, children: children });
13
+ }
14
+ export function useRouterContext() {
15
+ const context = React.useContext(RouterContext);
16
+ if (!context) {
17
+ throw new Error('useRouterContext must be used within a RouterContextProvider');
18
+ }
19
+ return context;
20
+ }
21
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../js/router/context.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAoB,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAwB,MAAM,SAAS,CAAC;AAQ/C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAA4B,IAAI,CAAC,CAAC;AAE3E,MAAM,UAAU,qBAAqB,CAAC,EAClC,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,WAAW,GAMd;IACG,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACvB,GAAG,EAAE,CAAC,CAAC;QACH,gBAAgB;QAChB,YAAY;QACZ,WAAW;KACd,CAAC,EACF,CAAC,gBAAgB,EAAE,YAAY,EAAE,WAAW,CAAC,CAChD,CAAC;IAEF,OAAO,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA0B,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ import { type RouteObject, createBrowserRouter } from 'react-router';
3
+ import type { Snapshot } from 'recoil';
4
+ import { type DaraData, type RouteDefinition } from '../types/core';
5
+ export declare function createRoute(route: RouteDefinition, snapshotRef: React.MutableRefObject<Snapshot>, routeDefMap: Map<string, RouteDefinition>): RouteObject;
6
+ /**
7
+ * Find the first navigatable path in the given routes.
8
+ * Walks the routes in a BFS and returns the first route with a path.
9
+ */
10
+ export declare function findFirstPath(routes: RouteDefinition[]): string;
11
+ interface RouterWithRoutes {
12
+ router: ReturnType<typeof createBrowserRouter>;
13
+ routeDefinitions: RouteDefinition[];
14
+ routeObjects: RouteObject[];
15
+ routeDefMap: Map<string, RouteDefinition>;
16
+ }
17
+ /**
18
+ * Create the router for the application
19
+ */
20
+ export declare function createRouter(config: DaraData, snapshotRef: React.MutableRefObject<Snapshot>): RouterWithRoutes;
21
+ export {};
22
+ //# sourceMappingURL=create-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-router.d.ts","sourceRoot":"","sources":["../../js/router/create-router.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,KAAK,WAAW,EAAE,mBAAmB,EAAY,MAAM,cAAc,CAAC;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAMvC,OAAO,EACH,KAAK,QAAQ,EAKb,KAAK,eAAe,EACvB,MAAM,cAAc,CAAC;AAmCtB,wBAAgB,WAAW,CACvB,KAAK,EAAE,eAAe,EACtB,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAC7C,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAC1C,WAAW,CA2Cb;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CA4C/D;AASD,UAAU,gBAAgB;IACtB,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;IAC/C,gBAAgB,EAAE,eAAe,EAAE,CAAC;IACpC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,gBAAgB,CA2F9G"}
@@ -19,16 +19,17 @@ var __rest = (this && this.__rest) || function (s, e) {
19
19
  return t;
20
20
  };
21
21
  import { jsx as _jsx } from "react/jsx-runtime";
22
+ import * as React from 'react';
22
23
  import { Navigate, createBrowserRouter, redirect } from 'react-router';
23
24
  import { getSessionToken, resolveReferrer, verifySessionToken } from '../auth';
24
25
  import { DefaultFallbackStatic } from '../components/fallback/default';
25
26
  import ErrorStatusCodePage from '../pages/error-status-code-page';
26
27
  import RouteErrorBoundary from '../pages/route-error-boundary';
27
28
  import {} from '../types/core';
28
- import DynamicAuthComponent from './dynamic-component/dynamic-auth-component';
29
- import AuthenticatedRoot from './root/authenticated-root';
30
- import RouteContent, { createRouteLoader } from './root/route-content';
31
- import UnauthenticatedRoot from './root/unauthenticated-root';
29
+ import DynamicAuthComponent from '../shared/dynamic-component/dynamic-auth-component';
30
+ import AuthenticatedRoot from '../shared/root/authenticated-root';
31
+ import UnauthenticatedRoot from '../shared/root/unauthenticated-root';
32
+ import RouteContent, { createRouteLoader } from './route-content';
32
33
  /**
33
34
  * Clean a single path segment by removing leading/trailing slashes
34
35
  */
@@ -54,7 +55,9 @@ function joinPaths(parentPath, childPath) {
54
55
  }
55
56
  return `/${cleanParent}/${cleanChild}`;
56
57
  }
57
- function createRoute(route, queryClient, snapshotRef) {
58
+ export function createRoute(route, snapshotRef, routeDefMap) {
59
+ // Add to route definition map for quick lookup
60
+ routeDefMap.set(route.id, route);
58
61
  const sharedProps = {
59
62
  id: route.id,
60
63
  caseSensitive: route.case_sensitive,
@@ -63,13 +66,13 @@ function createRoute(route, queryClient, snapshotRef) {
63
66
  };
64
67
  switch (route.__typename) {
65
68
  case 'IndexRoute':
66
- return Object.assign(Object.assign({}, sharedProps), { index: true, element: _jsx(RouteContent, { route: route }, route.id), loader: createRouteLoader(route, queryClient, snapshotRef) });
69
+ return Object.assign(Object.assign({}, sharedProps), { index: true, element: _jsx(RouteContent, { route: route }, route.id), loader: createRouteLoader(route, snapshotRef) });
67
70
  case 'PageRoute':
68
- return Object.assign(Object.assign({}, sharedProps), { path: cleanPath(route.path), element: _jsx(RouteContent, { route: route }, route.id), loader: createRouteLoader(route, queryClient, snapshotRef), children: route.children.map((r) => createRoute(r, queryClient, snapshotRef)) });
71
+ return Object.assign(Object.assign({}, sharedProps), { path: cleanPath(route.path), element: _jsx(RouteContent, { route: route }, route.id), loader: createRouteLoader(route, snapshotRef), children: route.children.map((r) => createRoute(r, snapshotRef, routeDefMap)) });
69
72
  case 'LayoutRoute':
70
- return Object.assign(Object.assign({}, sharedProps), { element: _jsx(RouteContent, { route: route }, route.id), loader: createRouteLoader(route, queryClient, snapshotRef), children: route.children.map((r) => createRoute(r, queryClient, snapshotRef)) });
73
+ return Object.assign(Object.assign({}, sharedProps), { element: _jsx(RouteContent, { route: route }, route.id), loader: createRouteLoader(route, snapshotRef), children: route.children.map((r) => createRoute(r, snapshotRef, routeDefMap)) });
71
74
  case 'PrefixRoute':
72
- return Object.assign(Object.assign({}, sharedProps), { path: cleanPath(route.path), children: route.children.map((r) => createRoute(r, queryClient, snapshotRef)) });
75
+ return Object.assign(Object.assign({}, sharedProps), { path: cleanPath(route.path), children: route.children.map((r) => createRoute(r, snapshotRef, routeDefMap)) });
73
76
  default:
74
77
  throw new Error(`Unknown route type ${JSON.stringify(route)}`);
75
78
  }
@@ -122,16 +125,18 @@ let verifiedToken = false;
122
125
  /**
123
126
  * Create the router for the application
124
127
  */
125
- export function createRouter(config, queryClient, snapshotRef) {
128
+ export function createRouter(config, snapshotRef) {
126
129
  let basename = '';
127
130
  // The base_url is set in the html template by the backend when returning it
128
131
  if (window.dara.base_url !== '') {
129
132
  basename = new URL(window.dara.base_url, window.origin).pathname;
130
133
  }
131
134
  const _a = config.auth_components, { login, logout } = _a, extraRoutes = __rest(_a, ["login", "logout"]);
132
- const userRoutes = config.router.children.map((r) => createRoute(r, queryClient, snapshotRef));
135
+ // Create map to collect route definitions during route creation
136
+ const routeDefMap = new Map();
137
+ const userRoutes = config.router.children.map((r) => createRoute(r, snapshotRef, routeDefMap));
133
138
  const defaultPath = findFirstPath(config.router.children) || '/';
134
- return createBrowserRouter([
139
+ const router = createBrowserRouter([
135
140
  {
136
141
  // wrapper around all the router content
137
142
  element: _jsx(UnauthenticatedRoot, {}),
@@ -195,5 +200,11 @@ export function createRouter(config, queryClient, snapshotRef) {
195
200
  ],
196
201
  },
197
202
  ], { basename });
203
+ return {
204
+ router,
205
+ routeDefinitions: config.router.children,
206
+ routeObjects: userRoutes,
207
+ routeDefMap,
208
+ };
198
209
  }
199
- //# sourceMappingURL=router.js.map
210
+ //# sourceMappingURL=create-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-router.js","sourceRoot":"","sources":["../../js/router/create-router.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import { type Params } from 'react-router';
2
+ import { type Snapshot } from 'recoil';
3
+ import * as z from 'zod/v4';
4
+ import { type Deferred, type DerivedResult } from '../shared';
5
+ import { ActionImpl, type ComponentInstance, type DerivedVariable, type NormalizedPayload, type PyComponentInstance, type RouteDefinition } from '../types';
6
+ export declare const TemplateChunk: z.ZodObject<{
7
+ type: z.ZodLiteral<"template">;
8
+ template: z.ZodObject<{
9
+ data: z.ZodAny;
10
+ lookup: z.ZodRecord<z.ZodString, z.ZodAny>;
11
+ }, z.core.$strip>;
12
+ }, z.core.$strip>;
13
+ export type TemplateChunk = z.infer<typeof TemplateChunk>;
14
+ export declare const ActionChunk: z.ZodObject<{
15
+ type: z.ZodLiteral<"actions">;
16
+ actions: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
17
+ name: z.ZodString;
18
+ __typename: z.ZodLiteral<"ActionImpl">;
19
+ }, z.core.$loose>>>;
20
+ }, z.core.$strip>;
21
+ export type ActionChunk = z.infer<typeof ActionChunk>;
22
+ export declare const DerivedVariableChunk: z.ZodObject<{
23
+ type: z.ZodLiteral<"derived_variable">;
24
+ uid: z.ZodString;
25
+ result: z.ZodObject<{
26
+ ok: z.ZodBoolean;
27
+ value: z.ZodAny;
28
+ }, z.core.$strip>;
29
+ }, z.core.$strip>;
30
+ export type DerivedVariableChunk = z.infer<typeof DerivedVariableChunk>;
31
+ export declare const PyComponentChunk: z.ZodObject<{
32
+ type: z.ZodLiteral<"py_component">;
33
+ uid: z.ZodString;
34
+ result: z.ZodObject<{
35
+ ok: z.ZodBoolean;
36
+ value: z.ZodAny;
37
+ }, z.core.$strip>;
38
+ }, z.core.$strip>;
39
+ export type PyComponentChunk = z.infer<typeof PyComponentChunk>;
40
+ export declare const ResponseChunk: z.ZodUnion<readonly [z.ZodObject<{
41
+ type: z.ZodLiteral<"template">;
42
+ template: z.ZodObject<{
43
+ data: z.ZodAny;
44
+ lookup: z.ZodRecord<z.ZodString, z.ZodAny>;
45
+ }, z.core.$strip>;
46
+ }, z.core.$strip>, z.ZodObject<{
47
+ type: z.ZodLiteral<"actions">;
48
+ actions: z.ZodRecord<z.ZodString, z.ZodArray<z.ZodObject<{
49
+ name: z.ZodString;
50
+ __typename: z.ZodLiteral<"ActionImpl">;
51
+ }, z.core.$loose>>>;
52
+ }, z.core.$strip>, z.ZodObject<{
53
+ type: z.ZodLiteral<"derived_variable">;
54
+ uid: z.ZodString;
55
+ result: z.ZodObject<{
56
+ ok: z.ZodBoolean;
57
+ value: z.ZodAny;
58
+ }, z.core.$strip>;
59
+ }, z.core.$strip>, z.ZodObject<{
60
+ type: z.ZodLiteral<"py_component">;
61
+ uid: z.ZodString;
62
+ result: z.ZodObject<{
63
+ ok: z.ZodBoolean;
64
+ value: z.ZodAny;
65
+ }, z.core.$strip>;
66
+ }, z.core.$strip>]>;
67
+ export type ResponseChunk = z.infer<typeof ResponseChunk>;
68
+ interface DerivedVariablePayload {
69
+ uid: string;
70
+ values: NormalizedPayload<any[]>;
71
+ }
72
+ interface PyComponentPayload {
73
+ uid: string;
74
+ name: string;
75
+ values: NormalizedPayload<Record<string, any>>;
76
+ }
77
+ interface DerivedVariableHandle {
78
+ dv: DerivedVariable;
79
+ result: DerivedResult;
80
+ handle: Deferred<any>;
81
+ payload: DerivedVariablePayload;
82
+ }
83
+ interface PyComponentHandle {
84
+ py: PyComponentInstance;
85
+ result: DerivedResult;
86
+ handle: Deferred<any>;
87
+ payload: PyComponentPayload;
88
+ }
89
+ export interface LoaderData {
90
+ template: ComponentInstance;
91
+ on_load: ActionImpl[];
92
+ route_definition: RouteDefinition;
93
+ derived_variables: DerivedVariableHandle[];
94
+ py_components: PyComponentHandle[];
95
+ }
96
+ /**
97
+ * Fetch route data from the server.
98
+ *
99
+ * Collects payloads for `on_load` actions as wel as `derived_variable`s and `py_component`s on the page and sends them in the same request.
100
+ */
101
+ export declare function fetchRouteData(route: RouteDefinition, params: Params<string>, snapshot: Snapshot, signal?: AbortSignal): Promise<LoaderData>;
102
+ /**
103
+ * Retrieve route data from the preload cache.
104
+ *
105
+ * @param routeId route ID
106
+ * @param params current route params
107
+ */
108
+ export declare function getFromPreloadCache(routeId: string, params: Params<string>): LoaderData | Promise<LoaderData> | undefined;
109
+ /**
110
+ * Provides a function to preload data for all routes matching a given URL.
111
+ * Checks the preload cache first, and if not found, fetches the data from the server.
112
+ */
113
+ export declare function usePreloadRoute(): (url: Partial<Location> | string) => void;
114
+ export {};
115
+ //# sourceMappingURL=fetching.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetching.d.ts","sourceRoot":"","sources":["../../js/router/fetching.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAe,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,KAAK,QAAQ,EAAqB,MAAM,QAAQ,CAAC;AAC1D,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAM5B,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAA4D,MAAM,UAAU,CAAC;AACvH,OAAO,EAEH,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAGpB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAEvB,MAAM,SAAS,CAAC;AA0BjB,eAAO,MAAM,aAAa;;;;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,WAAW;;;;;;iBAGtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,oBAAoB;;;;;;;iBAI/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,gBAAgB;;;;;;;iBAI3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;mBAAgF,CAAC;AAC3G,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,UAAU,sBAAsB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;CACpC;AAED,UAAU,kBAAkB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;CAClD;AAED,UAAU,qBAAqB;IAC3B,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,EAAE,sBAAsB,CAAC;CACnC;AAED,UAAU,iBAAiB;IACvB,EAAE,EAAE,mBAAmB,CAAC;IACxB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,gBAAgB,EAAE,eAAe,CAAC;IAClC,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,aAAa,EAAE,iBAAiB,EAAE,CAAC;CACtC;AAkDD;;;;GAIG;AACH,wBAAsB,cAAc,CAChC,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EACtB,QAAQ,EAAE,QAAQ,EAClB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC,UAAU,CAAC,CAwJrB;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GACvB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,SAAS,CAE9C;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,KAAK,IAAI,CA0B3E"}