@vidact/start 0.2.0-beta.0 → 0.2.0-beta.5
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 +65 -0
- package/dist/client.d.ts +24 -16
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +137 -165
- package/dist/client.js.map +1 -1
- package/dist/index-client.d.ts +5 -4
- package/dist/index-client.js +4 -4
- package/dist/index.d.ts +5 -4
- package/dist/index.js +4 -4
- package/dist/link-client.d.ts +6 -4
- package/dist/link-client.d.ts.map +1 -1
- package/dist/link-client.js +8 -4
- package/dist/link-client.js.map +1 -1
- package/dist/link-contract.d.ts +10 -7
- package/dist/link-contract.d.ts.map +1 -1
- package/dist/link-contract.js +11 -7
- package/dist/link-contract.js.map +1 -1
- package/dist/link.d.ts +6 -4
- package/dist/link.d.ts.map +1 -1
- package/dist/link.js +8 -4
- package/dist/link.js.map +1 -1
- package/dist/router.d.ts +57 -55
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +150 -157
- package/dist/router.js.map +1 -1
- package/dist/server.d.ts +18 -16
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +95 -99
- package/dist/server.js.map +1 -1
- package/dist/snapshot.d.ts +13 -10
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +19 -20
- package/dist/snapshot.js.map +1 -1
- package/dist/virtual.d.ts +3 -2
- package/dist/virtual.js +1 -2
- package/dist/vite.d.ts +18 -15
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +144 -171
- package/dist/vite.js.map +1 -1
- package/package.json +9 -8
- package/src/client.ts +272 -0
- package/src/index-client.ts +3 -0
- package/src/index.ts +3 -0
- package/src/link-client.ts +10 -0
- package/src/link-contract.ts +17 -0
- package/src/link.ts +10 -0
- package/src/router.ts +282 -0
- package/src/server.ts +211 -0
- package/src/snapshot.ts +40 -0
- package/src/virtual.ts +5 -0
- package/src/vite.ts +256 -0
- package/dist/index-client.d.ts.map +0 -1
- package/dist/index-client.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/virtual.d.ts.map +0 -1
- package/dist/virtual.js.map +0 -1
package/dist/server.d.ts
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { RouteManifest, StartComponent } from "./router.js";
|
|
2
|
+
//#region src/server.d.ts
|
|
3
|
+
interface StartDocumentContext {
|
|
4
|
+
readonly applicationHtml: string;
|
|
5
|
+
readonly clientEntry: string | undefined;
|
|
6
|
+
readonly rootId: string;
|
|
7
|
+
readonly snapshot: string;
|
|
8
|
+
readonly snapshotId: string;
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
interface StartHandlerOptions {
|
|
11
|
+
readonly clientEntry?: string;
|
|
12
|
+
readonly manifest: RouteManifest;
|
|
13
|
+
readonly notFound?: (request: Request) => Response | Promise<Response>;
|
|
14
|
+
readonly renderDocument?: (context: StartDocumentContext) => string | Promise<string>;
|
|
15
|
+
readonly rootId?: string;
|
|
16
|
+
readonly snapshotId?: string;
|
|
16
17
|
}
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
declare function createStartHandler(options: StartHandlerOptions): (request: Request) => Promise<Response>;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { type StartComponent, StartDocumentContext, StartHandlerOptions, createStartHandler };
|
|
19
21
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","
|
|
1
|
+
{"version":3,"file":"server.d.ts","names":[],"sources":["../src/server.ts"],"mappings":";;UAkCiB;WACN;WACA;WACA;WACA;WACA;;UAGM;WACN;WACA,UAAU;WACV,YAAY,SAAS,YAAY,WAAW,QAAQ;WACpD,kBAAkB,SAAS,kCAAkC;WAC7D;WACA;;iBAGK,mBACd,SAAS,uBACP,SAAS,YAAY,QAAQ"}
|
package/dist/server.js
CHANGED
|
@@ -1,113 +1,109 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
1
|
+
import { composeRouteMatches, matchRoutes, resolveRouteMatches, routeLoaderData, runRouteLoaders } from "./router.js";
|
|
2
|
+
import { VIDACT_START_PROTOCOL, VIDACT_START_SNAPSHOT_MEDIA_TYPE, encodeStartSnapshot } from "./snapshot.js";
|
|
3
|
+
import { createElement } from "@vidact/runtime/server";
|
|
4
|
+
import { renderToReadableStream } from "@vidact/runtime/framework/server";
|
|
5
|
+
//#region src/server.ts
|
|
6
|
+
/**
|
|
7
|
+
* The client mounts the route tree under a compiled root of its own, and every compiled
|
|
8
|
+
* root claims a component marker range while hydrating. Rendering the tree inside a
|
|
9
|
+
* matching root component on the server keeps the two sides' component ranges aligned;
|
|
10
|
+
* without it each client component would claim the range of the *next* server one.
|
|
11
|
+
*/
|
|
12
|
+
function StartApplication({ children }) {
|
|
13
|
+
return children;
|
|
14
|
+
}
|
|
15
|
+
const DEFAULT_ROOT_ID = "vidact-start-root";
|
|
16
|
+
const DEFAULT_SNAPSHOT_ID = "vidact-start-snapshot";
|
|
17
|
+
function createStartHandler(options) {
|
|
18
|
+
const rootId = options.rootId ?? DEFAULT_ROOT_ID;
|
|
19
|
+
const snapshotId = options.snapshotId ?? DEFAULT_SNAPSHOT_ID;
|
|
20
|
+
return async (request) => {
|
|
21
|
+
const url = new URL(request.url);
|
|
22
|
+
const matches = matchRoutes(options.manifest, url.pathname);
|
|
23
|
+
if (matches.length === 0) return options.notFound === void 0 ? new Response("Not found", { status: 404 }) : await options.notFound(request);
|
|
24
|
+
const resolved = await resolveRouteMatches(matches);
|
|
25
|
+
const endpoint = endpointHandler(resolved, request.method);
|
|
26
|
+
if (endpoint !== void 0) return responseForRequest(request, await endpoint({
|
|
27
|
+
params: resolved.at(-1).params,
|
|
28
|
+
request
|
|
29
|
+
}));
|
|
30
|
+
const canRender = resolved.some((match) => match.definition.options.component !== void 0);
|
|
31
|
+
if (request.method !== "GET" && request.method !== "HEAD" || !canRender) {
|
|
32
|
+
const allow = allowedMethods(resolved, canRender);
|
|
33
|
+
if (allow.length === 0) return options.notFound === void 0 ? new Response("Not found", { status: 404 }) : await options.notFound(request);
|
|
34
|
+
return new Response("Method not allowed", {
|
|
35
|
+
status: 405,
|
|
36
|
+
headers: { allow: allow.join(", ") }
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
let loaded;
|
|
40
|
+
try {
|
|
41
|
+
loaded = await runRouteLoaders(resolved, request);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
if (isResponse(error)) return responseForRequest(request, error);
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
const snapshot = escapeScriptText(encodeStartSnapshot({
|
|
47
|
+
protocol: VIDACT_START_PROTOCOL,
|
|
48
|
+
pathname: `${url.pathname}${url.search}`,
|
|
49
|
+
loaderData: routeLoaderData(loaded)
|
|
50
|
+
}));
|
|
51
|
+
if (request.headers.get("x-vidact-start-navigation") === "1") return new Response(request.method === "HEAD" ? null : snapshot, { headers: { "content-type": `${VIDACT_START_SNAPSHOT_MEDIA_TYPE}; charset=utf-8` } });
|
|
52
|
+
const application = composeRouteMatches(loaded, (component, props) => createElement(component, props), request.url);
|
|
53
|
+
const stream = await renderToReadableStream(() => createElement(StartApplication, { children: application }), { identifierPrefix: "start-" });
|
|
54
|
+
const documentContext = {
|
|
55
|
+
applicationHtml: await new Response(stream).text(),
|
|
56
|
+
clientEntry: options.clientEntry,
|
|
57
|
+
rootId,
|
|
58
|
+
snapshot,
|
|
59
|
+
snapshotId
|
|
60
|
+
};
|
|
61
|
+
const html = options.renderDocument === void 0 ? defaultDocument(documentContext) : await options.renderDocument(documentContext);
|
|
62
|
+
return new Response(request.method === "HEAD" ? null : html, { headers: { "content-type": "text/html; charset=utf-8" } });
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function responseForRequest(request, response) {
|
|
66
|
+
return request.method === "HEAD" ? new Response(null, response) : response;
|
|
67
|
+
}
|
|
68
|
+
function isResponse(value) {
|
|
69
|
+
if (value instanceof Response) return true;
|
|
70
|
+
if (typeof value !== "object" || value === null || Object.prototype.hasOwnProperty.call(value, Symbol.toStringTag) || Object.prototype.toString.call(value) !== "[object Response]") return false;
|
|
71
|
+
try {
|
|
72
|
+
const candidate = value;
|
|
73
|
+
return typeof candidate.arrayBuffer === "function" && typeof candidate.clone === "function" && typeof candidate.headers?.get === "function" && Number.isInteger(candidate.status);
|
|
74
|
+
} catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
76
77
|
}
|
|
77
78
|
function endpointHandler(matches, method) {
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
const handlers = matches.at(-1)?.definition.options.server?.handlers;
|
|
80
|
+
return handlers?.[method.toUpperCase()] ?? (method === "HEAD" ? handlers?.GET : void 0);
|
|
80
81
|
}
|
|
81
82
|
function allowedMethods(matches, canRender) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
methods.add('HEAD');
|
|
92
|
-
return [...methods].toSorted((left, right) => methodRank(left) - methodRank(right) || left.localeCompare(right));
|
|
83
|
+
const methods = /* @__PURE__ */ new Set();
|
|
84
|
+
if (canRender) {
|
|
85
|
+
methods.add("GET");
|
|
86
|
+
methods.add("HEAD");
|
|
87
|
+
}
|
|
88
|
+
const handlers = matches.at(-1)?.definition.options.server?.handlers;
|
|
89
|
+
for (const method of Object.keys(handlers ?? {})) methods.add(method.toUpperCase());
|
|
90
|
+
if (methods.has("GET")) methods.add("HEAD");
|
|
91
|
+
return [...methods].toSorted((left, right) => methodRank(left) - methodRank(right) || left.localeCompare(right));
|
|
93
92
|
}
|
|
94
93
|
function methodRank(method) {
|
|
95
|
-
|
|
94
|
+
return method === "GET" ? 0 : method === "HEAD" ? 1 : 2;
|
|
96
95
|
}
|
|
97
96
|
function defaultDocument(context) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
: `<script type="module" src="${escapeAttribute(context.clientEntry)}"></script>`;
|
|
101
|
-
return `<!doctype html><html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><div id="${escapeAttribute(context.rootId)}">${context.applicationHtml}</div><script id="${escapeAttribute(context.snapshotId)}" type="application/json">${context.snapshot}</script>${clientScript}</body></html>`;
|
|
97
|
+
const clientScript = context.clientEntry === void 0 ? "" : `<script type="module" src="${escapeAttribute(context.clientEntry)}"><\/script>`;
|
|
98
|
+
return `<!doctype html><html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"></head><body><div id="${escapeAttribute(context.rootId)}">${context.applicationHtml}</div><script id="${escapeAttribute(context.snapshotId)}" type="application/json">${context.snapshot}<\/script>${clientScript}</body></html>`;
|
|
102
99
|
}
|
|
103
100
|
function escapeAttribute(value) {
|
|
104
|
-
|
|
105
|
-
.replaceAll('&', '&')
|
|
106
|
-
.replaceAll('"', '"')
|
|
107
|
-
.replaceAll('<', '<')
|
|
108
|
-
.replaceAll('>', '>');
|
|
101
|
+
return value.replaceAll("&", "&").replaceAll("\"", """).replaceAll("<", "<").replaceAll(">", ">");
|
|
109
102
|
}
|
|
110
103
|
function escapeScriptText(value) {
|
|
111
|
-
|
|
104
|
+
return value.replaceAll("&", "\\u0026").replaceAll("<", "\\u003c").replaceAll(">", "\\u003e");
|
|
112
105
|
}
|
|
106
|
+
//#endregion
|
|
107
|
+
export { createStartHandler };
|
|
108
|
+
|
|
113
109
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","
|
|
1
|
+
{"version":3,"file":"server.js","names":[],"sources":["../src/server.ts"],"mappings":"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"}
|
package/dist/snapshot.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import { FrameworkValue } from "@vidact/runtime/framework/protocol";
|
|
2
|
+
//#region src/snapshot.d.ts
|
|
3
|
+
declare const VIDACT_START_PROTOCOL = "vidact-start-v1";
|
|
4
|
+
declare const VIDACT_START_NAVIGATION_HEADER = "x-vidact-start-navigation";
|
|
5
|
+
declare const VIDACT_START_SNAPSHOT_MEDIA_TYPE = "application/x-vidact-start+json";
|
|
6
|
+
interface StartSnapshot {
|
|
7
|
+
readonly protocol: typeof VIDACT_START_PROTOCOL;
|
|
8
|
+
readonly loaderData: Readonly<Record<string, FrameworkValue>>;
|
|
9
|
+
readonly pathname: string;
|
|
9
10
|
}
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
declare function encodeStartSnapshot(snapshot: StartSnapshot): string;
|
|
12
|
+
declare function decodeStartSnapshot(payload: string): StartSnapshot;
|
|
13
|
+
//#endregion
|
|
14
|
+
export { StartSnapshot, VIDACT_START_NAVIGATION_HEADER, VIDACT_START_PROTOCOL, VIDACT_START_SNAPSHOT_MEDIA_TYPE, decodeStartSnapshot, encodeStartSnapshot };
|
|
12
15
|
//# sourceMappingURL=snapshot.d.ts.map
|
package/dist/snapshot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","names":[],"sources":["../src/snapshot.ts"],"mappings":";;cAMa;cACA;cACA;UAEI;WACN,iBAAiB;WACjB,YAAY,SAAS,eAAe;WACpC;;iBAGK,oBAAoB,UAAU;iBAI9B,oBAAoB,kBAAkB"}
|
package/dist/snapshot.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import { decodeFrameworkValue, encodeFrameworkValue
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { decodeFrameworkValue, encodeFrameworkValue } from "@vidact/runtime/framework/protocol";
|
|
2
|
+
//#region src/snapshot.ts
|
|
3
|
+
const VIDACT_START_PROTOCOL = "vidact-start-v1";
|
|
4
|
+
const VIDACT_START_NAVIGATION_HEADER = "x-vidact-start-navigation";
|
|
5
|
+
const VIDACT_START_SNAPSHOT_MEDIA_TYPE = "application/x-vidact-start+json";
|
|
6
|
+
function encodeStartSnapshot(snapshot) {
|
|
7
|
+
return encodeFrameworkValue(snapshot);
|
|
7
8
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return {
|
|
17
|
-
protocol: VIDACT_START_PROTOCOL,
|
|
18
|
-
pathname: value.pathname,
|
|
19
|
-
loaderData: value.loaderData,
|
|
20
|
-
};
|
|
9
|
+
function decodeStartSnapshot(payload) {
|
|
10
|
+
const value = decodeFrameworkValue(payload);
|
|
11
|
+
if (!isRecord(value) || value.protocol !== "vidact-start-v1" || typeof value.pathname !== "string" || !isRecord(value.loaderData)) throw new TypeError("invalid Vidact Start snapshot");
|
|
12
|
+
return {
|
|
13
|
+
protocol: VIDACT_START_PROTOCOL,
|
|
14
|
+
pathname: value.pathname,
|
|
15
|
+
loaderData: value.loaderData
|
|
16
|
+
};
|
|
21
17
|
}
|
|
22
18
|
function isRecord(value) {
|
|
23
|
-
|
|
19
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
24
20
|
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { VIDACT_START_NAVIGATION_HEADER, VIDACT_START_PROTOCOL, VIDACT_START_SNAPSHOT_MEDIA_TYPE, decodeStartSnapshot, encodeStartSnapshot };
|
|
23
|
+
|
|
25
24
|
//# sourceMappingURL=snapshot.js.map
|
package/dist/snapshot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","
|
|
1
|
+
{"version":3,"file":"snapshot.js","names":[],"sources":["../src/snapshot.ts"],"mappings":";;AAMA,MAAa,wBAAwB;AACrC,MAAa,iCAAiC;AAC9C,MAAa,mCAAmC;AAQhD,SAAgB,oBAAoB,UAAiC;CACnE,OAAO,qBAAqB,QAAqC;AACnE;AAEA,SAAgB,oBAAoB,SAAgC;CAClE,MAAM,QAAQ,qBAAqB,OAAO;CAC1C,IACE,CAAC,SAAS,KAAK,KACf,MAAM,aAAA,qBACN,OAAO,MAAM,aAAa,YAC1B,CAAC,SAAS,MAAM,UAAU,GAE1B,MAAM,IAAI,UAAU,+BAA+B;CAErD,OAAO;EACL,UAAU;EACV,UAAU,MAAM;EAChB,YAAY,MAAM;CACpB;AACF;AAEA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E"}
|
package/dist/virtual.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
+
// Shipped verbatim as dist/virtual.d.ts: an ambient declaration cannot be bundled
|
|
2
|
+
// without becoming a module augmentation, so it names the built router file.
|
|
1
3
|
declare module 'virtual:vidact-start/routes' {
|
|
2
|
-
|
|
4
|
+
export const routeManifest: import('./router.js').RouteManifest
|
|
3
5
|
}
|
|
4
|
-
//# sourceMappingURL=virtual.d.ts.map
|
package/dist/virtual.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=virtual.js.map
|
|
1
|
+
export {};
|
package/dist/vite.d.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { VidactPluginOptions } from "@vidact/vite";
|
|
2
|
+
import { Plugin } from "vite";
|
|
3
|
+
//#region src/vite.d.ts
|
|
4
|
+
interface VidactStartOptions {
|
|
5
|
+
readonly compiler?: Omit<VidactPluginOptions, 'target'>;
|
|
6
|
+
readonly routesDirectory?: string;
|
|
7
|
+
readonly serverEntry?: string | false;
|
|
8
|
+
readonly serverExport?: string;
|
|
8
9
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
interface GeneratedRouteRecord {
|
|
11
|
+
readonly file: string;
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly parentId: string | null;
|
|
14
|
+
readonly path: string;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
declare function vidactStart(options?: VidactStartOptions): Plugin[];
|
|
17
|
+
declare function discoverRouteRecords(routesDirectory: string): Promise<readonly GeneratedRouteRecord[]>;
|
|
18
|
+
declare function routeFileToRecord(filename: string, routesDirectory: string): GeneratedRouteRecord;
|
|
19
|
+
//#endregion
|
|
20
|
+
export { GeneratedRouteRecord, VidactStartOptions, discoverRouteRecords, routeFileToRecord, vidactStart };
|
|
18
21
|
//# sourceMappingURL=vite.d.ts.map
|
package/dist/vite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","
|
|
1
|
+
{"version":3,"file":"vite.d.ts","names":[],"sources":["../src/vite.ts"],"mappings":";;;UAkBiB;WACN,WAAW,KAAK;WAChB;WACA;WACA;;UAGM;WACN;WACA;WACA;WACA;;iBAGK,YAAY,UAAS,qBAA0B;iBAyJzC,qBACpB,0BACC,iBAAiB;iBAmBJ,kBAAkB,kBAAkB,0BAA0B"}
|