exisjs 0.7.6 → 0.7.8

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 (211) hide show
  1. package/dist/cli/commands/build.d.ts.map +1 -1
  2. package/dist/cli/commands/build.js +12 -0
  3. package/dist/cli/commands/build.js.map +1 -1
  4. package/dist/cli/commands/clean.d.ts +5 -0
  5. package/dist/cli/commands/clean.d.ts.map +1 -0
  6. package/dist/cli/commands/clean.js +30 -0
  7. package/dist/cli/commands/clean.js.map +1 -0
  8. package/dist/cli/commands/dev.d.ts.map +1 -1
  9. package/dist/cli/commands/dev.js +15 -1
  10. package/dist/cli/commands/dev.js.map +1 -1
  11. package/dist/cli/commands/generate.d.ts +6 -1
  12. package/dist/cli/commands/generate.d.ts.map +1 -1
  13. package/dist/cli/commands/generate.js +57 -2
  14. package/dist/cli/commands/generate.js.map +1 -1
  15. package/dist/cli/index.js +16 -2
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/manifest.d.ts +1 -0
  18. package/dist/cli/manifest.d.ts.map +1 -1
  19. package/dist/cli/manifest.js +161 -23
  20. package/dist/cli/manifest.js.map +1 -1
  21. package/dist/config/config.d.ts.map +1 -1
  22. package/dist/config/config.js +9 -0
  23. package/dist/config/config.js.map +1 -1
  24. package/dist/config/types.d.ts +4 -0
  25. package/dist/config/types.d.ts.map +1 -1
  26. package/dist/cron/expressions.d.ts +45 -0
  27. package/dist/cron/expressions.d.ts.map +1 -0
  28. package/dist/cron/expressions.js +87 -0
  29. package/dist/cron/expressions.js.map +1 -0
  30. package/dist/cron/index.d.ts +6 -0
  31. package/dist/cron/index.d.ts.map +1 -0
  32. package/dist/cron/index.js +22 -0
  33. package/dist/cron/index.js.map +1 -0
  34. package/dist/cron/job.d.ts +50 -0
  35. package/dist/cron/job.d.ts.map +1 -0
  36. package/dist/cron/job.js +247 -0
  37. package/dist/cron/job.js.map +1 -0
  38. package/dist/cron/manager.d.ts +105 -0
  39. package/dist/cron/manager.d.ts.map +1 -0
  40. package/dist/cron/manager.js +245 -0
  41. package/dist/cron/manager.js.map +1 -0
  42. package/dist/cron/parser.d.ts +22 -0
  43. package/dist/cron/parser.d.ts.map +1 -0
  44. package/dist/cron/parser.js +269 -0
  45. package/dist/cron/parser.js.map +1 -0
  46. package/dist/cron/types.d.ts +76 -0
  47. package/dist/cron/types.d.ts.map +1 -0
  48. package/dist/cron/types.js +3 -0
  49. package/dist/cron/types.js.map +1 -0
  50. package/dist/decorators/constants.d.ts +2 -0
  51. package/dist/decorators/constants.d.ts.map +1 -1
  52. package/dist/decorators/constants.js +3 -1
  53. package/dist/decorators/constants.js.map +1 -1
  54. package/dist/decorators/core.d.ts +29 -11
  55. package/dist/decorators/core.d.ts.map +1 -1
  56. package/dist/decorators/core.js +49 -11
  57. package/dist/decorators/core.js.map +1 -1
  58. package/dist/decorators/cron.d.ts +57 -0
  59. package/dist/decorators/cron.d.ts.map +1 -0
  60. package/dist/decorators/cron.js +143 -0
  61. package/dist/decorators/cron.js.map +1 -0
  62. package/dist/decorators/index.d.ts +2 -0
  63. package/dist/decorators/index.d.ts.map +1 -1
  64. package/dist/decorators/index.js +2 -0
  65. package/dist/decorators/index.js.map +1 -1
  66. package/dist/decorators/params.d.ts +97 -2
  67. package/dist/decorators/params.d.ts.map +1 -1
  68. package/dist/decorators/params.js +94 -2
  69. package/dist/decorators/params.js.map +1 -1
  70. package/dist/decorators/routing.d.ts +81 -16
  71. package/dist/decorators/routing.d.ts.map +1 -1
  72. package/dist/decorators/routing.js +81 -16
  73. package/dist/decorators/routing.js.map +1 -1
  74. package/dist/docs/content/cron.mdx +196 -0
  75. package/dist/docs/content/errors.mdx +58 -9
  76. package/dist/docs/content/structure.mdx +1 -1
  77. package/dist/docs/content/swagger.mdx +289 -0
  78. package/dist/docs/reference/cron.mdx +300 -0
  79. package/dist/docs/reference/decorators.mdx +8 -0
  80. package/dist/docs/reference/error.mdx +44 -0
  81. package/dist/docs/reference/swagger.mdx +226 -0
  82. package/dist/docs/reference/validator.mdx +1 -1
  83. package/dist/router/boundary.d.ts +24 -2
  84. package/dist/router/boundary.d.ts.map +1 -1
  85. package/dist/router/boundary.js +24 -2
  86. package/dist/router/boundary.js.map +1 -1
  87. package/dist/router/controller-registrar.d.ts.map +1 -1
  88. package/dist/router/controller-registrar.js +52 -3
  89. package/dist/router/controller-registrar.js.map +1 -1
  90. package/dist/router/route-builder.d.ts +196 -33
  91. package/dist/router/route-builder.d.ts.map +1 -1
  92. package/dist/router/route-builder.js +171 -11
  93. package/dist/router/route-builder.js.map +1 -1
  94. package/dist/router/route-scanner.d.ts +6 -0
  95. package/dist/router/route-scanner.d.ts.map +1 -1
  96. package/dist/router/route-scanner.js +69 -812
  97. package/dist/router/route-scanner.js.map +1 -1
  98. package/dist/router/router.d.ts.map +1 -1
  99. package/dist/router/router.js +27 -0
  100. package/dist/router/router.js.map +1 -1
  101. package/dist/router/scanner/boundary-loader.d.ts +18 -0
  102. package/dist/router/scanner/boundary-loader.d.ts.map +1 -0
  103. package/dist/router/scanner/boundary-loader.js +539 -0
  104. package/dist/router/scanner/boundary-loader.js.map +1 -0
  105. package/dist/router/scanner/cron-mounter.d.ts +15 -0
  106. package/dist/router/scanner/cron-mounter.d.ts.map +1 -0
  107. package/dist/router/scanner/cron-mounter.js +216 -0
  108. package/dist/router/scanner/cron-mounter.js.map +1 -0
  109. package/dist/router/scanner/error-mounter.d.ts +14 -0
  110. package/dist/router/scanner/error-mounter.d.ts.map +1 -0
  111. package/dist/router/scanner/error-mounter.js +200 -0
  112. package/dist/router/scanner/error-mounter.js.map +1 -0
  113. package/dist/router/scanner/fs-scanner.d.ts +25 -0
  114. package/dist/router/scanner/fs-scanner.d.ts.map +1 -0
  115. package/dist/router/scanner/fs-scanner.js +115 -0
  116. package/dist/router/scanner/fs-scanner.js.map +1 -0
  117. package/dist/router/scanner/functional-compiler.d.ts +9 -0
  118. package/dist/router/scanner/functional-compiler.d.ts.map +1 -0
  119. package/dist/router/scanner/functional-compiler.js +233 -0
  120. package/dist/router/scanner/functional-compiler.js.map +1 -0
  121. package/dist/router/scanner/index.d.ts +9 -0
  122. package/dist/router/scanner/index.d.ts.map +1 -0
  123. package/dist/router/scanner/index.js +19 -0
  124. package/dist/router/scanner/index.js.map +1 -0
  125. package/dist/router/types.d.ts +15 -0
  126. package/dist/router/types.d.ts.map +1 -1
  127. package/dist/server/app.d.ts +2 -0
  128. package/dist/server/app.d.ts.map +1 -1
  129. package/dist/server/app.js +3 -0
  130. package/dist/server/app.js.map +1 -1
  131. package/dist/server/helpers/body-parser.d.ts +18 -0
  132. package/dist/server/helpers/body-parser.d.ts.map +1 -0
  133. package/dist/server/helpers/body-parser.js +246 -0
  134. package/dist/server/helpers/body-parser.js.map +1 -0
  135. package/dist/server/helpers/cookie.d.ts +4 -0
  136. package/dist/server/helpers/cookie.d.ts.map +1 -0
  137. package/dist/server/helpers/cookie.js +61 -0
  138. package/dist/server/helpers/cookie.js.map +1 -0
  139. package/dist/server/helpers/etag.d.ts +3 -0
  140. package/dist/server/helpers/etag.d.ts.map +1 -0
  141. package/dist/server/helpers/etag.js +25 -0
  142. package/dist/server/helpers/etag.js.map +1 -0
  143. package/dist/server/helpers/index.d.ts +6 -0
  144. package/dist/server/helpers/index.d.ts.map +1 -0
  145. package/dist/server/helpers/index.js +21 -0
  146. package/dist/server/helpers/index.js.map +1 -0
  147. package/dist/server/helpers/ip.d.ts +9 -0
  148. package/dist/server/helpers/ip.d.ts.map +1 -0
  149. package/dist/server/helpers/ip.js +62 -0
  150. package/dist/server/helpers/ip.js.map +1 -0
  151. package/dist/server/helpers/stream.d.ts +4 -0
  152. package/dist/server/helpers/stream.d.ts.map +1 -0
  153. package/dist/server/helpers/stream.js +193 -0
  154. package/dist/server/helpers/stream.js.map +1 -0
  155. package/dist/server/request.d.ts +1 -139
  156. package/dist/server/request.d.ts.map +1 -1
  157. package/dist/server/request.js +19 -433
  158. package/dist/server/request.js.map +1 -1
  159. package/dist/server/response.d.ts +105 -158
  160. package/dist/server/response.d.ts.map +1 -1
  161. package/dist/server/response.js +121 -423
  162. package/dist/server/response.js.map +1 -1
  163. package/dist/swagger/decorators.d.ts +81 -0
  164. package/dist/swagger/decorators.d.ts.map +1 -0
  165. package/dist/swagger/decorators.js +172 -0
  166. package/dist/swagger/decorators.js.map +1 -0
  167. package/dist/swagger/generator.d.ts +19 -0
  168. package/dist/swagger/generator.d.ts.map +1 -0
  169. package/dist/swagger/generator.js +344 -0
  170. package/dist/swagger/generator.js.map +1 -0
  171. package/dist/swagger/index.d.ts +31 -0
  172. package/dist/swagger/index.d.ts.map +1 -0
  173. package/dist/swagger/index.js +53 -0
  174. package/dist/swagger/index.js.map +1 -0
  175. package/dist/swagger/mounter.d.ts +7 -0
  176. package/dist/swagger/mounter.d.ts.map +1 -0
  177. package/dist/swagger/mounter.js +56 -0
  178. package/dist/swagger/mounter.js.map +1 -0
  179. package/dist/swagger/types.d.ts +190 -0
  180. package/dist/swagger/types.d.ts.map +1 -0
  181. package/dist/swagger/types.js +3 -0
  182. package/dist/swagger/types.js.map +1 -0
  183. package/dist/swagger/ui.d.ts +6 -0
  184. package/dist/swagger/ui.d.ts.map +1 -0
  185. package/dist/swagger/ui.js +118 -0
  186. package/dist/swagger/ui.js.map +1 -0
  187. package/dist/validator/builder.d.ts +223 -0
  188. package/dist/validator/builder.d.ts.map +1 -0
  189. package/dist/validator/builder.js +517 -0
  190. package/dist/validator/builder.js.map +1 -0
  191. package/dist/validator/engine.d.ts +19 -0
  192. package/dist/validator/engine.d.ts.map +1 -0
  193. package/dist/validator/engine.js +568 -0
  194. package/dist/validator/engine.js.map +1 -0
  195. package/dist/validator/error.d.ts +12 -0
  196. package/dist/validator/error.d.ts.map +1 -0
  197. package/dist/validator/error.js +63 -0
  198. package/dist/validator/error.js.map +1 -0
  199. package/dist/validator/pagination.d.ts +40 -0
  200. package/dist/validator/pagination.d.ts.map +1 -0
  201. package/dist/validator/pagination.js +60 -0
  202. package/dist/validator/pagination.js.map +1 -0
  203. package/dist/validator/tex.d.ts +6 -158
  204. package/dist/validator/tex.d.ts.map +1 -1
  205. package/dist/validator/tex.js +14 -971
  206. package/dist/validator/tex.js.map +1 -1
  207. package/dist/validator/types.d.ts +83 -0
  208. package/dist/validator/types.d.ts.map +1 -0
  209. package/dist/validator/types.js +3 -0
  210. package/dist/validator/types.js.map +1 -0
  211. package/package.json +9 -1
