revojs 0.1.44 → 0.1.46

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.
@@ -313,7 +313,7 @@ async function invoke(scope, pipeline, index = 0) {
313
313
  }
314
314
  async function createServer() {
315
315
  const router = new Router();
316
- const middlewares = new Array();
316
+ const middleware = new Array();
317
317
  const routes = await import("#routes").then((module) => Object.entries(module.default));
318
318
  for (const [path, route] of routes) {
319
319
  const segments = path.split("/");
@@ -324,13 +324,13 @@ async function createServer() {
324
324
  }
325
325
  router.use(segments, route);
326
326
  }
327
- middlewares.push(router);
327
+ middleware.push(...await import("#middleware").then((module) => Object.values(module.default)), router);
328
328
  return {
329
329
  router,
330
- middlewares,
330
+ middleware,
331
331
  async fetch(scope) {
332
332
  try {
333
- return await invoke(scope, middlewares) ?? sendNotFound(scope);
333
+ return await invoke(scope, middleware) ?? sendNotFound(scope);
334
334
  } catch (value) {
335
335
  if (value instanceof Response) return value;
336
336
  throw value;
@@ -596,18 +596,21 @@ var App = class extends Hookable {
596
596
  children: []
597
597
  }
598
598
  },
599
- sources: { routes: {
600
- match: "**/{get,head,post,put,delete,connect,options,trace,patch}.{js,ts}",
601
- entries: ["./routes"]
602
- } },
599
+ sources: {
600
+ routes: {
601
+ match: "**/{get,head,post,put,delete,connect,options,trace,patch}.{js,ts}",
602
+ entries: ["./routes"]
603
+ },
604
+ middleware: {
605
+ match: "**/*.{js,ts}",
606
+ entries: ["./middleware"]
607
+ }
608
+ },
603
609
  variables: {},
604
- development: { middlewares: [] },
605
- build: {
606
- externals: [],
607
- templates: {},
608
- virtuals: {},
609
- alias: {}
610
- }
610
+ development: { middleware: [] },
611
+ templates: {},
612
+ virtuals: {},
613
+ vite: {}
611
614
  });
612
615
  }
613
616
  };
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as version, t as name } from "../package-B2uzCFzB.mjs";
2
+ import { n as version, t as name } from "../package-CHq5U5yh.mjs";
3
3
  import { defineCommand, runMain } from "citty";
4
4
  //#region src/commands/run/index.ts
5
5
  var run_default = defineCommand({ setup() {} });
@@ -1,3 +1,5 @@
1
+ import { UserConfig } from "vite";
2
+
1
3
  //#region src/shared/index.d.ts
