@weconjs/core 0.2.0 → 1.2.0

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 (115) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/config.js +1 -0
  3. package/dist/config.js.map +1 -1
  4. package/dist/context.d.ts +6 -8
  5. package/dist/context.d.ts.map +1 -1
  6. package/dist/context.js +30 -21
  7. package/dist/context.js.map +1 -1
  8. package/dist/database/index.d.ts.map +1 -1
  9. package/dist/database/index.js +1 -2
  10. package/dist/database/index.js.map +1 -1
  11. package/dist/devtools/client/assets/ModuleDetail-Cv1SUhav.js +1 -0
  12. package/dist/devtools/client/assets/TranslationEditor-CwBjcmjN.js +6 -0
  13. package/dist/devtools/client/assets/api-DHFLRYt1.js +11 -0
  14. package/dist/devtools/client/assets/arrow-left-XXd8AsXj.js +6 -0
  15. package/dist/devtools/client/assets/chevron-right-DN23SEYa.js +6 -0
  16. package/dist/devtools/client/assets/index-BFzJyDrn.css +1 -0
  17. package/dist/devtools/client/assets/index-BbARU3f6.js +1 -0
  18. package/dist/devtools/client/assets/index-Cwwdi5uz.js +181 -0
  19. package/dist/devtools/client/assets/index-DH5TZlGZ.js +6 -0
  20. package/dist/devtools/client/assets/index-DbBxhrHS.js +1 -0
  21. package/dist/devtools/client/assets/index-LkCf2mcb.js +1 -0
  22. package/dist/devtools/client/assets/index-jqJ0mfFs.js +6 -0
  23. package/dist/devtools/client/index.html +15 -0
  24. package/dist/devtools/controllers/config.controller.d.ts +28 -0
  25. package/dist/devtools/controllers/config.controller.d.ts.map +1 -0
  26. package/dist/devtools/controllers/config.controller.js +100 -0
  27. package/dist/devtools/controllers/config.controller.js.map +1 -0
  28. package/dist/devtools/controllers/i18n.controller.d.ts +22 -0
  29. package/dist/devtools/controllers/i18n.controller.d.ts.map +1 -0
  30. package/dist/devtools/controllers/i18n.controller.js +93 -0
  31. package/dist/devtools/controllers/i18n.controller.js.map +1 -0
  32. package/dist/devtools/controllers/modules.controller.d.ts +16 -0
  33. package/dist/devtools/controllers/modules.controller.d.ts.map +1 -0
  34. package/dist/devtools/controllers/modules.controller.js +73 -0
  35. package/dist/devtools/controllers/modules.controller.js.map +1 -0
  36. package/dist/devtools/controllers/routes.controller.d.ts +13 -0
  37. package/dist/devtools/controllers/routes.controller.d.ts.map +1 -0
  38. package/dist/devtools/controllers/routes.controller.js +32 -0
  39. package/dist/devtools/controllers/routes.controller.js.map +1 -0
  40. package/dist/devtools/index.d.ts +29 -0
  41. package/dist/devtools/index.d.ts.map +1 -0
  42. package/dist/devtools/index.js +94 -0
  43. package/dist/devtools/index.js.map +1 -0
  44. package/dist/devtools/middleware.d.ts +11 -0
  45. package/dist/devtools/middleware.d.ts.map +1 -0
  46. package/dist/devtools/middleware.js +30 -0
  47. package/dist/devtools/middleware.js.map +1 -0
  48. package/dist/devtools/types.d.ts +59 -0
  49. package/dist/devtools/types.d.ts.map +1 -0
  50. package/dist/devtools/types.js +5 -0
  51. package/dist/devtools/types.js.map +1 -0
  52. package/dist/errors/ConfigError.d.ts +6 -0
  53. package/dist/errors/ConfigError.d.ts.map +1 -0
  54. package/dist/errors/ConfigError.js +16 -0
  55. package/dist/errors/ConfigError.js.map +1 -0
  56. package/dist/errors/RequestError.d.ts +6 -0
  57. package/dist/errors/RequestError.d.ts.map +1 -0
  58. package/dist/errors/RequestError.js +16 -0
  59. package/dist/errors/RequestError.js.map +1 -0
  60. package/dist/errors/index.d.ts +9 -0
  61. package/dist/errors/index.d.ts.map +1 -0
  62. package/dist/errors/index.js +5 -0
  63. package/dist/errors/index.js.map +1 -0
  64. package/dist/index.d.ts +9 -2
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +9 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/module/index.d.ts +6 -0
  69. package/dist/module/index.d.ts.map +1 -0
  70. package/dist/module/index.js +5 -0
  71. package/dist/module/index.js.map +1 -0
  72. package/dist/module/module-loader.d.ts +60 -0
  73. package/dist/module/module-loader.d.ts.map +1 -0
  74. package/dist/module/module-loader.js +119 -0
  75. package/dist/module/module-loader.js.map +1 -0
  76. package/dist/routing/ErrorCatcher.d.ts +18 -0
  77. package/dist/routing/ErrorCatcher.d.ts.map +1 -0
  78. package/dist/routing/ErrorCatcher.js +50 -0
  79. package/dist/routing/ErrorCatcher.js.map +1 -0
  80. package/dist/routing/RaiMatcher.d.ts +27 -0
  81. package/dist/routing/RaiMatcher.d.ts.map +1 -0
  82. package/dist/routing/RaiMatcher.js +127 -0
  83. package/dist/routing/RaiMatcher.js.map +1 -0
  84. package/dist/routing/Route.d.ts +28 -0
  85. package/dist/routing/Route.d.ts.map +1 -0
  86. package/dist/routing/Route.js +125 -0
  87. package/dist/routing/Route.js.map +1 -0
  88. package/dist/routing/Routes.d.ts +31 -0
  89. package/dist/routing/Routes.d.ts.map +1 -0
  90. package/dist/routing/Routes.js +151 -0
  91. package/dist/routing/Routes.js.map +1 -0
  92. package/dist/routing/RoutesParam.d.ts +29 -0
  93. package/dist/routing/RoutesParam.d.ts.map +1 -0
  94. package/dist/routing/RoutesParam.js +113 -0
  95. package/dist/routing/RoutesParam.js.map +1 -0
  96. package/dist/routing/Wecon.d.ts +66 -0
  97. package/dist/routing/Wecon.d.ts.map +1 -0
  98. package/dist/routing/Wecon.js +248 -0
  99. package/dist/routing/Wecon.js.map +1 -0
  100. package/dist/routing/index.d.ts +9 -0
  101. package/dist/routing/index.d.ts.map +1 -0
  102. package/dist/routing/index.js +7 -0
  103. package/dist/routing/index.js.map +1 -0
  104. package/dist/server/banner.d.ts +20 -0
  105. package/dist/server/banner.d.ts.map +1 -0
  106. package/dist/server/banner.js +77 -0
  107. package/dist/server/banner.js.map +1 -0
  108. package/dist/server/index.d.ts +29 -5
  109. package/dist/server/index.d.ts.map +1 -1
  110. package/dist/server/index.js +76 -12
  111. package/dist/server/index.js.map +1 -1
  112. package/dist/types.d.ts +75 -3
  113. package/dist/types.d.ts.map +1 -1
  114. package/dist/types.js +1 -1
  115. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/devtools/middleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,IACtC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAsB/D"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @wecon/core - DevTools Auth Middleware
