@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.
Files changed (58) hide show
  1. package/dist/config.d.ts +0 -1
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +0 -2
  4. package/dist/config.js.map +1 -1
  5. package/dist/database/index.d.ts +0 -11
  6. package/dist/database/index.d.ts.map +1 -1
  7. package/dist/database/index.js +0 -17
  8. package/dist/database/index.js.map +1 -1
  9. package/dist/devtools/controllers/i18n.controller.d.ts +1 -1
  10. package/dist/devtools/controllers/i18n.controller.d.ts.map +1 -1
  11. package/dist/devtools/controllers/i18n.controller.js +19 -10
  12. package/dist/devtools/controllers/i18n.controller.js.map +1 -1
  13. package/dist/devtools/index.d.ts.map +1 -1
  14. package/dist/devtools/index.js +2 -0
  15. package/dist/devtools/index.js.map +1 -1
  16. package/dist/i18n/index.d.ts +13 -30
  17. package/dist/i18n/index.d.ts.map +1 -1
  18. package/dist/i18n/index.js +15 -91
  19. package/dist/i18n/index.js.map +1 -1
  20. package/dist/i18n/loader.d.ts +58 -0
  21. package/dist/i18n/loader.d.ts.map +1 -0
  22. package/dist/i18n/loader.js +97 -0
  23. package/dist/i18n/loader.js.map +1 -0
  24. package/dist/i18n/middleware.d.ts +39 -0
  25. package/dist/i18n/middleware.d.ts.map +1 -0
  26. package/dist/i18n/middleware.js +75 -0
  27. package/dist/i18n/middleware.js.map +1 -0
  28. package/dist/i18n/utils.d.ts +31 -0
  29. package/dist/i18n/utils.d.ts.map +1 -0
  30. package/dist/i18n/utils.js +46 -0
  31. package/dist/i18n/utils.js.map +1 -0
  32. package/dist/index.d.ts +4 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +5 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/module.d.ts +10 -0
  37. package/dist/module.d.ts.map +1 -1
  38. package/dist/module.js +25 -0
  39. package/dist/module.js.map +1 -1
  40. package/dist/server/banner.d.ts +1 -0
  41. package/dist/server/banner.d.ts.map +1 -1
  42. package/dist/server/banner.js +17 -8
  43. package/dist/server/banner.js.map +1 -1
  44. package/dist/server/index.d.ts +7 -15
  45. package/dist/server/index.d.ts.map +1 -1
  46. package/dist/server/index.js +16 -21
  47. package/dist/server/index.js.map +1 -1
  48. package/dist/types/express.d.ts +30 -0
  49. package/dist/types/express.d.ts.map +1 -0
  50. package/dist/types/express.js +2 -0
  51. package/dist/types/express.js.map +1 -0
  52. package/dist/types/i18next.d.ts +7 -0
  53. package/dist/types/i18next.d.ts.map +1 -0
  54. package/dist/types/i18next.js +2 -0
  55. package/dist/types/i18next.js.map +1 -0
  56. package/dist/types.d.ts +5 -5
  57. package/dist/types.d.ts.map +1 -1
  58. 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 { loadI18nResources, createI18nMiddleware, initI18n } from "./i18n/index.js";
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
@@ -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,GAC1B,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,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACpF,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,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"}
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 { loadI18nResources, createI18nMiddleware, initI18n } from "./i18n/index.js";
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,GAC1B,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,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGpF,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"}
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
@@ -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
@@ -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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"}
@@ -14,6 +14,7 @@ interface BannerOptions {
14
14
  devtoolsEnabled: boolean;
15
15
  devtoolsPrefix: string;
16
16
  routeCount?: number;
17
+ apiPrefix?: string;
17
18
  }
18
19
  export declare function printBanner(options: BannerOptions): Promise<void>;
19
20
  export {};
@@ -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;CACrB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAyGvE"}
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"}
@@ -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 dbStatus = dbConnected ? c.green("● connected") : c.dim("○ disabled");
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?.fieldShield?.enabled)
62
- features.push("FieldShield");
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
- const dtUrl = `${url}${devtoolsPrefix}/ui`;
69
- lines.push(` ${c.dim("├─")} ${c.dim("DevTools")} ${c.cyan(dtUrl)}`);
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":"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"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/server/banner.ts"],"names":[],"mappings":"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"}
@@ -71,9 +71,13 @@ export interface CreateWeconOptions {
71
71
  */
72
72
  wecon?: Wecon;
73
73
  /**
74
- * Custom middleware to apply before routes
74
+ * API prefix shown in the startup banner (e.g. "/api/v1")
75
75
  */
76
- middleware?: RequestHandler[];
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 middleware setup)
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,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT;;WAEG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAElB;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAC;QAEb;;WAEG;QACH,OAAO,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;YACrD,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC,CAAC;KACJ,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,EAAE;QACR;;WAEG;QACH,WAAW,CAAC,EAAE,OAAO,GAAG;YAAE,MAAM,CAAC,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KAC/D,CAAC;IAEF;;OAEG;IACH,IAAI,CAAC,EAAE;QACL;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,CAAC;QAElB;;WAEG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF;;OAEG;IACH,MAAM,CAAC,EAAE;QACP;;;WAGG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB;;;WAGG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QAErB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IAEF;;OAEG;IACH,UAAU,CAAC,EAAE;QACX;;;WAGG;QACH,WAAW,CAAC,EAAE,OAAO,CAAC;QAEtB;;;WAGG;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB;;;WAGG;QACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAChC,CAAC;IAEF;;OAEG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B;;OAEG;IACH,KAAK,CAAC,EAAE;QACN;;WAEG;QACH,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAErD;;WAEG;QACH,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAEzD;;WAEG;QACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;KACjF,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,GAAG,EAAE,WAAW,CAAC;IAEjB;;OAEG;IACH,GAAG,EAAE,YAAY,CAAC;IAElB;;OAEG;IACH,EAAE,CAAC,EAAE,kBAAkB,CAAC;IAExB;;OAEG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9D;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAyID;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAoUhF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -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 { initI18n } from "../i18n/index.js";
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, middleware = [], hooks = {} } = options;
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
- // Merge defaults with user-provided config, then validate
195
- const userConfig = config.moduleConfigs[mod.name] ?? {};
196
- const merged = { ...(mod.config.defaults ?? {}), ...userConfig };
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/middleware)
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 initI18n(modulesDir, defaultLocale);
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 middleware
264
- for (const mw of middleware) {
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
  });