@@ -0,0 +1,539 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadActiveBoundaries = loadActiveBoundaries;
37
+ const path = __importStar(require("node:path"));
38
+ const fs = __importStar(require("node:fs/promises"));
39
+ const node_url_1 = require("node:url");
40
+ /**
41
+ * Traverses directory ancestry from `apiDir` down to `filePath` directory,
42
+ * loading and compiling all intermediate `boundary.ts` files into a unified pipeline.
43
+ */
44
+ async function loadActiveBoundaries(filePath, apiDir, app) {
45
+ const dirname = path.dirname(filePath);
46
+ const effectiveApiDir = apiDir || dirname;
47
+ const normDirname = path.resolve(dirname).replace(/\\/g, '/').toLowerCase();
48
+ const normApiDir = path
49
+ .resolve(effectiveApiDir)
50
+ .replace(/\\/g, '/')
51
+ .toLowerCase();
52
+ const segments = normDirname.startsWith(normApiDir)
53
+ ? normDirname.slice(normApiDir.length).split('/').filter(Boolean)
54
+ : [];
55
+ const allMiddlewares = [];
56
+ const allFilters = [];
57
+ const allGuards = [];
58
+ const allInterceptors = [];
59
+ let allMetadata = {};
60
+ let allCors = undefined;
61
+ let allHeaders = {};
62
+ const activeBoundaries = [];
63
+ let hasBoundaries = false;
64
+ const dirsToCheck = [effectiveApiDir];
65
+ let tempDir = effectiveApiDir;
66
+ for (const segment of segments) {
67
+ tempDir = path.join(tempDir, segment);
68
+ dirsToCheck.push(tempDir);
69
+ }
70
+ for (const dir of dirsToCheck) {
71
+ try {
72
+ // Detect deprecated gateway.ts / gateway.js
73
+ const gatewayPathTs = path.join(dir, 'gateway.ts');
74
+ const gatewayPathJs = path.join(dir, 'gateway.js');
75
+ if ((await fs.stat(gatewayPathTs).catch(() => null)) ||
76
+ (await fs.stat(gatewayPathJs).catch(() => null))) {
77
+ app.log.warn(`Found deprecated 'gateway' file in '${dir}'. Gateways have been renamed to 'boundary.ts' in ExisJS v0.7+. Please rename it to boundary.ts.`);
78
+ }
79
+ const boundaryPathTs = path.join(dir, 'boundary.ts');
80
+ const boundaryPathJs = path.join(dir, 'boundary.js');
81
+ let targetBoundary = '';
82
+ if (await fs.stat(boundaryPathTs).catch(() => null)) {
83
+ targetBoundary = boundaryPathTs;
84
+ }
85
+ else if (await fs.stat(boundaryPathJs).catch(() => null)) {
86
+ targetBoundary = boundaryPathJs;
87
+ }
88
+ else {
89
+ // Check for named boundaries like user.boundary.ts
90
+ const dirFiles = await fs.readdir(dir).catch(() => []);
91
+ const namedBoundary = dirFiles.find((f) => /\.boundary\.[jt]s$/.test(f));
92
+ if (namedBoundary) {
93
+ targetBoundary = path.join(dir, namedBoundary);
94
+ }
95
+ }
96
+ if (targetBoundary) {
97
+ activeBoundaries.push(targetBoundary);
98
+ hasBoundaries = true;
99
+ const boundaryUrl = process.env.VITEST || process.env.NODE_ENV === 'test'
100
+ ? (0, node_url_1.pathToFileURL)(targetBoundary).href
101
+ : (0, node_url_1.pathToFileURL)(targetBoundary).href + '?t=' + Date.now();
102
+ let boundaryMod;
103
+ try {
104
+ if (process.env.VITEST || process.env.NODE_ENV === 'test') {
105
+ boundaryMod = await Promise.resolve(`${boundaryUrl}`).then(s => __importStar(require(s)));
106
+ }
107
+ else {
108
+ const dynamicImportBoundary = new Function('specifier', 'return import(specifier)');
109
+ boundaryMod = await dynamicImportBoundary(boundaryUrl);
110
+ }
111
+ }
112
+ catch {
113
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
114
+ boundaryMod = require(targetBoundary);
115
+ }
116
+ // Extract config: check boundaryMod.config, boundaryMod.default, or boundaryMod itself
117
+ let boundaryConfig = null;
118
+ const BOUNDARY_CONFIG = Symbol.for('exisjs:boundary_config');
119
+ const boundaryDefault = boundaryMod && boundaryMod.default && boundaryMod.default.default
120
+ ? boundaryMod.default.default
121
+ : boundaryMod && boundaryMod.default
122
+ ? boundaryMod.default
123
+ : null;
124
+ if (boundaryMod &&
125
+ boundaryMod.config &&
126
+ typeof boundaryMod.config === 'object') {
127
+ boundaryConfig = boundaryMod.config;
128
+ }
129
+ else if (boundaryDefault &&
130
+ typeof boundaryDefault === 'function' &&
131
+ boundaryDefault.prototype &&
132
+ boundaryDefault.prototype[BOUNDARY_CONFIG]) {
133
+ // Class-based boundary with @Boundary
134
+ boundaryConfig = boundaryDefault.prototype[BOUNDARY_CONFIG];
135
+ }
136
+ else if (boundaryDefault && typeof boundaryDefault === 'object') {
137
+ boundaryConfig = boundaryDefault;
138
+ }
139
+ else if (boundaryMod && typeof boundaryMod === 'object') {
140
+ boundaryConfig = boundaryMod;
141
+ }
142
+ if (boundaryConfig &&
143
+ boundaryConfig.providers &&
144
+ Array.isArray(boundaryConfig.providers)) {
145
+ for (const p of boundaryConfig.providers) {
146
+ if (Array.isArray(p)) {
147
+ app.container.provide(p[0], p[1]);
148
+ }
149
+ else {
150
+ app.container.provide(p, p);
151
+ }
152
+ }
153
+ }
154
+ const isExcluded = (reqPath, reqMethod) => {
155
+ if (!boundaryConfig || !boundaryConfig.exclude)
156
+ return false;
157
+ for (const rule of boundaryConfig.exclude) {
158
+ if (typeof rule === 'string') {
159
+ if (rule.endsWith('/*')) {
160
+ if (reqPath.startsWith(rule.slice(0, -2)))
161
+ return true;
162
+ }
163
+ else if (reqPath === rule)
164
+ return true;
165
+ }
166
+ else {
167
+ const pathMatch = rule.path.endsWith('/*')
168
+ ? reqPath.startsWith(rule.path.slice(0, -2))
169
+ : reqPath === rule.path;
170
+ if (pathMatch) {
171
+ const methods = rule.methods || (rule.method ? [rule.method] : undefined);
172
+ if (!methods || methods.includes(reqMethod))
173
+ return true;
174
+ }
175
+ }
176
+ }
177
+ return false;
178
+ };
179
+ // 1. Auto-detect named middleware functions: (req, res, next)
180
+ if (boundaryMod && typeof boundaryMod === 'object') {
181
+ for (const [exportKey, exportVal] of Object.entries(boundaryMod)) {
182
+ if (exportKey !== 'default' &&
183
+ exportKey !== 'config' &&
184
+ exportKey !== 'beforeHandle' &&
185
+ exportKey !== 'afterHandle' &&
186
+ typeof exportVal === 'function' &&
187
+ exportVal.length >= 3 // (req, res, next)
188
+ ) {
189
+ const namedMiddleware = (req, res, next) => isExcluded(req.path, req.method)
190
+ ? next()
191
+ : exportVal(req, res, next);
192
+ allMiddlewares.push(namedMiddleware);
193
+ }
194
+ }
195
+ if (typeof boundaryMod.beforeHandle === 'function' &&
196
+ !boundaryConfig?.beforeHandle) {
197
+ if (!boundaryConfig)
198
+ boundaryConfig = {};
199
+ boundaryConfig.beforeHandle = boundaryMod.beforeHandle;
200
+ }
201
+ if (typeof boundaryMod.afterHandle === 'function' &&
202
+ !boundaryConfig?.afterHandle) {
203
+ if (!boundaryConfig)
204
+ boundaryConfig = {};
205
+ boundaryConfig.afterHandle = boundaryMod.afterHandle;
206
+ }
207
+ }
208
+ // 2. Auto-detect pipeline wrapper function: export default async function(ctx, next)
209
+ // or class method named `handle(ctx, next)`
210
+ let wrapperFn = null;
211
+ if (boundaryDefault &&
212
+ typeof boundaryDefault === 'function' &&
213
+ boundaryDefault.length === 2 &&
214
+ !boundaryDefault.prototype?.[BOUNDARY_CONFIG]) {
215
+ wrapperFn = boundaryDefault;
216
+ }
217
+ else if (boundaryDefault &&
218
+ typeof boundaryDefault === 'function' &&
219
+ boundaryDefault.prototype &&
220
+ boundaryDefault.prototype[BOUNDARY_CONFIG]) {
221
+ const proto = boundaryDefault.prototype;
222
+ if (typeof proto.handle === 'function') {
223
+ const boundaryInstance = new boundaryDefault();
224
+ wrapperFn = proto.handle.bind(boundaryInstance);
225
+ }
226
+ // Also inspect method middlewares on class boundary
227
+ for (const prop of Object.getOwnPropertyNames(proto)) {
228
+ if (prop !== 'constructor' &&
229
+ prop !== 'handle' &&
230
+ prop !== 'beforeHandle' &&
231
+ prop !== 'afterHandle') {
232
+ const methodVal = proto[prop];
233
+ if (typeof methodVal === 'function' && methodVal.length >= 3) {
234
+ const boundaryInstance = new boundaryDefault();
235
+ const namedMiddleware = (req, res, next) => isExcluded(req.path, req.method)
236
+ ? next()
237
+ : methodVal.call(boundaryInstance, req, res, next);
238
+ allMiddlewares.push(namedMiddleware);
239
+ }
240
+ }
241
+ }
242
+ if (typeof proto.beforeHandle === 'function' &&
243
+ !boundaryConfig?.beforeHandle) {
244
+ const boundaryInstance = new boundaryDefault();
245
+ if (!boundaryConfig)
246
+ boundaryConfig = {};
247
+ boundaryConfig.beforeHandle =
248
+ proto.beforeHandle.bind(boundaryInstance);
249
+ }
250
+ if (typeof proto.afterHandle === 'function' &&
251
+ !boundaryConfig?.afterHandle) {
252
+ const boundaryInstance = new boundaryDefault();
253
+ if (!boundaryConfig)
254
+ boundaryConfig = {};
255
+ boundaryConfig.afterHandle =
256
+ proto.afterHandle.bind(boundaryInstance);
257
+ }
258
+ }
259
+ if (wrapperFn) {
260
+ const capturedWrapper = wrapperFn;
261
+ const wrapperMiddleware = (req, res, next) => {
262
+ if (isExcluded(req.path, req.method))
263
+ return next();
264
+ let nextCalled = false;
265
+ let nextResolve;
266
+ let _nextReject;
267
+ const nextPromise = new Promise((resolve, reject) => {
268
+ nextResolve = resolve;
269
+ _nextReject = reject;
270
+ });
271
+ // Intercept response methods to catch handler return values
272
+ const originalJson = res.json.bind(res);
273
+ const originalSend = res.send.bind(res);
274
+ let handledByRoute = false;
275
+ res.json = function (body) {
276
+ if (!handledByRoute) {
277
+ handledByRoute = true;
278
+ nextResolve(body);
279
+ }
280
+ else {
281
+ return originalJson(body);
282
+ }
283
+ return this;
284
+ };
285
+ res.send = function (body) {
286
+ if (!handledByRoute) {
287
+ handledByRoute = true;
288
+ nextResolve(body);
289
+ }
290
+ else {
291
+ return originalSend(body);
292
+ }
293
+ return this;
294
+ };
295
+ const ctx = {
296
+ req,
297
+ res,
298
+ app,
299
+ resolve: (token) => app.resolve(token, req._diCache),
300
+ };
301
+ capturedWrapper(ctx, async () => {
302
+ if (!nextCalled) {
303
+ nextCalled = true;
304
+ next();
305
+ }
306
+ return nextPromise;
307
+ })
308
+ .then((wrapperResult) => {
309
+ if (wrapperResult !== undefined && !res.headersSent) {
310
+ if (typeof wrapperResult === 'object' &&
311
+ wrapperResult !== null) {
312
+ originalJson(wrapperResult);
313
+ }
314
+ else {
315
+ originalSend(String(wrapperResult));
316
+ }
317
+ }
318
+ })
319
+ .catch((wrapperErr) => {
320
+ next(wrapperErr);
321
+ });
322
+ };
323
+ allMiddlewares.push(wrapperMiddleware);
324
+ }
325
+ if (boundaryConfig) {
326
+ if (boundaryConfig.blockProbes ||
327
+ boundaryConfig.blockSuspiciousProbes) {
328
+ const probeOpts = typeof boundaryConfig.blockProbes === 'object'
329
+ ? boundaryConfig.blockProbes
330
+ : typeof boundaryConfig.blockSuspiciousProbes === 'object'
331
+ ? boundaryConfig.blockSuspiciousProbes
332
+ : {};
333
+ const { blockSuspiciousProbes } = await Promise.resolve().then(() => __importStar(require('../../middleware/security')));
334
+ allMiddlewares.push(blockSuspiciousProbes(probeOpts));
335
+ }
336
+ const bMiddleware = boundaryConfig.middleware || boundaryConfig.middlewares;
337
+ if (bMiddleware) {
338
+ const mList = Array.isArray(bMiddleware)
339
+ ? bMiddleware
340
+ : [bMiddleware];
341
+ const wrapped = mList.map((m) => (req, res, next) => isExcluded(req.path, req.method) ? next() : m(req, res, next));
342
+ allMiddlewares.push(...wrapped);
343
+ }
344
+ if (boundaryConfig.filters) {
345
+ const wrapped = boundaryConfig.filters.map((f) => (err, req, res, next) => isExcluded(req.path, req.method)
346
+ ? next(err)
347
+ : f.prototype && f.prototype.catch
348
+ ? new f().catch(err, req, res, next)
349
+ : f(err, req, res, next));
350
+ allFilters.push(...wrapped);
351
+ }
352
+ if (boundaryConfig.guards) {
353
+ const wrapped = boundaryConfig.guards.map((g) => {
354
+ return async (req) => {
355
+ if (isExcluded(req.path, req.method))
356
+ return true;
357
+ return typeof g === 'function'
358
+ ? g.prototype?.canActivate
359
+ ? new g().canActivate(req)
360
+ : g(req)
361
+ : g.canActivate(req);
362
+ };
363
+ });
364
+ allGuards.push(...wrapped);
365
+ }
366
+ if (boundaryConfig.interceptors) {
367
+ const wrapped = boundaryConfig.interceptors.map((i) => {
368
+ return async (req, res) => {
369
+ if (isExcluded(req.path, req.method))
370
+ return;
371
+ return typeof i === 'function'
372
+ ? i.prototype?.intercept
373
+ ? new i().intercept(req, res)
374
+ : i(req, res)
375
+ : i.intercept(req, res);
376
+ };
377
+ });
378
+ allInterceptors.push(...wrapped);
379
+ }
380
+ if (boundaryConfig.beforeHandle || boundaryConfig.afterHandle) {
381
+ const beforeHooks = (Array.isArray(boundaryConfig.beforeHandle)
382
+ ? boundaryConfig.beforeHandle
383
+ : boundaryConfig.beforeHandle
384
+ ? [boundaryConfig.beforeHandle]
385
+ : []);
386
+ const afterHooks = (Array.isArray(boundaryConfig.afterHandle)
387
+ ? boundaryConfig.afterHandle
388
+ : boundaryConfig.afterHandle
389
+ ? [boundaryConfig.afterHandle]
390
+ : []);
391
+ const hookMiddleware = async (req, res, next) => {
392
+ if (isExcluded(req.path, req.method))
393
+ return next();
394
+ for (const hook of beforeHooks) {
395
+ try {
396
+ const result = await hook(req, res);
397
+ if (result === false) {
398
+ if (!res.headersSent) {
399
+ res.status(403).json({
400
+ success: false,
401
+ error: {
402
+ code: 'FORBIDDEN',
403
+ message: 'Forbidden by boundary guard',
404
+ },
405
+ });
406
+ }
407
+ return;
408
+ }
409
+ if (res.headersSent)
410
+ return;
411
+ }
412
+ catch (err) {
413
+ return next(err);
414
+ }
415
+ }
416
+ if (afterHooks.length === 0) {
417
+ return next();
418
+ }
419
+ const originalJson = res.json.bind(res);
420
+ const originalSend = res.send.bind(res);
421
+ let handled = false;
422
+ res.json = function (body) {
423
+ if (handled)
424
+ return originalJson(body);
425
+ handled = true;
426
+ const runAfterHooks = async () => {
427
+ let currentData = body;
428
+ for (const afterHook of afterHooks) {
429
+ const transformed = await afterHook(req, res, currentData);
430
+ if (transformed !== undefined) {
431
+ currentData = transformed;
432
+ }
433
+ if (res.headersSent)
434
+ return;
435
+ }
436
+ originalJson(currentData);
437
+ };
438
+ runAfterHooks().catch((err) => {
439
+ next(err);
440
+ });
441
+ return this;
442
+ };
443
+ res.send = function (body) {
444
+ if (handled)
445
+ return originalSend(body);
446
+ handled = true;
447
+ const runAfterHooks = async () => {
448
+ let currentData = body;
449
+ for (const afterHook of afterHooks) {
450
+ const transformed = await afterHook(req, res, currentData);
451
+ if (transformed !== undefined) {
452
+ currentData = transformed;
453
+ }
454
+ if (res.headersSent)
455
+ return;
456
+ }
457
+ originalSend(currentData);
458
+ };
459
+ runAfterHooks().catch((err) => {
460
+ next(err);
461
+ });
462
+ return this;
463
+ };
464
+ next();
465
+ };
466
+ allMiddlewares.push(hookMiddleware);
467
+ }
468
+ if (boundaryConfig.timeout !== undefined) {
469
+ const baseTimeout = boundaryConfig.timeout;
470
+ const timeoutMiddleware = (req, res, next) => {
471
+ if (isExcluded(req.path, req.method))
472
+ return next();
473
+ const ms = typeof baseTimeout === 'function'
474
+ ? baseTimeout(req)
475
+ : baseTimeout;
476
+ if (ms) {
477
+ req.timeoutTimer = setTimeout(() => {
478
+ if (!res.headersSent) {
479
+ res.status(408).json({
480
+ success: false,
481
+ error: {
482
+ code: 'REQUEST_TIMEOUT',
483
+ message: 'Request Timeout',
484
+ },
485
+ });
486
+ }
487
+ }, ms);
488
+ res.raw.on('finish', () => clearTimeout(req.timeoutTimer));
489
+ }
490
+ next();
491
+ };
492
+ allMiddlewares.push(timeoutMiddleware);
493
+ }
494
+ if (boundaryConfig.metadata) {
495
+ allMetadata = { ...allMetadata, ...boundaryConfig.metadata };
496
+ }
497
+ if (boundaryConfig.cors !== undefined)
498
+ allCors = boundaryConfig.cors;
499
+ if (boundaryConfig.headers) {
500
+ allHeaders = { ...allHeaders, ...boundaryConfig.headers };
501
+ }
502
+ if (boundaryConfig.plugins) {
503
+ for (const plugin of boundaryConfig.plugins) {
504
+ await app.pluginManager.register(plugin);
505
+ }
506
+ }
507
+ if (boundaryConfig.imports) {
508
+ for (const mod of boundaryConfig.imports) {
509
+ const name = 'plugin' in mod ? mod.plugin.name : mod.name;
510
+ if (!app.pluginManager.hasPlugin(name)) {
511
+ await app.pluginManager.register(mod);
512
+ }
513
+ }
514
+ }
515
+ if (boundaryConfig.providers) {
516
+ for (const [token, providerConfig] of boundaryConfig.providers) {
517
+ app.container.provide(token, providerConfig);
518
+ }
519
+ }
520
+ }
521
+ }
522
+ }
523
+ catch {
524
+ /* ignore */
525
+ }
526
+ }
527
+ return {
528
+ activeBoundaries,
529
+ boundaryMiddlewares: allMiddlewares,
530
+ boundaryFilters: allFilters,
531
+ boundaryGuards: allGuards,
532
+ boundaryInterceptors: allInterceptors,
533
+ boundaryMetadata: allMetadata,
534
+ boundaryCors: allCors,
535
+ boundaryHeaders: allHeaders,
536
+ hasBoundaries,
537
+ };
538
+ }
539
+ //# sourceMappingURL=boundary-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-loader.js","sourceRoot":"","sources":["../../../src/router/scanner/boundary-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { App } from '../../server/app';
2
+ export interface CronFileEntry {
3
+ filePath: string;
4
+ module: any;
5
+ }
6
+ /**
7
+ * Discovers and mounts all cron jobs from dedicated directories (e.g. `src/cron/`)
8
+ * and single-file/colocated cron definitions (e.g. `src/http/cron.ts`).
9
+ */
10
+ export declare function mountCronJobs(root: string, app: App, allApiDirs?: string[]): Promise<void>;
11
+ /**
12
+ * Mounts cron jobs from pre-loaded module entries (used by both filesystem discovery and manifest boot).
13
+ */
14
+ export declare function mountCronJobsFromEntries(entries: CronFileEntry[], app: App): void;
15
+ //# sourceMappingURL=cron-mounter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-mounter.d.ts","sourceRoot":"","sources":["../../../src/router/scanner/cron-mounter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAG3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,GAAG,CAAA;CACZ;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,GAAG,EACR,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC,CA8Ff;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,EAAE,EACxB,GAAG,EAAE,GAAG,GACP,IAAI,CAqGN"}