@real-router/svelte 0.13.2 → 0.13.3
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/RouterProvider.svelte +8 -0
- package/dist/components/Link.svelte +2 -0
- package/dist/components/RouteView.svelte +2 -0
- package/dist/dom-utils/link-utils.js +3 -3
- package/dist/dom-utils/scroll-spy.js +1 -0
- package/package.json +6 -6
- package/dist/dom-utils/__test-helpers/expected-fragment.d.ts +0 -30
- package/dist/dom-utils/__test-helpers/expected-fragment.js +0 -43
- package/dist/dom-utils/__test-helpers/index.d.ts +0 -8
- package/dist/dom-utils/__test-helpers/index.js +0 -8
- package/src/RouterProvider.svelte +0 -112
- package/src/actions/link.svelte.ts +0 -88
- package/src/components/Await.svelte +0 -48
- package/src/components/ClientOnly.svelte +0 -22
- package/src/components/HttpStatusCode.svelte +0 -63
- package/src/components/HttpStatusProvider.svelte +0 -45
- package/src/components/Lazy.svelte +0 -55
- package/src/components/Link.svelte +0 -95
- package/src/components/RouteView.helpers.ts +0 -24
- package/src/components/RouteView.svelte +0 -35
- package/src/components/RouterErrorBoundary.svelte +0 -47
- package/src/components/ServerOnly.svelte +0 -22
- package/src/components/Streamed.svelte +0 -37
- package/src/composables/useDeferred.svelte.ts +0 -41
- package/src/composables/useIsActiveRoute.svelte.ts +0 -30
- package/src/composables/useNavigator.svelte.ts +0 -6
- package/src/composables/useRoute.svelte.ts +0 -25
- package/src/composables/useRouteEnter.svelte.ts +0 -120
- package/src/composables/useRouteExit.svelte.ts +0 -113
- package/src/composables/useRouteNode.svelte.ts +0 -18
- package/src/composables/useRouteUtils.svelte.ts +0 -12
- package/src/composables/useRouter.svelte.ts +0 -6
- package/src/composables/useRouterTransition.svelte.ts +0 -15
- package/src/constants.ts +0 -7
- package/src/context.ts +0 -24
- package/src/createReactiveSource.svelte.ts +0 -21
- package/src/createRouteContext.svelte.ts +0 -27
- package/src/index.ts +0 -60
- package/src/ssr.ts +0 -28
- package/src/types.ts +0 -46
- package/src/utils/createHttpStatusSink.ts +0 -31
package/src/context.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { getContext } from "svelte";
|
|
2
|
-
|
|
3
|
-
export const ROUTER_KEY = "real-router:router";
|
|
4
|
-
|
|
5
|
-
export const NAVIGATOR_KEY = "real-router:navigator";
|
|
6
|
-
|
|
7
|
-
export const ROUTE_KEY = "real-router:route";
|
|
8
|
-
|
|
9
|
-
export const HTTP_STATUS_KEY = "real-router:http-status-sink";
|
|
10
|
-
|
|
11
|
-
// The type parameter is used by the caller to narrow the return type.
|
|
12
|
-
// ESLint's no-unnecessary-type-parameters sees only a single textual use of T
|
|
13
|
-
// (the return type) — but each call site supplies a different T, so it is not
|
|
14
|
-
// unnecessary. Inline generic helpers are a standard pattern for typed context.
|
|
15
|
-
// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters
|
|
16
|
-
export function getContextOrThrow<T>(key: string, consumerName: string): T {
|
|
17
|
-
const value = getContext<T | undefined>(key);
|
|
18
|
-
|
|
19
|
-
if (!value) {
|
|
20
|
-
throw new Error(`${consumerName} must be used within a RouterProvider`);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return value;
|
|
24
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { createSubscriber } from "svelte/reactivity";
|
|
2
|
-
|
|
3
|
-
import type { RouterSource } from "@real-router/sources";
|
|
4
|
-
|
|
5
|
-
export function createReactiveSource<T>(source: RouterSource<T>): {
|
|
6
|
-
readonly current: T;
|
|
7
|
-
} {
|
|
8
|
-
const subscribe = createSubscriber((update) => {
|
|
9
|
-
return source.subscribe(() => {
|
|
10
|
-
update();
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
return {
|
|
15
|
-
get current(): T {
|
|
16
|
-
subscribe();
|
|
17
|
-
|
|
18
|
-
return source.getSnapshot();
|
|
19
|
-
},
|
|
20
|
-
};
|
|
21
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { Navigator, State } from "@real-router/core";
|
|
2
|
-
|
|
3
|
-
import type { RouteContext } from "./types";
|
|
4
|
-
|
|
5
|
-
export interface RouteSnapshot {
|
|
6
|
-
readonly route: State | undefined;
|
|
7
|
-
readonly previousRoute: State | undefined;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export function createRouteContext(
|
|
11
|
-
navigator: Navigator,
|
|
12
|
-
reactive: { readonly current: RouteSnapshot },
|
|
13
|
-
): RouteContext {
|
|
14
|
-
const route = {
|
|
15
|
-
get current(): State | undefined {
|
|
16
|
-
return reactive.current.route;
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
const previousRoute = {
|
|
21
|
-
get current(): State | undefined {
|
|
22
|
-
return reactive.current.previousRoute;
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
return { navigator, route, previousRoute };
|
|
27
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
// Components
|
|
2
|
-
export { default as RouteView } from "./components/RouteView.svelte";
|
|
3
|
-
|
|
4
|
-
export { default as Link } from "./components/Link.svelte";
|
|
5
|
-
|
|
6
|
-
export { default as Lazy } from "./components/Lazy.svelte";
|
|
7
|
-
|
|
8
|
-
export { default as RouterErrorBoundary } from "./components/RouterErrorBoundary.svelte";
|
|
9
|
-
|
|
10
|
-
// Reactive Primitives
|
|
11
|
-
export { createReactiveSource } from "./createReactiveSource.svelte";
|
|
12
|
-
|
|
13
|
-
// Composables
|
|
14
|
-
export { useRouter } from "./composables/useRouter.svelte";
|
|
15
|
-
|
|
16
|
-
export { useNavigator } from "./composables/useNavigator.svelte";
|
|
17
|
-
|
|
18
|
-
export { useRouteUtils } from "./composables/useRouteUtils.svelte";
|
|
19
|
-
|
|
20
|
-
export { useRoute } from "./composables/useRoute.svelte";
|
|
21
|
-
|
|
22
|
-
export { useRouteNode } from "./composables/useRouteNode.svelte";
|
|
23
|
-
|
|
24
|
-
export { useRouterTransition } from "./composables/useRouterTransition.svelte";
|
|
25
|
-
|
|
26
|
-
export { useRouteExit } from "./composables/useRouteExit.svelte";
|
|
27
|
-
|
|
28
|
-
export { useRouteEnter } from "./composables/useRouteEnter.svelte";
|
|
29
|
-
|
|
30
|
-
// Actions
|
|
31
|
-
export { createLinkAction } from "./actions/link.svelte";
|
|
32
|
-
|
|
33
|
-
export type { LinkActionParams } from "./actions/link.svelte";
|
|
34
|
-
|
|
35
|
-
// Context
|
|
36
|
-
export { default as RouterProvider } from "./RouterProvider.svelte";
|
|
37
|
-
|
|
38
|
-
export { ROUTER_KEY, NAVIGATOR_KEY, ROUTE_KEY } from "./context";
|
|
39
|
-
|
|
40
|
-
// Types
|
|
41
|
-
export type { LinkProps, RouteContext } from "./types";
|
|
42
|
-
|
|
43
|
-
export type {
|
|
44
|
-
RouteExitContext,
|
|
45
|
-
RouteExitHandler,
|
|
46
|
-
UseRouteExitOptions,
|
|
47
|
-
} from "./composables/useRouteExit.svelte";
|
|
48
|
-
|
|
49
|
-
export type {
|
|
50
|
-
RouteEnterContext,
|
|
51
|
-
RouteEnterHandler,
|
|
52
|
-
UseRouteEnterOptions,
|
|
53
|
-
} from "./composables/useRouteEnter.svelte";
|
|
54
|
-
|
|
55
|
-
export type { Navigator } from "@real-router/core";
|
|
56
|
-
|
|
57
|
-
export type {
|
|
58
|
-
RouterTransitionSnapshot,
|
|
59
|
-
RouterErrorSnapshot,
|
|
60
|
-
} from "@real-router/sources";
|
package/src/ssr.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
// SSR-feature entry — Svelte 5+
|
|
2
|
-
//
|
|
3
|
-
// Server-side and SSR-aware components/composables. Mirror of `@real-router/react/ssr`
|
|
4
|
-
// — same exports, Svelte-native idioms (`{#await}` block under the hood,
|
|
5
|
-
// `$state` rune for ClientOnly/ServerOnly, useDeferred returns Promise<T>
|
|
6
|
-
// for direct use with native `{#await}`).
|
|
7
|
-
|
|
8
|
-
// Components
|
|
9
|
-
export { default as ClientOnly } from "./components/ClientOnly.svelte";
|
|
10
|
-
|
|
11
|
-
export { default as ServerOnly } from "./components/ServerOnly.svelte";
|
|
12
|
-
|
|
13
|
-
export { default as Await } from "./components/Await.svelte";
|
|
14
|
-
|
|
15
|
-
export { default as Streamed } from "./components/Streamed.svelte";
|
|
16
|
-
|
|
17
|
-
export { default as HttpStatusCode } from "./components/HttpStatusCode.svelte";
|
|
18
|
-
|
|
19
|
-
export { default as HttpStatusProvider } from "./components/HttpStatusProvider.svelte";
|
|
20
|
-
|
|
21
|
-
// Composables
|
|
22
|
-
export { useDeferred } from "./composables/useDeferred.svelte";
|
|
23
|
-
|
|
24
|
-
// Utilities
|
|
25
|
-
export { createHttpStatusSink } from "./utils/createHttpStatusSink";
|
|
26
|
-
|
|
27
|
-
// Types
|
|
28
|
-
export type { HttpStatusSink } from "./utils/createHttpStatusSink";
|
package/src/types.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
NavigationOptions,
|
|
3
|
-
Navigator,
|
|
4
|
-
Params,
|
|
5
|
-
State,
|
|
6
|
-
} from "@real-router/core";
|
|
7
|
-
import type { Snippet } from "svelte";
|
|
8
|
-
|
|
9
|
-
export interface RouteContext<P extends Params = Params> {
|
|
10
|
-
readonly navigator: Navigator;
|
|
11
|
-
readonly route: { readonly current: State<P> | undefined };
|
|
12
|
-
readonly previousRoute: { readonly current: State | undefined };
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Props accepted by `<Link>`. Mirrors the inline prop shape in
|
|
17
|
-
* `src/components/Link.svelte` — any prop landed by `Link.svelte` is also
|
|
18
|
-
* declared here, including the rest-props index signature for arbitrary
|
|
19
|
-
* HTML attributes spread onto the rendered `<a>`.
|
|
20
|
-
*/
|
|
21
|
-
export interface LinkProps<P extends Params = Params> {
|
|
22
|
-
/**
|
|
23
|
-
* All other props are spread onto the rendered `<a>` element. Use this for
|
|
24
|
-
* `aria-*`, `data-*`, `id`, `title`, and any other native attributes.
|
|
25
|
-
*/
|
|
26
|
-
readonly [key: string]: unknown;
|
|
27
|
-
readonly routeName: string;
|
|
28
|
-
readonly routeParams?: P;
|
|
29
|
-
readonly routeOptions?: NavigationOptions;
|
|
30
|
-
readonly class?: string;
|
|
31
|
-
readonly activeClassName?: string;
|
|
32
|
-
readonly activeStrict?: boolean;
|
|
33
|
-
readonly ignoreQueryParams?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* URL fragment (decoded, no leading "#") — #532.
|
|
36
|
-
* - `undefined` → preserve current `state.context.url.hash` on click.
|
|
37
|
-
* - `""` → clear the hash.
|
|
38
|
-
* - `"value"` → set the hash; same-route different-hash clicks route through
|
|
39
|
-
* `navigateWithHash`, which adds `force: true, hashChange: true` to
|
|
40
|
-
* bypass core's SAME_STATES check.
|
|
41
|
-
*/
|
|
42
|
-
readonly hash?: string;
|
|
43
|
-
readonly target?: string;
|
|
44
|
-
readonly children?: Snippet;
|
|
45
|
-
readonly onclick?: (evt: MouseEvent) => void;
|
|
46
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Render-scoped HTTP status sink. Created per request on the server, passed to
|
|
3
|
-
* `<HttpStatusProvider sink={...}>`, and read after `await render()` from
|
|
4
|
-
* `svelte/server` to apply the value to the HTTP response.
|
|
5
|
-
*
|
|
6
|
-
* Last write wins: if the rendered tree mounts more than one
|
|
7
|
-
* `<HttpStatusCode />`, the value reflects the last component that ran during
|
|
8
|
-
* the render pass.
|
|
9
|
-
*
|
|
10
|
-
* No-op on the client — `<HttpStatusCode />` reads the optional injected sink
|
|
11
|
-
* and skips the write when no provider is mounted, so the same component tree
|
|
12
|
-
* can be hydrated without changing behaviour.
|
|
13
|
-
*
|
|
14
|
-
* Constraints:
|
|
15
|
-
* - **Per-request only.** Don't share a sink across requests; the rendered
|
|
16
|
-
* tree mutates `code` in place. Module-level singletons leak status
|
|
17
|
-
* between concurrent requests.
|
|
18
|
-
* - **Don't `Object.freeze` the sink.** The component writes to `.code`;
|
|
19
|
-
* freezing makes the assignment throw under ESM strict mode.
|
|
20
|
-
* - **Hydration is tolerant.** Svelte 5's hydration walker accepts
|
|
21
|
-
* `{#if}`-branch asymmetry between server and client (verified by `ssr/`
|
|
22
|
-
* e2e), so the example app uses a server-only provider wrapper. This
|
|
23
|
-
* contrasts with Vue/Solid, which require symmetric provider mounting.
|
|
24
|
-
*/
|
|
25
|
-
export interface HttpStatusSink {
|
|
26
|
-
code: number | undefined;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function createHttpStatusSink(): HttpStatusSink {
|
|
30
|
-
return { code: undefined };
|
|
31
|
-
}
|