revojs 0.0.1 → 0.0.2
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/app/index.d.ts +10 -9
- package/dist/index.js +31 -17
- package/dist/runtime/index.d.ts +1 -0
- package/package.json +3 -3
package/dist/app/index.d.ts
CHANGED
|
@@ -2,13 +2,15 @@ import type { Template } from "../html";
|
|
|
2
2
|
export type NestedPartial<T> = Partial<{
|
|
3
3
|
[K in keyof T]: T[K] extends object ? NestedPartial<T[K]> : T[K];
|
|
4
4
|
}>;
|
|
5
|
-
export type
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
export type StaticContent = {
|
|
6
|
+
type: "static";
|
|
7
|
+
source: string;
|
|
8
|
+
include: Array<string>;
|
|
9
9
|
};
|
|
10
|
-
export type
|
|
11
|
-
|
|
10
|
+
export type AssetContent = {
|
|
11
|
+
type: "asset";
|
|
12
|
+
source: string;
|
|
13
|
+
include: Array<string>;
|
|
12
14
|
};
|
|
13
15
|
export type ServerEntry = "revojs/presets/node" | "revojs/presets/deno" | "revojs/presets/bun" | "revojs/presets/cloudflare" | (string & {});
|
|
14
16
|
export type ClientConfig = {
|
|
@@ -18,15 +20,14 @@ export type ServerConfig = {
|
|
|
18
20
|
entry: ServerEntry;
|
|
19
21
|
};
|
|
20
22
|
export type Config = {
|
|
21
|
-
assets: Array<AssetConfig>;
|
|
22
|
-
routes: Array<RouteConfig>;
|
|
23
23
|
client: ClientConfig;
|
|
24
24
|
server: ServerConfig;
|
|
25
|
+
content: Record<string, StaticContent | AssetContent>;
|
|
25
26
|
markdown: Record<string, Template>;
|
|
26
27
|
};
|
|
27
28
|
export type App = {
|
|
28
29
|
config: Config;
|
|
29
30
|
virtuals: Record<string, () => string>;
|
|
30
31
|
};
|
|
31
|
-
export declare const
|
|
32
|
+
export declare const getContent: <T>(key: string) => Promise<Record<string, () => Promise<T>>>;
|
|
32
33
|
export declare const createApp: (config?: NestedPartial<Config>) => App;
|
package/dist/index.js
CHANGED
|
@@ -2,20 +2,31 @@ import defu, { defu as defu$1 } from "defu";
|
|
|
2
2
|
import { h } from "revojs/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/app/index.ts
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
return Object.entries(assets).reduce((assets$1, [name, value]) => {
|
|
8
|
-
if (regex.test(name)) assets$1[name] = value;
|
|
9
|
-
return assets$1;
|
|
10
|
-
}, {});
|
|
5
|
+
const getContent = async (key) => {
|
|
6
|
+
return await import("#virtual/content").then((module) => module.index[key]);
|
|
11
7
|
};
|
|
12
8
|
const createApp = (config) => {
|
|
13
9
|
return {
|
|
14
10
|
config: defu$1(config, {
|
|
15
|
-
assets: [{ path: "./assets" }],
|
|
16
|
-
routes: [{ path: "./routes" }],
|
|
17
11
|
client: { entry: "./index.html" },
|
|
18
12
|
server: { entry: "revojs/presets/node" },
|
|
13
|
+
content: {
|
|
14
|
+
static: {
|
|
15
|
+
type: "static",
|
|
16
|
+
source: "./dist/client",
|
|
17
|
+
include: ["**/*.*"]
|
|
18
|
+
},
|
|
19
|
+
routes: {
|
|
20
|
+
type: "asset",
|
|
21
|
+
source: "./routes",
|
|
22
|
+
include: [
|
|
23
|
+
"**/*.js",
|
|
24
|
+
"**/*.ts",
|
|
25
|
+
"**/*.jsx",
|
|
26
|
+
"**/*.tsx"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
},
|
|
19
30
|
markdown: {}
|
|
20
31
|
}),
|
|
21
32
|
virtuals: {}
|
|
@@ -427,18 +438,21 @@ const defineRoute = (route) => {
|
|
|
427
438
|
const defineSocket = (socket) => {
|
|
428
439
|
return socket;
|
|
429
440
|
};
|
|
441
|
+
const fileName = (path) => {
|
|
442
|
+
return path.split("/").pop()?.split(".").slice(0, -1).join(".");
|
|
443
|
+
};
|
|
430
444
|
const toPath = (value) => {
|
|
431
|
-
return value.replace(/\/index/, "").replace(/\.(js|ts|jsx|tsx)$/, "").replaceAll(/\[(.*)\]/g, (_, name) => ":" + name)
|
|
445
|
+
return value.replace(/\/index/, "").replace(/index/, "").replace(/\.(js|ts|jsx|tsx)$/, "").replaceAll(/\[(.*)\]/g, (_, name) => ":" + name);
|
|
432
446
|
};
|
|
433
447
|
const createRuntime = async () => {
|
|
434
448
|
const radix = new Radix();
|
|
435
|
-
const assets = await
|
|
436
|
-
for (const path in assets) radix.insert("GET" + path, defineRoute({ fetch: async (event) => {
|
|
449
|
+
const assets = await getContent("static");
|
|
450
|
+
for (const path in assets) radix.insert("GET/" + path, defineRoute({ fetch: async (event) => {
|
|
437
451
|
setHeader(event, "Content-Type", getMimeType(path));
|
|
438
452
|
return sendText(event, await assets[path]());
|
|
439
453
|
} }));
|
|
440
|
-
const routes = await
|
|
441
|
-
for (const path in routes) radix.insert("GET" + toPath(path), defineRoute({ fetch: async (event) => {
|
|
454
|
+
const routes = await getContent("routes");
|
|
455
|
+
for (const path in routes) radix.insert("GET/" + toPath(path), defineRoute({ fetch: async (event) => {
|
|
442
456
|
const route = await routes[path]();
|
|
443
457
|
if (route) {
|
|
444
458
|
if ("message" in route) return sendText(event, "WebSocket");
|
|
@@ -471,8 +485,8 @@ const Outlet = defineComponent({
|
|
|
471
485
|
name: "x-outlet",
|
|
472
486
|
setup: async () => {
|
|
473
487
|
const radix = new Radix();
|
|
474
|
-
const routes = await
|
|
475
|
-
for (const path in routes) radix.insert("
|
|
488
|
+
const routes = await getContent("routes");
|
|
489
|
+
for (const path in routes) radix.insert("/" + toPath(path), routes[path]);
|
|
476
490
|
const url = createState(new URL(activeEvent ? activeEvent.request.url : window.location.href));
|
|
477
491
|
if (isClient()) {
|
|
478
492
|
const controller = new AbortController();
|
|
@@ -480,7 +494,7 @@ const Outlet = defineComponent({
|
|
|
480
494
|
onCleanUp(() => controller.abort());
|
|
481
495
|
}
|
|
482
496
|
return async () => {
|
|
483
|
-
const { value, inputs } = radix.match(
|
|
497
|
+
const { value, inputs } = radix.match(url.value.pathname);
|
|
484
498
|
const Page = await value?.();
|
|
485
499
|
if (Page) return h(Page, inputs);
|
|
486
500
|
};
|
|
@@ -499,4 +513,4 @@ const anchorNavigate = (event) => {
|
|
|
499
513
|
};
|
|
500
514
|
|
|
501
515
|
//#endregion
|
|
502
|
-
export { Handler, Outlet, Radix, activeElement, activeEvent, addStyles, anchorNavigate, components, createApp, createCompute, createElement, createEvent, createRuntime, createState, defineComponent, defineRoute, defineSocket, fromValue,
|
|
516
|
+
export { Handler, Outlet, Radix, activeElement, activeEvent, addStyles, anchorNavigate, components, createApp, createCompute, createElement, createEvent, createRuntime, createState, defineComponent, defineRoute, defineSocket, fileName, fromValue, getContent, getGlobalStyles, getMimeType, globalStyles, isClient, isServer, markdownToSlot, navigate, onCleanUp, registerComponent, runCompute, runningCompute, sendHtml, sendJson, sendText, setHeader, slotToNode, slotToString, targets, toCustomElement, toPath, toString };
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export type Runtime<T = Context> = {
|
|
|
12
12
|
};
|
|
13
13
|
export declare const defineRoute: <T = Context>(route: Route<T>) => Route<T>;
|
|
14
14
|
export declare const defineSocket: <T = Context>(socket: Socket<T>) => Socket<T>;
|
|
15
|
+
export declare const fileName: (path: string) => string | undefined;
|
|
15
16
|
export declare const toPath: (value: string) => string;
|
|
16
17
|
export declare const createRuntime: <T = Context>() => Promise<Runtime<T>>;
|
|
17
18
|
export declare let activeEvent: Event | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "revojs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": "coverbase/revojs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"defu": "^6.1.4"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@revojs/tsconfig": "0.0.
|
|
34
|
-
"@revojs/rolldown": "0.0.
|
|
33
|
+
"@revojs/tsconfig": "0.0.1",
|
|
34
|
+
"@revojs/rolldown": "0.0.1",
|
|
35
35
|
"rolldown": "^1.0.0-beta.1"
|
|
36
36
|
}
|
|
37
37
|
}
|