nitrostack 1.0.83 → 1.0.85

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 (439) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +42 -137
  3. package/assets/gif/nitrocli.gif +0 -0
  4. package/assets/gif/nitrostudio-chat.gif +0 -0
  5. package/assets/gif/nitrostudio-main.gif +0 -0
  6. package/assets/gif/nitrostudio-testing.gif +0 -0
  7. package/package.json +15 -50
  8. package/dist/auth/__tests__/api-key.test.d.ts +0 -2
  9. package/dist/auth/__tests__/api-key.test.d.ts.map +0 -1
  10. package/dist/auth/__tests__/api-key.test.js +0 -156
  11. package/dist/auth/__tests__/api-key.test.js.map +0 -1
  12. package/dist/auth/__tests__/client.test.d.ts +0 -2
  13. package/dist/auth/__tests__/client.test.d.ts.map +0 -1
  14. package/dist/auth/__tests__/client.test.js +0 -173
  15. package/dist/auth/__tests__/client.test.js.map +0 -1
  16. package/dist/auth/__tests__/middleware.test.d.ts +0 -2
  17. package/dist/auth/__tests__/middleware.test.d.ts.map +0 -1
  18. package/dist/auth/__tests__/middleware.test.js +0 -232
  19. package/dist/auth/__tests__/middleware.test.js.map +0 -1
  20. package/dist/auth/__tests__/pkce.test.d.ts +0 -2
  21. package/dist/auth/__tests__/pkce.test.d.ts.map +0 -1
  22. package/dist/auth/__tests__/pkce.test.js +0 -110
  23. package/dist/auth/__tests__/pkce.test.js.map +0 -1
  24. package/dist/auth/__tests__/quick-setup.test.d.ts +0 -2
  25. package/dist/auth/__tests__/quick-setup.test.d.ts.map +0 -1
  26. package/dist/auth/__tests__/quick-setup.test.js +0 -95
  27. package/dist/auth/__tests__/quick-setup.test.js.map +0 -1
  28. package/dist/auth/__tests__/secure-secret.test.d.ts +0 -2
  29. package/dist/auth/__tests__/secure-secret.test.d.ts.map +0 -1
  30. package/dist/auth/__tests__/secure-secret.test.js +0 -104
  31. package/dist/auth/__tests__/secure-secret.test.js.map +0 -1
  32. package/dist/auth/__tests__/server-integration.test.d.ts +0 -2
  33. package/dist/auth/__tests__/server-integration.test.d.ts.map +0 -1
  34. package/dist/auth/__tests__/server-integration.test.js +0 -156
  35. package/dist/auth/__tests__/server-integration.test.js.map +0 -1
  36. package/dist/auth/__tests__/server-metadata.test.d.ts +0 -2
  37. package/dist/auth/__tests__/server-metadata.test.d.ts.map +0 -1
  38. package/dist/auth/__tests__/server-metadata.test.js +0 -72
  39. package/dist/auth/__tests__/server-metadata.test.js.map +0 -1
  40. package/dist/auth/__tests__/simple-jwt.test.d.ts +0 -2
  41. package/dist/auth/__tests__/simple-jwt.test.d.ts.map +0 -1
  42. package/dist/auth/__tests__/simple-jwt.test.js +0 -125
  43. package/dist/auth/__tests__/simple-jwt.test.js.map +0 -1
  44. package/dist/auth/__tests__/token-store.test.d.ts +0 -2
  45. package/dist/auth/__tests__/token-store.test.d.ts.map +0 -1
  46. package/dist/auth/__tests__/token-store.test.js +0 -167
  47. package/dist/auth/__tests__/token-store.test.js.map +0 -1
  48. package/dist/auth/__tests__/token-validation.test.d.ts +0 -2
  49. package/dist/auth/__tests__/token-validation.test.d.ts.map +0 -1
  50. package/dist/auth/__tests__/token-validation.test.js +0 -219
  51. package/dist/auth/__tests__/token-validation.test.js.map +0 -1
  52. package/dist/auth/api-key.d.ts +0 -118
  53. package/dist/auth/api-key.d.ts.map +0 -1
  54. package/dist/auth/api-key.js +0 -168
  55. package/dist/auth/api-key.js.map +0 -1
  56. package/dist/auth/client.d.ts +0 -151
  57. package/dist/auth/client.d.ts.map +0 -1
  58. package/dist/auth/client.js +0 -330
  59. package/dist/auth/client.js.map +0 -1
  60. package/dist/auth/index.d.ts +0 -31
  61. package/dist/auth/index.d.ts.map +0 -1
  62. package/dist/auth/index.js +0 -46
  63. package/dist/auth/index.js.map +0 -1
  64. package/dist/auth/middleware.d.ts +0 -95
  65. package/dist/auth/middleware.d.ts.map +0 -1
  66. package/dist/auth/middleware.js +0 -260
  67. package/dist/auth/middleware.js.map +0 -1
  68. package/dist/auth/pkce.d.ts +0 -53
  69. package/dist/auth/pkce.d.ts.map +0 -1
  70. package/dist/auth/pkce.js +0 -105
  71. package/dist/auth/pkce.js.map +0 -1
  72. package/dist/auth/quick-setup.d.ts +0 -94
  73. package/dist/auth/quick-setup.d.ts.map +0 -1
  74. package/dist/auth/quick-setup.js +0 -210
  75. package/dist/auth/quick-setup.js.map +0 -1
  76. package/dist/auth/secure-secret.d.ts +0 -136
  77. package/dist/auth/secure-secret.d.ts.map +0 -1
  78. package/dist/auth/secure-secret.js +0 -182
  79. package/dist/auth/secure-secret.js.map +0 -1
  80. package/dist/auth/server-integration.d.ts +0 -97
  81. package/dist/auth/server-integration.d.ts.map +0 -1
  82. package/dist/auth/server-integration.js +0 -182
  83. package/dist/auth/server-integration.js.map +0 -1
  84. package/dist/auth/server-metadata.d.ts +0 -51
  85. package/dist/auth/server-metadata.d.ts.map +0 -1
  86. package/dist/auth/server-metadata.js +0 -106
  87. package/dist/auth/server-metadata.js.map +0 -1
  88. package/dist/auth/simple-jwt.d.ts +0 -174
  89. package/dist/auth/simple-jwt.d.ts.map +0 -1
  90. package/dist/auth/simple-jwt.js +0 -162
  91. package/dist/auth/simple-jwt.js.map +0 -1
  92. package/dist/auth/token-store.d.ts +0 -104
  93. package/dist/auth/token-store.d.ts.map +0 -1
  94. package/dist/auth/token-store.js +0 -205
  95. package/dist/auth/token-store.js.map +0 -1
  96. package/dist/auth/token-validation.d.ts +0 -59
  97. package/dist/auth/token-validation.d.ts.map +0 -1
  98. package/dist/auth/token-validation.js +0 -241
  99. package/dist/auth/token-validation.js.map +0 -1
  100. package/dist/auth/types.d.ts +0 -215
  101. package/dist/auth/types.d.ts.map +0 -1
  102. package/dist/auth/types.js +0 -6
  103. package/dist/auth/types.js.map +0 -1
  104. package/dist/core/__tests__/app-decorator.test.d.ts +0 -2
  105. package/dist/core/__tests__/app-decorator.test.d.ts.map +0 -1
  106. package/dist/core/__tests__/app-decorator.test.js +0 -100
  107. package/dist/core/__tests__/app-decorator.test.js.map +0 -1
  108. package/dist/core/__tests__/app-factory.extended.test.d.ts +0 -2
  109. package/dist/core/__tests__/app-factory.extended.test.d.ts.map +0 -1
  110. package/dist/core/__tests__/app-factory.extended.test.js +0 -244
  111. package/dist/core/__tests__/app-factory.extended.test.js.map +0 -1
  112. package/dist/core/__tests__/builders.test.d.ts +0 -2
  113. package/dist/core/__tests__/builders.test.d.ts.map +0 -1
  114. package/dist/core/__tests__/builders.test.js +0 -98
  115. package/dist/core/__tests__/builders.test.js.map +0 -1
  116. package/dist/core/__tests__/component.test.d.ts +0 -2
  117. package/dist/core/__tests__/component.test.d.ts.map +0 -1
  118. package/dist/core/__tests__/component.test.js +0 -151
  119. package/dist/core/__tests__/component.test.js.map +0 -1
  120. package/dist/core/__tests__/config-module.test.d.ts +0 -2
  121. package/dist/core/__tests__/config-module.test.d.ts.map +0 -1
  122. package/dist/core/__tests__/config-module.test.js +0 -90
  123. package/dist/core/__tests__/config-module.test.js.map +0 -1
  124. package/dist/core/__tests__/core-modules.test.d.ts +0 -2
  125. package/dist/core/__tests__/core-modules.test.d.ts.map +0 -1
  126. package/dist/core/__tests__/core-modules.test.js +0 -36
  127. package/dist/core/__tests__/core-modules.test.js.map +0 -1
  128. package/dist/core/__tests__/di.test.d.ts +0 -2
  129. package/dist/core/__tests__/di.test.d.ts.map +0 -1
  130. package/dist/core/__tests__/di.test.js +0 -101
  131. package/dist/core/__tests__/di.test.js.map +0 -1
  132. package/dist/core/__tests__/errors.test.d.ts +0 -2
  133. package/dist/core/__tests__/errors.test.d.ts.map +0 -1
  134. package/dist/core/__tests__/errors.test.js +0 -109
  135. package/dist/core/__tests__/errors.test.js.map +0 -1
  136. package/dist/core/__tests__/final.blitz.test.d.ts +0 -2
  137. package/dist/core/__tests__/final.blitz.test.d.ts.map +0 -1
  138. package/dist/core/__tests__/final.blitz.test.js +0 -327
  139. package/dist/core/__tests__/final.blitz.test.js.map +0 -1
  140. package/dist/core/__tests__/jwt-module.test.d.ts +0 -2
  141. package/dist/core/__tests__/jwt-module.test.d.ts.map +0 -1
  142. package/dist/core/__tests__/jwt-module.test.js +0 -60
  143. package/dist/core/__tests__/jwt-module.test.js.map +0 -1
  144. package/dist/core/__tests__/logger.test.d.ts +0 -2
  145. package/dist/core/__tests__/logger.test.d.ts.map +0 -1
  146. package/dist/core/__tests__/logger.test.js +0 -83
  147. package/dist/core/__tests__/logger.test.js.map +0 -1
  148. package/dist/core/__tests__/models.test.d.ts +0 -2
  149. package/dist/core/__tests__/models.test.d.ts.map +0 -1
  150. package/dist/core/__tests__/models.test.js +0 -142
  151. package/dist/core/__tests__/models.test.js.map +0 -1
  152. package/dist/core/__tests__/module.test.d.ts +0 -2
  153. package/dist/core/__tests__/module.test.d.ts.map +0 -1
  154. package/dist/core/__tests__/module.test.js +0 -58
  155. package/dist/core/__tests__/module.test.js.map +0 -1
  156. package/dist/core/__tests__/oauth-module.test.d.ts +0 -2
  157. package/dist/core/__tests__/oauth-module.test.d.ts.map +0 -1
  158. package/dist/core/__tests__/oauth-module.test.js +0 -168
  159. package/dist/core/__tests__/oauth-module.test.js.map +0 -1
  160. package/dist/core/__tests__/oauth.extended.test.d.ts +0 -2
  161. package/dist/core/__tests__/oauth.extended.test.d.ts.map +0 -1
  162. package/dist/core/__tests__/oauth.extended.test.js +0 -146
  163. package/dist/core/__tests__/oauth.extended.test.js.map +0 -1
  164. package/dist/core/__tests__/prompt.test.d.ts +0 -2
  165. package/dist/core/__tests__/prompt.test.d.ts.map +0 -1
  166. package/dist/core/__tests__/prompt.test.js +0 -126
  167. package/dist/core/__tests__/prompt.test.js.map +0 -1
  168. package/dist/core/__tests__/resource.test.d.ts +0 -2
  169. package/dist/core/__tests__/resource.test.d.ts.map +0 -1
  170. package/dist/core/__tests__/resource.test.js +0 -173
  171. package/dist/core/__tests__/resource.test.js.map +0 -1
  172. package/dist/core/__tests__/server.extended.test.d.ts +0 -2
  173. package/dist/core/__tests__/server.extended.test.d.ts.map +0 -1
  174. package/dist/core/__tests__/server.extended.test.js +0 -242
  175. package/dist/core/__tests__/server.extended.test.js.map +0 -1
  176. package/dist/core/__tests__/server.test.d.ts +0 -2
  177. package/dist/core/__tests__/server.test.d.ts.map +0 -1
  178. package/dist/core/__tests__/server.test.js +0 -120
  179. package/dist/core/__tests__/server.test.js.map +0 -1
  180. package/dist/core/__tests__/transport.http.test.d.ts +0 -2
  181. package/dist/core/__tests__/transport.http.test.d.ts.map +0 -1
  182. package/dist/core/__tests__/transport.http.test.js +0 -119
  183. package/dist/core/__tests__/transport.http.test.js.map +0 -1
  184. package/dist/core/__tests__/transport.streamable.test.d.ts +0 -2
  185. package/dist/core/__tests__/transport.streamable.test.d.ts.map +0 -1
  186. package/dist/core/__tests__/transport.streamable.test.js +0 -168
  187. package/dist/core/__tests__/transport.streamable.test.js.map +0 -1
  188. package/dist/core/__tests__/transports.test.d.ts +0 -2
  189. package/dist/core/__tests__/transports.test.d.ts.map +0 -1
  190. package/dist/core/__tests__/transports.test.js +0 -12
  191. package/dist/core/__tests__/transports.test.js.map +0 -1
  192. package/dist/core/apikey-module.d.ts +0 -69
  193. package/dist/core/apikey-module.d.ts.map +0 -1
  194. package/dist/core/apikey-module.js +0 -114
  195. package/dist/core/apikey-module.js.map +0 -1
  196. package/dist/core/app-decorator.d.ts +0 -59
  197. package/dist/core/app-decorator.d.ts.map +0 -1
  198. package/dist/core/app-decorator.js +0 -322
  199. package/dist/core/app-decorator.js.map +0 -1
  200. package/dist/core/builders.d.ts +0 -50
  201. package/dist/core/builders.d.ts.map +0 -1
  202. package/dist/core/builders.js +0 -139
  203. package/dist/core/builders.js.map +0 -1
  204. package/dist/core/component.d.ts +0 -111
  205. package/dist/core/component.d.ts.map +0 -1
  206. package/dist/core/component.js +0 -228
  207. package/dist/core/component.js.map +0 -1
  208. package/dist/core/config-module.d.ts +0 -62
  209. package/dist/core/config-module.d.ts.map +0 -1
  210. package/dist/core/config-module.js +0 -94
  211. package/dist/core/config-module.js.map +0 -1
  212. package/dist/core/decorators/__tests__/decorators.test.d.ts +0 -2
  213. package/dist/core/decorators/__tests__/decorators.test.d.ts.map +0 -1
  214. package/dist/core/decorators/__tests__/decorators.test.js +0 -103
  215. package/dist/core/decorators/__tests__/decorators.test.js.map +0 -1
  216. package/dist/core/decorators/__tests__/extended-decorators.test.d.ts +0 -2
  217. package/dist/core/decorators/__tests__/extended-decorators.test.d.ts.map +0 -1
  218. package/dist/core/decorators/__tests__/extended-decorators.test.js +0 -194
  219. package/dist/core/decorators/__tests__/extended-decorators.test.js.map +0 -1
  220. package/dist/core/decorators/__tests__/health-check.test.d.ts +0 -2
  221. package/dist/core/decorators/__tests__/health-check.test.d.ts.map +0 -1
  222. package/dist/core/decorators/__tests__/health-check.test.js +0 -119
  223. package/dist/core/decorators/__tests__/health-check.test.js.map +0 -1
  224. package/dist/core/decorators/cache.decorator.d.ts +0 -61
  225. package/dist/core/decorators/cache.decorator.d.ts.map +0 -1
  226. package/dist/core/decorators/cache.decorator.js +0 -115
  227. package/dist/core/decorators/cache.decorator.js.map +0 -1
  228. package/dist/core/decorators/health-check.decorator.d.ts +0 -80
  229. package/dist/core/decorators/health-check.decorator.d.ts.map +0 -1
  230. package/dist/core/decorators/health-check.decorator.js +0 -153
  231. package/dist/core/decorators/health-check.decorator.js.map +0 -1
  232. package/dist/core/decorators/rate-limit.decorator.d.ts +0 -63
  233. package/dist/core/decorators/rate-limit.decorator.d.ts.map +0 -1
  234. package/dist/core/decorators/rate-limit.decorator.js +0 -129
  235. package/dist/core/decorators/rate-limit.decorator.js.map +0 -1
  236. package/dist/core/decorators.d.ts +0 -190
  237. package/dist/core/decorators.d.ts.map +0 -1
  238. package/dist/core/decorators.js +0 -170
  239. package/dist/core/decorators.js.map +0 -1
  240. package/dist/core/di/__tests__/container.test.d.ts +0 -2
  241. package/dist/core/di/__tests__/container.test.d.ts.map +0 -1
  242. package/dist/core/di/__tests__/container.test.js +0 -88
  243. package/dist/core/di/__tests__/container.test.js.map +0 -1
  244. package/dist/core/di/container.d.ts +0 -64
  245. package/dist/core/di/container.d.ts.map +0 -1
  246. package/dist/core/di/container.js +0 -105
  247. package/dist/core/di/container.js.map +0 -1
  248. package/dist/core/di/injectable.decorator.d.ts +0 -62
  249. package/dist/core/di/injectable.decorator.d.ts.map +0 -1
  250. package/dist/core/di/injectable.decorator.js +0 -66
  251. package/dist/core/di/injectable.decorator.js.map +0 -1
  252. package/dist/core/di/metadata-shim.d.ts +0 -31
  253. package/dist/core/di/metadata-shim.d.ts.map +0 -1
  254. package/dist/core/di/metadata-shim.js +0 -181
  255. package/dist/core/di/metadata-shim.js.map +0 -1
  256. package/dist/core/errors.d.ts +0 -54
  257. package/dist/core/errors.d.ts.map +0 -1
  258. package/dist/core/errors.js +0 -87
  259. package/dist/core/errors.js.map +0 -1
  260. package/dist/core/events/__tests__/events.test.d.ts +0 -2
  261. package/dist/core/events/__tests__/events.test.d.ts.map +0 -1
  262. package/dist/core/events/__tests__/events.test.js +0 -177
  263. package/dist/core/events/__tests__/events.test.js.map +0 -1
  264. package/dist/core/events/event-emitter.d.ts +0 -50
  265. package/dist/core/events/event-emitter.d.ts.map +0 -1
  266. package/dist/core/events/event-emitter.js +0 -94
  267. package/dist/core/events/event-emitter.js.map +0 -1
  268. package/dist/core/events/event.decorator.d.ts +0 -48
  269. package/dist/core/events/event.decorator.d.ts.map +0 -1
  270. package/dist/core/events/event.decorator.js +0 -72
  271. package/dist/core/events/event.decorator.js.map +0 -1
  272. package/dist/core/events/log-emitter.d.ts +0 -14
  273. package/dist/core/events/log-emitter.d.ts.map +0 -1
  274. package/dist/core/events/log-emitter.js +0 -20
  275. package/dist/core/events/log-emitter.js.map +0 -1
  276. package/dist/core/filters/__tests__/filters.test.d.ts +0 -2
  277. package/dist/core/filters/__tests__/filters.test.d.ts.map +0 -1
  278. package/dist/core/filters/__tests__/filters.test.js +0 -72
  279. package/dist/core/filters/__tests__/filters.test.js.map +0 -1
  280. package/dist/core/filters/exception-filter.decorator.d.ts +0 -40
  281. package/dist/core/filters/exception-filter.decorator.d.ts.map +0 -1
  282. package/dist/core/filters/exception-filter.decorator.js +0 -54
  283. package/dist/core/filters/exception-filter.decorator.js.map +0 -1
  284. package/dist/core/filters/exception-filter.interface.d.ts +0 -39
  285. package/dist/core/filters/exception-filter.interface.d.ts.map +0 -1
  286. package/dist/core/filters/exception-filter.interface.js +0 -2
  287. package/dist/core/filters/exception-filter.interface.js.map +0 -1
  288. package/dist/core/guards/__tests__/guards.test.d.ts +0 -2
  289. package/dist/core/guards/__tests__/guards.test.d.ts.map +0 -1
  290. package/dist/core/guards/__tests__/guards.test.js +0 -55
  291. package/dist/core/guards/__tests__/guards.test.js.map +0 -1
  292. package/dist/core/guards/apikey.guard.d.ts +0 -22
  293. package/dist/core/guards/apikey.guard.d.ts.map +0 -1
  294. package/dist/core/guards/apikey.guard.js +0 -11
  295. package/dist/core/guards/apikey.guard.js.map +0 -1
  296. package/dist/core/guards/guard.interface.d.ts +0 -18
  297. package/dist/core/guards/guard.interface.d.ts.map +0 -1
  298. package/dist/core/guards/guard.interface.js +0 -2
  299. package/dist/core/guards/guard.interface.js.map +0 -1
  300. package/dist/core/guards/jwt.guard.d.ts +0 -18
  301. package/dist/core/guards/jwt.guard.d.ts.map +0 -1
  302. package/dist/core/guards/jwt.guard.js +0 -2
  303. package/dist/core/guards/jwt.guard.js.map +0 -1
  304. package/dist/core/guards/oauth.guard.d.ts +0 -35
  305. package/dist/core/guards/oauth.guard.d.ts.map +0 -1
  306. package/dist/core/guards/oauth.guard.js +0 -2
  307. package/dist/core/guards/oauth.guard.js.map +0 -1
  308. package/dist/core/guards/use-guards.decorator.d.ts +0 -25
  309. package/dist/core/guards/use-guards.decorator.d.ts.map +0 -1
  310. package/dist/core/guards/use-guards.decorator.js +0 -32
  311. package/dist/core/guards/use-guards.decorator.js.map +0 -1
  312. package/dist/core/health/__tests__/health.test.d.ts +0 -2
  313. package/dist/core/health/__tests__/health.test.d.ts.map +0 -1
  314. package/dist/core/health/__tests__/health.test.js +0 -31
  315. package/dist/core/health/__tests__/health.test.js.map +0 -1
  316. package/dist/core/health/health-checks.resource.d.ts +0 -14
  317. package/dist/core/health/health-checks.resource.d.ts.map +0 -1
  318. package/dist/core/health/health-checks.resource.js +0 -29
  319. package/dist/core/health/health-checks.resource.js.map +0 -1
  320. package/dist/core/index.d.ts +0 -57
  321. package/dist/core/index.d.ts.map +0 -1
  322. package/dist/core/index.js +0 -59
  323. package/dist/core/index.js.map +0 -1
  324. package/dist/core/interceptors/__tests__/interceptors.test.d.ts +0 -2
  325. package/dist/core/interceptors/__tests__/interceptors.test.d.ts.map +0 -1
  326. package/dist/core/interceptors/__tests__/interceptors.test.js +0 -52
  327. package/dist/core/interceptors/__tests__/interceptors.test.js.map +0 -1
  328. package/dist/core/interceptors/interceptor.decorator.d.ts +0 -37
  329. package/dist/core/interceptors/interceptor.decorator.d.ts.map +0 -1
  330. package/dist/core/interceptors/interceptor.decorator.js +0 -51
  331. package/dist/core/interceptors/interceptor.decorator.js.map +0 -1
  332. package/dist/core/interceptors/interceptor.interface.d.ts +0 -31
  333. package/dist/core/interceptors/interceptor.interface.d.ts.map +0 -1
  334. package/dist/core/interceptors/interceptor.interface.js +0 -2
  335. package/dist/core/interceptors/interceptor.interface.js.map +0 -1
  336. package/dist/core/jwt-module.d.ts +0 -51
  337. package/dist/core/jwt-module.d.ts.map +0 -1
  338. package/dist/core/jwt-module.js +0 -52
  339. package/dist/core/jwt-module.js.map +0 -1
  340. package/dist/core/logger.d.ts +0 -18
  341. package/dist/core/logger.d.ts.map +0 -1
  342. package/dist/core/logger.js +0 -53
  343. package/dist/core/logger.js.map +0 -1
  344. package/dist/core/middleware/__tests__/middleware.test.d.ts +0 -2
  345. package/dist/core/middleware/__tests__/middleware.test.d.ts.map +0 -1
  346. package/dist/core/middleware/__tests__/middleware.test.js +0 -105
  347. package/dist/core/middleware/__tests__/middleware.test.js.map +0 -1
  348. package/dist/core/middleware/middleware.decorator.d.ts +0 -39
  349. package/dist/core/middleware/middleware.decorator.d.ts.map +0 -1
  350. package/dist/core/middleware/middleware.decorator.js +0 -53
  351. package/dist/core/middleware/middleware.decorator.js.map +0 -1
  352. package/dist/core/middleware/middleware.interface.d.ts +0 -29
  353. package/dist/core/middleware/middleware.interface.d.ts.map +0 -1
  354. package/dist/core/middleware/middleware.interface.js +0 -2
  355. package/dist/core/middleware/middleware.interface.js.map +0 -1
  356. package/dist/core/module.d.ts +0 -93
  357. package/dist/core/module.d.ts.map +0 -1
  358. package/dist/core/module.js +0 -87
  359. package/dist/core/module.js.map +0 -1
  360. package/dist/core/oauth-module.d.ts +0 -123
  361. package/dist/core/oauth-module.d.ts.map +0 -1
  362. package/dist/core/oauth-module.js +0 -324
  363. package/dist/core/oauth-module.js.map +0 -1
  364. package/dist/core/pipes/__tests__/pipes.test.d.ts +0 -2
  365. package/dist/core/pipes/__tests__/pipes.test.d.ts.map +0 -1
  366. package/dist/core/pipes/__tests__/pipes.test.js +0 -164
  367. package/dist/core/pipes/__tests__/pipes.test.js.map +0 -1
  368. package/dist/core/pipes/pipe.decorator.d.ts +0 -64
  369. package/dist/core/pipes/pipe.decorator.d.ts.map +0 -1
  370. package/dist/core/pipes/pipe.decorator.js +0 -85
  371. package/dist/core/pipes/pipe.decorator.js.map +0 -1
  372. package/dist/core/pipes/pipe.interface.d.ts +0 -41
  373. package/dist/core/pipes/pipe.interface.d.ts.map +0 -1
  374. package/dist/core/pipes/pipe.interface.js +0 -2
  375. package/dist/core/pipes/pipe.interface.js.map +0 -1
  376. package/dist/core/prompt.d.ts +0 -46
  377. package/dist/core/prompt.d.ts.map +0 -1
  378. package/dist/core/prompt.js +0 -76
  379. package/dist/core/prompt.js.map +0 -1
  380. package/dist/core/resource.d.ts +0 -47
  381. package/dist/core/resource.d.ts.map +0 -1
  382. package/dist/core/resource.js +0 -90
  383. package/dist/core/resource.js.map +0 -1
  384. package/dist/core/server.d.ts +0 -129
  385. package/dist/core/server.d.ts.map +0 -1
  386. package/dist/core/server.js +0 -617
  387. package/dist/core/server.js.map +0 -1
  388. package/dist/core/tool.d.ts +0 -108
  389. package/dist/core/tool.d.ts.map +0 -1
  390. package/dist/core/tool.js +0 -241
  391. package/dist/core/tool.js.map +0 -1
  392. package/dist/core/transports/__tests__/transports.test.d.ts +0 -2
  393. package/dist/core/transports/__tests__/transports.test.d.ts.map +0 -1
  394. package/dist/core/transports/__tests__/transports.test.js +0 -249
  395. package/dist/core/transports/__tests__/transports.test.js.map +0 -1
  396. package/dist/core/transports/discovery-http-server.d.ts +0 -19
  397. package/dist/core/transports/discovery-http-server.d.ts.map +0 -1
  398. package/dist/core/transports/discovery-http-server.js +0 -54
  399. package/dist/core/transports/discovery-http-server.js.map +0 -1
  400. package/dist/core/transports/http-server.d.ts +0 -108
  401. package/dist/core/transports/http-server.d.ts.map +0 -1
  402. package/dist/core/transports/http-server.js +0 -293
  403. package/dist/core/transports/http-server.js.map +0 -1
  404. package/dist/core/transports/streamable-http.d.ts +0 -177
  405. package/dist/core/transports/streamable-http.d.ts.map +0 -1
  406. package/dist/core/transports/streamable-http.js +0 -1287
  407. package/dist/core/transports/streamable-http.js.map +0 -1
  408. package/dist/core/types.d.ts +0 -195
  409. package/dist/core/types.d.ts.map +0 -1
  410. package/dist/core/types.js +0 -2
  411. package/dist/core/types.js.map +0 -1
  412. package/dist/core/widgets/__tests__/registry.test.d.ts +0 -2
  413. package/dist/core/widgets/__tests__/registry.test.d.ts.map +0 -1
  414. package/dist/core/widgets/__tests__/registry.test.js +0 -69
  415. package/dist/core/widgets/__tests__/registry.test.js.map +0 -1
  416. package/dist/core/widgets/widget-examples.resource.d.ts +0 -17
  417. package/dist/core/widgets/widget-examples.resource.d.ts.map +0 -1
  418. package/dist/core/widgets/widget-examples.resource.js +0 -28
  419. package/dist/core/widgets/widget-examples.resource.js.map +0 -1
  420. package/dist/core/widgets/widget-registry.d.ts +0 -56
  421. package/dist/core/widgets/widget-registry.d.ts.map +0 -1
  422. package/dist/core/widgets/widget-registry.js +0 -75
  423. package/dist/core/widgets/widget-registry.js.map +0 -1
  424. package/dist/testing/__tests__/testing.test.d.ts +0 -2
  425. package/dist/testing/__tests__/testing.test.d.ts.map +0 -1
  426. package/dist/testing/__tests__/testing.test.js +0 -167
  427. package/dist/testing/__tests__/testing.test.js.map +0 -1
  428. package/dist/testing/index.d.ts +0 -103
  429. package/dist/testing/index.d.ts.map +0 -1
  430. package/dist/testing/index.js +0 -161
  431. package/dist/testing/index.js.map +0 -1
  432. package/dist/ui-next/__tests__/ui-next.test.d.ts +0 -2
  433. package/dist/ui-next/__tests__/ui-next.test.d.ts.map +0 -1
  434. package/dist/ui-next/__tests__/ui-next.test.js +0 -74
  435. package/dist/ui-next/__tests__/ui-next.test.js.map +0 -1
  436. package/dist/ui-next/index.d.ts +0 -31
  437. package/dist/ui-next/index.d.ts.map +0 -1
  438. package/dist/ui-next/index.js +0 -687
  439. package/dist/ui-next/index.js.map +0 -1