3
+ *
4
+ * Optional bearer token authentication for devtools endpoints.
5
+ */
6
+ /**
7
+ * Create bearer token auth middleware for devtools
8
+ */
9
+ export function createDevToolsAuth(token) {
10
+ return (req, res, next) => {
11
+ const authHeader = req.headers.authorization;
12
+ if (!authHeader || !authHeader.startsWith("Bearer ")) {
13
+ res.status(401).json({
14
+ success: false,
15
+ errors: [{ code: "UNAUTHORIZED", message: "Bearer token required" }],
16
+ });
17
+ return;
18
+ }
19
+ const provided = authHeader.slice(7);
20
+ if (provided !== token) {
21
+ res.status(403).json({
22
+ success: false,
23
+ errors: [{ code: "FORBIDDEN", message: "Invalid token" }],
24
+ });
25
+ return;
26
+ }
27
+ next();
28
+ };
29
+ }
30
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/devtools/middleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAE7C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC;aACrE,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;aAC1D,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @wecon/core - DevTools Types
3
+ */
4
+ import type { WeconContext, WeconModule } from "../types.js";
5
+ /**
6
+ * DevTools configuration options
7
+ */
8
+ export interface DevToolsOptions {
9
+ /** Enable devtools (default: true in non-production) */
10
+ enabled?: boolean;
11
+ /** Route prefix (default: "/dev/devtools") */
12
+ prefix?: string;
13
+ /** Optional bearer token for authentication */
14
+ auth?: {
15
+ token?: string;
16
+ };
17
+ /** Path to modules directory for i18n operations */
18
+ modulesDir?: string;
19
+ }
20
+ /**
21
+ * Module summary returned by the list endpoint
22
+ */
23
+ export interface ModuleSummary {
24
+ name: string;
25
+ namespace: string;
26
+ description: string;
27
+ hasConfig: boolean;
28
+ hasRoutes: boolean;
29
+ imports: string[];
30
+ exports: string[];
31
+ }
32
+ /**
33
+ * Module detail returned by the get endpoint
34
+ */
35
+ export interface ModuleDetail extends ModuleSummary {
36
+ config: {
37
+ schema: string | null;
38
+ current: unknown;
39
+ };
40
+ }
41
+ /**
42
+ * Route summary for the routes list endpoint
43
+ */
44
+ export interface RouteSummary {
45
+ rai: string;
46
+ method: string;
47
+ path: string;
48
+ roles: string[];
49
+ module?: string;
50
+ name?: string;
51
+ }
52
+ /**
53
+ * Internal context passed to devtools controllers
54
+ */
55
+ export interface DevToolsContext {
56
+ ctx: WeconContext;
57
+ modules: WeconModule[];
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/devtools/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,MAAM,EAAE;QACN,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @wecon/core - DevTools Types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/devtools/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,6 @@
1
+ declare class ConfigError extends Error {
2
+ meta: Record<string, any>;
3
+ constructor(message: string, meta?: Record<string, any>);
4
+ }
5
+ export default ConfigError;
6
+ //# sourceMappingURL=ConfigError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigError.d.ts","sourceRoot":"","sources":["../../src/errors/ConfigError.ts"],"names":[],"mappings":"AAEA,cAAM,WAAY,SAAQ,KAAK;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;CAY5D;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,16 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ class ConfigError extends Error {
3
+ meta;
4
+ constructor(message, meta = {}) {
5
+ super(`ConfigError: ${message}`);
6
+ this.message = message;
7
+ this.meta = meta;
8
+ Object.setPrototypeOf(this, ConfigError.prototype);
9
+ this.name = "ConfigError";
10
+ if ("captureStackTrace" in Error) {
11
+ Error.captureStackTrace(this, ConfigError);
12
+ }
13
+ }
14
+ }
15
+ export default ConfigError;
16
+ //# sourceMappingURL=ConfigError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigError.js","sourceRoot":"","sources":["../../src/errors/ConfigError.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,MAAM,WAAY,SAAQ,KAAK;IACtB,IAAI,CAAsB;IAEjC,YAAY,OAAe,EAAE,OAA4B,EAAE;QACzD,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;QAE1B,IAAI,mBAAmB,IAAI,KAAK,EAAE,CAAC;YACjC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare class RequestError extends Error {
2
+ meta: Record<string, any>;
3
+ constructor(message: string, meta?: Record<string, any>);
4
+ }
5
+ export default RequestError;
6
+ //# sourceMappingURL=RequestError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestError.d.ts","sourceRoot":"","sources":["../../src/errors/RequestError.ts"],"names":[],"mappings":"AAEA,cAAM,YAAa,SAAQ,KAAK;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAErB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;CAY5D;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ class RequestError extends Error {
3
+ meta;
4
+ constructor(message, meta = {}) {
5
+ super(`RequestError: ${message}`);
6
+ this.message = message;
7
+ this.meta = meta;
8
+ Object.setPrototypeOf(this, RequestError.prototype);
9
+ this.name = "RequestError";
10
+ if ("captureStackTrace" in Error) {
11
+ Error.captureStackTrace(this, RequestError);
12
+ }
13
+ }
14
+ }
15
+ export default RequestError;
16
+ //# sourceMappingURL=RequestError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestError.js","sourceRoot":"","sources":["../../src/errors/RequestError.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,MAAM,YAAa,SAAQ,KAAK;IACvB,IAAI,CAAsB;IAEjC,YAAY,OAAe,EAAE,OAA4B,EAAE;QACzD,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAE3B,IAAI,mBAAmB,IAAI,KAAK,EAAE,CAAC;YACjC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CACF;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import ConfigError from "./ConfigError.js";
2
+ import RequestError from "./RequestError.js";
3
+ export { ConfigError, RequestError };
4
+ declare const _default: {
5
+ ConfigError: typeof ConfigError;
6
+ RequestError: typeof RequestError;
7
+ };
8
+ export default _default;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;;;;;AACrC,wBAA6C"}
@@ -0,0 +1,5 @@
1
+ import ConfigError from "./ConfigError.js";
2
+ import RequestError from "./RequestError.js";
3
+ export { ConfigError, RequestError };
4
+ export default { ConfigError, RequestError };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAC3C,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AACrC,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -2,20 +2,27 @@
2
2
  * @weconjs/core