2
4
  type Descriptor<T> = string & {
3
5
  [descriptor]: T;
@@ -7,7 +9,8 @@ type Context = Record<string, any>;
7
9
  type Output<T> = Success<T> | Failure;
8
10
  type InferInput<T extends Schema> = NonNullable<T["~standard"]["types"]>["input"];
9
11
  type InferOutput<T extends Schema> = NonNullable<T["~standard"]["types"]>["output"];
10
- type Mergeable<T> = { [Key in keyof T]?: Mergeable<T[Key]> };
12
+ type Primitive = string | number | boolean | bigint | symbol | null | undefined;
13
+ type Mergeable<T> = T extends Primitive ? T : T extends Array<infer U> ? Array<Mergeable<U>> : { [K in keyof T]?: Mergeable<T[K]> };
11
14
  interface Issue {
12
15
  readonly message: string;
13
16
  }
@@ -90,9 +93,14 @@ interface Middleware {
90
93
  }
91
94
  interface Server {
92
95
  router: Router;
93
- middlewares: Array<Middleware>;
96
+ middleware: Array<Middleware>;
94
97
  fetch: (scope: Scope) => Result;
95
98
  }
99
+ interface PathNode<T> {
100
+ type: "PATH";
101
+ value?: T;
102
+ children: Record<string, Node<T>>;
103
+ }
96
104
  interface WildcardNode<T> {
97
105
  type: "WILDCARD";
98
106
  value?: T;
@@ -105,21 +113,16 @@ interface OptionalWildcardNode<T> {
105
113
  parameter: string;
106
114
  children: Record<string, Node<T>>;
107
115
  }
108
- interface OptionalParameterNode<T> {
109
- type: "OPTIONAL-PARAMETER";
110
- value?: T;
111
- parameter: string;
112
- children: Record<string, Node<T>>;
113
- }
114
116
  interface ParameterNode<T> {
115
117
  type: "PARAMETER";
116
118
  value?: T;
117
119
  parameter: string;
118
120
  children: Record<string, Node<T>>;
119
121
  }
120
- interface PathNode<T> {
121
- type: "PATH";
122
+ interface OptionalParameterNode<T> {
123
+ type: "OPTIONAL-PARAMETER";
122
124
  value?: T;
125
+ parameter: string;
123
126
  children: Record<string, Node<T>>;
124
127
  }
125
128
  declare class Radix<T> {
@@ -187,20 +190,14 @@ declare const mimeTypes: Record<string, string>;
187
190
  //#region src/app/index.d.ts
188
191
  type Environment = typeof CLIENT | typeof SERVER;
189
192
  type Virtual = (environment: Environment) => undefined | string | Promise<string>;
190
- type Content = () => string;
193
+ type Content = () => string | Promise<string>;
191
194
  interface Template {
192
195
  tagName: string;
193
196
  attributes: Record<string, string>;
194
197
  children: Array<string | Template>;
195
198
  }
196
199
  interface DevelopmentConfig {
197
- middlewares: Array<Middleware>;
198
- }
199
- interface BuildConfig {
200
- externals: Array<string>;
201
- templates: Record<string, Content>;
202
- virtuals: Record<string, Virtual>;
203
- alias: Record<string, string>;
200
+ middleware: Array<Middleware>;
204
201
  }
205
202
  interface Config {
206
203
  modules: Array<Module>;
@@ -210,11 +207,12 @@ interface Config {
210
207
  sources: Record<string, Source>;
211
208
  variables: Record<string, unknown>;
212
209
  development: DevelopmentConfig;
213
- build: BuildConfig;
210
+ templates: Record<string, Content>;
211
+ virtuals: Record<string, Virtual>;
212
+ vite: UserConfig;
214
213
  }
215
214
  interface Module {
216
- config?: () => Mergeable<Config> | Promise<Mergeable<Config>>;
217
- setup?: (app: App) => void | Promise<void>;
215
+ setup?: (app: App) => void | Mergeable<Config> | Promise<void | Mergeable<Config>>;
218
216
  }
219
217
  interface Source {
220
218
  match: string | Array<string>;
@@ -232,4 +230,4 @@ declare const CLOSE_HOOK: Descriptor<() => void>;
232
230
  //#region src/client/index.d.ts
233
231
  declare function $fetch<T>(scope: Scope, input: string | URL, options?: RequestInit): Promise<T>;
234
232
  //#endregion
235
- export { defineRoute as $, PARAMETER_MATCH as A, withQuery as At, SERVER_CONTEXT as B, Output as Bt, OPTIONAL_PARAMETER as C, useHeaders as Ct, OptionalParameterNode as D, useServer as Dt, OPTIONAL_WILDCARD_MATCH as E, useRouter as Et, ResponseConfig as F, InferInput as Ft, StatusCode as G, defineHook as Gt, Server as H, Scope as Ht, Result as I, InferOutput as It, WildcardNode as J, parseSchema as Jt, WILDCARD as K, isFailure as Kt, Route as L, Invoke as Lt, PathNode as M, Descriptor as Mt, ROUTER_CONTEXT as N, Failure as Nt, OptionalWildcardNode as O, useSetCookies as Ot, Radix as P, Hookable as Pt, defineMiddleware as Q, Router as R, Issue as Rt, Node as S, useCookies as St, OPTIONAL_WILDCARD as T, useQuery as Tt, ServerContext as U, Success as Ut, STATES as V, Schema as Vt, States as W, defineContext as Wt, cookieSameSites as X, cookiePriorities as Y, createServer as Z, CookieSameSite as _, sendUnauthorized as _t, CLOSE_HOOK as a, isServer as at, Middleware as b, statusCodes as bt, DevelopmentConfig as c, parseCookiePair as ct, SERVER as d, sendForbidden as dt, encodings as et, Source as f, sendNoContent as ft, CookiePriority as g, sendResponse as gt, CookieOptions as h, sendRedirect as ht, CLIENT as i, isClient as it, ParameterNode as j, Context as jt, PARAMETER as k, useUrl as kt, Environment as l, sendBadRequest as lt, Virtual as m, sendOk as mt, App as n, httpMethods as nt, Config as o, mimeType as ot, Template as p, sendNotFound as pt, WILDCARD_MATCH as q, mergeObjects as qt, BuildConfig as r, invoke as rt, Content as s, mimeTypes as st, $fetch as t, getState as tt, Module as u, sendCreated as ut, Encoding as v, setCookie as vt, OPTIONAL_PARAMETER_MATCH as w, useParameters as wt, MimeType as x, useBody as xt, HttpMethod as y, setState as yt, RouterContext as z, Mergeable as zt };
233
+ export { encodings as $, ParameterNode as A, Context as At, STATES as B, Primitive as Bt, OPTIONAL_PARAMETER_MATCH as C, useParameters as Ct, OptionalWildcardNode as D, useSetCookies as Dt, OptionalParameterNode as E, useServer as Et, Result as F, InferOutput as Ft, WILDCARD as G, defineHook as Gt, ServerContext as H, Scope as Ht, Route as I, Invoke as It, cookiePriorities as J, parseSchema as Jt, WILDCARD_MATCH as K, isFailure as Kt, Router as L, Issue as Lt, ROUTER_CONTEXT as M, Failure as Mt, Radix as N, Hookable as Nt, PARAMETER as O, useUrl as Ot, ResponseConfig as P, InferInput as Pt, defineRoute as Q, RouterContext as R, Mergeable as Rt, OPTIONAL_PARAMETER as S, useHeaders as St, OPTIONAL_WILDCARD_MATCH as T, useRouter as Tt, States as U, Success as Ut, Server as V, Schema as Vt, StatusCode as W, defineContext as Wt, createServer as X, cookieSameSites as Y, defineMiddleware as Z, Encoding as _, setCookie as _t, Config as a, mimeType as at, MimeType as b, useBody as bt, Environment as c, sendBadRequest as ct, Source as d, sendNoContent as dt, getState as et, Template as f, sendNotFound as ft, CookieSameSite as g, sendUnauthorized as gt, CookiePriority as h, sendResponse as ht, CLOSE_HOOK as i, isServer as it, PathNode as j, Descriptor as jt, PARAMETER_MATCH as k, withQuery as kt, Module as l, sendCreated as lt, CookieOptions as m, sendRedirect as mt, App as n, invoke as nt, Content as o, mimeTypes as ot, Virtual as p, sendOk as pt, WildcardNode as q, mergeObjects as qt, CLIENT as r, isClient as rt, DevelopmentConfig as s, parseCookiePair as st, $fetch as t, httpMethods as tt, SERVER as u, sendForbidden as ut, HttpMethod as v, setState as vt, OPTIONAL_WILDCARD as w, useQuery as wt, Node as x, useCookies as xt, Middleware as y, statusCodes as yt, SERVER_CONTEXT as z, Output as zt };
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as defineRoute, A as PARAMETER_MATCH, At as withQuery, B as SERVER_CONTEXT, Bt as Output, C as OPTIONAL_PARAMETER, Ct as useHeaders, D as OptionalParameterNode, Dt as useServer, E as OPTIONAL_WILDCARD_MATCH, Et as useRouter, F as ResponseConfig, Ft as InferInput, G as StatusCode, Gt as defineHook, H as Server, Ht as Scope, I as Result, It as InferOutput, J as WildcardNode, Jt as parseSchema, K as WILDCARD, Kt as isFailure, L as Route, Lt as Invoke, M as PathNode, Mt as Descriptor, N as ROUTER_CONTEXT, Nt as Failure, O as OptionalWildcardNode, Ot as useSetCookies, P as Radix, Pt as Hookable, Q as defineMiddleware, R as Router, Rt as Issue, S as Node, St as useCookies, T as OPTIONAL_WILDCARD, Tt as useQuery, U as ServerContext, Ut as Success, V as STATES, Vt as Schema, W as States, Wt as defineContext, X as cookieSameSites, Y as cookiePriorities, Z as createServer, _ as CookieSameSite, _t as sendUnauthorized, a as CLOSE_HOOK, at as isServer, b as Middleware, bt as statusCodes, c as DevelopmentConfig, ct as parseCookiePair, d as SERVER, dt as sendForbidden, et as encodings, f as Source, ft as sendNoContent, g as CookiePriority, gt as sendResponse, h as CookieOptions, ht as sendRedirect, i as CLIENT, it as isClient, j as ParameterNode, jt as Context, k as PARAMETER, kt as useUrl, l as Environment, lt as sendBadRequest, m as Virtual, mt as sendOk, n as App, nt as httpMethods, o as Config, ot as mimeType, p as Template, pt as sendNotFound, q as WILDCARD_MATCH, qt as mergeObjects, r as BuildConfig, rt as invoke, s as Content, st as mimeTypes, t as $fetch, tt as getState, u as Module, ut as sendCreated, v as Encoding, vt as setCookie, w as OPTIONAL_PARAMETER_MATCH, wt as useParameters, x as MimeType, xt as useBody, y as HttpMethod, yt as setState, z as RouterContext, zt as Mergeable } from "./index-j4qntB2R.mjs";
2
- export { $fetch, App, BuildConfig, CLIENT, CLOSE_HOOK, Config, Content, Context, CookieOptions, CookiePriority, CookieSameSite, Descriptor, DevelopmentConfig, Encoding, Environment, Failure, Hookable, HttpMethod, InferInput, InferOutput, Invoke, Issue, Mergeable, Middleware, MimeType, Module, Node, OPTIONAL_PARAMETER, OPTIONAL_PARAMETER_MATCH, OPTIONAL_WILDCARD, OPTIONAL_WILDCARD_MATCH, OptionalParameterNode, OptionalWildcardNode, Output, PARAMETER, PARAMETER_MATCH, ParameterNode, PathNode, ROUTER_CONTEXT, Radix, ResponseConfig, Result, Route, Router, RouterContext, SERVER, SERVER_CONTEXT, STATES, Schema, Scope, Server, ServerContext, Source, States, StatusCode, Success, Template, Virtual, WILDCARD, WILDCARD_MATCH, WildcardNode, cookiePriorities, cookieSameSites, createServer, defineContext, defineHook, defineMiddleware, defineRoute, encodings, getState, httpMethods, invoke, isClient, isFailure, isServer, mergeObjects, mimeType, mimeTypes, parseCookiePair, parseSchema, sendBadRequest, sendCreated, sendForbidden, sendNoContent, sendNotFound, sendOk, sendRedirect, sendResponse, sendUnauthorized, setCookie, setState, statusCodes, useBody, useCookies, useHeaders, useParameters, useQuery, useRouter, useServer, useSetCookies, useUrl, withQuery };
1
+ import { $ as encodings, A as ParameterNode, At as Context, B as STATES, Bt as Primitive, C as OPTIONAL_PARAMETER_MATCH, Ct as useParameters, D as OptionalWildcardNode, Dt as useSetCookies, E as OptionalParameterNode, Et as useServer, F as Result, Ft as InferOutput, G as WILDCARD, Gt as defineHook, H as ServerContext, Ht as Scope, I as Route, It as Invoke, J as cookiePriorities, Jt as parseSchema, K as WILDCARD_MATCH, Kt as isFailure, L as Router, Lt as Issue, M as ROUTER_CONTEXT, Mt as Failure, N as Radix, Nt as Hookable, O as PARAMETER, Ot as useUrl, P as ResponseConfig, Pt as InferInput, Q as defineRoute, R as RouterContext, Rt as Mergeable, S as OPTIONAL_PARAMETER, St as useHeaders, T as OPTIONAL_WILDCARD_MATCH, Tt as useRouter, U as States, Ut as Success, V as Server, Vt as Schema, W as StatusCode, Wt as defineContext, X as createServer, Y as cookieSameSites, Z as defineMiddleware, _ as Encoding, _t as setCookie, a as Config, at as mimeType, b as MimeType, bt as useBody, c as Environment, ct as sendBadRequest, d as Source, dt as sendNoContent, et as getState, f as Template, ft as sendNotFound, g as CookieSameSite, gt as sendUnauthorized, h as CookiePriority, ht as sendResponse, i as CLOSE_HOOK, it as isServer, j as PathNode, jt as Descriptor, k as PARAMETER_MATCH, kt as withQuery, l as Module, lt as sendCreated, m as CookieOptions, mt as sendRedirect, n as App, nt as invoke, o as Content, ot as mimeTypes, p as Virtual, pt as sendOk, q as WildcardNode, qt as mergeObjects, r as CLIENT, rt as isClient, s as DevelopmentConfig, st as parseCookiePair, t as $fetch, tt as httpMethods, u as SERVER, ut as sendForbidden, v as HttpMethod, vt as setState, w as OPTIONAL_WILDCARD, wt as useQuery, x as Node, xt as useCookies, y as Middleware, yt as statusCodes, z as SERVER_CONTEXT, zt as Output } from "./index-BaqVUbna.mjs";
2
+ export { $fetch, App, CLIENT, CLOSE_HOOK, Config, Content, Context, CookieOptions, CookiePriority, CookieSameSite, Descriptor, DevelopmentConfig, Encoding, Environment, Failure, Hookable, HttpMethod, InferInput, InferOutput, Invoke, Issue, Mergeable, Middleware, MimeType, Module, Node, OPTIONAL_PARAMETER, OPTIONAL_PARAMETER_MATCH, OPTIONAL_WILDCARD, OPTIONAL_WILDCARD_MATCH, OptionalParameterNode, OptionalWildcardNode, Output, PARAMETER, PARAMETER_MATCH, ParameterNode, PathNode, Primitive, ROUTER_CONTEXT, Radix, ResponseConfig, Result, Route, Router, RouterContext, SERVER, SERVER_CONTEXT, STATES, Schema, Scope, Server, ServerContext, Source, States, StatusCode, Success, Template, Virtual, WILDCARD, WILDCARD_MATCH, WildcardNode, cookiePriorities, cookieSameSites, createServer, defineContext, defineHook, defineMiddleware, defineRoute, encodings, getState, httpMethods, invoke, isClient, isFailure, isServer, mergeObjects, mimeType, mimeTypes, parseCookiePair, parseSchema, sendBadRequest, sendCreated, sendForbidden, sendNoContent, sendNotFound, sendOk, sendRedirect, sendResponse, sendUnauthorized, setCookie, setState, statusCodes, useBody, useCookies, useHeaders, useParameters, useQuery, useRouter, useServer, useSetCookies, useUrl, withQuery };
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as useHeaders, A as encodings, B as sendCreated, C as WILDCARD, D as createServer, E as cookieSameSites, F as isServer, G as sendRedirect, H as sendNoContent, I as mimeType, J as setCookie, K as sendResponse, L as mimeTypes, M as httpMethods, N as invoke, O as defineMiddleware, P as isClient, Q as useCookies, R as parseCookiePair, S as STATES, T as cookiePriorities, U as sendNotFound, V as sendForbidden, W as sendOk, X as statusCodes, Y as setState, Z as useBody, _ as PARAMETER_MATCH, a as Hookable, at as useUrl, b as Router, c as defineHook, d as parseSchema, et as useParameters, f as OPTIONAL_PARAMETER, g as PARAMETER, h as OPTIONAL_WILDCARD_MATCH, i as SERVER, it as useSetCookies, j as getState, k as defineRoute, l as isFailure, m as OPTIONAL_WILDCARD, n as CLIENT, nt as useRouter, o as Scope, ot as withQuery, p as OPTIONAL_PARAMETER_MATCH, q as sendUnauthorized, r as CLOSE_HOOK, rt as useServer, s as defineContext, t as App, tt as useQuery, u as mergeObjects, v as ROUTER_CONTEXT, w as WILDCARD_MATCH, x as SERVER_CONTEXT, y as Radix, z as sendBadRequest } from "./app-D84eOfpA.mjs";
1
+ import { $ as useHeaders, A as encodings, B as sendCreated, C as WILDCARD, D as createServer, E as cookieSameSites, F as isServer, G as sendRedirect, H as sendNoContent, I as mimeType, J as setCookie, K as sendResponse, L as mimeTypes, M as httpMethods, N as invoke, O as defineMiddleware, P as isClient, Q as useCookies, R as parseCookiePair, S as STATES, T as cookiePriorities, U as sendNotFound, V as sendForbidden, W as sendOk, X as statusCodes, Y as setState, Z as useBody, _ as PARAMETER_MATCH, a as Hookable, at as useUrl, b as Router, c as defineHook, d as parseSchema, et as useParameters, f as OPTIONAL_PARAMETER, g as PARAMETER, h as OPTIONAL_WILDCARD_MATCH, i as SERVER, it as useSetCookies, j as getState, k as defineRoute, l as isFailure, m as OPTIONAL_WILDCARD, n as CLIENT, nt as useRouter, o as Scope, ot as withQuery, p as OPTIONAL_PARAMETER_MATCH, q as sendUnauthorized, r as CLOSE_HOOK, rt as useServer, s as defineContext, t as App, tt as useQuery, u as mergeObjects, v as ROUTER_CONTEXT, w as WILDCARD_MATCH, x as SERVER_CONTEXT, y as Radix, z as sendBadRequest } from "./app-DqEq3uwt.mjs";
2
2
  //#region src/client/index.ts
3
3
  async function $fetch(scope, input, options) {
4
4
  let response;
@@ -1,13 +1,13 @@
1
- import { m as Virtual, n as App, s as Content } from "../index-j4qntB2R.mjs";
1
+ import { n as App, o as Content, p as Virtual } from "../index-BaqVUbna.mjs";
2
2
 
3
3
  //#region src/kit/index.d.ts
4
4
  declare function useKit(source: string | URL): {
5
5
  fromModule(...paths: Array<string>): string;
6
6
  };
7
- declare function addAlias(app: App, name: string, path: string): void;
8
7
  declare function addTemplate(app: App, name: string, content: Content): void;
9
8
  declare function addVirtual(app: App, name: string, virtual: Virtual): void;
10
9
  declare function addRoutes(app: App, path: string): void;
10
+ declare function addMiddleware(app: App, path: string): void;
11
11
  declare function addTypes(app: App, name: string, content: Content): void;
12
12
  //#endregion
13
- export { addAlias, addRoutes, addTemplate, addTypes, addVirtual, useKit };
13
+ export { addMiddleware, addRoutes, addTemplate, addTypes, addVirtual, useKit };
@@ -8,20 +8,20 @@ function useKit(source) {
8
8
  return join(source, ...paths).split(win32.sep).join(posix.sep);
9
9
  } };
10
10
  }
11
- function addAlias(app, name, path) {
12
- app.config.build.alias["#alias/" + name] = path;
13
- }
14
11
  function addTemplate(app, name, content) {
15
- app.config.build.templates[name] = content;
12
+ app.config.templates[name] = content;
16
13
  }
17
14
  function addVirtual(app, name, virtual) {
18
- app.config.build.virtuals["#" + name] = virtual;
15
+ app.config.virtuals["#" + name] = virtual;
19
16
  }
20
17
  function addRoutes(app, path) {
21
18
  app.config.sources.routes?.entries.push(path);
22
19
  }
20
+ function addMiddleware(app, path) {
21
+ app.config.sources.middleware?.entries.push(path);
22
+ }
23
23
  function addTypes(app, name, content) {
24
24
  addTemplate(app, `types/${name}.d.ts`, content);
25
25
  }
26
26
  //#endregion
27
- export { addAlias, addRoutes, addTemplate, addTypes, addVirtual, useKit };
27
+ export { addMiddleware, addRoutes, addTemplate, addTypes, addVirtual, useKit };
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
2
  var name = "revojs";
3
- var version = "0.1.44";
3
+ var version = "0.1.46";
4
4
  //#endregion
5
5
  export { version as n, name as t };
@@ -1,5 +1,5 @@
1
- import { o as Config, zt as Mergeable } from "../index-j4qntB2R.mjs";
2
- import { Plugin } from "vite";
1
+ import { Rt as Mergeable, a as Config } from "../index-BaqVUbna.mjs";
2
+ import { PluginOption } from "vite";
3
3
 
4
4
  //#region src/vite/index.d.ts
5
5
  interface Import {
@@ -8,6 +8,6 @@ interface Import {
8
8
  path: string;
9
9
  }
10
10
  declare function toImportName(path: string): string;
11
- declare function revojs(config?: Mergeable<Config>): Array<Plugin>;
11
+ declare function revojs(config?: Mergeable<Config>): Promise<Array<PluginOption>>;
12
12
  //#endregion
13
13
  export { Import, revojs, toImportName };
@@ -1,11 +1,11 @@
1
- import { N as invoke, n as CLIENT, o as Scope, r as CLOSE_HOOK, t as App, u as mergeObjects, x as SERVER_CONTEXT } from "../app-D84eOfpA.mjs";
2
- import { n as version, t as name } from "../package-B2uzCFzB.mjs";
1
+ import { N as invoke, n as CLIENT, o as Scope, r as CLOSE_HOOK, t as App, u as mergeObjects, x as SERVER_CONTEXT } from "../app-DqEq3uwt.mjs";
2
+ import { n as version, t as name } from "../package-CHq5U5yh.mjs";
3
3
  import { addTemplate, addTypes, addVirtual, useKit } from "../kit/index.mjs";
4
4
  import { basename, dirname, isAbsolute, join, posix, resolve, win32 } from "path";
5
5
  import { mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
6
6
  import { cwd } from "process";
7
7
  import { globSync } from "tinyglobby";
8
- import { isRunnableDevEnvironment } from "vite";
8
+ import { isRunnableDevEnvironment, mergeConfig } from "vite";
9
9
  import { once } from "events";
10
10
  import { Readable } from "stream";
11
11
  //#region src/vite/node/index.ts
@@ -141,8 +141,12 @@ function toHtmlTagDescriptor(template, injectTo) {
141
141
  function toImportName(path) {
142
142
  return path.replace(/\.[^/.]+$/, "").replace(/\[\[\.\.\.(.*?)\]\]/g, "$1").replace(/\[\.\.\.(.*?)\]/g, "$1").replace(/\[\[(.*?)\]\]/g, "$1").replace(/\[(.*?)\]/g, "$1").split("/").flatMap((segment) => segment.split(/[-_]/g)).filter(Boolean).map((segment) => segment.charAt(0).toUpperCase() + segment.slice(1)).join("").replace(/[^a-zA-Z0-9_$]/g, "");
143
143
  }
144
- function revojs(config) {
144
+ async function revojs(config) {
145
145
  const app = new App(config);
146
+ for (const module of app.config.modules) {
147
+ const result = await module.setup?.(app);
148
+ if (typeof result === "object") app.config = mergeObjects(app.config, result);
149
+ }
146
150
  return [
147
151
  {
148
152
  name,
@@ -151,8 +155,6 @@ function revojs(config) {
151
155
  api: { [name]: app },
152
156
  async config() {
153
157
  const { fromModule } = useKit(cwd());
154
- for (const module of app.config.modules) app.config = mergeObjects(app.config, await module.config?.());
155
- for (const module of app.config.modules) await module.setup?.(app);
156
158
  addVirtual(app, "client", () => {
157
159
  if (app.config.client) return `import client from "${fromModule(app.config.client)}?client"; export default client`;
158
160
  });
@@ -178,15 +180,15 @@ function revojs(config) {
178
180
  return content;
179
181
  });
180
182
  addTypes(app, name, () => {
181
- let content = entries.reduce((content, entry) => content + `export declare const ${entry.import}: typeof import("${entry.path}")["default"] \n`, "");
183
+ let content = entries.reduce((content, entry) => content += `export declare const ${entry.import}: typeof import("${entry.path}") extends { default: infer D } ? D : typeof import("${entry.path}") \n`, "");
182
184
  content += `declare const entries: { ${entries.map((entry) => `"${entry.name}": typeof ${entry.import}`)} } \n`;
183
185
  content += `export default entries`;
184
- return content;
186
+ return `declare module "#${name}" { ${content} }`;
185
187
  });
186
188
  }
187
189
  const meta = resolve(".revojs");
188
190
  addTemplate(app, "index.d.ts", () => {
189
- return Object.keys(app.config.build.templates).reduce((content, name) => {
191
+ return Object.keys(app.config.templates).reduce((content, name) => {
190
192
  if (name.startsWith("types/")) content += `import "./${name}" \n`;
191
193
  return content;
192
194
  }, "");
@@ -195,20 +197,15 @@ function revojs(config) {
195
197
  recursive: true,
196
198
  force: true
197
199
  });
198
- for (const template in app.config.build.templates) {
200
+ for (const template in app.config.templates) {
199
201
  const path = join(meta, template);
200
202
  mkdirSync(dirname(path), { recursive: true });
201
- writeFileSync(path, app.config.build.templates[template]());
203
+ writeFileSync(path, await app.config.templates[template]());
202
204
  }
203
- return {
205
+ return mergeConfig({
204
206
  appType: "custom",
205
207
  optimizeDeps: { exclude: ["revojs"] },
206
- resolve: { alias: app.config.build.alias },
207
- build: {
208
- emptyOutDir: false,
209
- assetsInlineLimit: 4096 * 4,
210
- rolldownOptions: { external: app.config.build.externals }
211
- },
208
+ build: { emptyOutDir: false },
212
209
  define: Object.entries(app.config.variables).reduce((variables, [name, value]) => ({
213
210
  ...variables,
214
211
  [`import.meta.${name}`]: value
@@ -259,7 +256,7 @@ function revojs(config) {
259
256
  }
260
257
  } }
261
258
  }
262
- };
259
+ }, app.config.vite);
263
260
  },
264
261
  transformIndexHtml: {
265
262
  order: "pre",
@@ -292,7 +289,7 @@ function revojs(config) {
292
289
  response: { headers: new Headers() },
293
290
  variables: process.env
294
291
  });
295
- var result = await invoke(scope, app.config.development.middlewares.concat({ fetch: server.fetch }));
292
+ var result = await invoke(scope, app.config.development.middleware.concat({ fetch: server.fetch }));
296
293
  if (result) await toNodeRequest(result, response);
297
294
  }
298
295
  next();
@@ -301,8 +298,9 @@ function revojs(config) {
301
298
  }
302
299
  }
303
300
  },
304
- virtuals(app.config.build.virtuals),
305
- client()
301
+ virtuals(app.config.virtuals),
302
+ client(),
303
+ app.config.vite.plugins
306
304
  ];
307
305
  }
308
306
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "revojs",
3
- "version": "0.1.44",
3
+ "version": "0.1.46",
4
4
  "license": "MIT",
5
5
  "repository": "tellua/revojs",
6
6
  "bin": {
@@ -0,0 +1,7 @@
1
+ declare module "#middleware" {
2
+ import type { Middleware } from "revojs";
3
+
4
+ const entries: Record<string, Middleware>;
5
+
6
+ export default entries;
7
+ }