@cinnabun/core 0.0.1 → 0.0.2

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 (260) hide show
  1. package/dist/__tests__/autowired.test.d.ts +1 -0
  2. package/dist/__tests__/autowired.test.js +109 -0
  3. package/dist/__tests__/autowired.test.js.map +1 -0
  4. package/dist/__tests__/cinnabun-application.test.d.ts +1 -0
  5. package/dist/__tests__/cinnabun-application.test.js +96 -0
  6. package/dist/__tests__/cinnabun-application.test.js.map +1 -0
  7. package/dist/__tests__/cinnabun-factory.test.d.ts +1 -0
  8. package/dist/__tests__/cinnabun-factory.test.js +269 -0
  9. package/dist/__tests__/cinnabun-factory.test.js.map +1 -0
  10. package/dist/__tests__/circular-dependency.test.d.ts +1 -0
  11. package/dist/__tests__/circular-dependency.test.js +318 -0
  12. package/dist/__tests__/circular-dependency.test.js.map +1 -0
  13. package/dist/__tests__/compression.test.d.ts +1 -0
  14. package/dist/__tests__/compression.test.js +459 -0
  15. package/dist/__tests__/compression.test.js.map +1 -0
  16. package/dist/__tests__/config.test.d.ts +1 -0
  17. package/dist/__tests__/config.test.js +86 -0
  18. package/dist/__tests__/config.test.js.map +1 -0
  19. package/dist/__tests__/cors.test.d.ts +1 -0
  20. package/dist/__tests__/cors.test.js +575 -0
  21. package/dist/__tests__/cors.test.js.map +1 -0
  22. package/dist/__tests__/env-config.test.d.ts +1 -0
  23. package/dist/__tests__/env-config.test.js +367 -0
  24. package/dist/__tests__/env-config.test.js.map +1 -0
  25. package/dist/__tests__/exception.test.d.ts +1 -0
  26. package/dist/__tests__/exception.test.js +207 -0
  27. package/dist/__tests__/exception.test.js.map +1 -0
  28. package/dist/__tests__/guards-interceptors.test.d.ts +1 -0
  29. package/dist/__tests__/guards-interceptors.test.js +660 -0
  30. package/dist/__tests__/guards-interceptors.test.js.map +1 -0
  31. package/dist/__tests__/health-check.test.d.ts +1 -0
  32. package/dist/__tests__/health-check.test.js +240 -0
  33. package/dist/__tests__/health-check.test.js.map +1 -0
  34. package/dist/__tests__/http.test.d.ts +1 -0
  35. package/dist/__tests__/http.test.js +629 -0
  36. package/dist/__tests__/http.test.js.map +1 -0
  37. package/dist/__tests__/integration/e2e.test.d.ts +1 -0
  38. package/dist/__tests__/integration/e2e.test.js +192 -0
  39. package/dist/__tests__/integration/e2e.test.js.map +1 -0
  40. package/dist/__tests__/integration/performance.bench.d.ts +1 -0
  41. package/dist/__tests__/integration/performance.bench.js +129 -0
  42. package/dist/__tests__/integration/performance.bench.js.map +1 -0
  43. package/dist/__tests__/integration/validation.test.d.ts +1 -0
  44. package/dist/__tests__/integration/validation.test.js +133 -0
  45. package/dist/__tests__/integration/validation.test.js.map +1 -0
  46. package/dist/__tests__/lifecycle-management.test.d.ts +1 -0
  47. package/dist/__tests__/lifecycle-management.test.js +688 -0
  48. package/dist/__tests__/lifecycle-management.test.js.map +1 -0
  49. package/dist/__tests__/lifecycle.test.d.ts +1 -0
  50. package/dist/__tests__/lifecycle.test.js +196 -0
  51. package/dist/__tests__/lifecycle.test.js.map +1 -0
  52. package/dist/__tests__/logger.test.d.ts +1 -0
  53. package/dist/__tests__/logger.test.js +109 -0
  54. package/dist/__tests__/logger.test.js.map +1 -0
  55. package/dist/__tests__/middleware.test.d.ts +1 -0
  56. package/dist/__tests__/middleware.test.js +329 -0
  57. package/dist/__tests__/middleware.test.js.map +1 -0
  58. package/dist/__tests__/module.test.d.ts +1 -0
  59. package/dist/__tests__/module.test.js +280 -0
  60. package/dist/__tests__/module.test.js.map +1 -0
  61. package/dist/__tests__/plugin.test.d.ts +1 -0
  62. package/dist/__tests__/plugin.test.js +283 -0
  63. package/dist/__tests__/plugin.test.js.map +1 -0
  64. package/dist/__tests__/request-logger.test.d.ts +1 -0
  65. package/dist/__tests__/request-logger.test.js +342 -0
  66. package/dist/__tests__/request-logger.test.js.map +1 -0
  67. package/dist/__tests__/request-mapping.test.d.ts +1 -0
  68. package/dist/__tests__/request-mapping.test.js +201 -0
  69. package/dist/__tests__/request-mapping.test.js.map +1 -0
  70. package/dist/__tests__/routes.test.d.ts +1 -0
  71. package/dist/__tests__/routes.test.js +119 -0
  72. package/dist/__tests__/routes.test.js.map +1 -0
  73. package/dist/__tests__/scan-fixtures/controllers/hello.controller.d.ts +4 -0
  74. package/dist/__tests__/scan-fixtures/controllers/hello.controller.js +28 -0
  75. package/dist/__tests__/scan-fixtures/controllers/hello.controller.js.map +1 -0
  76. package/dist/__tests__/scan-fixtures/modules/feature.module.d.ts +6 -0
  77. package/dist/__tests__/scan-fixtures/modules/feature.module.js +28 -0
  78. package/dist/__tests__/scan-fixtures/modules/feature.module.js.map +1 -0
  79. package/dist/__tests__/scan-fixtures/services/greeting.service.d.ts +4 -0
  80. package/dist/__tests__/scan-fixtures/services/greeting.service.js +18 -0
  81. package/dist/__tests__/scan-fixtures/services/greeting.service.js.map +1 -0
  82. package/dist/__tests__/scanner.test.d.ts +1 -0
  83. package/dist/__tests__/scanner.test.js +49 -0
  84. package/dist/__tests__/scanner.test.js.map +1 -0
  85. package/dist/__tests__/validation.test.d.ts +1 -0
  86. package/dist/__tests__/validation.test.js +561 -0
  87. package/dist/__tests__/validation.test.js.map +1 -0
  88. package/dist/__tests__/websocket-auth.test.d.ts +1 -0
  89. package/dist/__tests__/websocket-auth.test.js +431 -0
  90. package/dist/__tests__/websocket-auth.test.js.map +1 -0
  91. package/dist/__tests__/websocket-decorators.test.d.ts +1 -0
  92. package/dist/__tests__/websocket-decorators.test.js +173 -0
  93. package/dist/__tests__/websocket-decorators.test.js.map +1 -0
  94. package/dist/__tests__/websocket-validation.test.d.ts +1 -0
  95. package/dist/__tests__/websocket-validation.test.js +827 -0
  96. package/dist/__tests__/websocket-validation.test.js.map +1 -0
  97. package/dist/__tests__/websocket.test.d.ts +1 -0
  98. package/dist/__tests__/websocket.test.js +415 -0
  99. package/dist/__tests__/websocket.test.js.map +1 -0
  100. package/dist/config/config.module.d.ts +2 -0
  101. package/dist/config/config.module.js +18 -0
  102. package/dist/config/config.module.js.map +1 -0
  103. package/dist/config/config.service.d.ts +15 -0
  104. package/dist/config/config.service.js +58 -0
  105. package/dist/config/config.service.js.map +1 -0
  106. package/dist/config/schemas.d.ts +107 -0
  107. package/dist/config/schemas.js +87 -0
  108. package/dist/config/schemas.js.map +1 -0
  109. package/dist/core/app.d.ts +44 -0
  110. package/dist/core/app.js +178 -0
  111. package/dist/core/app.js.map +1 -0
  112. package/dist/core/cinnabun-factory.d.ts +5 -0
  113. package/dist/core/cinnabun-factory.js +130 -0
  114. package/dist/core/cinnabun-factory.js.map +1 -0
  115. package/dist/core/config-loader.d.ts +2 -0
  116. package/dist/core/config-loader.js +76 -0
  117. package/dist/core/config-loader.js.map +1 -0
  118. package/dist/core/config.d.ts +12 -0
  119. package/dist/core/config.js +27 -0
  120. package/dist/core/config.js.map +1 -0
  121. package/dist/core/container.d.ts +10 -0
  122. package/dist/core/container.js +82 -0
  123. package/dist/core/container.js.map +1 -0
  124. package/dist/core/dependency-validator.d.ts +12 -0
  125. package/dist/core/dependency-validator.js +76 -0
  126. package/dist/core/dependency-validator.js.map +1 -0
  127. package/dist/core/guard.d.ts +3 -0
  128. package/dist/core/guard.js +2 -0
  129. package/dist/core/guard.js.map +1 -0
  130. package/dist/core/interceptor.d.ts +4 -0
  131. package/dist/core/interceptor.js +2 -0
  132. package/dist/core/interceptor.js.map +1 -0
  133. package/dist/core/logger.d.ts +15 -0
  134. package/dist/core/logger.js +71 -0
  135. package/dist/core/logger.js.map +1 -0
  136. package/dist/core/module-resolver.d.ts +6 -0
  137. package/dist/core/module-resolver.js +67 -0
  138. package/dist/core/module-resolver.js.map +1 -0
  139. package/dist/core/plugin.d.ts +12 -0
  140. package/dist/core/plugin.js +2 -0
  141. package/dist/core/plugin.js.map +1 -0
  142. package/dist/core/router.d.ts +38 -0
  143. package/dist/core/router.js +406 -0
  144. package/dist/core/router.js.map +1 -0
  145. package/dist/core/scanner.d.ts +7 -0
  146. package/dist/core/scanner.js +83 -0
  147. package/dist/core/scanner.js.map +1 -0
  148. package/dist/core/shutdown-manager.d.ts +15 -0
  149. package/dist/core/shutdown-manager.js +68 -0
  150. package/dist/core/shutdown-manager.js.map +1 -0
  151. package/dist/core/websocket-handler.d.ts +41 -0
  152. package/dist/core/websocket-handler.js +242 -0
  153. package/dist/core/websocket-handler.js.map +1 -0
  154. package/dist/decorators/autowired.d.ts +3 -0
  155. package/dist/decorators/autowired.js +11 -0
  156. package/dist/decorators/autowired.js.map +1 -0
  157. package/dist/decorators/cinnabun-application.d.ts +14 -0
  158. package/dist/decorators/cinnabun-application.js +17 -0
  159. package/dist/decorators/cinnabun-application.js.map +1 -0
  160. package/dist/decorators/lifecycle.d.ts +2 -0
  161. package/dist/decorators/lifecycle.js +12 -0
  162. package/dist/decorators/lifecycle.js.map +1 -0
  163. package/dist/decorators/middleware.d.ts +2 -0
  164. package/dist/decorators/middleware.js +12 -0
  165. package/dist/decorators/middleware.js.map +1 -0
  166. package/dist/decorators/module.d.ts +10 -0
  167. package/dist/decorators/module.js +13 -0
  168. package/dist/decorators/module.js.map +1 -0
  169. package/dist/decorators/on-shutdown.d.ts +1 -0
  170. package/dist/decorators/on-shutdown.js +10 -0
  171. package/dist/decorators/on-shutdown.js.map +1 -0
  172. package/dist/decorators/params.d.ts +6 -0
  173. package/dist/decorators/params.js +31 -0
  174. package/dist/decorators/params.js.map +1 -0
  175. package/dist/decorators/request-mapping.d.ts +7 -0
  176. package/dist/decorators/request-mapping.js +34 -0
  177. package/dist/decorators/request-mapping.js.map +1 -0
  178. package/dist/decorators/response.d.ts +2 -0
  179. package/dist/decorators/response.js +17 -0
  180. package/dist/decorators/response.js.map +1 -0
  181. package/dist/decorators/rest-controller.d.ts +1 -0
  182. package/dist/decorators/rest-controller.js +19 -0
  183. package/dist/decorators/rest-controller.js.map +1 -0
  184. package/dist/decorators/routes.d.ts +5 -0
  185. package/dist/decorators/routes.js +19 -0
  186. package/dist/decorators/routes.js.map +1 -0
  187. package/dist/decorators/service.d.ts +1 -0
  188. package/dist/decorators/service.js +7 -0
  189. package/dist/decorators/service.js.map +1 -0
  190. package/dist/decorators/use-guard.d.ts +2 -0
  191. package/dist/decorators/use-guard.js +12 -0
  192. package/dist/decorators/use-guard.js.map +1 -0
  193. package/dist/decorators/use-interceptor.d.ts +2 -0
  194. package/dist/decorators/use-interceptor.js +12 -0
  195. package/dist/decorators/use-interceptor.js.map +1 -0
  196. package/dist/decorators/validate.d.ts +12 -0
  197. package/dist/decorators/validate.js +7 -0
  198. package/dist/decorators/validate.js.map +1 -0
  199. package/dist/decorators/websocket.d.ts +9 -0
  200. package/dist/decorators/websocket.js +38 -0
  201. package/dist/decorators/websocket.js.map +1 -0
  202. package/dist/decorators/ws-event.d.ts +28 -0
  203. package/dist/decorators/ws-event.js +37 -0
  204. package/dist/decorators/ws-event.js.map +1 -0
  205. package/dist/decorators/ws-gateway.d.ts +18 -0
  206. package/dist/decorators/ws-gateway.js +24 -0
  207. package/dist/decorators/ws-gateway.js.map +1 -0
  208. package/dist/dev/index.d.ts +6 -0
  209. package/dist/dev/index.js +28 -0
  210. package/dist/dev/index.js.map +1 -0
  211. package/dist/exceptions/circular-dependency-error.d.ts +5 -0
  212. package/dist/exceptions/circular-dependency-error.js +16 -0
  213. package/dist/exceptions/circular-dependency-error.js.map +1 -0
  214. package/dist/exceptions/http-exception.d.ts +41 -0
  215. package/dist/exceptions/http-exception.js +96 -0
  216. package/dist/exceptions/http-exception.js.map +1 -0
  217. package/dist/guards/jwt-websocket.guard.d.ts +11 -0
  218. package/dist/guards/jwt-websocket.guard.js +37 -0
  219. package/dist/guards/jwt-websocket.guard.js.map +1 -0
  220. package/dist/guards/websocket-auth.guard.d.ts +16 -0
  221. package/dist/guards/websocket-auth.guard.js +43 -0
  222. package/dist/guards/websocket-auth.guard.js.map +1 -0
  223. package/dist/health/health-check.service.d.ts +45 -0
  224. package/dist/health/health-check.service.js +95 -0
  225. package/dist/health/health-check.service.js.map +1 -0
  226. package/dist/health/health.controller.d.ts +15 -0
  227. package/dist/health/health.controller.js +63 -0
  228. package/dist/health/health.controller.js.map +1 -0
  229. package/dist/health/health.module.d.ts +2 -0
  230. package/dist/health/health.module.js +20 -0
  231. package/dist/health/health.module.js.map +1 -0
  232. package/dist/index.d.ts +74 -11
  233. package/dist/index.js +54 -0
  234. package/dist/index.js.map +1 -0
  235. package/dist/metadata/storage.d.ts +171 -0
  236. package/dist/metadata/storage.js +257 -0
  237. package/dist/metadata/storage.js.map +1 -0
  238. package/dist/middleware/compression.middleware.d.ts +32 -0
  239. package/dist/middleware/compression.middleware.js +113 -0
  240. package/dist/middleware/compression.middleware.js.map +1 -0
  241. package/dist/middleware/cors.middleware.d.ts +18 -0
  242. package/dist/middleware/cors.middleware.js +79 -0
  243. package/dist/middleware/cors.middleware.js.map +1 -0
  244. package/dist/middleware/performance-tracker.middleware.d.ts +35 -0
  245. package/dist/middleware/performance-tracker.middleware.js +79 -0
  246. package/dist/middleware/performance-tracker.middleware.js.map +1 -0
  247. package/dist/middleware/request-logger.middleware.d.ts +32 -0
  248. package/dist/middleware/request-logger.middleware.js +125 -0
  249. package/dist/middleware/request-logger.middleware.js.map +1 -0
  250. package/dist/types/index.d.ts +14 -0
  251. package/dist/types/index.js +5 -0
  252. package/dist/types/index.js.map +1 -0
  253. package/dist/validation/helpers.d.ts +36 -0
  254. package/dist/validation/helpers.js +27 -0
  255. package/dist/validation/helpers.js.map +1 -0
  256. package/dist/websocket/error.d.ts +27 -0
  257. package/dist/websocket/error.js +38 -0
  258. package/dist/websocket/error.js.map +1 -0
  259. package/package.json +38 -5
  260. package/LICENSE +0 -9