3
3
  *
4
4
  * Core package for the Wecon framework.
5
- * Provides configuration, module system, and runtime utilities.
5
+ * Provides configuration, module system, routing, and runtime utilities.
6
6
  */
7
7
  export { defineConfig, resolveConfig, loadConfig } from "./config.js";
8
8
  export { defineModule, loadModule, discoverSocketHandlers, discoverSocketMiddleware, resolveModuleDependencies, } from "./module.js";
9
+ export { readModulePackageJson, checkModuleDeps, detectPackageManager, installModuleDeps, resolveAllModuleDeps, } from "./module/index.js";
10
+ export type { ModulePackageJson, DepsCheckResult } from "./module/index.js";
9
11
  export { createContext, createLogger } from "./context.js";
10
12
  export { createWinstonLogger, createConsoleLogger, } from "./logger/index.js";
11
13
  export type { LoggerOptions, WinstonBasedLogger } from "./logger/index.js";
12
14
  export { createWecon } from "./server/index.js";
13
15
  export type { CreateWeconOptions, WeconApp, ApiError, ApiResponse, RespondOptions, } from "./server/index.js";
16
+ export { Wecon, Route, Routes, RoutesParam, RaiMatcher, ErrorCatcher, } from "./routing/index.js";
17
+ export type { WeconDevConfig, RaiRoutesList } from "./routing/index.js";
18
+ export { ConfigError, RequestError } from "./errors/index.js";
14
19
  export { loadI18nResources, createI18nMiddleware, initI18n } from "./i18n/index.js";
