@weconjs/core 1.2.6 → 1.2.12
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/config.d.ts +0 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -2
- package/dist/config.js.map +1 -1
- package/dist/database/index.d.ts +0 -11
- package/dist/database/index.d.ts.map +1 -1
- package/dist/database/index.js +0 -17
- package/dist/database/index.js.map +1 -1
- package/dist/devtools/controllers/i18n.controller.d.ts +1 -1
- package/dist/devtools/controllers/i18n.controller.d.ts.map +1 -1
- package/dist/devtools/controllers/i18n.controller.js +19 -10
- package/dist/devtools/controllers/i18n.controller.js.map +1 -1
- package/dist/devtools/index.d.ts.map +1 -1
- package/dist/devtools/index.js +2 -0
- package/dist/devtools/index.js.map +1 -1
- package/dist/i18n/index.d.ts +13 -30
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +15 -91
- package/dist/i18n/index.js.map +1 -1
- package/dist/i18n/loader.d.ts +58 -0
- package/dist/i18n/loader.d.ts.map +1 -0
- package/dist/i18n/loader.js +97 -0
- package/dist/i18n/loader.js.map +1 -0
- package/dist/i18n/middleware.d.ts +39 -0
- package/dist/i18n/middleware.d.ts.map +1 -0
- package/dist/i18n/middleware.js +75 -0
- package/dist/i18n/middleware.js.map +1 -0
- package/dist/i18n/utils.d.ts +31 -0
- package/dist/i18n/utils.d.ts.map +1 -0
- package/dist/i18n/utils.js +46 -0
- package/dist/i18n/utils.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/module.d.ts +10 -0
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +25 -0
- package/dist/module.js.map +1 -1
- package/dist/server/banner.d.ts +1 -0
- package/dist/server/banner.d.ts.map +1 -1
- package/dist/server/banner.js +17 -8
- package/dist/server/banner.js.map +1 -1
- package/dist/server/index.d.ts +7 -15
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +16 -21
- package/dist/server/index.js.map +1 -1
- package/dist/types/express.d.ts +30 -0
- package/dist/types/express.d.ts.map +1 -0
- package/dist/types/express.js +2 -0
- package/dist/types/express.js.map +1 -0
- package/dist/types/i18next.d.ts +7 -0
- package/dist/types/i18next.d.ts.map +1 -0
- package/dist/types/i18next.js +2 -0
- package/dist/types/i18next.js.map +1 -0
- package/dist/types.d.ts +5 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -6
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @weconjs/core - i18n Middleware
|
|
3
|
+
*
|
|
4
|
+
* Initializes i18next with module-based translations and provides
|
|
5
|
+
* namespace-scoped translation middleware for Express routes.
|
|
6
|
+
*/
|
|
7
|
+
import i18next from "i18next";
|
|
8
|
+
import type { Request, Response, NextFunction, Handler } from "express";
|
|
9
|
+
/**
|
|
10
|
+
* Initialize i18next with translations discovered from module directories
|
|
11
|
+
*
|
|
12
|
+
* @param modulesDir - Path to the modules directory
|
|
13
|
+
* @param fallbackLng - Default/fallback language code
|
|
14
|
+
* @returns Express middleware that attaches `req.i18n` and `req.t`
|
|
15
|
+
*/
|
|
16
|
+
export declare function initializeI18n(modulesDir: string, fallbackLng?: string): Promise<Handler>;
|
|
17
|
+
/**
|
|
18
|
+
* Namespace middleware for i18n
|
|
19
|
+
*
|
|
20
|
+
* Sets `req.t` to a fixed translation function scoped to the route's
|
|
21
|
+
* module namespace (with "core" as fallback).
|
|
22
|
+
*
|
|
23
|
+
* Reads namespace from `req.route_instance?.meta?.namespace`, which is
|
|
24
|
+
* set automatically by `defineModule()`.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // In a controller within the "auth" module:
|
|
29
|
+
* req.t("login.success") // Uses "auth" namespace
|
|
30
|
+
* req.t("core:errors.NOT_FOUND") // Explicit "core" namespace
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function i18nNamespaceMiddleware(req: Request, res: Response, next: NextFunction): void;
|
|
34
|
+
/**
|
|
35
|
+
* Get the i18next instance
|
|
36
|
+
*/
|
|
37
|
+
export declare function getI18n(): import("i18next").i18n;
|
|
38
|
+
export { i18next };
|
|
39
|
+
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/i18n/middleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGxE;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,WAAW,GAAE,MAAa,GACzB,OAAO,CAAC,OAAO,CAAC,CA2BlB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAaN;AAED;;GAEG;AACH,wBAAgB,OAAO,2BAEtB;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @weconjs/core - i18n Middleware
|
|
3
|
+
*
|
|
4
|
+
* Initializes i18next with module-based translations and provides
|
|
5
|
+
* namespace-scoped translation middleware for Express routes.
|
|
6
|
+
*/
|
|
7
|
+
import i18next from "i18next";
|
|
8
|
+
import * as i18nextMiddleware from "i18next-http-middleware";
|
|
9
|
+
import { I18nLoader } from "./loader.js";
|
|
10
|
+
/**
|
|
11
|
+
* Initialize i18next with translations discovered from module directories
|
|
12
|
+
*
|
|
13
|
+
* @param modulesDir - Path to the modules directory
|
|
14
|
+
* @param fallbackLng - Default/fallback language code
|
|
15
|
+
* @returns Express middleware that attaches `req.i18n` and `req.t`
|
|
16
|
+
*/
|
|
17
|
+
export async function initializeI18n(modulesDir, fallbackLng = "en") {
|
|
18
|
+
const loader = new I18nLoader(modulesDir);
|
|
19
|
+
const resources = loader.loadAll();
|
|
20
|
+
const namespaces = loader.getNamespaces();
|
|
21
|
+
const languages = loader.getSupportedLanguages();
|
|
22
|
+
await i18next.use(i18nextMiddleware.LanguageDetector).init({
|
|
23
|
+
resources,
|
|
24
|
+
fallbackLng,
|
|
25
|
+
preload: languages.length > 0 ? languages : [fallbackLng],
|
|
26
|
+
ns: namespaces,
|
|
27
|
+
defaultNS: "core",
|
|
28
|
+
detection: {
|
|
29
|
+
order: ["header", "querystring", "cookie"],
|
|
30
|
+
lookupHeader: "accept-language",
|
|
31
|
+
lookupQuerystring: "lang",
|
|
32
|
+
lookupCookie: "i18next",
|
|
33
|
+
},
|
|
34
|
+
interpolation: {
|
|
35
|
+
escapeValue: false,
|
|
36
|
+
},
|
|
37
|
+
returnEmptyString: false,
|
|
38
|
+
returnNull: false,
|
|
39
|
+
});
|
|
40
|
+
return i18nextMiddleware.handle(i18next);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Namespace middleware for i18n
|
|
44
|
+
*
|
|
45
|
+
* Sets `req.t` to a fixed translation function scoped to the route's
|
|
46
|
+
* module namespace (with "core" as fallback).
|
|
47
|
+
*
|
|
48
|
+
* Reads namespace from `req.route_instance?.meta?.namespace`, which is
|
|
49
|
+
* set automatically by `defineModule()`.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // In a controller within the "auth" module:
|
|
54
|
+
* req.t("login.success") // Uses "auth" namespace
|
|
55
|
+
* req.t("core:errors.NOT_FOUND") // Explicit "core" namespace
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export function i18nNamespaceMiddleware(req, res, next) {
|
|
59
|
+
if (!req.i18n) {
|
|
60
|
+
return next();
|
|
61
|
+
}
|
|
62
|
+
const language = req.i18n.language || "en";
|
|
63
|
+
const namespace = req.route_instance?.meta?.namespace || "core";
|
|
64
|
+
// Fixed translation function with module namespace as primary, core as fallback
|
|
65
|
+
req.t = req.i18n.getFixedT(language, [namespace, "core"]);
|
|
66
|
+
next();
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the i18next instance
|
|
70
|
+
*/
|
|
71
|
+
export function getI18n() {
|
|
72
|
+
return i18next;
|
|
73
|
+
}
|
|
74
|
+
export { i18next };
|
|
75
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/i18n/middleware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,iBAAiB,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,cAAsB,IAAI;IAE1B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAEnC,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAEjD,MAAM,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;QACzD,SAAS;QACT,WAAW;QACX,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QACzD,EAAE,EAAE,UAAU;QACd,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE;YACT,KAAK,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC;YAC1C,YAAY,EAAE,iBAAiB;YAC/B,iBAAiB,EAAE,MAAM;YACzB,YAAY,EAAE,SAAS;SACxB;QACD,aAAa,EAAE;YACb,WAAW,EAAE,KAAK;SACnB;QACD,iBAAiB,EAAE,KAAK;QACxB,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,uBAAuB,CACrC,GAAY,EACZ,GAAa,EACb,IAAkB;IAElB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC3C,MAAM,SAAS,GACZ,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,SAAoB,IAAI,MAAM,CAAC;IAE5D,gFAAgF;IAChF,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAE1D,IAAI,EAAE,CAAC;AACT,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @weconjs/core - i18n Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for working with translations in controllers and services.
|
|
5
|
+
*/
|
|
6
|
+
import type { Request } from "express";
|
|
7
|
+
/**
|
|
8
|
+
* Create a translation function from a request object
|
|
9
|
+
*
|
|
10
|
+
* Returns `req.t` if i18n is initialized, otherwise returns
|
|
11
|
+
* a fallback that echoes the key.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const t = translate(req);
|
|
16
|
+
* const message = t("auth:login.success");
|
|
17
|
+
* const error = t("core:errors.UNAUTHORIZED");
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function translate(req: Request): (key: string, options?: Record<string, unknown>) => string;
|
|
21
|
+
/**
|
|
22
|
+
* Get the current language from the request
|
|
23
|
+
*
|
|
24
|
+
* @returns The detected language code, or "en" as fallback
|
|
25
|
+
*/
|
|
26
|
+
export declare function getCurrentLanguage(req: Request): string;
|
|
27
|
+
/**
|
|
28
|
+
* Change the language for the current request
|
|
29
|
+
*/
|
|
30
|
+
export declare function changeLanguage(req: Request, language: string): void;
|
|
31
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/i18n/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,IAC5B,KAAK,MAAM,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAMvD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAKvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAInE"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @weconjs/core - i18n Utilities
|
|
3
|
+
*
|
|
4
|
+
* Helper functions for working with translations in controllers and services.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Create a translation function from a request object
|
|
8
|
+
*
|
|
9
|
+
* Returns `req.t` if i18n is initialized, otherwise returns
|
|
10
|
+
* a fallback that echoes the key.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const t = translate(req);
|
|
15
|
+
* const message = t("auth:login.success");
|
|
16
|
+
* const error = t("core:errors.UNAUTHORIZED");
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function translate(req) {
|
|
20
|
+
return (key, options) => {
|
|
21
|
+
if (req.t) {
|
|
22
|
+
return req.t(key, options);
|
|
23
|
+
}
|
|
24
|
+
return key;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the current language from the request
|
|
29
|
+
*
|
|
30
|
+
* @returns The detected language code, or "en" as fallback
|
|
31
|
+
*/
|
|
32
|
+
export function getCurrentLanguage(req) {
|
|
33
|
+
if (req.i18n) {
|
|
34
|
+
return req.i18n.language;
|
|
35
|
+
}
|
|
36
|
+
return "en";
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Change the language for the current request
|
|
40
|
+
*/
|
|
41
|
+
export function changeLanguage(req, language) {
|
|
42
|
+
if (req.i18n) {
|
|
43
|
+
req.i18n.changeLanguage(language);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/i18n/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO,CAAC,GAAW,EAAE,OAAiC,EAAE,EAAE;QACxD,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;YACV,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY,EAAE,QAAgB;IAC3D,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Provides configuration, module system, routing, and runtime utilities.
|
|
6
6
|
*/
|
|
7
7
|
export { defineConfig, resolveConfig, loadConfig } from "./config.js";
|
|
8
|
-
export { defineModule, loadModule, discoverSocketHandlers, discoverSocketMiddleware, resolveModuleDependencies, } from "./module.js";
|
|
8
|
+
export { defineModule, loadModule, discoverSocketHandlers, discoverSocketMiddleware, resolveModuleDependencies, resolveModuleConfigs, } from "./module.js";
|
|
9
9
|
export { readModulePackageJson, checkModuleDeps, detectPackageManager, installModuleDeps, resolveAllModuleDeps, } from "./module/index.js";
|
|
10
10
|
export type { ModulePackageJson, DepsCheckResult } from "./module/index.js";
|
|
11
11
|
export { createContext, createLogger } from "./context.js";
|
|
@@ -16,7 +16,7 @@ export type { CreateWeconOptions, WeconApp, ApiError, ApiResponse, RespondOption
|
|
|
16
16
|
export { Wecon, Route, Routes, RoutesParam, RaiMatcher, ErrorCatcher, } from "./routing/index.js";
|
|
17
17
|
export type { WeconDevConfig, RaiRoutesList } from "./routing/index.js";
|
|
18
18
|
export { ConfigError, RequestError } from "./errors/index.js";
|
|
19
|
-
export {
|
|
19
|
+
export { initializeI18n, initI18n, i18nNamespaceMiddleware, getI18n, i18next, I18nLoader, translate, getCurrentLanguage, changeLanguage, } from "./i18n/index.js";
|
|
20
20
|
export type { I18nResources } from "./i18n/index.js";
|
|
21
21
|
export { createDatabaseConnection, buildMongoUri, buildUriFromConfig, } from "./database/index.js";
|
|
22
22
|
export type { DatabaseOptions, DatabaseConnection, MongoUriParts, } from "./database/index.js";
|
|
@@ -24,5 +24,7 @@ export { createSocketServer, discoverSocketHandlers as discoverSocketHandlersFro
|
|
|
24
24
|
export type { SocketServer, SocketInstance, SocketHandler as SocketHandlerFn, SocketMiddleware as SocketMiddlewareFn, DiscoveredSocketHandler, SocketOptions, } from "./socket/index.js";
|
|
25
25
|
export { createDevToolsRouter } from "./devtools/index.js";
|
|
26
26
|
export type { DevToolsOptions } from "./devtools/index.js";
|
|
27
|
+
import "./types/express.js";
|
|
28
|
+
import "./types/i18next.js";
|
|
27
29
|
export type { RouteConfig, RoutesConfig, RAI, DefaultRole, ErrorInfoType, ErrorTraceType, PossibleErrosType, WeconConfig, ResolvedConfig, AppConfig, DatabaseConfig, LoggingConfig, HttpsConfig, SocketConfig, FeaturesConfig, WeconHooks, ModuleDefinition, ModuleConfigDefinition, WeconModule, SocketHandler, SocketMiddleware, WeconContext, WeconLogger, WeconServices, Authenticable, AuthConfig, WeconRequest, WeconResponse, RouteHandler, WeconMiddleware, } from "./types.js";
|
|
28
30
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGtE,OAAO,EACL,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAG9D,OAAO,EACL,cAAc,EACd,QAAQ,EACR,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,IAAI,iCAAiC,EAC3D,wBAAwB,IAAI,mCAAmC,EAC/D,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,YAAY,EACZ,cAAc,EACd,aAAa,IAAI,eAAe,EAChC,gBAAgB,IAAI,kBAAkB,EACtC,uBAAuB,EACvB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,OAAO,oBAAoB,CAAC;AAC5B,OAAO,oBAAoB,CAAC;AAG5B,YAAY,EAEV,WAAW,EACX,YAAY,EACZ,GAAG,EACH,WAAW,EACX,aAAa,EACb,cAAc,EACd,iBAAiB,EAGjB,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,UAAU,EAGV,gBAAgB,EAChB,sBAAsB,EACtB,WAAW,EAGX,aAAa,EACb,gBAAgB,EAGhB,YAAY,EACZ,WAAW,EACX,aAAa,EAGb,aAAa,EACb,UAAU,EAGV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
// Configuration
|
|
8
8
|
export { defineConfig, resolveConfig, loadConfig } from "./config.js";
|
|
9
9
|
// Module System
|
|
10
|
-
export { defineModule, loadModule, discoverSocketHandlers, discoverSocketMiddleware, resolveModuleDependencies, } from "./module.js";
|
|
10
|
+
export { defineModule, loadModule, discoverSocketHandlers, discoverSocketMiddleware, resolveModuleDependencies, resolveModuleConfigs, } from "./module.js";
|
|
11
11
|
// Module Loader (per-module package.json support)
|
|
12
12
|
export { readModulePackageJson, checkModuleDeps, detectPackageManager, installModuleDeps, resolveAllModuleDeps, } from "./module/index.js";
|
|
13
13
|
// Context
|
|
@@ -21,11 +21,14 @@ export { Wecon, Route, Routes, RoutesParam, RaiMatcher, ErrorCatcher, } from "./
|
|
|
21
21
|
// Errors
|
|
22
22
|
export { ConfigError, RequestError } from "./errors/index.js";
|
|
23
23
|
// i18n
|
|
24
|
-
export {
|
|
24
|
+
export { initializeI18n, initI18n, i18nNamespaceMiddleware, getI18n, i18next, I18nLoader, translate, getCurrentLanguage, changeLanguage, } from "./i18n/index.js";
|
|
25
25
|
// Database
|
|
26
26
|
export { createDatabaseConnection, buildMongoUri, buildUriFromConfig, } from "./database/index.js";
|
|
27
27
|
// Socket.IO
|
|
28
28
|
export { createSocketServer, discoverSocketHandlers as discoverSocketHandlersFromModules, discoverSocketMiddleware as discoverSocketMiddlewareFromModules, initializeSocket, setupSocketIO, } from "./socket/index.js";
|
|
29
29
|
// DevTools
|
|
30
30
|
export { createDevToolsRouter } from "./devtools/index.js";
|
|
31
|
+
// Global type augmentations (Express.Request extensions)
|
|
32
|
+
import "./types/express.js";
|
|
33
|
+
import "./types/i18next.js";
|
|
31
34
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtE,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gBAAgB;AAChB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtE,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAErB,kDAAkD;AAClD,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAG3B,UAAU;AACV,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,SAAS;AACT,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAG3B,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD,UAAU;AACV,OAAO,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,oBAAoB,CAAC;AAG5B,SAAS;AACT,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO;AACP,OAAO,EACL,cAAc,EACd,QAAQ,EACR,uBAAuB,EACvB,OAAO,EACP,OAAO,EACP,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,WAAW;AACX,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AAO7B,YAAY;AACZ,OAAO,EACL,kBAAkB,EAClB,sBAAsB,IAAI,iCAAiC,EAC3D,wBAAwB,IAAI,mCAAmC,EAC/D,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAU3B,WAAW;AACX,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG3D,yDAAyD;AACzD,OAAO,oBAAoB,CAAC;AAC5B,OAAO,oBAAoB,CAAC"}
|
package/dist/module.d.ts
CHANGED
|
@@ -65,4 +65,14 @@ export declare function loadModule(modulePath: string, baseDir: string): Promise
|
|
|
65
65
|
* @returns Ordered array of modules (dependencies first)
|
|
66
66
|
*/
|
|
67
67
|
export declare function resolveModuleDependencies(modules: Map<string, WeconModule>): WeconModule[];
|
|
68
|
+
/**
|
|
69
|
+
* Resolve module configs by calling each module's load() function
|
|
70
|
+
*
|
|
71
|
+
* Iterates over all modules, calls their config.load() if present,
|
|
72
|
+
* merges with defaults, and validates against the module's Zod schema.
|
|
73
|
+
*
|
|
74
|
+
* @param modules - Array or record of modules
|
|
75
|
+
* @returns Record of validated module configs keyed by module name
|
|
76
|
+
*/
|
|
77
|
+
export declare function resolveModuleConfigs(modules: WeconModule[] | Record<string, WeconModule>): Promise<Record<string, unknown>>;
|
|
68
78
|
//# sourceMappingURL=module.d.ts.map
|
package/dist/module.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA6BpB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,WAAW,CAiCtE;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,EAAE,CAAC,CAmCrD;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8B7B;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CA+CtB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAChC,WAAW,EAAE,CAiCf"}
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA6BpB;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,gBAAgB,GAAG,WAAW,CAiCtE;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,aAAa,CAAA;CAAE,EAAE,CAAC,CAmCrD;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8B7B;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC,CA+CtB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,GAChC,WAAW,EAAE,CAiCf;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GACnD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqBlC"}
|
package/dist/module.js
CHANGED
|
@@ -234,4 +234,29 @@ export function resolveModuleDependencies(modules) {
|
|
|
234
234
|
}
|
|
235
235
|
return resolved;
|
|
236
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Resolve module configs by calling each module's load() function
|
|
239
|
+
*
|
|
240
|
+
* Iterates over all modules, calls their config.load() if present,
|
|
241
|
+
* merges with defaults, and validates against the module's Zod schema.
|
|
242
|
+
*
|
|
243
|
+
* @param modules - Array or record of modules
|
|
244
|
+
* @returns Record of validated module configs keyed by module name
|
|
245
|
+
*/
|
|
246
|
+
export async function resolveModuleConfigs(modules) {
|
|
247
|
+
const moduleList = Array.isArray(modules) ? modules : Object.values(modules);
|
|
248
|
+
const configs = {};
|
|
249
|
+
for (const mod of moduleList) {
|
|
250
|
+
if (!mod.config?.schema)
|
|
251
|
+
continue;
|
|
252
|
+
const rawConfig = mod.config.load ? await mod.config.load() : {};
|
|
253
|
+
const merged = { ...(mod.config.defaults ?? {}), ...rawConfig };
|
|
254
|
+
const result = mod.config.schema.safeParse(merged);
|
|
255
|
+
if (!result.success) {
|
|
256
|
+
throw new Error(`[Wecon] Invalid config for module "${mod.name}": ${result.error.message}`);
|
|
257
|
+
}
|
|
258
|
+
configs[mod.name] = result.data;
|
|
259
|
+
}
|
|
260
|
+
return configs;
|
|
261
|
+
}
|
|
237
262
|
//# sourceMappingURL=module.js.map
|
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../src/module.ts"],"names":[],"mappings":"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"}
|
package/dist/server/banner.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/server/banner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,UAAU,aAAa;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/server/banner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/D,UAAU,aAAa;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAkHvE"}
|
package/dist/server/banner.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Pretty, developer-friendly startup output with colors.
|
|
5
5
|
*/
|
|
6
6
|
export async function printBanner(options) {
|
|
7
|
-
const { config, modules, port, protocol, dbConnected, i18nEnabled, devtoolsEnabled, devtoolsPrefix, routeCount, } = options;
|
|
7
|
+
const { config, modules, port, protocol, dbConnected, i18nEnabled, devtoolsEnabled, devtoolsPrefix, routeCount, apiPrefix, } = options;
|
|
8
8
|
// Dynamic import chalk (ESM)
|
|
9
9
|
let c;
|
|
10
10
|
try {
|
|
@@ -43,9 +43,16 @@ export async function printBanner(options) {
|
|
|
43
43
|
lines.push("");
|
|
44
44
|
// Server info
|
|
45
45
|
lines.push(` ${c.dim("├─")} ${c.dim("URL")} ${c.cyan(url)}`);
|
|
46
|
+
if (apiPrefix) {
|
|
47
|
+
lines.push(` ${c.dim("├─")} ${c.dim("API Prefix")} ${c.cyan(apiPrefix)}`);
|
|
48
|
+
}
|
|
49
|
+
lines.push(` ${c.dim("├─")} ${c.dim("Version")} ${c.white(`v${config.app.version}`)}`);
|
|
46
50
|
lines.push(` ${c.dim("├─")} ${c.dim("Mode")} ${modeColor(mode)}`);
|
|
47
51
|
// Database
|
|
48
|
-
const
|
|
52
|
+
const dbName = config.database?.mongoose?.database;
|
|
53
|
+
const dbStatus = dbConnected
|
|
54
|
+
? c.green("● connected") + (dbName ? ` ${c.dim("—")} ${c.white(dbName)}` : "")
|
|
55
|
+
: c.dim("○ disabled");
|
|
49
56
|
lines.push(` ${c.dim("├─")} ${c.dim("Database")} ${dbStatus}`);
|
|
50
57
|
// Modules
|
|
51
58
|
const moduleNames = modules.map((m) => m.name).join(c.dim(", "));
|
|
@@ -58,16 +65,18 @@ export async function printBanner(options) {
|
|
|
58
65
|
const features = [];
|
|
59
66
|
if (i18nEnabled)
|
|
60
67
|
features.push("i18n");
|
|
61
|
-
if (config.features?.
|
|
62
|
-
features.push("
|
|
68
|
+
if (config.features?.swagger?.enabled)
|
|
69
|
+
features.push("Swagger");
|
|
70
|
+
if (config.features?.socket?.enabled)
|
|
71
|
+
features.push("Socket.IO");
|
|
63
72
|
if (features.length > 0) {
|
|
64
73
|
lines.push(` ${c.dim("├─")} ${c.dim("Features")} ${features.join(c.dim(", "))}`);
|
|
65
74
|
}
|
|
66
75
|
// DevTools
|
|
67
|
-
if (devtoolsEnabled) {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
76
|
+
// if (devtoolsEnabled) {
|
|
77
|
+
// const dtUrl = `${url}${devtoolsPrefix}`;
|
|
78
|
+
// lines.push(` ${c.dim("├─")} ${c.dim("DevTools")} ${c.cyan(dtUrl)}`);
|
|
79
|
+
// }
|
|
71
80
|
// Ready
|
|
72
81
|
lines.push(` ${c.dim("│")}`);
|
|
73
82
|
lines.push(` ${c.greenBright("✓")} ${c.bold("Ready")} ${c.dim(`in ${mode} mode`)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/server/banner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/server/banner.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -71,9 +71,13 @@ export interface CreateWeconOptions {
|
|
|
71
71
|
*/
|
|
72
72
|
wecon?: Wecon;
|
|
73
73
|
/**
|
|
74
|
-
*
|
|
74
|
+
* API prefix shown in the startup banner (e.g. "/api/v1")
|
|
75
75
|
*/
|
|
76
|
-
|
|
76
|
+
apiPrefix?: string;
|
|
77
|
+
/**
|
|
78
|
+
* Custom middlewares to apply before routes
|
|
79
|
+
*/
|
|
80
|
+
middlewares?: RequestHandler[];
|
|
77
81
|
/**
|
|
78
82
|
* Database options
|
|
79
83
|
*/
|
|
@@ -94,18 +98,6 @@ export interface CreateWeconOptions {
|
|
|
94
98
|
options?: unknown;
|
|
95
99
|
}>;
|
|
96
100
|
};
|
|
97
|
-
/**
|
|
98
|
-
* Plugin options
|
|
99
|
-
*/
|
|
100
|
-
plugins?: {
|
|
101
|
-
/**
|
|
102
|
-
* Enable FieldShield integration
|
|
103
|
-
*/
|
|
104
|
-
fieldShield?: boolean | {
|
|
105
|
-
strict?: boolean;
|
|
106
|
-
debug?: boolean;
|
|
107
|
-
};
|
|
108
|
-
};
|
|
109
101
|
/**
|
|
110
102
|
* i18n options
|
|
111
103
|
*/
|
|
@@ -169,7 +161,7 @@ export interface CreateWeconOptions {
|
|
|
169
161
|
*/
|
|
170
162
|
hooks?: {
|
|
171
163
|
/**
|
|
172
|
-
* Called before server starts (after
|
|
164
|
+
* Called before server starts (after middlewares setup)
|
|
173
165
|
*/
|
|
174
166
|
onBoot?: (ctx: WeconContext) => Promise<void> | void;
|
|
175
167
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,WAAW,EAAmC,cAAc,EAAE,MAAM,SAAS,CAAC;AAE5F,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAe,YAAY,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAgD,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI7G,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGlF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;IAEvB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;OAEG;IACH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -26,7 +26,7 @@ import fs from "fs";
|
|
|
26
26
|
import path from "path";
|
|
27
27
|
import { createWinstonLogger, createConsoleLogger } from "../logger/index.js";
|
|
28
28
|
import { createDatabaseConnection, buildUriFromConfig } from "../database/index.js";
|
|
29
|
-
import {
|
|
29
|
+
import { initializeI18n, i18nNamespaceMiddleware } from "../i18n/index.js";
|
|
30
30
|
import { createContext } from "../context.js";
|
|
31
31
|
import { resolveAllModuleDeps } from "../module/index.js";
|
|
32
32
|
import { createDevToolsRouter } from "../devtools/index.js";
|
|
@@ -153,7 +153,7 @@ function createGracefulShutdown(server, ctx, db, onShutdown) {
|
|
|
153
153
|
* @returns Wecon application instance
|
|
154
154
|
*/
|
|
155
155
|
export async function createWecon(options) {
|
|
156
|
-
const { config, modules, wecon,
|
|
156
|
+
const { config, modules, wecon, middlewares = [], hooks = {} } = options;
|
|
157
157
|
// Install respond helper (wrapped in try-catch as express may not be available yet)
|
|
158
158
|
try {
|
|
159
159
|
installRespond();
|
|
@@ -191,15 +191,18 @@ export async function createWecon(options) {
|
|
|
191
191
|
for (const mod of modules) {
|
|
192
192
|
if (mod.config?.schema) {
|
|
193
193
|
moduleSchemas.set(mod.name, mod.config.schema);
|
|
194
|
-
//
|
|
195
|
-
|
|
196
|
-
|
|
194
|
+
// If no user-provided config, try module's load() function
|
|
195
|
+
let userConfig = config.moduleConfigs[mod.name];
|
|
196
|
+
if (userConfig === undefined && mod.config.load) {
|
|
197
|
+
userConfig = await mod.config.load();
|
|
198
|
+
}
|
|
199
|
+
// Merge defaults with loaded/user-provided config, then validate
|
|
200
|
+
const merged = { ...(mod.config.defaults ?? {}), ...(userConfig ?? {}) };
|
|
197
201
|
const result = mod.config.schema.safeParse(merged);
|
|
198
202
|
if (!result.success) {
|
|
199
203
|
throw new Error(`[Wecon] Invalid config for module "${mod.name}": ${result.error.message}`);
|
|
200
204
|
}
|
|
201
205
|
config.moduleConfigs[mod.name] = result.data;
|
|
202
|
-
// Config validated - shown in startup banner
|
|
203
206
|
}
|
|
204
207
|
}
|
|
205
208
|
// Create context with module schemas for runtime validation
|
|
@@ -209,7 +212,7 @@ export async function createWecon(options) {
|
|
|
209
212
|
logger,
|
|
210
213
|
moduleSchemas,
|
|
211
214
|
});
|
|
212
|
-
// Inject WeconContext into every request (enables req.ctx in handlers/
|
|
215
|
+
// Inject WeconContext into every request (enables req.ctx in handlers/middlewares)
|
|
213
216
|
app.use((req, _res, next) => {
|
|
214
217
|
req.ctx = ctx;
|
|
215
218
|
next();
|
|
@@ -220,17 +223,9 @@ export async function createWecon(options) {
|
|
|
220
223
|
if (shouldConnectDb) {
|
|
221
224
|
try {
|
|
222
225
|
const uri = options.database?.uri ?? buildUriFromConfig(config.database);
|
|
223
|
-
const fieldShieldConfig = options.plugins?.fieldShield;
|
|
224
226
|
db = await createDatabaseConnection({
|
|
225
227
|
uri,
|
|
226
228
|
plugins: options.database?.plugins,
|
|
227
|
-
fieldShield: fieldShieldConfig
|
|
228
|
-
? {
|
|
229
|
-
enabled: true,
|
|
230
|
-
strict: typeof fieldShieldConfig === "object" ? fieldShieldConfig.strict : true,
|
|
231
|
-
debug: typeof fieldShieldConfig === "object" ? fieldShieldConfig.debug : false,
|
|
232
|
-
}
|
|
233
|
-
: undefined,
|
|
234
229
|
debug: config.database.debug,
|
|
235
230
|
});
|
|
236
231
|
await db.connect();
|
|
@@ -242,17 +237,15 @@ export async function createWecon(options) {
|
|
|
242
237
|
throw err;
|
|
243
238
|
}
|
|
244
239
|
}
|
|
245
|
-
// Apply default middleware
|
|
246
|
-
app.use(express.json());
|
|
247
|
-
app.use(express.urlencoded({ extended: true }));
|
|
248
240
|
// Initialize i18n if enabled
|
|
249
241
|
const i18nEnabled = options.i18n?.enabled ?? config.features?.i18n?.enabled;
|
|
250
242
|
if (i18nEnabled) {
|
|
251
243
|
try {
|
|
252
244
|
const modulesDir = options.i18n?.modulesDir ?? "./src/modules";
|
|
253
245
|
const defaultLocale = config.features?.i18n?.defaultLocale ?? "en";
|
|
254
|
-
const i18nMiddleware = await
|
|
246
|
+
const i18nMiddleware = await initializeI18n(modulesDir, defaultLocale);
|
|
255
247
|
app.use(i18nMiddleware);
|
|
248
|
+
app.use(i18nNamespaceMiddleware);
|
|
256
249
|
}
|
|
257
250
|
catch (err) {
|
|
258
251
|
logger.warn("Failed to initialize i18n", {
|
|
@@ -260,8 +253,8 @@ export async function createWecon(options) {
|
|
|
260
253
|
});
|
|
261
254
|
}
|
|
262
255
|
}
|
|
263
|
-
// Apply custom
|
|
264
|
-
for (const mw of
|
|
256
|
+
// Apply custom middlewares
|
|
257
|
+
for (const mw of middlewares) {
|
|
265
258
|
app.use(mw);
|
|
266
259
|
}
|
|
267
260
|
// Health check endpoint
|
|
@@ -384,6 +377,7 @@ export async function createWecon(options) {
|
|
|
384
377
|
devtoolsEnabled,
|
|
385
378
|
devtoolsPrefix,
|
|
386
379
|
routeCount,
|
|
380
|
+
apiPrefix: options.apiPrefix,
|
|
387
381
|
});
|
|
388
382
|
resolve(server);
|
|
389
383
|
});
|
|
@@ -408,6 +402,7 @@ export async function createWecon(options) {
|
|
|
408
402
|
devtoolsEnabled,
|
|
409
403
|
devtoolsPrefix,
|
|
410
404
|
routeCount,
|
|
405
|
+
apiPrefix: options.apiPrefix,
|
|
411
406
|
});
|
|
412
407
|
resolve(server);
|
|
413
408
|
});
|