@vidact/start 0.2.0-beta.0
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/CHANGELOG.md +22 -0
- package/LICENSE +21 -0
- package/README.md +65 -0
- package/dist/client.d.ts +20 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +181 -0
- package/dist/client.js.map +1 -0
- package/dist/index-client.d.ts +4 -0
- package/dist/index-client.d.ts.map +1 -0
- package/dist/index-client.js +4 -0
- package/dist/index-client.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/link-client.d.ts +5 -0
- package/dist/link-client.d.ts.map +1 -0
- package/dist/link-client.js +6 -0
- package/dist/link-client.js.map +1 -0
- package/dist/link-contract.d.ts +9 -0
- package/dist/link-contract.d.ts.map +1 -0
- package/dist/link-contract.js +9 -0
- package/dist/link-contract.js.map +1 -0
- package/dist/link.d.ts +5 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +6 -0
- package/dist/link.js.map +1 -0
- package/dist/router.d.ts +69 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +172 -0
- package/dist/router.js.map +1 -0
- package/dist/server.d.ts +19 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +113 -0
- package/dist/server.js.map +1 -0
- package/dist/snapshot.d.ts +12 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +25 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/virtual.d.ts +4 -0
- package/dist/virtual.d.ts.map +1 -0
- package/dist/virtual.js +2 -0
- package/dist/virtual.js.map +1 -0
- package/dist/vite.d.ts +18 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +200 -0
- package/dist/vite.js.map +1 -0
- package/package.json +76 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# @vidact/start
|
|
2
|
+
|
|
3
|
+
## 0.2.0-beta.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 6268a0c: Add Vidact Start with file routes, typed loaders, request handlers, SSR,
|
|
8
|
+
hydration, cancellable Link navigation, browser history, and Vite development
|
|
9
|
+
and build integration.
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies
|
|
14
|
+
- @vidact/runtime@0.2.0-beta.0
|
|
15
|
+
- @vidact/vite@0.2.0-beta.0
|
|
16
|
+
|
|
17
|
+
## 0.1.0
|
|
18
|
+
|
|
19
|
+
### Minor Changes
|
|
20
|
+
|
|
21
|
+
- Add the first Vidact Start route, server-rendering, hydration, Link navigation,
|
|
22
|
+
browser-history, and Vite manifest contracts.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mohebifar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# @vidact/start
|
|
2
|
+
|
|
3
|
+
Vidact-native full-stack framework primitives for file routes, server rendering,
|
|
4
|
+
and hydration.
|
|
5
|
+
|
|
6
|
+
This first release owns the route manifest and request lifecycle while keeping
|
|
7
|
+
the renderer boundary explicit. It supports directory-based routes, nested
|
|
8
|
+
layouts, loaders, server endpoints, SSR, and initial hydration on Vite and Node.
|
|
9
|
+
`Link` and the hydrated client add cancellable same-document navigation and
|
|
10
|
+
browser-history restoration. Route preloading, middleware, and deployment
|
|
11
|
+
adapters remain future work.
|
|
12
|
+
|
|
13
|
+
```ts
|
|
14
|
+
// vite.config.ts
|
|
15
|
+
import { vidactStart } from '@vidact/start/vite'
|
|
16
|
+
|
|
17
|
+
export default {
|
|
18
|
+
plugins: [vidactStart()],
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
// src/routes/index.tsx
|
|
24
|
+
import { defineFileRoute, Link, type RouteComponentProps } from '@vidact/start'
|
|
25
|
+
|
|
26
|
+
const loader = () => ({ greeting: 'Hello from Vidact Start' })
|
|
27
|
+
|
|
28
|
+
export function HomeRoute({
|
|
29
|
+
loaderData,
|
|
30
|
+
}: RouteComponentProps<ReturnType<typeof loader>>) {
|
|
31
|
+
return (
|
|
32
|
+
<main>
|
|
33
|
+
<h1>{loaderData.greeting}</h1>
|
|
34
|
+
<Link href="/products">Products</Link>
|
|
35
|
+
</main>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const Route = defineFileRoute({ loader, component: HomeRoute })
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Route files are exposed through `virtual:vidact-start/routes`. Add
|
|
43
|
+
`import '@vidact/start/virtual'` to a declaration file included by the
|
|
44
|
+
application. Route components must be named functions so the Vidact compiler
|
|
45
|
+
can identify and lower them.
|
|
46
|
+
|
|
47
|
+
`Link` renders an ordinary anchor during SSR. After hydration, unmodified clicks
|
|
48
|
+
on same-origin Start routes request a server loader snapshot, replace the owned
|
|
49
|
+
route root, and update browser history without loading another document.
|
|
50
|
+
External URLs, downloads, modified clicks, `target` links, hash-only links, and
|
|
51
|
+
links with `reloadDocument` retain native browser behavior. Use `replace` to
|
|
52
|
+
replace the current history entry.
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<Link href="/products/42">Product 42</Link>
|
|
56
|
+
<Link href="/login" replace>Sign in</Link>
|
|
57
|
+
<Link href="/report.pdf" reloadDocument>Download report</Link>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`hydrateStart()` returns a `StartClient` whose `navigate()` method provides the
|
|
61
|
+
same behavior for programmatic navigation.
|
|
62
|
+
|
|
63
|
+
This first navigation contract replaces the owned route root atomically, so
|
|
64
|
+
component-local state in shared layouts resets. Retaining unchanged layout
|
|
65
|
+
owners is a follow-up routing contract.
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type CompiledRoot } from '@vidact/runtime';
|
|
2
|
+
import { type RouteManifest, type StartComponent } from './router.js';
|
|
3
|
+
export interface HydrateStartOptions {
|
|
4
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
5
|
+
readonly manifest: RouteManifest;
|
|
6
|
+
readonly root?: ParentNode;
|
|
7
|
+
readonly rootId?: string;
|
|
8
|
+
readonly snapshot?: string;
|
|
9
|
+
readonly snapshotId?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface StartNavigateOptions {
|
|
12
|
+
readonly replace?: boolean;
|
|
13
|
+
readonly scroll?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface StartClient extends CompiledRoot {
|
|
16
|
+
readonly navigate: (to: string | URL, options?: StartNavigateOptions) => Promise<boolean>;
|
|
17
|
+
}
|
|
18
|
+
export declare function hydrateStart(options: HydrateStartOptions): Promise<StartClient>;
|
|
19
|
+
export type { StartComponent };
|
|
20
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAA;AAUpB,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC1F;AAID,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqIrF;AAkFD,YAAY,EAAE,cAAc,EAAE,CAAA"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { cloneRenderable, compiledRoot, createCompiledScope, } from '@vidact/runtime';
|
|
2
|
+
import { createElement, hydrateRoot } from '@vidact/runtime/hydrate';
|
|
3
|
+
import { composeRouteMatches, loadRouteMatches, matchRoutes, } from './router.js';
|
|
4
|
+
import { decodeStartSnapshot, VIDACT_START_NAVIGATION_HEADER, VIDACT_START_SNAPSHOT_MEDIA_TYPE, } from './snapshot.js';
|
|
5
|
+
const DEFAULT_ROOT_ID = 'vidact-start-root';
|
|
6
|
+
const DEFAULT_SNAPSHOT_ID = 'vidact-start-snapshot';
|
|
7
|
+
export async function hydrateStart(options) {
|
|
8
|
+
const snapshot = decodeStartSnapshot(options.snapshot ?? readSnapshot(options.snapshotId ?? DEFAULT_SNAPSHOT_ID));
|
|
9
|
+
const initialUrl = new URL(snapshot.pathname, window.location.href);
|
|
10
|
+
const matches = matchRoutes(options.manifest, initialUrl.pathname);
|
|
11
|
+
if (matches.length === 0)
|
|
12
|
+
throw new Error(`cannot hydrate unmatched route ${snapshot.pathname}`);
|
|
13
|
+
const request = new Request(initialUrl);
|
|
14
|
+
const loaded = await loadRouteMatches(matches, request, snapshot.loaderData);
|
|
15
|
+
const host = options.root ?? document.querySelector(`#${CSS.escape(options.rootId ?? DEFAULT_ROOT_ID)}`);
|
|
16
|
+
if (host === null)
|
|
17
|
+
throw new Error('Vidact Start hydration root is missing');
|
|
18
|
+
const root = hydrateRoot(host, createClientApplication(loaded, request.url));
|
|
19
|
+
const fetchNavigation = options.fetch ?? window.fetch.bind(window);
|
|
20
|
+
let navigation = 0;
|
|
21
|
+
let navigationController;
|
|
22
|
+
let disposed = false;
|
|
23
|
+
async function navigate(to, navigationOptions = {}) {
|
|
24
|
+
return performNavigation(new URL(to, window.location.href), navigationOptions.replace === true ? 'replace' : 'push', navigationOptions.scroll !== false);
|
|
25
|
+
}
|
|
26
|
+
async function performNavigation(target, historyMode, scroll) {
|
|
27
|
+
if (disposed)
|
|
28
|
+
throw new Error('cannot navigate an unmounted Vidact Start client');
|
|
29
|
+
if (!isClientNavigationUrl(target)) {
|
|
30
|
+
navigateDocument(target, historyMode === 'replace');
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
const nextMatches = matchRoutes(options.manifest, target.pathname);
|
|
34
|
+
if (nextMatches.length === 0) {
|
|
35
|
+
navigateDocument(target, historyMode === 'replace');
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
navigation += 1;
|
|
39
|
+
const attempt = navigation;
|
|
40
|
+
navigationController?.abort();
|
|
41
|
+
const controller = new AbortController();
|
|
42
|
+
navigationController = controller;
|
|
43
|
+
try {
|
|
44
|
+
const response = await fetchNavigation(target, {
|
|
45
|
+
credentials: 'same-origin',
|
|
46
|
+
headers: { [VIDACT_START_NAVIGATION_HEADER]: '1' },
|
|
47
|
+
signal: controller.signal,
|
|
48
|
+
});
|
|
49
|
+
if (attempt !== navigation)
|
|
50
|
+
return false;
|
|
51
|
+
if (!response.ok ||
|
|
52
|
+
response.headers.get('content-type')?.split(';', 1)[0] !== VIDACT_START_SNAPSHOT_MEDIA_TYPE) {
|
|
53
|
+
navigateDocument(target, historyMode === 'replace');
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const nextSnapshot = decodeStartSnapshot(await response.text());
|
|
57
|
+
const nextUrl = new URL(nextSnapshot.pathname, target.origin);
|
|
58
|
+
const snapshotMatches = matchRoutes(options.manifest, nextUrl.pathname);
|
|
59
|
+
if (snapshotMatches.length === 0) {
|
|
60
|
+
navigateDocument(target, historyMode === 'replace');
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const nextRequest = new Request(nextUrl);
|
|
64
|
+
const nextLoaded = await loadRouteMatches(snapshotMatches, nextRequest, nextSnapshot.loaderData);
|
|
65
|
+
if (attempt !== navigation)
|
|
66
|
+
return false;
|
|
67
|
+
root.replace(createClientApplication(nextLoaded, nextRequest.url));
|
|
68
|
+
updateHistory(nextUrl, historyMode);
|
|
69
|
+
if (scroll)
|
|
70
|
+
scrollToLocation(nextUrl);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
if (controller.signal.aborted || attempt !== navigation)
|
|
75
|
+
return false;
|
|
76
|
+
navigateDocument(target, historyMode === 'replace');
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function handleClick(event) {
|
|
81
|
+
const anchor = linkForEvent(event);
|
|
82
|
+
if (anchor === undefined)
|
|
83
|
+
return;
|
|
84
|
+
const target = new URL(anchor.href, window.location.href);
|
|
85
|
+
if (target.pathname === window.location.pathname &&
|
|
86
|
+
target.search === window.location.search &&
|
|
87
|
+
target.hash !== window.location.hash) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
void performNavigation(target, anchor.hasAttribute('data-vidact-start-replace') ? 'replace' : 'push', true);
|
|
92
|
+
}
|
|
93
|
+
function handlePopState() {
|
|
94
|
+
void performNavigation(new URL(window.location.href), 'none', false);
|
|
95
|
+
}
|
|
96
|
+
document.addEventListener('click', handleClick);
|
|
97
|
+
window.addEventListener('popstate', handlePopState);
|
|
98
|
+
return {
|
|
99
|
+
mount: root.mount,
|
|
100
|
+
replace: root.replace,
|
|
101
|
+
navigate,
|
|
102
|
+
unmount() {
|
|
103
|
+
if (disposed)
|
|
104
|
+
return;
|
|
105
|
+
disposed = true;
|
|
106
|
+
navigation += 1;
|
|
107
|
+
navigationController?.abort();
|
|
108
|
+
document.removeEventListener('click', handleClick);
|
|
109
|
+
window.removeEventListener('popstate', handlePopState);
|
|
110
|
+
root.unmount();
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
function createClientApplication(matches, requestUrl) {
|
|
115
|
+
return () => {
|
|
116
|
+
const scope = createCompiledScope();
|
|
117
|
+
const application = composeRouteMatches(matches, (component, props) => createElement(component, props), requestUrl);
|
|
118
|
+
return compiledRoot(scope, () => cloneRenderable(application));
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function linkForEvent(event) {
|
|
122
|
+
if (event.defaultPrevented ||
|
|
123
|
+
event.button !== 0 ||
|
|
124
|
+
event.metaKey ||
|
|
125
|
+
event.ctrlKey ||
|
|
126
|
+
event.shiftKey ||
|
|
127
|
+
event.altKey) {
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
const target = event.target;
|
|
131
|
+
if (!(target instanceof Element))
|
|
132
|
+
return undefined;
|
|
133
|
+
const anchor = target.closest('a[data-vidact-start-link]');
|
|
134
|
+
if (anchor === null ||
|
|
135
|
+
anchor.hasAttribute('download') ||
|
|
136
|
+
(anchor.target !== '' && anchor.target !== '_self') ||
|
|
137
|
+
anchor.rel.split(/\s+/u).includes('external')) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
const url = new URL(anchor.href, window.location.href);
|
|
141
|
+
return isClientNavigationUrl(url) ? anchor : undefined;
|
|
142
|
+
}
|
|
143
|
+
function isClientNavigationUrl(url) {
|
|
144
|
+
return (url.origin === window.location.origin && (url.protocol === 'http:' || url.protocol === 'https:'));
|
|
145
|
+
}
|
|
146
|
+
function updateHistory(url, mode) {
|
|
147
|
+
if (mode === 'push')
|
|
148
|
+
window.history.pushState({}, '', url);
|
|
149
|
+
else if (mode === 'replace')
|
|
150
|
+
window.history.replaceState(window.history.state, '', url);
|
|
151
|
+
}
|
|
152
|
+
function scrollToLocation(url) {
|
|
153
|
+
if (url.hash.length > 1) {
|
|
154
|
+
let id;
|
|
155
|
+
try {
|
|
156
|
+
id = decodeURIComponent(url.hash.slice(1));
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
id = url.hash.slice(1);
|
|
160
|
+
}
|
|
161
|
+
const target = document.getElementById(id);
|
|
162
|
+
if (target !== null) {
|
|
163
|
+
target.scrollIntoView();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
window.scrollTo({ top: 0, left: 0, behavior: 'instant' });
|
|
168
|
+
}
|
|
169
|
+
function navigateDocument(url, replace) {
|
|
170
|
+
if (replace)
|
|
171
|
+
window.location.replace(url);
|
|
172
|
+
else
|
|
173
|
+
window.location.assign(url);
|
|
174
|
+
}
|
|
175
|
+
function readSnapshot(id) {
|
|
176
|
+
const element = document.querySelector(`#${CSS.escape(id)}`);
|
|
177
|
+
if (element === null)
|
|
178
|
+
throw new Error(`Vidact Start snapshot ${id} is missing`);
|
|
179
|
+
return element.textContent ?? '';
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-client.d.ts","sourceRoot":"","sources":["../src/index-client.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-client.js","sourceRoot":"","sources":["../src/index-client.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-client.d.ts","sourceRoot":"","sources":["../src/link-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEhE,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB,CAE1D;AAED,YAAY,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-client.js","sourceRoot":"","sources":["../src/link-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAA;AAEhE,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAmC,CAAA;AACjF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CompiledRenderValue } from '@vidact/runtime';
|
|
2
|
+
export interface LinkProps extends Readonly<Record<string, unknown>> {
|
|
3
|
+
readonly children?: CompiledRenderValue;
|
|
4
|
+
readonly href: string;
|
|
5
|
+
readonly reloadDocument?: boolean;
|
|
6
|
+
readonly replace?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function anchorProps(props: LinkProps): Record<string, unknown>;
|
|
9
|
+
//# sourceMappingURL=link-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-contract.d.ts","sourceRoot":"","sources":["../src/link-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,MAAM,WAAW,SAAU,SAAQ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClE,QAAQ,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAA;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOrE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function anchorProps(props) {
|
|
2
|
+
const { reloadDocument = false, replace = false, ...attributes } = props;
|
|
3
|
+
return {
|
|
4
|
+
...attributes,
|
|
5
|
+
...(reloadDocument ? {} : { 'data-vidact-start-link': '' }),
|
|
6
|
+
...(replace ? { 'data-vidact-start-replace': '' } : {}),
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=link-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link-contract.js","sourceRoot":"","sources":["../src/link-contract.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,WAAW,CAAC,KAAgB;IAC1C,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAA;IACxE,OAAO;QACL,GAAG,UAAU;QACb,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,2BAA2B,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAA;AACH,CAAC"}
|
package/dist/link.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAG1D,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEhE,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB,CAE1D;AAED,YAAY,EAAE,SAAS,EAAE,CAAA"}
|
package/dist/link.js
ADDED
package/dist/link.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAoB,MAAM,wBAAwB,CAAA;AAExE,OAAO,EAAE,WAAW,EAAkB,MAAM,oBAAoB,CAAA;AAEhE,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAkD,CAAA;AAChG,CAAC"}
|
package/dist/router.d.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { CompiledRenderValue } from '@vidact/runtime';
|
|
2
|
+
import type { FrameworkValue } from '@vidact/runtime/framework/protocol';
|
|
3
|
+
declare const FILE_ROUTE: unique symbol;
|
|
4
|
+
export type RouteParameters = Readonly<Record<string, string>>;
|
|
5
|
+
export type StartComponent<LoaderData extends FrameworkValue = FrameworkValue> = {
|
|
6
|
+
bivarianceHack(props: RouteComponentProps<LoaderData>): unknown;
|
|
7
|
+
}['bivarianceHack'];
|
|
8
|
+
export interface RouteComponentProps<LoaderData extends FrameworkValue = FrameworkValue> extends Readonly<Record<string, unknown>> {
|
|
9
|
+
readonly children?: CompiledRenderValue;
|
|
10
|
+
readonly loaderData: LoaderData;
|
|
11
|
+
readonly params: RouteParameters;
|
|
12
|
+
readonly requestUrl: string;
|
|
13
|
+
}
|
|
14
|
+
export interface RouteLoaderContext {
|
|
15
|
+
readonly parentData: Readonly<Record<string, FrameworkValue>>;
|
|
16
|
+
readonly params: RouteParameters;
|
|
17
|
+
readonly request: Request;
|
|
18
|
+
}
|
|
19
|
+
export interface RouteServerContext {
|
|
20
|
+
readonly params: RouteParameters;
|
|
21
|
+
readonly request: Request;
|
|
22
|
+
}
|
|
23
|
+
export type RouteServerHandler = (context: RouteServerContext) => Response | Promise<Response>;
|
|
24
|
+
export interface FileRouteOptions<LoaderData extends FrameworkValue = FrameworkValue> {
|
|
25
|
+
readonly component?: StartComponent<LoaderData>;
|
|
26
|
+
readonly loader?: (context: RouteLoaderContext) => LoaderData | Promise<LoaderData>;
|
|
27
|
+
readonly server?: {
|
|
28
|
+
readonly handlers: Readonly<Partial<Record<string, RouteServerHandler>>>;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export interface FileRouteDefinition<LoaderData extends FrameworkValue = FrameworkValue> {
|
|
32
|
+
readonly [FILE_ROUTE]: true;
|
|
33
|
+
readonly options: FileRouteOptions<LoaderData>;
|
|
34
|
+
}
|
|
35
|
+
export interface RouteModule {
|
|
36
|
+
readonly Route?: FileRouteDefinition;
|
|
37
|
+
readonly default?: FileRouteDefinition;
|
|
38
|
+
}
|
|
39
|
+
export interface RouteManifestEntry {
|
|
40
|
+
readonly id: string;
|
|
41
|
+
readonly parentId: string | null;
|
|
42
|
+
readonly path: string;
|
|
43
|
+
readonly load: () => PromiseLike<RouteModule>;
|
|
44
|
+
}
|
|
45
|
+
export interface RouteManifest {
|
|
46
|
+
readonly entries: readonly RouteManifestEntry[];
|
|
47
|
+
readonly byId: ReadonlyMap<string, RouteManifestEntry>;
|
|
48
|
+
}
|
|
49
|
+
export interface RouteMatch {
|
|
50
|
+
readonly entry: RouteManifestEntry;
|
|
51
|
+
readonly params: RouteParameters;
|
|
52
|
+
}
|
|
53
|
+
export interface ResolvedRouteMatch extends RouteMatch {
|
|
54
|
+
readonly definition: FileRouteDefinition;
|
|
55
|
+
}
|
|
56
|
+
export interface LoadedRouteMatch extends ResolvedRouteMatch {
|
|
57
|
+
readonly loaderData: FrameworkValue;
|
|
58
|
+
}
|
|
59
|
+
export declare function defineFileRoute<const LoaderData extends FrameworkValue = undefined>(options: FileRouteOptions<LoaderData>): FileRouteDefinition<LoaderData>;
|
|
60
|
+
export declare function isFileRouteDefinition(value: unknown): value is FileRouteDefinition;
|
|
61
|
+
export declare function createRouteManifest(entries: readonly RouteManifestEntry[]): RouteManifest;
|
|
62
|
+
export declare function matchRoutes(manifest: RouteManifest, pathname: string): readonly RouteMatch[];
|
|
63
|
+
export declare function loadRouteMatches(matches: readonly RouteMatch[], request: Request, suppliedData?: Readonly<Record<string, FrameworkValue>>): Promise<readonly LoadedRouteMatch[]>;
|
|
64
|
+
export declare function resolveRouteMatches(matches: readonly RouteMatch[]): Promise<readonly ResolvedRouteMatch[]>;
|
|
65
|
+
export declare function runRouteLoaders(matches: readonly ResolvedRouteMatch[], request: Request, suppliedData?: Readonly<Record<string, FrameworkValue>>): Promise<readonly LoadedRouteMatch[]>;
|
|
66
|
+
export declare function composeRouteMatches(matches: readonly LoadedRouteMatch[], createElement: (component: StartComponent, props: RouteComponentProps) => unknown, requestUrl: string): unknown;
|
|
67
|
+
export declare function routeLoaderData(matches: readonly LoadedRouteMatch[]): Readonly<Record<string, FrameworkValue>>;
|
|
68
|
+
export {};
|
|
69
|
+
//# sourceMappingURL=router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|