15
20
  export type { I18nResources } from "./i18n/index.js";
16
21
  export { createDatabaseConnection, buildMongoUri, buildUriFromConfig, } from "./database/index.js";
17
22
  export type { DatabaseOptions, DatabaseConnection, MongoUriParts, } from "./database/index.js";
18
23
  export { createSocketServer, discoverSocketHandlers as discoverSocketHandlersFromModules, discoverSocketMiddleware as discoverSocketMiddlewareFromModules, initializeSocket, setupSocketIO, } from "./socket/index.js";
19
24
  export type { SocketServer, SocketInstance, SocketHandler as SocketHandlerFn, SocketMiddleware as SocketMiddlewareFn, DiscoveredSocketHandler, SocketOptions, } from "./socket/index.js";
20
- export type { WeconConfig, ResolvedConfig, AppConfig, DatabaseConfig, LoggingConfig, HttpsConfig, SocketConfig, FeaturesConfig, ModeConfig, WeconHooks, ModuleDefinition, ModuleConfigDefinition, WeconModule, SocketHandler, SocketMiddleware, WeconContext, WeconLogger, WeconServices, Authenticable, AuthConfig, WeconRequest, WeconResponse, RouteHandler, WeconMiddleware, } from "./types.js";
25
+ export { createDevToolsRouter } from "./devtools/index.js";
26
+ export type { DevToolsOptions } from "./devtools/index.js";
27
+ export type { RouteConfig, RoutesConfig, RAI, DefaultRole, ErrorInfoType, ErrorTraceType, PossibleErrosType, WeconConfig, ResolvedConfig, AppConfig, DatabaseConfig, LoggingConfig, HttpsConfig, SocketConfig, FeaturesConfig, ModeConfig, WeconHooks, ModuleDefinition, ModuleConfigDefinition, WeconModule, SocketHandler, SocketMiddleware, WeconContext, WeconLogger, WeconServices, Authenticable, AuthConfig, WeconRequest, WeconResponse, RouteHandler, WeconMiddleware, } from "./types.js";
21
28
  //# 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,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,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,YAAY,EAEV,WAAW,EACX,cAAc,EACd,SAAS,EACT,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,cAAc,EACd,UAAU,EACV,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,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,EACV,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