package/LICENSE CHANGED
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2025 Abhishek Pandit
189
+ Copyright 2025 Nitrostack Inc
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
package/README.md CHANGED
@@ -1,178 +1,83 @@
1
1
  # NitroStack ⚡
2
2
 
3
- Build productionready MCP (Model Context Protocol) servers with TypeScript — fast.
3
+ **The enterprise-grade framework for building production-ready MCP servers with TypeScript.**
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/nitrostack.svg)](https://www.npmjs.com/package/nitrostack)
6
- [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
7
- [![Website](https://img.shields.io/badge/Website-nitrostack.vercel.app-brightgreen)](https://nitrostack.ai/)
8
- [![Docs](https://img.shields.io/badge/Docs-nitrostack--docs.vercel.app-blue)](https://docs.nitrostack.ai/)
5
+ [![Website](https://img.shields.io/badge/Website-nitrostack.ai-blue?style=for-the-badge&logo=none)](https://nitrostack.ai)
6
+ [![Docs](https://img.shields.io/badge/Docs-docs.nitrostack.ai-brightgreen?style=for-the-badge&logo=none)](https://docs.nitrostack.ai)
7
+ [![Blog](https://img.shields.io/badge/Blog-blog.nitrostack.ai-orange?style=for-the-badge&logo=none)](https://blog.nitrostack.ai)
8
+ [![License](https://img.shields.io/badge/License-Apache%202.0-red?style=for-the-badge&logo=none)](https://opensource.org/licenses/Apache-2.0)
9
9
 
10
- NitroStack is a batteries‑included toolkit for creating real, shippable MCP servers. It combines a clean, declarative programming model with a built‑in visual Studio, authentication modules, widget UI system, hot‑reload dev workflow, and production‑grade tooling all focused on one goal: let you build great MCP servers with minimal ceremony.
10
+ NitroStack is a powerful, decoupled toolkit designed to let you build, test, and ship Model Context Protocol (MCP) servers with minimal ceremony and maximum reliability.
11
11
 
12
- ## Why NitroStack
13
-
14
- Developers typically struggle with:
15
- - **Boilerplate and wiring**: scattered logic, ad‑hoc conventions, manual glue code
16
- - **Auth and security**: JWT, OAuth 2.1 (PKCE), API keys, token validation, scopes, multi‑auth
17
- - **Testing UX**: no clean way to visually exercise tools, resources, prompts
18
- - **Performance & reliability**: caching, rate limiting, predictable runtime pipeline
19
- - **DX & iteration**: hot reload, consistent CLIs, starter templates, type generation
20
-
21
- NitroStack solves these pain points out of the box.
22
-
23
- ## What you get (inbuilt capabilities)
12
+ ---
24
13
 
25
- - **Declarative building blocks**
26
- - `@Tool`, `@Widget`, `@Resource`, `@Prompt`, `@Module`
27
- - `@UseGuards`, `@UseMiddleware`, `@UseInterceptors`, `@UsePipes`, `@UseFilters`
28
- - **Authentication modules (drop‑in)**
29
- - `JWTModule` (simple JWT)
30
- - `OAuthModule` (OAuth 2.1 with PKCE, discovery, scopes, dual transport ready)
31
- - `ApiKeyModule` (service‑to‑service keys)
32
- - Multi‑auth patterns (either/both) supported via guards
33
- - **Studio (built‑in visual test bench)**
34
- - Run and debug tools, browse resources, test prompts, preview widgets
35
- - AI chat integration and auto‑form generation from schemas
36
- - **Widgets UI system**
37
- - Attach Next.js pages to tools with `@Widget` for instant interactive demos
38
- - **Runtime pipeline**
39
- - Middleware, Interceptors, Pipes, Exception Filters for predictable request flow
40
- - **Performance controls**
41
- - `@Cache()` and `@RateLimit()` decorators
42
- - **Type safety**
43
- - CLI generates types from tool definitions for use across code and widgets
44
- - **Dev experience**
45
- - Hot reload, templates, code generators, **dual transport (STDIO + HTTP)** for flexibility
14
+ ## Ecosystem Structure
46
15
 
47
- ## Requirements
16
+ NitroStack is modular. Install only what you need:
48
17
 
49
- - **Node.js**: >= 18.0.0 (LTS versions recommended)
50
- - **npm**: >= 9.0.0
18
+ | Package | Purpose | Installation |
19
+ |:---|:---|:---|
20
+ | **[`@nitrostack/core`](./packages/core)** | **The Framework** - Decorators, dependency injection, and server logic. | `npm install @nitrostack/core` |
21
+ | **[`@nitrostack/cli`](./packages/cli)** | **The Tooling** - Scaffolding, dev server, and code generators. | `npm install -g @nitrostack/cli` |
22
+ | **[`@nitrostack/widgets`](./packages/widgets)** | **The UI** - React SDK for building interactive tool outputs. | `npm install @nitrostack/widgets` |
51
23
 
52
- ✅ Tested on Node.js 18.x, 20.x, and 22.x
24
+ ---
53
25
 
26
+ ## 🚀 Quick Start in 30 Seconds
54
27
 
55
- ## Install
28
+ The fastest way to get started is by using the CLI to scaffold a new project.
56
29
 
30
+ ### 1. Install Global CLI
57
31
  ```bash
58
- npm i -g nitrostack
32
+ npm install -g @nitrostack/cli
59
33
  ```
60
34
 
61
- Or use once without global install:
62
-
35
+ ### 2. Scaffold Your Server
63
36
  ```bash
64
- npx nitrostack init my-mcp-server
37
+ nitrostack-cli init my-server
65
38
  ```
66
39
 
67
- ## Quick Start (3 steps)
40
+ ![nitrocli init](assets/gif/nitrocli.gif)
68
41
 
69
- 1) Initialize a project
42
+ ### 3. Start Development
70
43
  ```bash
71
- nitrostack init my-server --template typescript-starter
72
44
  cd my-server
73
45
  npm install
46
+ npm run dev
74
47
  ```
75
48
 
76
- 2) Start the dev environment
77
- ```bash
78
- nitrostack dev
79
- ```
80
- Studio opens at `http://localhost:3000` (widgets at `http://localhost:3001`).
81
-
82
- 3) Add your first tool
83
- ```ts
84
- // src/modules/hello/hello.tools.ts
85
- import { Tool, z, ExecutionContext, Module } from 'nitrostack';
86
-
87
- export class HelloTools {
88
- @Tool({
89
- name: 'say_hello',
90
- description: 'Greets a user',
91
- inputSchema: z.object({ name: z.string() })
92
- })
93
- async sayHello(input: { name: string }, ctx: ExecutionContext) {
94
- return { message: `Hello, ${input.name}!` };
95
- }
96
- }
97
-
98
- @Module({ name: 'hello', controllers: [HelloTools] })
99
- export class HelloModule {}
100
- ```
101
- Register the module in `app.module.ts`, save — and call the tool in Studio.
102
-
103
- ## Authentication (inbuilt)
49
+ ---
104
50
 
105
- - **JWTModule**: Simple and fast token auth for user/session flows
106
- - **OAuthModule**: Full OAuth 2.1 with PKCE, discovery endpoints, scopes, and dual‑transport support (STDIO for MCP + HTTP for OAuth metadata)
107
- - **ApiKeyModule**: Issue and validate API keys for services and automations
108
- - **Multi‑auth**: compose guards so a tool can require one or multiple schemes
51
+ ## 🎨 NitroStudio
109
52
 
110
- ## Studio (visual workflow)
53
+ NitroStudio is a desktop application for testing and debugging MCP servers. Simply open your project in the Studio—**it handles running the development server for you internally.**
111
54
 
112
- - AI chat to drive tools
113
- - Auto‑generated forms from schemas
114
- - Resource browser & prompt explorer
115
- - Widget previews connected to live tool outputs
55
+ ![NitroStudio](assets/gif/nitrostudio-main.gif)
116
56
 
117
- ## CLI highlights
57
+ **[Download NitroStudio](https://nitrostack.ai/studio)**
118
58
 
119
- ```bash
120
- # Create a project from templates
121
- nitrostack init <name> --template typescript-starter
122
- nitrostack init <name> --template typescript-oauth
123
-
124
- # Dev / Build
125
- nitrostack dev
126
- nitrostack build
127
-
128
- # Generators
129
- nitrostack generate module <name>
130
- nitrostack generate tool <name> --module <module>
131
- nitrostack generate guard <name>
132
- nitrostack generate middleware <name>
133
- nitrostack generate interceptor <name>
134
- nitrostack generate pipe <name>
135
- nitrostack generate filter <name>
136
-
137
- # Types from tools
138
- nitrostack generate types --output src/types/generated-tools.ts
139
- ```
59
+ - **Real-time testing**: Execute tools and inspect request/response payloads.
140
60
 
141
- ## Templates
61
+ ![Real-time testing](assets/gif/nitrostudio-testing.gif)
142
62
 
143
- - `typescript-starter` clean starter with widgets and example tools
144
- - `typescript-auth` — JWT auth flows and end‑to‑end examples
145
- - `typescript-auth-api-key` — API key auth patterns and multi‑auth
146
- - `typescript-oauth` — OAuth 2.1 (PKCE, discovery, scopes) with dual transport
63
+ - **AI Chat**: Interact with your MCP server using a built-in AI assistant.
147
64
 
148
- Use any template with `nitrostack init` and start iterating immediately.
65
+ ![AI Chat](assets/gif/nitrostudio-chat.gif)
149
66
 
150
- ## Production
67
+ - **Widget Preview**: Instantly visualize your interactive UI components.
151
68
 
152
- ```bash
153
- npm run build
154
- NODE_ENV=production node dist/index.js
155
- ```
156
-
157
- Consider enabling caching, rate limits, structured logging, and health checks for production. See the docs for deployment recipes and checklists.
158
-
159
- ## Documentation
160
-
161
- Full docs: `https://docs.nitrostack.ai/`
162
- - Getting started, SDK guides, decorators, CLI reference, templates, deployment
69
+ ---
163
70
 
164
- ## License
71
+ ## 📖 Learn More
165
72
 
166
- Apache License 2.0 see `LICENSE`. © 2025 Abhishek Pandit
73
+ - **[Official Documentation](https://docs.nitrostack.ai)** - Deep dives into server concepts, decorators, and implementation guides.
74
+ - **[Tutorials & Blog](https://blog.nitrostack.ai)** - Step-by-step guides for complex integrations and architectural patterns.
75
+ - **[Community & Support](https://nitrostack.ai/support)** - Get help from the team and other developers.
167
76
 
168
- ## Links
77
+ ## 🤝 Contributing
169
78
 
170
- - Website: `https://nitrostack.ai/`
171
- - Docs: `https://docs.nitrostack.ai/`
172
- - GitHub: `https://github.com/abhishekpanditofficial/nitrostack`
173
- - npm: `https://www.npmjs.com/package/nitrostack`
174
- - Model Context Protocol: `https://modelcontextprotocol.io`
79
+ We love contributions! Whether it's a bug fix, new feature, or documentation improvement, please check out our [Contributing Guide](./CONTRIBUTING.md) and [Architecture Overview](./ARCHITECTURE.md) to get started.
175
80
 
176
81
  ---
177
82
 
178
- Build boldly. Ship MCP servers people love. ⚡
83
+ Built with by the **NitroStack Team**.
Binary file
Binary file
Binary file
package/package.json CHANGED
@@ -1,36 +1,18 @@
1
1
  {
2
2
  "name": "nitrostack",
3
- "version": "1.0.83",
4
- "description": "NitroStack - Build powerful MCP servers with TypeScript",
3
+ "version": "1.0.85",
4
+ "description": "NitroStack - Enterprise-grade MCP server framework. Decoupled into @nitrostack/core, @nitrostack/cli, and @nitrostack/widgets.",
5
5
  "type": "module",
6
- "main": "dist/core/index.js",
7
- "types": "dist/core/index.d.ts",
8
- "exports": {
9
- ".": {
10
- "import": "./dist/core/index.js",
11
- "require": "./dist/core/index.js",
12
- "types": "./dist/core/index.d.ts"
13
- },
14
- "./testing": {
15
- "import": "./dist/testing/index.js",
16
- "require": "./dist/testing/index.js",
17
- "types": "./dist/testing/index.d.ts"
18
- }
19
- },
20
6
  "files": [
21
- "dist/",
22
7
  "README.md",
23
- "LICENSE"
8
+ "LICENSE",
9
+ "assets"
24
10
  ],
25
11
  "scripts": {
26
- "build": "tsc",
27
- "build:all": "npm run build && cd packages/widgets && npm run build && cd ../cli && npm run build",
28
- "dev": "tsc --watch",
29
- "test": "NODE_OPTIONS=--experimental-vm-modules jest",
30
- "test:coverage": "NODE_OPTIONS=--experimental-vm-modules jest --coverage",
31
- "link:all": "npm run build:all && npm link && cd packages/widgets && npm link && cd ../cli && npm link",
32
- "unlink:all": "npm unlink && cd packages/widgets && npm unlink && cd ../cli && npm unlink",
33
- "prepublishOnly": "npm run build"
12
+ "build": "cd packages/core && npm run build && cd ../widgets && npm run build && cd ../cli && npm run build",
13
+ "test": "cd packages/core && npm run test",
14
+ "test:coverage": "cd packages/core && npm run test:coverage",
15
+ "link:all": "npm run build && cd packages/core && npm link && cd ../widgets && npm link && cd ../cli && npm link"
34
16
  },
35
17
  "keywords": [
36
18
  "mcp",
@@ -40,28 +22,11 @@
40
22
  "tools",
41
23
  "typescript",
42
24
  "server",
43
- "framework",
44
- "decorator",
45
- "nestjs-inspired"
25
+ "framework"
46
26
  ],
47
- "author": "Abhishek Pandit <abhishekpanditofficial@gmail.com>",
27
+ "author": "Nitrostack Inc <hello@nitrostack.ai>",
48
28
  "license": "Apache-2.0",
49
- "dependencies": {
50
- "@modelcontextprotocol/sdk": "^1.0.4",
51
- "bcryptjs": "^2.4.3",
52
- "better-sqlite3": "^11.8.1",
53
- "cors": "^2.8.5",
54
- "dotenv": "^17.2.3",
55
- "express": "^4.21.2",
56
- "jose": "^6.1.0",
57
- "jsonwebtoken": "^9.0.2",
58
- "reflect-metadata": "^0.2.1",
59
- "uuid": "^11.0.5",
60
- "winston": "^3.17.0",
61
- "ws": "^8.18.3",
62
- "zod": "^3.24.1",
63
- "zod-to-json-schema": "^3.24.6"
64
- },
29
+ "dependencies": {},
65
30
  "devDependencies": {
66
31
  "@types/bcryptjs": "^2.4.6",
67
32
  "@types/better-sqlite3": "^7.6.12",
@@ -82,10 +47,10 @@
82
47
  },
83
48
  "repository": {
84
49
  "type": "git",
85
- "url": "https://github.com/abhishekpanditofficial/nitrostack.git"
50
+ "url": "https://github.com/nitrocloudofficial/nitrostack.git"
86
51
  },
87
52
  "bugs": {
88
- "url": "https://github.com/abhishekpanditofficial/nitrostack/issues"
53
+ "url": "https://github.com/nitrocloudofficial/nitrostack/issues"
89
54
  },
90
- "homepage": "https://nitrostack.vercel.app"
91
- }
55
+ "homepage": "https://nitrostack.ai"
56
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=api-key.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key.test.d.ts","sourceRoot":"","sources":["../../../src/auth/__tests__/api-key.test.ts"],"names":[],"mappings":""}
@@ -1,156 +0,0 @@
1
- import { jest, describe, it, expect, beforeEach } from '@jest/globals';
2
- import { createAPIKeyAuth, generateAPIKey, hashAPIKey, isValidAPIKeyFormat, validateAPIKeyWithMetadata, generateAPIKeyWithMetadata } from '../api-key.js';
3
- describe('API Key Auth', () => {
4
- describe('Utilities', () => {
5
- it('should generate valid keys', () => {
6
- const key = generateAPIKey();
7
- expect(key.startsWith('sk_')).toBe(true);
8
- expect(isValidAPIKeyFormat(key)).toBe(true);
9
- });
10
- it('should hash keys consistently', () => {
11
- const key = 'test-key';
12
- const hash1 = hashAPIKey(key);
13
- const hash2 = hashAPIKey(key);
14
- expect(hash1).toBe(hash2);
15
- expect(hash1).not.toBe(key);
16
- });
17
- it('should validate format', () => {
18
- expect(isValidAPIKeyFormat('sk_12345678901234567890123456789012', 'sk')).toBe(true);
19
- expect(isValidAPIKeyFormat('invalid')).toBe(false);
20
- expect(isValidAPIKeyFormat('k'.repeat(32))).toBe(true);
21
- });
22
- it('should validate metadata', () => {
23
- const metadata = {
24
- hashed: 'hash',
25
- name: 'test',
26
- createdAt: new Date(),
27
- scopes: ['read']
28
- };
29
- const result = validateAPIKeyWithMetadata('key', metadata, ['read']);
30
- expect(result.valid).toBe(true);
31
- const failResult = validateAPIKeyWithMetadata('key', metadata, ['write']);
32
- expect(failResult.valid).toBe(false);
33
- const starredResult = validateAPIKeyWithMetadata('key', { ...metadata, scopes: ['*'] }, ['any']);
34
- expect(starredResult.valid).toBe(true);
35
- });
36
- });
37
- describe('Middleware', () => {
38
- let req;
39
- let res;
40
- let next;
41
- beforeEach(() => {
42
- req = { headers: {}, query: {} };
43
- res = {
44
- status: jest.fn().mockReturnThis(),
45
- json: jest.fn()
46
- };
47
- next = jest.fn();
48
- });
49
- it('should authenticate with valid key in header', async () => {
50
- const middleware = createAPIKeyAuth({ keys: ['valid-key'] });
51
- req.headers['x-api-key'] = 'valid-key';
52
- await middleware(req, res, next);
53
- expect(next).toHaveBeenCalled();
54
- expect(req.auth.authenticated).toBe(true);
55
- });
56
- it('should reject missing key', async () => {
57
- const middleware = createAPIKeyAuth({ keys: ['valid-key'], allowQueryParam: true });
58
- await middleware(req, res, next);
59
- expect(res.status).toHaveBeenCalledWith(401);
60
- expect(res.json).toHaveBeenCalledWith(expect.objectContaining({ message: expect.stringContaining('query parameter') }));
61
- const middlewareNoQuery = createAPIKeyAuth({ keys: ['k'] });
62
- await middlewareNoQuery(req, res, next);
63
- expect(res.json).toHaveBeenCalledWith(expect.objectContaining({ message: expect.not.stringContaining('query parameter') }));
64
- });
65
- it('should reject invalid key', async () => {
66
- const middleware = createAPIKeyAuth({ keys: ['valid-key'] });
67
- req.headers['x-api-key'] = 'invalid-key';
68
- await middleware(req, res, next);
69
- expect(res.status).toHaveBeenCalledWith(401);
70
- });
71
- it('should handle runtime errors', async () => {
72
- const middleware = createAPIKeyAuth({
73
- keys: ['k'],
74
- customValidation: () => { throw new Error('Runtime'); }
75
- });
76
- req.headers['x-api-key'] = 'k';
77
- await middleware(req, res, next);
78
- expect(res.status).toHaveBeenCalledWith(500);
79
- });
80
- it('should support hashed keys', async () => {
81
- const key = 'my-secret-key';
82
- const hashed = hashAPIKey(key);
83
- const middleware = createAPIKeyAuth({ keys: [hashed], hashed: true });
84
- req.headers['x-api-key'] = key;
85
- await middleware(req, res, next);
86
- expect(next).toHaveBeenCalled();
87
- });
88
- });
89
- describe('Extended Features', () => {
90
- let req;
91
- let res;
92
- let next;
93
- beforeEach(() => {
94
- req = { headers: {}, query: {} };
95
- res = {
96
- status: jest.fn().mockReturnThis(),
97
- json: jest.fn()
98
- };
99
- next = jest.fn();
100
- });
101
- it('should accept query parameters if configured', async () => {
102
- const middleware = createAPIKeyAuth({
103
- keys: ['k'],
104
- allowQueryParam: true
105
- });
106
- req.query['api_key'] = 'k';
107
- await middleware(req, res, next);
108
- expect(next).toHaveBeenCalled();
109
- });
110
- it('should use custom query param name', async () => {
111
- const middleware = createAPIKeyAuth({
112
- keys: ['k'],
113
- allowQueryParam: true,
114
- queryParamName: 'token'
115
- });
116
- req.query['token'] = 'k';
117
- await middleware(req, res, next);
118
- expect(next).toHaveBeenCalled();
119
- });
120
- it('should use custom validation', async () => {
121
- const middleware = createAPIKeyAuth({
122
- keys: ['k'],
123
- customValidation: async (key) => key === 'k'
124
- });
125
- req.headers['x-api-key'] = 'k';
126
- await middleware(req, res, next);
127
- expect(next).toHaveBeenCalled();
128
- middleware(req, res.status(0), next); // Reset mock? No, just call again.
129
- req.headers['x-api-key'] = 'wrong';
130
- await middleware(req, res, next);
131
- expect(res.status).toHaveBeenCalledWith(401);
132
- });
133
- it('should throw error if config invalid', () => {
134
- expect(() => createAPIKeyAuth({ keys: [] })).toThrow();
135
- });
136
- it('should generate metadata', () => {
137
- const meta = generateAPIKeyWithMetadata({
138
- name: 'test',
139
- prefix: 'test',
140
- expiresIn: 30,
141
- scopes: ['read']
142
- });
143
- expect(meta.key).toMatch(/^test_/);
144
- expect(meta.expiresAt).toBeDefined();
145
- expect(meta.scopes).toContain('read');
146
- });
147
- it('should validate expiration', () => {
148
- const entry = {
149
- name: 't', hashed: 'h', createdAt: new Date(),
150
- expiresAt: new Date(Date.now() - 1000) // expired
151
- };
152
- expect(validateAPIKeyWithMetadata('k', entry).valid).toBe(false);
153
- });
154
- });
155
- });
156
- //# sourceMappingURL=api-key.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-key.test.js","sourceRoot":"","sources":["../../../src/auth/__tests__/api-key.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../../src/auth/__tests__/client.test.ts"],"names":[],"mappings":""}