@@ -0,0 +1 @@
1
+ import "reflect-metadata";
@@ -0,0 +1,109 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import "reflect-metadata";
11
+ import { describe, it, expect } from "bun:test";
12
+ import { Container } from "../core/container.js";
13
+ import { RestController } from "../decorators/rest-controller.js";
14
+ import { Service } from "../decorators/service.js";
15
+ import { Autowired } from "../decorators/autowired.js";
16
+ describe("DI container", () => {
17
+ it("injects constructor dependencies", () => {
18
+ let UserService = class UserService {
19
+ value = 42;
20
+ };
21
+ UserService = __decorate([
22
+ Service()
23
+ ], UserService);
24
+ let UserController = class UserController {
25
+ service;
26
+ constructor(service) {
27
+ this.service = service;
28
+ }
29
+ };
30
+ UserController = __decorate([
31
+ RestController(),
32
+ __metadata("design:paramtypes", [UserService])
33
+ ], UserController);
34
+ const container = new Container();
35
+ const ctrl = container.resolve(UserController);
36
+ expect(ctrl.service).toBeInstanceOf(UserService);
37
+ expect(ctrl.service.value).toBe(42);
38
+ });
39
+ it("injects @Autowired field", () => {
40
+ let Logger = class Logger {
41
+ log(msg) {
42
+ return `[LOG] ${msg}`;
43
+ }
44
+ };
45
+ Logger = __decorate([
46
+ Service()
47
+ ], Logger);
48
+ let UserService = class UserService {
49
+ };
50
+ UserService = __decorate([
51
+ Service()
52
+ ], UserService);
53
+ let UserController = class UserController {
54
+ service;
55
+ constructor(service) {
56
+ this.service = service;
57
+ }
58
+ logger;
59
+ run() {
60
+ return this.logger.log("hello");
61
+ }
62
+ };
63
+ __decorate([
64
+ Autowired(),
65
+ __metadata("design:type", Logger)
66
+ ], UserController.prototype, "logger", void 0);
67
+ UserController = __decorate([
68
+ RestController(),
69
+ __metadata("design:paramtypes", [UserService])
70
+ ], UserController);
71
+ const container = new Container();
72
+ const ctrl = container.resolve(UserController);
73
+ expect(ctrl.logger).toBeInstanceOf(Logger);
74
+ expect(ctrl.run()).toBe("[LOG] hello");
75
+ });
76
+ it("reuses singleton instances", () => {
77
+ let Counter = class Counter {
78
+ count = 0;
79
+ };
80
+ Counter = __decorate([
81
+ Service()
82
+ ], Counter);
83
+ let ControllerA = class ControllerA {
84
+ counter;
85
+ constructor(counter) {
86
+ this.counter = counter;
87
+ }
88
+ };
89
+ ControllerA = __decorate([
90
+ RestController(),
91
+ __metadata("design:paramtypes", [Counter])
92
+ ], ControllerA);
93
+ let ControllerB = class ControllerB {
94
+ counter;
95
+ constructor(counter) {
96
+ this.counter = counter;
97
+ }
98
+ };
99
+ ControllerB = __decorate([
100
+ RestController(),
101
+ __metadata("design:paramtypes", [Counter])
102
+ ], ControllerB);
103
+ const container = new Container();
104
+ const a = container.resolve(ControllerA);
105
+ const b = container.resolve(ControllerB);
106
+ expect(a.counter).toBe(b.counter);
107
+ });
108
+ });
109
+ //# sourceMappingURL=autowired.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autowired.test.js","sourceRoot":"","sources":["../../src/__tests__/autowired.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAE1C,IAAM,WAAW,GAAjB,MAAM,WAAW;YACf,KAAK,GAAG,EAAE,CAAC;SACZ,CAAA;QAFK,WAAW;YADhB,OAAO,EAAE;WACJ,WAAW,CAEhB;QAED,IACM,cAAc,GADpB,MACM,cAAc;YACC;YAAnB,YAAmB,OAAoB;gBAApB,YAAO,GAAP,OAAO,CAAa;YAAG,CAAC;SAC5C,CAAA;QAFK,cAAc;YADnB,cAAc,EAAE;6CAEa,WAAW;WADnC,cAAc,CAEnB;QAED,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE/C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAElC,IAAM,MAAM,GAAZ,MAAM,MAAM;YACV,GAAG,CAAC,GAAW;gBACb,OAAO,SAAS,GAAG,EAAE,CAAC;YACxB,CAAC;SACF,CAAA;QAJK,MAAM;YADX,OAAO,EAAE;WACJ,MAAM,CAIX;QAGD,IAAM,WAAW,GAAjB,MAAM,WAAW;SAAG,CAAA;QAAd,WAAW;YADhB,OAAO,EAAE;WACJ,WAAW,CAAG;QAEpB,IACM,cAAc,GADpB,MACM,cAAc;YACC;YAAnB,YAAmB,OAAoB;gBAApB,YAAO,GAAP,OAAO,CAAa;YAAG,CAAC;YAG3C,MAAM,CAAU;YAEhB,GAAG;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;SACF,CAAA;QALC;YADC,SAAS,EAAE;sCACH,MAAM;sDAAC;QAJZ,cAAc;YADnB,cAAc,EAAE;6CAEa,WAAW;WADnC,cAAc,CASnB;QAED,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE/C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAEpC,IAAM,OAAO,GAAb,MAAM,OAAO;YACX,KAAK,GAAG,CAAC,CAAC;SACX,CAAA;QAFK,OAAO;YADZ,OAAO,EAAE;WACJ,OAAO,CAEZ;QAED,IACM,WAAW,GADjB,MACM,WAAW;YACI;YAAnB,YAAmB,OAAgB;gBAAhB,YAAO,GAAP,OAAO,CAAS;YAAG,CAAC;SACxC,CAAA;QAFK,WAAW;YADhB,cAAc,EAAE;6CAEa,OAAO;WAD/B,WAAW,CAEhB;QAED,IACM,WAAW,GADjB,MACM,WAAW;YACI;YAAnB,YAAmB,OAAgB;gBAAhB,YAAO,GAAP,OAAO,CAAS;YAAG,CAAC;SACxC,CAAA;QAFK,WAAW;YADhB,cAAc,EAAE;6CAEa,OAAO;WAD/B,WAAW,CAEhB;QAED,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAElC,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEzC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import "reflect-metadata";
@@ -0,0 +1,96 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import "reflect-metadata";
11
+ import { describe, it, expect } from "bun:test";
12
+ import { CinnabunApplication } from "../decorators/cinnabun-application.js";
13
+ import { RestController } from "../decorators/rest-controller.js";
14
+ import { GetMapping } from "../decorators/routes.js";
15
+ import { Service } from "../decorators/service.js";
16
+ import { metadataStorage } from "../metadata/storage.js";
17
+ describe("@CinnabunApplication", () => {
18
+ it("stores default metadata", () => {
19
+ let DefaultApp = class DefaultApp {
20
+ };
21
+ DefaultApp = __decorate([
22
+ CinnabunApplication()
23
+ ], DefaultApp);
24
+ const meta = metadataStorage.getAppMetadata(DefaultApp);
25
+ expect(meta).toEqual({
26
+ scanPaths: ["."],
27
+ middleware: [],
28
+ imports: [],
29
+ plugins: [],
30
+ port: 3000,
31
+ shutdownTimeout: 5000,
32
+ timeout: 30000,
33
+ });
34
+ });
35
+ it("stores custom options", () => {
36
+ let CustomApp = class CustomApp {
37
+ };
38
+ CustomApp = __decorate([
39
+ CinnabunApplication({
40
+ scanPaths: ["./src/controllers", "./src/services"],
41
+ port: 8080,
42
+ })
43
+ ], CustomApp);
44
+ const meta = metadataStorage.getAppMetadata(CustomApp);
45
+ expect(meta.scanPaths).toEqual(["./src/controllers", "./src/services"]);
46
+ expect(meta.port).toBe(8080);
47
+ expect(meta.middleware).toEqual([]);
48
+ expect(meta.imports).toEqual([]);
49
+ });
50
+ it("stores middleware and imports", () => {
51
+ let FakeMw = class FakeMw {
52
+ async use(req, next) {
53
+ return next();
54
+ }
55
+ };
56
+ FakeMw = __decorate([
57
+ Service()
58
+ ], FakeMw);
59
+ let MwApp = class MwApp {
60
+ };
61
+ MwApp = __decorate([
62
+ CinnabunApplication({
63
+ middleware: [FakeMw],
64
+ imports: [],
65
+ })
66
+ ], MwApp);
67
+ const meta = metadataStorage.getAppMetadata(MwApp);
68
+ expect(meta.middleware).toEqual([FakeMw]);
69
+ });
70
+ it("can be combined with @RestController", () => {
71
+ let ComboApp = class ComboApp {
72
+ health() {
73
+ return "ok";
74
+ }
75
+ };
76
+ __decorate([
77
+ GetMapping("/health"),
78
+ __metadata("design:type", Function),
79
+ __metadata("design:paramtypes", []),
80
+ __metadata("design:returntype", void 0)
81
+ ], ComboApp.prototype, "health", null);
82
+ ComboApp = __decorate([
83
+ CinnabunApplication(),
84
+ RestController("/api")
85
+ ], ComboApp);
86
+ expect(metadataStorage.getAppMetadata(ComboApp)).toBeDefined();
87
+ expect(metadataStorage.getControllerPath(ComboApp)).toBe("/api");
88
+ expect(metadataStorage.getRoutesFor(ComboApp)).toHaveLength(1);
89
+ });
90
+ it("returns undefined for non-decorated classes", () => {
91
+ class PlainClass {
92
+ }
93
+ expect(metadataStorage.getAppMetadata(PlainClass)).toBeUndefined();
94
+ });
95
+ });
96
+ //# sourceMappingURL=cinnabun-application.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cinnabun-application.test.js","sourceRoot":"","sources":["../../src/__tests__/cinnabun-application.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "reflect-metadata";
@@ -0,0 +1,269 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import "reflect-metadata";
11
+ import { describe, it, expect, afterEach } from "bun:test";
12
+ import { CinnabunFactory } from "../core/cinnabun-factory.js";
13
+ import { CinnabunApplication as CinnabunAppDecorator } from "../decorators/cinnabun-application.js";
14
+ import { RestController } from "../decorators/rest-controller.js";
15
+ import { GetMapping } from "../decorators/routes.js";
16
+ import { Service } from "../decorators/service.js";
17
+ import { Module } from "../decorators/module.js";
18
+ import { PreDestroy } from "../decorators/lifecycle.js";
19
+ let app = null;
20
+ afterEach(async () => {
21
+ if (app) {
22
+ await app.close();
23
+ app = null;
24
+ }
25
+ });
26
+ describe("CinnabunFactory", () => {
27
+ it("boots a minimal application", async () => {
28
+ let FactoryApp1 = class FactoryApp1 {
29
+ ping() {
30
+ return "pong";
31
+ }
32
+ };
33
+ __decorate([
34
+ GetMapping("/ping"),
35
+ __metadata("design:type", Function),
36
+ __metadata("design:paramtypes", []),
37
+ __metadata("design:returntype", void 0)
38
+ ], FactoryApp1.prototype, "ping", null);
39
+ FactoryApp1 = __decorate([
40
+ CinnabunAppDecorator({ port: 0, scanPaths: [] }),
41
+ RestController()
42
+ ], FactoryApp1);
43
+ app = await CinnabunFactory.run(FactoryApp1);
44
+ const res = await fetch(`http://localhost:${app.getPort()}/ping`);
45
+ expect(res.status).toBe(200);
46
+ expect(await res.text()).toBe("pong");
47
+ });
48
+ it("throws if class lacks @CinnabunApplication", async () => {
49
+ class NotAnApp {
50
+ }
51
+ expect(CinnabunFactory.run(NotAnApp)).rejects.toThrow("NotAnApp is not decorated with @CinnabunApplication()");
52
+ });
53
+ it("applies global middleware", async () => {
54
+ let PoweredByMiddleware = class PoweredByMiddleware {
55
+ async use(_req, next) {
56
+ const res = await next();
57
+ const newRes = new Response(res.body, {
58
+ status: res.status,
59
+ headers: res.headers,
60
+ });
61
+ newRes.headers.set("X-Powered-By", "Cinnabun");
62
+ return newRes;
63
+ }
64
+ };
65
+ PoweredByMiddleware = __decorate([
66
+ Service()
67
+ ], PoweredByMiddleware);
68
+ let FactoryApp2 = class FactoryApp2 {
69
+ index() {
70
+ return "ok";
71
+ }
72
+ };
73
+ __decorate([
74
+ GetMapping("/"),
75
+ __metadata("design:type", Function),
76
+ __metadata("design:paramtypes", []),
77
+ __metadata("design:returntype", void 0)
78
+ ], FactoryApp2.prototype, "index", null);
79
+ FactoryApp2 = __decorate([
80
+ CinnabunAppDecorator({
81
+ port: 0,
82
+ scanPaths: [],
83
+ middleware: [PoweredByMiddleware],
84
+ }),
85
+ RestController()
86
+ ], FactoryApp2);
87
+ app = await CinnabunFactory.run(FactoryApp2);
88
+ const res = await fetch(`http://localhost:${app.getPort()}/`);
89
+ expect(res.headers.get("X-Powered-By")).toBe("Cinnabun");
90
+ });
91
+ it("resolves module imports", async () => {
92
+ let FactoryDbService = class FactoryDbService {
93
+ query() {
94
+ return "data";
95
+ }
96
+ };
97
+ FactoryDbService = __decorate([
98
+ Service()
99
+ ], FactoryDbService);
100
+ let FactoryDbModule = class FactoryDbModule {
101
+ };
102
+ FactoryDbModule = __decorate([
103
+ Module({
104
+ providers: [FactoryDbService],
105
+ exports: [FactoryDbService],
106
+ })
107
+ ], FactoryDbModule);
108
+ let FactoryApp3 = class FactoryApp3 {
109
+ db;
110
+ constructor(db) {
111
+ this.db = db;
112
+ }
113
+ data() {
114
+ return this.db.query();
115
+ }
116
+ };
117
+ __decorate([
118
+ GetMapping("/data"),
119
+ __metadata("design:type", Function),
120
+ __metadata("design:paramtypes", []),
121
+ __metadata("design:returntype", void 0)
122
+ ], FactoryApp3.prototype, "data", null);
123
+ FactoryApp3 = __decorate([
124
+ CinnabunAppDecorator({
125
+ port: 0,
126
+ scanPaths: [],
127
+ imports: [FactoryDbModule],
128
+ }),
129
+ RestController(),
130
+ __metadata("design:paramtypes", [FactoryDbService])
131
+ ], FactoryApp3);
132
+ app = await CinnabunFactory.run(FactoryApp3);
133
+ const res = await fetch(`http://localhost:${app.getPort()}/data`);
134
+ expect(await res.text()).toBe("data");
135
+ });
136
+ it("returns a CinnabunApplication instance", async () => {
137
+ let FactoryApp4 = class FactoryApp4 {
138
+ index() {
139
+ return "ok";
140
+ }
141
+ };
142
+ __decorate([
143
+ GetMapping("/"),
144
+ __metadata("design:type", Function),
145
+ __metadata("design:paramtypes", []),
146
+ __metadata("design:returntype", void 0)
147
+ ], FactoryApp4.prototype, "index", null);
148
+ FactoryApp4 = __decorate([
149
+ CinnabunAppDecorator({ port: 0, scanPaths: [] }),
150
+ RestController()
151
+ ], FactoryApp4);
152
+ app = await CinnabunFactory.run(FactoryApp4);
153
+ expect(app.getPort()).toBeGreaterThan(0);
154
+ expect(app.getContainer()).toBeDefined();
155
+ });
156
+ });
157
+ describe("graceful shutdown", () => {
158
+ it("calls @PreDestroy hooks on close", async () => {
159
+ let destroyed = false;
160
+ let CleanupService = class CleanupService {
161
+ cleanup() {
162
+ destroyed = true;
163
+ }
164
+ };
165
+ __decorate([
166
+ PreDestroy(),
167
+ __metadata("design:type", Function),
168
+ __metadata("design:paramtypes", []),
169
+ __metadata("design:returntype", void 0)
170
+ ], CleanupService.prototype, "cleanup", null);
171
+ CleanupService = __decorate([
172
+ Service()
173
+ ], CleanupService);
174
+ let ShutdownApp1 = class ShutdownApp1 {
175
+ svc;
176
+ constructor(svc) {
177
+ this.svc = svc;
178
+ }
179
+ index() {
180
+ return "ok";
181
+ }
182
+ };
183
+ __decorate([
184
+ GetMapping("/"),
185
+ __metadata("design:type", Function),
186
+ __metadata("design:paramtypes", []),
187
+ __metadata("design:returntype", void 0)
188
+ ], ShutdownApp1.prototype, "index", null);
189
+ ShutdownApp1 = __decorate([
190
+ CinnabunAppDecorator({ port: 0, scanPaths: [] }),
191
+ RestController(),
192
+ __metadata("design:paramtypes", [CleanupService])
193
+ ], ShutdownApp1);
194
+ app = await CinnabunFactory.run(ShutdownApp1);
195
+ expect(destroyed).toBe(false);
196
+ await app.close();
197
+ expect(destroyed).toBe(true);
198
+ app = null;
199
+ });
200
+ it("close is idempotent", async () => {
201
+ let ShutdownApp2 = class ShutdownApp2 {
202
+ index() {
203
+ return "ok";
204
+ }
205
+ };
206
+ __decorate([
207
+ GetMapping("/"),
208
+ __metadata("design:type", Function),
209
+ __metadata("design:paramtypes", []),
210
+ __metadata("design:returntype", void 0)
211
+ ], ShutdownApp2.prototype, "index", null);
212
+ ShutdownApp2 = __decorate([
213
+ CinnabunAppDecorator({ port: 0, scanPaths: [] }),
214
+ RestController()
215
+ ], ShutdownApp2);
216
+ app = await CinnabunFactory.run(ShutdownApp2);
217
+ await app.close();
218
+ await app.close(); // should not throw
219
+ app = null;
220
+ });
221
+ it("stops serving requests after close", async () => {
222
+ let ShutdownApp3 = class ShutdownApp3 {
223
+ index() {
224
+ return "ok";
225
+ }
226
+ };
227
+ __decorate([
228
+ GetMapping("/"),
229
+ __metadata("design:type", Function),
230
+ __metadata("design:paramtypes", []),
231
+ __metadata("design:returntype", void 0)
232
+ ], ShutdownApp3.prototype, "index", null);
233
+ ShutdownApp3 = __decorate([
234
+ CinnabunAppDecorator({ port: 0, scanPaths: [] }),
235
+ RestController()
236
+ ], ShutdownApp3);
237
+ app = await CinnabunFactory.run(ShutdownApp3);
238
+ const port = app.getPort();
239
+ await app.close();
240
+ app = null;
241
+ try {
242
+ await fetch(`http://localhost:${port}/`);
243
+ }
244
+ catch {
245
+ // Expected: connection refused
246
+ }
247
+ });
248
+ it("respects shutdownTimeout in metadata", async () => {
249
+ let ShutdownApp4 = class ShutdownApp4 {
250
+ index() {
251
+ return "ok";
252
+ }
253
+ };
254
+ __decorate([
255
+ GetMapping("/"),
256
+ __metadata("design:type", Function),
257
+ __metadata("design:paramtypes", []),
258
+ __metadata("design:returntype", void 0)
259
+ ], ShutdownApp4.prototype, "index", null);
260
+ ShutdownApp4 = __decorate([
261
+ CinnabunAppDecorator({ port: 0, scanPaths: [], shutdownTimeout: 10000 }),
262
+ RestController()
263
+ ], ShutdownApp4);
264
+ const { metadataStorage } = await import("../metadata/storage.js");
265
+ const meta = metadataStorage.getAppMetadata(ShutdownApp4);
266
+ expect(meta.shutdownTimeout).toBe(10000);
267
+ });
268
+ });
269
+ //# sourceMappingURL=cinnabun-factory.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cinnabun-factory.test.js","sourceRoot":"","sources":["../../src/__tests__/cinnabun-factory.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "reflect-metadata";