@@ -2,22 +2,30 @@
2
2
  * @weconjs/core
3
3
  *
4
4
  * Core package for the Wecon framework.
5
- * Provides configuration, module system, and runtime utilities.
5
+ * Provides configuration, module system, routing, and runtime utilities.
6
6
  */
7
7
  // Configuration
8
8
  export { defineConfig, resolveConfig, loadConfig } from "./config.js";
9
9
  // Module System
10
10
  export { defineModule, loadModule, discoverSocketHandlers, discoverSocketMiddleware, resolveModuleDependencies, } from "./module.js";
11
+ // Module Loader (per-module package.json support)
12
+ export { readModulePackageJson, checkModuleDeps, detectPackageManager, installModuleDeps, resolveAllModuleDeps, } from "./module/index.js";
11
13
  // Context
12
14
  export { createContext, createLogger } from "./context.js";
13
15
  // Logger
14
16
  export { createWinstonLogger, createConsoleLogger, } from "./logger/index.js";
15
17
  // Server
16
18
  export { createWecon } from "./server/index.js";
19
+ // Routing
20
+ export { Wecon, Route, Routes, RoutesParam, RaiMatcher, ErrorCatcher, } from "./routing/index.js";
21
+ // Errors
22
+ export { ConfigError, RequestError } from "./errors/index.js";
17
23
  // i18n
18
24
  export { loadI18nResources, createI18nMiddleware, initI18n } from "./i18n/index.js";
19
25
  // Database
20
26
  export { createDatabaseConnection, buildMongoUri, buildUriFromConfig, } from "./database/index.js";
21
27
  // Socket.IO
22
28
  export { createSocketServer, discoverSocketHandlers as discoverSocketHandlersFromModules, discoverSocketMiddleware as discoverSocketMiddlewareFromModules, initializeSocket, setupSocketIO, } from "./socket/index.js";
29
+ // DevTools
30
+ export { createDevToolsRouter } from "./devtools/index.js";
23
31
  //# 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,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,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"}
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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @wecon/core - Module utilities
3
+ */
4
+ export { readModulePackageJson, checkModuleDeps, detectPackageManager, installModuleDeps, resolveAllModuleDeps, } from "./module-loader.js";
5
+ export type { ModulePackageJson, DepsCheckResult, } from "./module-loader.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/module/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @wecon/core - Module utilities
3
+ */
4
+ export { readModulePackageJson, checkModuleDeps, detectPackageManager, installModuleDeps, resolveAllModuleDeps, } from "./module-loader.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/module/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @wecon/core - Module Loader
3
+ *
4
+ * Reads per-module package.json files and manages module-specific dependencies.
5
+ * Supports auto-installation of missing deps in development mode.
6
+ */
7
+ import type { WeconLogger } from "../types.js";
8
+ /**
9
+ * Parsed module package.json
10
+ */
11
+ export interface ModulePackageJson {
12
+ name?: string;
13
+ private?: boolean;
14
+ dependencies?: Record<string, string>;
15
+ devDependencies?: Record<string, string>;
16
+ }
17
+ /**
18
+ * Result of checking module dependencies
19
+ */
20
+ export interface DepsCheckResult {
21
+ moduleName: string;
22
+ modulePath: string;
23
+ /** Dependencies declared in module package.json */
24
+ declared: Record<string, string>;
25
+ /** Dependencies missing from root node_modules */
26
+ missing: string[];
27
+ /** Dependencies already installed */
28
+ installed: string[];
29
+ }
30
+ /**
31
+ * Read a module's package.json if it exists
32
+ */
33
+ export declare function readModulePackageJson(modulePath: string): ModulePackageJson | null;
34
+ /**
35
+ * Check which module dependencies are missing from root node_modules
36
+ */
37
+ export declare function checkModuleDeps(modulePath: string, rootDir: string, moduleName: string): DepsCheckResult;
38
+ /**
39
+ * Detect which package manager is being used in the project
40
+ */
41
+ export declare function detectPackageManager(rootDir: string): "npm" | "yarn" | "pnpm";
42
+ /**
43
+ * Install missing module dependencies into the root project
44
+ */
45
+ export declare function installModuleDeps(missing: string[], declared: Record<string, string>, rootDir: string, logger: WeconLogger): boolean;
46
+ /**
47
+ * Check and optionally install all module dependencies.
48
+ * Called during createWecon bootstrap.
49
+ *
50
+ * @param modules - Array of { name, path } for each module
51
+ * @param rootDir - Root project directory (where node_modules lives)
52
+ * @param logger - Logger instance
53
+ * @param autoInstall - Whether to auto-install missing deps
54
+ * @returns Array of check results
55
+ */
56
+ export declare function resolveAllModuleDeps(modules: Array<{
57
+ name: string;
58
+ path: string;
59
+ }>, rootDir: string, logger: WeconLogger, autoInstall?: boolean): Promise<DepsCheckResult[]>;
60
+ //# sourceMappingURL=module-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../../src/module/module-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,kDAAkD;IAClD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qCAAqC;IACrC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAalF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,eAAe,CAmBjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAI7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,GAClB,OAAO,CA+BT;AAED;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC9C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,WAAW,EACnB,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,eAAe,EAAE,CAAC,CAwB5B"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * @wecon/core - Module Loader
3
+ *
4
+ * Reads per-module package.json files and manages module-specific dependencies.
5
+ * Supports auto-installation of missing deps in development mode.
6
+ */
7
+ import { existsSync, readFileSync } from "fs";
8
+ import { join, resolve } from "path";
9
+ import { execSync } from "child_process";
10
+ /**
11
+ * Read a module's package.json if it exists
12
+ */
13
+ export function readModulePackageJson(modulePath) {
14
+ const pkgPath = join(modulePath, "package.json");
15
+ if (!existsSync(pkgPath)) {
16
+ return null;
17
+ }
18
+ try {
19
+ const raw = readFileSync(pkgPath, "utf-8");
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ /**
27
+ * Check which module dependencies are missing from root node_modules
28
+ */
29
+ export function checkModuleDeps(modulePath, rootDir, moduleName) {
30
+ const pkg = readModulePackageJson(modulePath);
31
+ const declared = pkg?.dependencies ?? {};
32
+ const missing = [];
33
+ const installed = [];
34
+ const nodeModulesDir = join(rootDir, "node_modules");
35
+ for (const dep of Object.keys(declared)) {
36
+ // Check if the package exists in root node_modules
37
+ const depPath = join(nodeModulesDir, dep);
38
+ if (existsSync(depPath)) {
39
+ installed.push(dep);
40
+ }
41
+ else {
42
+ missing.push(dep);
43
+ }
44
+ }
45
+ return { moduleName, modulePath, declared, missing, installed };
46
+ }
47
+ /**
48
+ * Detect which package manager is being used in the project
49
+ */
50
+ export function detectPackageManager(rootDir) {
51
+ if (existsSync(join(rootDir, "pnpm-lock.yaml")))
52
+ return "pnpm";
53
+ if (existsSync(join(rootDir, "yarn.lock")))
54
+ return "yarn";
55
+ return "npm";
56
+ }
57
+ /**
58
+ * Install missing module dependencies into the root project
59
+ */
60
+ export function installModuleDeps(missing, declared, rootDir, logger) {
61
+ if (missing.length === 0)
62
+ return true;
63
+ const pm = detectPackageManager(rootDir);
64
+ // Build install args with version specifiers
65
+ const packages = missing.map((name) => {
66
+ const version = declared[name];
67
+ return version ? `${name}@${version}` : name;
68
+ });
69
+ const installCmd = pm === "yarn"
70
+ ? `yarn add ${packages.join(" ")}`
71
+ : pm === "pnpm"
72
+ ? `pnpm add ${packages.join(" ")}`
73
+ : `npm install ${packages.join(" ")}`;
74
+ logger.info(`Installing module dependencies: ${missing.join(", ")}`);
75
+ try {
76
+ execSync(installCmd, { cwd: rootDir, stdio: "pipe" });
77
+ logger.info(`Dependencies installed successfully`);
78
+ return true;
79
+ }
80
+ catch (err) {
81
+ logger.error("Failed to install module dependencies", {
82
+ error: err.message,
83
+ packages: missing,
84
+ });
85
+ return false;
86
+ }
87
+ }
88
+ /**
89
+ * Check and optionally install all module dependencies.
90
+ * Called during createWecon bootstrap.
91
+ *
92
+ * @param modules - Array of { name, path } for each module
93
+ * @param rootDir - Root project directory (where node_modules lives)
94
+ * @param logger - Logger instance
95
+ * @param autoInstall - Whether to auto-install missing deps
96
+ * @returns Array of check results
97
+ */
98
+ export async function resolveAllModuleDeps(modules, rootDir, logger, autoInstall = false) {
99
+ const results = [];
100
+ const allMissing = [];
101
+ const allDeclared = {};
102
+ for (const mod of modules) {
103
+ const absolutePath = resolve(rootDir, mod.path);
104
+ const result = checkModuleDeps(absolutePath, rootDir, mod.name);
105
+ results.push(result);
106
+ if (result.missing.length > 0) {
107
+ logger.warn(`Module "${mod.name}" has missing dependencies: ${result.missing.join(", ")}`);
108
+ allMissing.push(...result.missing);
109
+ Object.assign(allDeclared, result.declared);
110
+ }
111
+ }
112
+ // Deduplicate and install all at once
113
+ if (autoInstall && allMissing.length > 0) {
114
+ const unique = [...new Set(allMissing)];
115
+ installModuleDeps(unique, allDeclared, rootDir, logger);
116
+ }
117
+ return results;
118
+ }
119
+ //# sourceMappingURL=module-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../../src/module/module-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ErrorInfoType, ErrorTraceType } from "../types.js";
2
+ /**
3
+ * Base class for configuration error tracking.
4
+ * Captures caller info from stack traces for precise error reporting.
5
+ */
6
+ export declare abstract class ErrorCatcher {
7
+ /**
8
+ * Extract caller file, line, column from the stack trace.
9
+ * Skips internal frames to point to the user's code.
10
+ */
11
+ static getCallerInfo(): ErrorTraceType;
12
+ /**
13
+ * Log a formatted config error with location info, then exit.
14
+ */
15
+ static logError(error: ErrorInfoType, tracedStackInfo: ErrorTraceType): void;
16
+ }
17
+ export default ErrorCatcher;
18
+ //# sourceMappingURL=ErrorCatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorCatcher.d.ts","sourceRoot":"","sources":["../../src/routing/ErrorCatcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEjE;;;GAGG;AACH,8BAAsB,YAAY;IAChC;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;IA8BtC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,GAAG,IAAI;CAqB7E;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,50 @@
1
+ import chalk from "chalk";
2
+ /**
3
+ * Base class for configuration error tracking.
4
+ * Captures caller info from stack traces for precise error reporting.
5
+ */
6
+ export class ErrorCatcher {
7
+ /**
8
+ * Extract caller file, line, column from the stack trace.
9
+ * Skips internal frames to point to the user's code.
10
+ */
11
+ static getCallerInfo() {
12
+ const err = new Error();
13
+ const stack = err.stack || "";
14
+ const stackLines = stack.split("\n").slice(1);
15
+ // Skip getCallerInfo and constructor frames
16
+ const callerLine = stackLines[2] || stackLines[1] || "";
17
+ // V8 format: " at ClassName.method (file:///path/file.ts:15:23)"
18
+ let match = callerLine.match(/\((.+?):(\d+):(\d+)\)$/);
19
+ if (!match) {
20
+ // Format without parentheses: " at file:///path/file.ts:15:23"
21
+ match = callerLine.match(/at\s+(.+?):(\d+):(\d+)$/);
22
+ }
23
+ if (match) {
24
+ const file = match[1].replace("file://", "");
25
+ const line = parseInt(match[2], 10);
26
+ const column = parseInt(match[3], 10);
27
+ const functionMatch = callerLine.match(/at\s+(?:async\s+)?(\S+?)\s+\(/);
28
+ const functionName = functionMatch ? functionMatch[1] : null;
29
+ return { file, line, column, function: functionName };
30
+ }
31
+ return { file: "unknown", line: 0, column: 0, function: null };
32
+ }
33
+ /**
34
+ * Log a formatted config error with location info, then exit.
35
+ */
36
+ static logError(error, tracedStackInfo) {
37
+ console.error(chalk.red.bold("\n-=>") +
38
+ chalk.white.bold(" Whoops! We caught an error for you.") +
39
+ chalk.red.bold(" <=-\n"));
40
+ console.error(chalk.red.bold("✖ Error:"), chalk.white(error.title));
41
+ console.error(chalk.gray("\n Details:"), chalk.white(error.details));
42
+ console.error(chalk.gray("\n Location:"), chalk.cyan(`${tracedStackInfo.file}:${tracedStackInfo.line}:${tracedStackInfo.column}`));
43
+ console.error(chalk.yellow.bold("\n 💡 How to fix:"));
44
+ console.error(chalk.yellow(` ${error.fix.replace(/\n/g, "\n ")}`));
45
+ console.error("");
46
+ process.exit(1);
47
+ }
48
+ }
49
+ export default ErrorCatcher;
50
+ //# sourceMappingURL=ErrorCatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorCatcher.js","sourceRoot":"","sources":["../../src/routing/ErrorCatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type Route from "./Route.js";
2
+ export type RaiRoutesList = Array<Pick<Route, "path" | "method" | "rai">>;
3
+ /**
4
+ * High-performance RAI lookup engine.
5
+ * Pre-compiles path matchers, uses exact + runtime caches for O(1) lookups.
6
+ */
7
+ declare class RaiMatcher {
8
+ private cache;
9
+ private routesByMethod;
10
+ private exactRoutes;
11
+ constructor(raisList: RaiRoutesList);
12
+ /** Pre-compile all route matchers and organize by HTTP method */
13
+ private initialize;
14
+ /** Score route specificity: static=10, dynamic=1, wildcard=0.5 */
15
+ private getRouteSpecificity;
16
+ /** Normalize trailing slashes */
17
+ private normalizeRoute;
18
+ /** Find RAI for the given request path and method */
19
+ findRai(path: string, method: string): string;
20
+ clearCache(): void;
21
+ getCacheStats(): {
22
+ size: number;
23
+ methods: string[];
24
+ };
25
+ }
26
+ export default RaiMatcher;
27
+ //# sourceMappingURL=RaiMatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RaiMatcher.d.ts","sourceRoot":"","sources":["../../src/routing/RaiMatcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC;AAS1E;;;GAGG;AACH,cAAM,UAAU;IACd,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,WAAW,CAAsB;gBAE7B,QAAQ,EAAE,aAAa;IAOnC,iEAAiE;IACjE,OAAO,CAAC,UAAU;IA2ClB,kEAAkE;IAClE,OAAO,CAAC,mBAAmB;IAmB3B,iCAAiC;IACjC,OAAO,CAAC,cAAc;IAQtB,qDAAqD;IAC9C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAsD7C,UAAU,IAAI,IAAI;IAIlB,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;CAM5D;AAED,eAAe,UAAU,CAAC"}