@lakutata/entrypoint 3.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/LICENSE +23 -0
  2. package/README.md +183 -0
  3. package/THIRD_PARTY_NOTICES.md +206 -0
  4. package/dist/cjs/Entrypoint.d.ts +868 -0
  5. package/dist/cjs/Entrypoint.js +998 -0
  6. package/dist/cjs/adapter/commander/CommanderCLIEntrypoint.d.ts +192 -0
  7. package/dist/cjs/adapter/commander/CommanderCLIEntrypoint.js +439 -0
  8. package/dist/cjs/adapter/commander/Prompt.d.ts +22 -0
  9. package/dist/cjs/adapter/commander/Prompt.js +164 -0
  10. package/dist/cjs/adapter/commander/Width.d.ts +12 -0
  11. package/dist/cjs/adapter/commander/Width.js +67 -0
  12. package/dist/cjs/adapter/electron/ElectronIPCServiceEntrypoint.d.ts +203 -0
  13. package/dist/cjs/adapter/electron/ElectronIPCServiceEntrypoint.js +249 -0
  14. package/dist/cjs/adapter/express/ExpressHTTPEntrypoint.d.ts +172 -0
  15. package/dist/cjs/adapter/express/ExpressHTTPEntrypoint.js +301 -0
  16. package/dist/cjs/adapter/express/Responders.d.ts +89 -0
  17. package/dist/cjs/adapter/express/Responders.js +71 -0
  18. package/dist/cjs/adapter/express/StaticUI.d.ts +83 -0
  19. package/dist/cjs/adapter/express/StaticUI.js +104 -0
  20. package/dist/cjs/adapter/fastify/FastifyHTTPEntrypoint.d.ts +156 -0
  21. package/dist/cjs/adapter/fastify/FastifyHTTPEntrypoint.js +339 -0
  22. package/dist/cjs/adapter/fastify/Responders.d.ts +88 -0
  23. package/dist/cjs/adapter/fastify/Responders.js +77 -0
  24. package/dist/cjs/adapter/http/HTTPServiceEntrypoint.d.ts +117 -0
  25. package/dist/cjs/adapter/http/HTTPServiceEntrypoint.js +257 -0
  26. package/dist/cjs/adapter/jsonrpc/JSONRPCProtocol.d.ts +194 -0
  27. package/dist/cjs/adapter/jsonrpc/JSONRPCProtocol.js +187 -0
  28. package/dist/cjs/adapter/jsonrpc/JSONRPCServiceEntrypoint.d.ts +154 -0
  29. package/dist/cjs/adapter/jsonrpc/JSONRPCServiceEntrypoint.js +397 -0
  30. package/dist/cjs/adapter/schedule/ScheduleEntrypoint.d.ts +86 -0
  31. package/dist/cjs/adapter/schedule/ScheduleEntrypoint.js +275 -0
  32. package/dist/cjs/adapter/socket.io/SocketIOServiceEntrypoint.d.ts +138 -0
  33. package/dist/cjs/adapter/socket.io/SocketIOServiceEntrypoint.js +216 -0
  34. package/dist/cjs/channel/BuiltinChannels.d.ts +18 -0
  35. package/dist/cjs/channel/BuiltinChannels.js +128 -0
  36. package/dist/cjs/channel/Channel.d.ts +196 -0
  37. package/dist/cjs/channel/Channel.js +106 -0
  38. package/dist/cjs/channel/EntrypointAdapter.d.ts +195 -0
  39. package/dist/cjs/channel/EntrypointAdapter.js +43 -0
  40. package/dist/cjs/context/BaseContext.d.ts +75 -0
  41. package/dist/cjs/context/BaseContext.js +90 -0
  42. package/dist/cjs/context/CLIContext.d.ts +38 -0
  43. package/dist/cjs/context/CLIContext.js +53 -0
  44. package/dist/cjs/context/HTTPContext.d.ts +52 -0
  45. package/dist/cjs/context/HTTPContext.js +78 -0
  46. package/dist/cjs/context/ScheduleContext.d.ts +47 -0
  47. package/dist/cjs/context/ScheduleContext.js +65 -0
  48. package/dist/cjs/context/ServiceContext.d.ts +47 -0
  49. package/dist/cjs/context/ServiceContext.js +62 -0
  50. package/dist/cjs/decorators/CLIAction.d.ts +120 -0
  51. package/dist/cjs/decorators/CLIAction.js +13 -0
  52. package/dist/cjs/decorators/HTTPAction.d.ts +178 -0
  53. package/dist/cjs/decorators/HTTPAction.js +14 -0
  54. package/dist/cjs/decorators/Prefix.d.ts +44 -0
  55. package/dist/cjs/decorators/Prefix.js +48 -0
  56. package/dist/cjs/decorators/Schedule.d.ts +120 -0
  57. package/dist/cjs/decorators/Schedule.js +64 -0
  58. package/dist/cjs/decorators/ServiceAction.d.ts +116 -0
  59. package/dist/cjs/decorators/ServiceAction.js +12 -0
  60. package/dist/cjs/decorators/UseMiddlewares.d.ts +52 -0
  61. package/dist/cjs/decorators/UseMiddlewares.js +58 -0
  62. package/dist/cjs/decorators/http/DELETE.d.ts +87 -0
  63. package/dist/cjs/decorators/http/DELETE.js +7 -0
  64. package/dist/cjs/decorators/http/GET.d.ts +89 -0
  65. package/dist/cjs/decorators/http/GET.js +7 -0
  66. package/dist/cjs/decorators/http/HEAD.d.ts +84 -0
  67. package/dist/cjs/decorators/http/HEAD.js +7 -0
  68. package/dist/cjs/decorators/http/OPTIONS.d.ts +80 -0
  69. package/dist/cjs/decorators/http/OPTIONS.js +7 -0
  70. package/dist/cjs/decorators/http/PATCH.d.ts +90 -0
  71. package/dist/cjs/decorators/http/PATCH.js +7 -0
  72. package/dist/cjs/decorators/http/POST.d.ts +91 -0
  73. package/dist/cjs/decorators/http/POST.js +7 -0
  74. package/dist/cjs/decorators/http/PUT.d.ts +92 -0
  75. package/dist/cjs/decorators/http/PUT.js +7 -0
  76. package/dist/cjs/exceptions/AccessDeniedException.d.ts +10 -0
  77. package/dist/cjs/exceptions/AccessDeniedException.js +17 -0
  78. package/dist/cjs/exceptions/ControllerActionNotFoundException.d.ts +9 -0
  79. package/dist/cjs/exceptions/ControllerActionNotFoundException.js +16 -0
  80. package/dist/cjs/exceptions/DuplicateActionNameException.d.ts +8 -0
  81. package/dist/cjs/exceptions/DuplicateActionNameException.js +15 -0
  82. package/dist/cjs/exceptions/EntrypointStoppedException.d.ts +9 -0
  83. package/dist/cjs/exceptions/EntrypointStoppedException.js +16 -0
  84. package/dist/cjs/exceptions/InvalidActionGroupException.d.ts +4 -0
  85. package/dist/cjs/exceptions/InvalidActionGroupException.js +11 -0
  86. package/dist/cjs/exceptions/InvalidChannelException.d.ts +8 -0
  87. package/dist/cjs/exceptions/InvalidChannelException.js +15 -0
  88. package/dist/cjs/exceptions/InvalidEntrypointAdapterException.d.ts +9 -0
  89. package/dist/cjs/exceptions/InvalidEntrypointAdapterException.js +16 -0
  90. package/dist/cjs/exceptions/InvalidMiddlewareException.d.ts +8 -0
  91. package/dist/cjs/exceptions/InvalidMiddlewareException.js +15 -0
  92. package/dist/cjs/exceptions/InvalidPrefixException.d.ts +8 -0
  93. package/dist/cjs/exceptions/InvalidPrefixException.js +15 -0
  94. package/dist/cjs/exceptions/MiddlewareNextCalledException.d.ts +8 -0
  95. package/dist/cjs/exceptions/MiddlewareNextCalledException.js +15 -0
  96. package/dist/cjs/exceptions/RouteNotFoundException.d.ts +9 -0
  97. package/dist/cjs/exceptions/RouteNotFoundException.js +16 -0
  98. package/dist/cjs/exceptions/ServiceInvokeException.d.ts +11 -0
  99. package/dist/cjs/exceptions/ServiceInvokeException.js +14 -0
  100. package/dist/cjs/exports/CTRLDecorators.d.ts +13 -0
  101. package/dist/cjs/exports/CTRLDecorators.js +38 -0
  102. package/dist/cjs/exports/Channel.d.ts +14 -0
  103. package/dist/cjs/exports/Channel.js +33 -0
  104. package/dist/cjs/exports/CommanderAdapter.d.ts +1 -0
  105. package/dist/cjs/exports/CommanderAdapter.js +8 -0
  106. package/dist/cjs/exports/ElectronAdapter.d.ts +1 -0
  107. package/dist/cjs/exports/ElectronAdapter.js +9 -0
  108. package/dist/cjs/exports/Entrypoint.d.ts +24 -0
  109. package/dist/cjs/exports/Entrypoint.js +55 -0
  110. package/dist/cjs/exports/ExpressAdapter.d.ts +4 -0
  111. package/dist/cjs/exports/ExpressAdapter.js +15 -0
  112. package/dist/cjs/exports/FastifyAdapter.d.ts +4 -0
  113. package/dist/cjs/exports/FastifyAdapter.js +14 -0
  114. package/dist/cjs/exports/JSONRPCAdapter.d.ts +2 -0
  115. package/dist/cjs/exports/JSONRPCAdapter.js +11 -0
  116. package/dist/cjs/exports/SocketIOAdapter.d.ts +1 -0
  117. package/dist/cjs/exports/SocketIOAdapter.js +9 -0
  118. package/dist/cjs/lib/AccessControl.d.ts +118 -0
  119. package/dist/cjs/lib/AccessControl.js +208 -0
  120. package/dist/cjs/lib/AccessControlRule.d.ts +91 -0
  121. package/dist/cjs/lib/AccessControlRule.js +76 -0
  122. package/dist/cjs/lib/ActionOptions.d.ts +67 -0
  123. package/dist/cjs/lib/ActionOptions.js +67 -0
  124. package/dist/cjs/lib/ActionResult.d.ts +28 -0
  125. package/dist/cjs/lib/ActionResult.js +28 -0
  126. package/dist/cjs/lib/ApplicationOf.d.ts +6 -0
  127. package/dist/cjs/lib/ApplicationOf.js +14 -0
  128. package/dist/cjs/lib/Controller.d.ts +59 -0
  129. package/dist/cjs/lib/Controller.js +64 -0
  130. package/dist/cjs/lib/ControllerEntrypoint.d.ts +168 -0
  131. package/dist/cjs/lib/ControllerEntrypoint.js +239 -0
  132. package/dist/cjs/lib/GetActionDTOAndOptions.d.ts +29 -0
  133. package/dist/cjs/lib/GetActionDTOAndOptions.js +49 -0
  134. package/dist/cjs/lib/HTTPErrors.d.ts +55 -0
  135. package/dist/cjs/lib/HTTPErrors.js +52 -0
  136. package/dist/cjs/lib/Middleware.d.ts +146 -0
  137. package/dist/cjs/lib/Middleware.js +144 -0
  138. package/dist/cjs/lib/Prefix.d.ts +98 -0
  139. package/dist/cjs/lib/Prefix.js +151 -0
  140. package/dist/cjs/lib/Result.d.ts +173 -0
  141. package/dist/cjs/lib/Result.js +153 -0
  142. package/dist/cjs/lib/ServiceResponseCodec.d.ts +82 -0
  143. package/dist/cjs/lib/ServiceResponseCodec.js +117 -0
  144. package/dist/cjs/lib/StringifyPattern.d.ts +7 -0
  145. package/dist/cjs/lib/StringifyPattern.js +58 -0
  146. package/dist/cjs/lib/UnsetValue.d.ts +12 -0
  147. package/dist/cjs/lib/UnsetValue.js +216 -0
  148. package/dist/cjs/lib/pattern/GlobPattern.d.ts +34 -0
  149. package/dist/cjs/lib/pattern/GlobPattern.js +68 -0
  150. package/dist/cjs/lib/pattern/PatternManager.d.ts +103 -0
  151. package/dist/cjs/lib/pattern/PatternManager.js +233 -0
  152. package/dist/cjs/lib/schedule/Cron.d.ts +56 -0
  153. package/dist/cjs/lib/schedule/Cron.js +282 -0
  154. package/dist/cjs/package.json +1 -0
  155. package/dist/cjs/types/CLIContextParams.d.ts +14 -0
  156. package/dist/cjs/types/CLIContextParams.js +2 -0
  157. package/dist/cjs/types/ErrorDescription.d.ts +14 -0
  158. package/dist/cjs/types/ErrorDescription.js +2 -0
  159. package/dist/cjs/types/HTTPContextParams.d.ts +27 -0
  160. package/dist/cjs/types/HTTPContextParams.js +2 -0
  161. package/dist/cjs/types/ScheduleContextParams.d.ts +21 -0
  162. package/dist/cjs/types/ScheduleContextParams.js +2 -0
  163. package/dist/cjs/types/ServiceContextParams.d.ts +16 -0
  164. package/dist/cjs/types/ServiceContextParams.js +2 -0
  165. package/dist/esm/Entrypoint.js +985 -0
  166. package/dist/esm/adapter/commander/CommanderCLIEntrypoint.js +433 -0
  167. package/dist/esm/adapter/commander/Prompt.js +127 -0
  168. package/dist/esm/adapter/commander/Width.js +63 -0
  169. package/dist/esm/adapter/electron/ElectronIPCServiceEntrypoint.js +212 -0
  170. package/dist/esm/adapter/express/ExpressHTTPEntrypoint.js +295 -0
  171. package/dist/esm/adapter/express/Responders.js +66 -0
  172. package/dist/esm/adapter/express/StaticUI.js +96 -0
  173. package/dist/esm/adapter/fastify/FastifyHTTPEntrypoint.js +333 -0
  174. package/dist/esm/adapter/fastify/Responders.js +73 -0
  175. package/dist/esm/adapter/http/HTTPServiceEntrypoint.js +253 -0
  176. package/dist/esm/adapter/jsonrpc/JSONRPCProtocol.js +182 -0
  177. package/dist/esm/adapter/jsonrpc/JSONRPCServiceEntrypoint.js +361 -0
  178. package/dist/esm/adapter/schedule/ScheduleEntrypoint.js +272 -0
  179. package/dist/esm/adapter/socket.io/SocketIOServiceEntrypoint.js +212 -0
  180. package/dist/esm/channel/BuiltinChannels.js +125 -0
  181. package/dist/esm/channel/Channel.js +100 -0
  182. package/dist/esm/channel/EntrypointAdapter.js +39 -0
  183. package/dist/esm/context/BaseContext.js +87 -0
  184. package/dist/esm/context/CLIContext.js +49 -0
  185. package/dist/esm/context/HTTPContext.js +74 -0
  186. package/dist/esm/context/ScheduleContext.js +61 -0
  187. package/dist/esm/context/ServiceContext.js +58 -0
  188. package/dist/esm/decorators/CLIAction.js +10 -0
  189. package/dist/esm/decorators/HTTPAction.js +11 -0
  190. package/dist/esm/decorators/Prefix.js +45 -0
  191. package/dist/esm/decorators/Schedule.js +61 -0
  192. package/dist/esm/decorators/ServiceAction.js +9 -0
  193. package/dist/esm/decorators/UseMiddlewares.js +55 -0
  194. package/dist/esm/decorators/http/DELETE.js +4 -0
  195. package/dist/esm/decorators/http/GET.js +4 -0
  196. package/dist/esm/decorators/http/HEAD.js +4 -0
  197. package/dist/esm/decorators/http/OPTIONS.js +4 -0
  198. package/dist/esm/decorators/http/PATCH.js +4 -0
  199. package/dist/esm/decorators/http/POST.js +4 -0
  200. package/dist/esm/decorators/http/PUT.js +4 -0
  201. package/dist/esm/exceptions/AccessDeniedException.js +13 -0
  202. package/dist/esm/exceptions/ControllerActionNotFoundException.js +12 -0
  203. package/dist/esm/exceptions/DuplicateActionNameException.js +11 -0
  204. package/dist/esm/exceptions/EntrypointStoppedException.js +12 -0
  205. package/dist/esm/exceptions/InvalidActionGroupException.js +7 -0
  206. package/dist/esm/exceptions/InvalidChannelException.js +11 -0
  207. package/dist/esm/exceptions/InvalidEntrypointAdapterException.js +12 -0
  208. package/dist/esm/exceptions/InvalidMiddlewareException.js +11 -0
  209. package/dist/esm/exceptions/InvalidPrefixException.js +11 -0
  210. package/dist/esm/exceptions/MiddlewareNextCalledException.js +11 -0
  211. package/dist/esm/exceptions/RouteNotFoundException.js +12 -0
  212. package/dist/esm/exceptions/ServiceInvokeException.js +10 -0
  213. package/dist/esm/exports/CTRLDecorators.js +19 -0
  214. package/dist/esm/exports/Channel.js +11 -0
  215. package/dist/esm/exports/CommanderAdapter.js +1 -0
  216. package/dist/esm/exports/ElectronAdapter.js +1 -0
  217. package/dist/esm/exports/Entrypoint.js +22 -0
  218. package/dist/esm/exports/ExpressAdapter.js +3 -0
  219. package/dist/esm/exports/FastifyAdapter.js +3 -0
  220. package/dist/esm/exports/JSONRPCAdapter.js +2 -0
  221. package/dist/esm/exports/SocketIOAdapter.js +1 -0
  222. package/dist/esm/lib/AccessControl.js +204 -0
  223. package/dist/esm/lib/AccessControlRule.js +72 -0
  224. package/dist/esm/lib/ActionOptions.js +63 -0
  225. package/dist/esm/lib/ActionResult.js +24 -0
  226. package/dist/esm/lib/ApplicationOf.js +11 -0
  227. package/dist/esm/lib/Controller.js +61 -0
  228. package/dist/esm/lib/ControllerEntrypoint.js +229 -0
  229. package/dist/esm/lib/GetActionDTOAndOptions.js +46 -0
  230. package/dist/esm/lib/HTTPErrors.js +48 -0
  231. package/dist/esm/lib/Middleware.js +134 -0
  232. package/dist/esm/lib/Prefix.js +143 -0
  233. package/dist/esm/lib/Result.js +147 -0
  234. package/dist/esm/lib/ServiceResponseCodec.js +113 -0
  235. package/dist/esm/lib/StringifyPattern.js +55 -0
  236. package/dist/esm/lib/UnsetValue.js +213 -0
  237. package/dist/esm/lib/pattern/GlobPattern.js +64 -0
  238. package/dist/esm/lib/pattern/PatternManager.js +229 -0
  239. package/dist/esm/lib/schedule/Cron.js +277 -0
  240. package/dist/esm/types/CLIContextParams.js +1 -0
  241. package/dist/esm/types/ErrorDescription.js +1 -0
  242. package/dist/esm/types/HTTPContextParams.js +1 -0
  243. package/dist/esm/types/ScheduleContextParams.js +1 -0
  244. package/dist/esm/types/ServiceContextParams.js +1 -0
  245. package/dist/types/Entrypoint.d.ts +868 -0
  246. package/dist/types/adapter/commander/CommanderCLIEntrypoint.d.ts +192 -0
  247. package/dist/types/adapter/commander/Prompt.d.ts +22 -0
  248. package/dist/types/adapter/commander/Width.d.ts +12 -0
  249. package/dist/types/adapter/electron/ElectronIPCServiceEntrypoint.d.ts +203 -0
  250. package/dist/types/adapter/express/ExpressHTTPEntrypoint.d.ts +172 -0
  251. package/dist/types/adapter/express/Responders.d.ts +89 -0
  252. package/dist/types/adapter/express/StaticUI.d.ts +83 -0
  253. package/dist/types/adapter/fastify/FastifyHTTPEntrypoint.d.ts +156 -0
  254. package/dist/types/adapter/fastify/Responders.d.ts +88 -0
  255. package/dist/types/adapter/http/HTTPServiceEntrypoint.d.ts +117 -0
  256. package/dist/types/adapter/jsonrpc/JSONRPCProtocol.d.ts +194 -0
  257. package/dist/types/adapter/jsonrpc/JSONRPCServiceEntrypoint.d.ts +154 -0
  258. package/dist/types/adapter/schedule/ScheduleEntrypoint.d.ts +86 -0
  259. package/dist/types/adapter/socket.io/SocketIOServiceEntrypoint.d.ts +138 -0
  260. package/dist/types/channel/BuiltinChannels.d.ts +18 -0
  261. package/dist/types/channel/Channel.d.ts +196 -0
  262. package/dist/types/channel/EntrypointAdapter.d.ts +195 -0
  263. package/dist/types/context/BaseContext.d.ts +75 -0
  264. package/dist/types/context/CLIContext.d.ts +38 -0
  265. package/dist/types/context/HTTPContext.d.ts +52 -0
  266. package/dist/types/context/ScheduleContext.d.ts +47 -0
  267. package/dist/types/context/ServiceContext.d.ts +47 -0
  268. package/dist/types/decorators/CLIAction.d.ts +120 -0
  269. package/dist/types/decorators/HTTPAction.d.ts +178 -0
  270. package/dist/types/decorators/Prefix.d.ts +44 -0
  271. package/dist/types/decorators/Schedule.d.ts +120 -0
  272. package/dist/types/decorators/ServiceAction.d.ts +116 -0
  273. package/dist/types/decorators/UseMiddlewares.d.ts +52 -0
  274. package/dist/types/decorators/http/DELETE.d.ts +87 -0
  275. package/dist/types/decorators/http/GET.d.ts +89 -0
  276. package/dist/types/decorators/http/HEAD.d.ts +84 -0
  277. package/dist/types/decorators/http/OPTIONS.d.ts +80 -0
  278. package/dist/types/decorators/http/PATCH.d.ts +90 -0
  279. package/dist/types/decorators/http/POST.d.ts +91 -0
  280. package/dist/types/decorators/http/PUT.d.ts +92 -0
  281. package/dist/types/exceptions/AccessDeniedException.d.ts +10 -0
  282. package/dist/types/exceptions/ControllerActionNotFoundException.d.ts +9 -0
  283. package/dist/types/exceptions/DuplicateActionNameException.d.ts +8 -0
  284. package/dist/types/exceptions/EntrypointStoppedException.d.ts +9 -0
  285. package/dist/types/exceptions/InvalidActionGroupException.d.ts +4 -0
  286. package/dist/types/exceptions/InvalidChannelException.d.ts +8 -0
  287. package/dist/types/exceptions/InvalidEntrypointAdapterException.d.ts +9 -0
  288. package/dist/types/exceptions/InvalidMiddlewareException.d.ts +8 -0
  289. package/dist/types/exceptions/InvalidPrefixException.d.ts +8 -0
  290. package/dist/types/exceptions/MiddlewareNextCalledException.d.ts +8 -0
  291. package/dist/types/exceptions/RouteNotFoundException.d.ts +9 -0
  292. package/dist/types/exceptions/ServiceInvokeException.d.ts +11 -0
  293. package/dist/types/exports/CTRLDecorators.d.ts +13 -0
  294. package/dist/types/exports/Channel.d.ts +14 -0
  295. package/dist/types/exports/CommanderAdapter.d.ts +1 -0
  296. package/dist/types/exports/ElectronAdapter.d.ts +1 -0
  297. package/dist/types/exports/Entrypoint.d.ts +24 -0
  298. package/dist/types/exports/ExpressAdapter.d.ts +4 -0
  299. package/dist/types/exports/FastifyAdapter.d.ts +4 -0
  300. package/dist/types/exports/JSONRPCAdapter.d.ts +2 -0
  301. package/dist/types/exports/SocketIOAdapter.d.ts +1 -0
  302. package/dist/types/lib/AccessControl.d.ts +118 -0
  303. package/dist/types/lib/AccessControlRule.d.ts +91 -0
  304. package/dist/types/lib/ActionOptions.d.ts +67 -0
  305. package/dist/types/lib/ActionResult.d.ts +28 -0
  306. package/dist/types/lib/ApplicationOf.d.ts +6 -0
  307. package/dist/types/lib/Controller.d.ts +59 -0
  308. package/dist/types/lib/ControllerEntrypoint.d.ts +168 -0
  309. package/dist/types/lib/GetActionDTOAndOptions.d.ts +29 -0
  310. package/dist/types/lib/HTTPErrors.d.ts +55 -0
  311. package/dist/types/lib/Middleware.d.ts +146 -0
  312. package/dist/types/lib/Prefix.d.ts +98 -0
  313. package/dist/types/lib/Result.d.ts +173 -0
  314. package/dist/types/lib/ServiceResponseCodec.d.ts +82 -0
  315. package/dist/types/lib/StringifyPattern.d.ts +7 -0
  316. package/dist/types/lib/UnsetValue.d.ts +12 -0
  317. package/dist/types/lib/pattern/GlobPattern.d.ts +34 -0
  318. package/dist/types/lib/pattern/PatternManager.d.ts +103 -0
  319. package/dist/types/lib/schedule/Cron.d.ts +56 -0
  320. package/dist/types/types/CLIContextParams.d.ts +14 -0
  321. package/dist/types/types/ErrorDescription.d.ts +14 -0
  322. package/dist/types/types/HTTPContextParams.d.ts +27 -0
  323. package/dist/types/types/ScheduleContextParams.d.ts +21 -0
  324. package/dist/types/types/ServiceContextParams.d.ts +16 -0
  325. package/package.json +152 -0
@@ -0,0 +1,82 @@
1
+ import { Exception } from '@lakutata/core';
2
+ /**
3
+ * The response of a service invocation, as the service transports (Socket.IO, Electron IPC, NATS…) send it.
4
+ */
5
+ export interface ServiceResponse {
6
+ /**
7
+ * Whether the invocation succeeded.
8
+ */
9
+ readonly success: boolean;
10
+ /**
11
+ * The failure: a serializable copy of the error's own properties (see {@link ServiceResponseCodec.errorObject});
12
+ * `null` on success.
13
+ */
14
+ readonly error: Error | Exception | null;
15
+ /**
16
+ * The action's result; `null` on failure.
17
+ */
18
+ readonly payload: any | null;
19
+ }
20
+ /**
21
+ * Encode the results and failures of service invocations as {@link ServiceResponse}s, and decode them on the
22
+ * caller's side. Used by the service adapters and the service clients; all its methods are static.
23
+ * @example
24
+ * ```typescript
25
+ * import {ServiceResponseCodec, type ServiceResponse} from '@lakutata/entrypoint/channel'
26
+ *
27
+ * //On the service side
28
+ * const ok: ServiceResponse = ServiceResponseCodec.encode({id: 1}, false)
29
+ * const failed: ServiceResponse = ServiceResponseCodec.encodeError(new Error('Not found'))
30
+ *
31
+ * //On the caller side
32
+ * console.log(ServiceResponseCodec.decode(ok)) //{id: 1}
33
+ * try {
34
+ * ServiceResponseCodec.decode(failed, 'order.service')
35
+ * } catch (error) {
36
+ * console.log((error as Error).message) //Not found (a ServiceInvokeException whose service is order.service)
37
+ * }
38
+ * ```
39
+ */
40
+ export declare class ServiceResponseCodec {
41
+ /**
42
+ * Copy an error into a serializable object: its own properties (message, stack, errno, errMsg, statusCode…). The
43
+ * values are copied as they are, not deeply.
44
+ * @param error The error; a value which is not an object gives `{message: String(error)}`.
45
+ * @returns The copy.
46
+ */
47
+ static errorObject(error: unknown): Record<string, unknown>;
48
+ /**
49
+ * Encode the failure of a service invocation.
50
+ * @param error The error, copied with {@link ServiceResponseCodec.errorObject}.
51
+ * @returns A failed response.
52
+ */
53
+ static encodeError(error: unknown): ServiceResponse;
54
+ /**
55
+ * The payload of an action's result for the service transports: the data of a `StatusResult` (its status and
56
+ * headers are HTTP's), the result itself otherwise.
57
+ * @param result The value the action returned.
58
+ * @returns The payload to send.
59
+ * @throws {TypeError} When it is a `FileResult` or an `EventsResult`, which only the HTTP adapters can send.
60
+ */
61
+ static payload(result: unknown): unknown;
62
+ /**
63
+ * Encode a service response.
64
+ * @param data The result (a `StatusResult` sent as its data, see {@link ServiceResponseCodec.payload}), or the
65
+ * error when `isError` is `true` (stored as it is: use {@link ServiceResponseCodec.encodeError} to make an error
66
+ * serializable).
67
+ * @param isError Whether `data` is an error.
68
+ * @returns The response.
69
+ * @throws {TypeError} When the result is a `FileResult` or an `EventsResult`.
70
+ */
71
+ static encode(data: any, isError: boolean): ServiceResponse;
72
+ /**
73
+ * Decode a service response: return its payload, or throw its error.
74
+ * @param response The response.
75
+ * @param serviceId The invoked service's id, set to the exception's `service`.
76
+ * @returns The payload of a successful response.
77
+ * @throws {ServiceInvokeException} When the response is a failure: its message is the remote error's message
78
+ * (`Unknown Error` without one), the remote error's enumerable properties (errno, statusCode…) are copied onto it,
79
+ * the read-only ones skipped.
80
+ */
81
+ static decode(response: ServiceResponse, serviceId?: string): any;
82
+ }
@@ -0,0 +1,7 @@
1
+ import { ActionPattern } from '@lakutata/core';
2
+ /**
3
+ * Stringify pattern object
4
+ * @param pattern
5
+ * @constructor
6
+ */
7
+ export declare function stringifyPattern(pattern: ActionPattern): string;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Derived from index.js of unset-value 2.0.1, has-value 2.0.2, get-value 3.0.1, has-values 2.0.1, kind-of 6.0.3 and
3
+ * isobject 4.1.1 (MIT, see THIRD_PARTY_NOTICES.md): the removal of the properties of the patterns from the inputs of
4
+ * the actions, as 2.x
5
+ */
6
+ /**
7
+ * Remove a property of an object by its path (unset-value): a key holding the whole path first, the keys escaping
8
+ * their dots ("a\.b"); a property without value (has-value) is kept
9
+ * @param obj
10
+ * @param prop
11
+ */
12
+ export declare function unsetValue(obj: any, prop: string | string[]): boolean;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * A glob of the value of a pattern: "*" matches any characters, "?" one character, "**" is a literal "*" and "*?" a
3
+ * literal "?". It matches a whole value, converted to a string
4
+ */
5
+ export declare class GlobPattern {
6
+ #private;
7
+ readonly glob: unknown;
8
+ /**
9
+ * Whether a value of a pattern is a glob
10
+ * @param value
11
+ */
12
+ static isGlob(value: string): boolean;
13
+ /**
14
+ * @param glob the glob, nothing is matched without it
15
+ */
16
+ constructor(glob: unknown);
17
+ /**
18
+ * The regular expression of a glob
19
+ * @param glob
20
+ */
21
+ protected static expression(glob: string): RegExp;
22
+ /**
23
+ * Whether the glob matches a value converted to a string
24
+ * @param value
25
+ */
26
+ test(value: unknown): boolean;
27
+ /**
28
+ * Whether the glob matches the value of a subject: a missing value is not matched, a primitive value (a date, a
29
+ * regular expression) is matched as a string. An array or an object is always matched, as gex does (it gives back
30
+ * the collection of its matching elements, which is never null): the routing of the actions is the one of 2.x
31
+ * @param value
32
+ */
33
+ matches(value: unknown): boolean;
34
+ }
@@ -0,0 +1,103 @@
1
+ import { GlobPattern } from './GlobPattern.js';
2
+ /**
3
+ * A pattern: its values are compared as strings
4
+ */
5
+ export type Pattern = Record<string, any>;
6
+ /**
7
+ * A glob of a key of a node, and the node of the patterns it matches
8
+ */
9
+ type GlobBranch = {
10
+ glob: GlobPattern;
11
+ node: PatternNode;
12
+ };
13
+ /**
14
+ * A node of the decision tree: the patterns having its key are found by its value (or by a glob of it), the patterns
15
+ * without it are in its "star" node. The keys are ordered along the tree, as the keys of the patterns
16
+ */
17
+ type PatternNode = {
18
+ /**
19
+ * The key the node decides on
20
+ */
21
+ key?: string;
22
+ /**
23
+ * The nodes of the values of the key
24
+ */
25
+ values?: Record<string, PatternNode>;
26
+ /**
27
+ * The nodes of the globs of the key
28
+ */
29
+ globs?: Record<string, GlobBranch[]>;
30
+ /**
31
+ * The node of the patterns without the key
32
+ */
33
+ star?: PatternNode;
34
+ /**
35
+ * The object of the pattern ending at the node
36
+ */
37
+ data?: unknown;
38
+ hasData?: boolean;
39
+ };
40
+ export type PatternManagerOptions = {
41
+ /**
42
+ * The values of the patterns having "*" or "?" are globs, true by default
43
+ */
44
+ globMatch?: boolean;
45
+ };
46
+ /**
47
+ * The patterns of the actions and the objects they give: a subject is matched by the most specific pattern whose
48
+ * properties it has (the unknown properties of the subject are ignored)
49
+ */
50
+ export declare class PatternManager {
51
+ #private;
52
+ constructor(options?: PatternManagerOptions);
53
+ /**
54
+ * The glob of a value of a pattern, undefined when it is not one
55
+ * @param value
56
+ */
57
+ protected glob(value: string): GlobPattern | undefined;
58
+ /**
59
+ * The node of a glob of a key of a node, added once
60
+ * @param node
61
+ * @param key
62
+ * @param glob
63
+ */
64
+ protected globNode(node: PatternNode, key: string, glob: GlobPattern): PatternNode;
65
+ /**
66
+ * Register a pattern, and the object that will be returned if an input matches.
67
+ * Both keys and values are considered to be strings.
68
+ * Other types are converted to strings.
69
+ * @param pattern
70
+ * @param obj
71
+ */
72
+ add(pattern: Pattern, obj: any): this;
73
+ /**
74
+ * Remove this pattern, and it's object, from the matcher.
75
+ * @param pattern
76
+ */
77
+ remove(pattern: Pattern): this;
78
+ /**
79
+ * Return the unique match for this subject, or null if not found.
80
+ * The properties of the subject are matched against the patterns previously added, and the most specifc pattern wins.
81
+ * Unknown properties in the subject are ignored.
82
+ * If exact is true, then all properties of the subject must match.
83
+ * @param subject
84
+ * @param exact
85
+ */
86
+ find(subject: Pattern, exact?: boolean): any;
87
+ /**
88
+ * Return the list of registered patterns that contain this partial pattern.
89
+ * You can use wildcards for property values.
90
+ * Omitted values are not equivalent to a wildcard of "*", you must specify each property explicitly.
91
+ * @param partialPattern
92
+ * @param exact the omitted properties match nothing
93
+ */
94
+ list(partialPattern?: Pattern, exact?: boolean): {
95
+ match: Record<string, any>;
96
+ data: any;
97
+ }[];
98
+ /**
99
+ * Generate a string representation of the decision tree for debugging.
100
+ */
101
+ toJSON(): string;
102
+ }
103
+ export {};
@@ -0,0 +1,56 @@
1
+ /**
2
+ * A cron expression, as `@Schedule` uses it: `second minute hour day-of-month month day-of-week`, the second optional
3
+ * (0 when omitted). Each field accepts `*` (or `?`), values, ranges (`1-5`), steps (`*\/15`, `10/5`, `1-30/2`) and lists
4
+ * (`1,15`); the months and the days of the week also accept their English three-letter names (`jan`, `mon`), and the
5
+ * day of the week 7 is Sunday like 0. The macros `@yearly`, `@annually`, `@monthly`, `@weekly`, `@daily`, `@midnight`
6
+ * and `@hourly` are accepted. When both the day of the month and the day of the week are restricted, a day matching
7
+ * either of them matches.
8
+ * @example
9
+ * ```typescript
10
+ * import {Cron} from 'lakutata/com/entrypoint'
11
+ *
12
+ * //At 09:30 on the weekdays, in Shanghai
13
+ * const cron: Cron = new Cron('30 9 * * mon-fri', 'Asia/Shanghai')
14
+ * const next: Date | undefined = cron.next(new Date('2026-01-02T12:00:00Z'))
15
+ * console.log(next?.toISOString()) //2026-01-05T01:30:00.000Z
16
+ * console.log(new Cron('0 0 30 2 *').next()) //undefined: February has no 30th
17
+ * ```
18
+ */
19
+ export declare class Cron {
20
+ #private;
21
+ readonly expression: string;
22
+ readonly timezone?: string | undefined;
23
+ /**
24
+ * Parse a cron expression.
25
+ * @param expression The expression, 5 or 6 fields separated by spaces, or a macro (case-insensitive).
26
+ * @param timezone The IANA time zone the expression's times are in (`Asia/Shanghai`); the local time zone when
27
+ * omitted.
28
+ * @throws {SyntaxError} When the expression does not have 5 or 6 fields, or a field has a value out of its range,
29
+ * a reversed range or an invalid step.
30
+ * @throws {RangeError} When the time zone is unknown.
31
+ */
32
+ constructor(expression: string, timezone?: string | undefined);
33
+ /**
34
+ * Find the next time matching the expression, strictly after a time, to the second. When the clocks go back, the
35
+ * times of the repeated hour match once; the times skipped when the clocks go forward never match.
36
+ * @param after The time to search from, a date or milliseconds since the epoch; now by default.
37
+ * @returns The next matching time, `undefined` when none matches within eight years (such as February 30th).
38
+ */
39
+ next(after?: Date | number): Date | undefined;
40
+ }
41
+ /**
42
+ * Parse a duration into milliseconds, as `@Schedule` reads its intervals.
43
+ * @param duration A number of milliseconds, or a text of numbers with their units (`ms`, `s`, `m`, `h`, `d`), summed
44
+ * and case-insensitive: `500ms`, `30s`, `1.5h`, `1h 30m`, `1d`.
45
+ * @returns The duration in milliseconds.
46
+ * @throws {SyntaxError} When the duration is not positive (or not finite), or the text has an unknown part.
47
+ * @example
48
+ * ```typescript
49
+ * import {parseDuration} from 'lakutata/com/entrypoint'
50
+ *
51
+ * console.log(parseDuration('1h30m')) //5400000
52
+ * console.log(parseDuration('500ms')) //500
53
+ * console.log(parseDuration(2000)) //2000
54
+ * ```
55
+ */
56
+ export declare function parseDuration(duration: number | string): number;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The parameters creating a `CLIContext`, given by the CLI adapters.
3
+ */
4
+ export type CLIContextParams = {
5
+ /**
6
+ * The command of the action as declared, its controller prefix included (`'user:get <id>'`).
7
+ */
8
+ readonly command: string;
9
+ /**
10
+ * The input of the action before its validation: the positional arguments and the options of the command, by the
11
+ * names of the DTO properties.
12
+ */
13
+ readonly data: Record<string, any>;
14
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The error number and message of an error, as `describeError()` gives them and the HTTP responders answer them
3
+ * (`{errno, errMsg}`).
4
+ */
5
+ export type ErrorDescription = {
6
+ /**
7
+ * The `errno` of the error, else its `code`, else `'E_UNKNOWN'`.
8
+ */
9
+ errno: string | number;
10
+ /**
11
+ * The `errMsg` of the error, else its `message`, else the error converted to a string.
12
+ */
13
+ errMsg: string;
14
+ };
@@ -0,0 +1,27 @@
1
+ import { type IncomingMessage, type ServerResponse } from 'node:http';
2
+ /**
3
+ * The parameters creating an `HTTPContext`, given by the HTTP adapters.
4
+ */
5
+ export type HTTPContextParams = {
6
+ /**
7
+ * The route of the action as declared, its controller prefix included (`'/users/:id'`).
8
+ */
9
+ readonly route: string;
10
+ /**
11
+ * The HTTP method of the action, as declared (`'get'`).
12
+ */
13
+ readonly method: string;
14
+ /**
15
+ * The Node.js request.
16
+ */
17
+ readonly request: IncomingMessage;
18
+ /**
19
+ * The Node.js response.
20
+ */
21
+ readonly response: ServerResponse;
22
+ /**
23
+ * The input of the action before its validation: by default, the query string merged with the parsed body (the
24
+ * route parameters are given apart, to the dispatch).
25
+ */
26
+ readonly data: Record<string, any>;
27
+ };
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The parameters creating a `ScheduleContext`, given by the schedule adapter.
3
+ */
4
+ export type ScheduleContextParams = {
5
+ /**
6
+ * The schedule of the action, as a text (`'every 30s'`, `'cron 0 * * * *'`).
7
+ */
8
+ readonly schedule: string;
9
+ /**
10
+ * The time the run was planned for.
11
+ */
12
+ readonly scheduledAt: Date;
13
+ /**
14
+ * The number of the run, from 1.
15
+ */
16
+ readonly run: number;
17
+ /**
18
+ * The input of the run: an empty object for the schedule adapter.
19
+ */
20
+ readonly data: Record<string, any>;
21
+ };
@@ -0,0 +1,16 @@
1
+ import { type ActionPattern } from '@lakutata/core';
2
+ /**
3
+ * The parameters creating a `ServiceContext`, given by the service adapters (which may add their own, such as the
4
+ * Socket.IO socket).
5
+ */
6
+ export type ServiceContextParams = {
7
+ /**
8
+ * The message received: an object, matched against the actions' patterns.
9
+ */
10
+ readonly data: ActionPattern;
11
+ /**
12
+ * The id of the client of the request, which `Entrypoint.notify()` pushes the events to; omitted for the transports
13
+ * without clients.
14
+ */
15
+ readonly clientId?: string;
16
+ };
package/package.json ADDED
@@ -0,0 +1,152 @@
1
+ {
2
+ "name": "@lakutata/entrypoint",
3
+ "version": "3.0.0-beta.0",
4
+ "description": "The entrypoint component of the lakutata framework: controllers and the dispatch of the CLI, HTTP and service actions.",
5
+ "type": "module",
6
+ "main": "./dist/cjs/exports/Entrypoint.js",
7
+ "types": "./dist/cjs/exports/Entrypoint.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/types/exports/Entrypoint.d.ts",
12
+ "default": "./dist/esm/exports/Entrypoint.js"
13
+ },
14
+ "require": {
15
+ "types": "./dist/cjs/exports/Entrypoint.d.ts",
16
+ "default": "./dist/cjs/exports/Entrypoint.js"
17
+ }
18
+ },
19
+ "./decorator/ctrl": {
20
+ "import": {
21
+ "types": "./dist/types/exports/CTRLDecorators.d.ts",
22
+ "default": "./dist/esm/exports/CTRLDecorators.js"
23
+ },
24
+ "require": {
25
+ "types": "./dist/cjs/exports/CTRLDecorators.d.ts",
26
+ "default": "./dist/cjs/exports/CTRLDecorators.js"
27
+ }
28
+ },
29
+ "./channel": {
30
+ "import": {
31
+ "types": "./dist/types/exports/Channel.d.ts",
32
+ "default": "./dist/esm/exports/Channel.js"
33
+ },
34
+ "require": {
35
+ "types": "./dist/cjs/exports/Channel.d.ts",
36
+ "default": "./dist/cjs/exports/Channel.js"
37
+ }
38
+ },
39
+ "./adapter/express": {
40
+ "import": {
41
+ "types": "./dist/types/exports/ExpressAdapter.d.ts",
42
+ "default": "./dist/esm/exports/ExpressAdapter.js"
43
+ },
44
+ "require": {
45
+ "types": "./dist/cjs/exports/ExpressAdapter.d.ts",
46
+ "default": "./dist/cjs/exports/ExpressAdapter.js"
47
+ }
48
+ },
49
+ "./adapter/commander": {
50
+ "import": {
51
+ "types": "./dist/types/exports/CommanderAdapter.d.ts",
52
+ "default": "./dist/esm/exports/CommanderAdapter.js"
53
+ },
54
+ "require": {
55
+ "types": "./dist/cjs/exports/CommanderAdapter.d.ts",
56
+ "default": "./dist/cjs/exports/CommanderAdapter.js"
57
+ }
58
+ },
59
+ "./adapter/fastify": {
60
+ "import": {
61
+ "types": "./dist/types/exports/FastifyAdapter.d.ts",
62
+ "default": "./dist/esm/exports/FastifyAdapter.js"
63
+ },
64
+ "require": {
65
+ "types": "./dist/cjs/exports/FastifyAdapter.d.ts",
66
+ "default": "./dist/cjs/exports/FastifyAdapter.js"
67
+ }
68
+ },
69
+ "./adapter/socket.io": {
70
+ "import": {
71
+ "types": "./dist/types/exports/SocketIOAdapter.d.ts",
72
+ "default": "./dist/esm/exports/SocketIOAdapter.js"
73
+ },
74
+ "require": {
75
+ "types": "./dist/cjs/exports/SocketIOAdapter.d.ts",
76
+ "default": "./dist/cjs/exports/SocketIOAdapter.js"
77
+ }
78
+ },
79
+ "./adapter/electron": {
80
+ "import": {
81
+ "types": "./dist/types/exports/ElectronAdapter.d.ts",
82
+ "default": "./dist/esm/exports/ElectronAdapter.js"
83
+ },
84
+ "require": {
85
+ "types": "./dist/cjs/exports/ElectronAdapter.d.ts",
86
+ "default": "./dist/cjs/exports/ElectronAdapter.js"
87
+ }
88
+ },
89
+ "./adapter/jsonrpc": {
90
+ "import": {
91
+ "types": "./dist/types/exports/JSONRPCAdapter.d.ts",
92
+ "default": "./dist/esm/exports/JSONRPCAdapter.js"
93
+ },
94
+ "require": {
95
+ "types": "./dist/cjs/exports/JSONRPCAdapter.d.ts",
96
+ "default": "./dist/cjs/exports/JSONRPCAdapter.js"
97
+ }
98
+ },
99
+ "./package.json": "./package.json"
100
+ },
101
+ "scripts": {
102
+ "clean": "node -e \"require('node:fs').rmSync('dist', {recursive: true, force: true})\"",
103
+ "build:cjs": "tsc -p tsconfig.cjs.json",
104
+ "build:esm": "tsc -p tsconfig.esm.json",
105
+ "build:cjs-pkg": "node ../../scripts/package-build/cjs-package.mjs",
106
+ "build:js": "npm run build:cjs && npm run build:esm && npm run build:cjs-pkg",
107
+ "rebuild": "npm run clean && npm run build:js",
108
+ "compile": "npm run rebuild",
109
+ "test:unit": "npm run compile && node --test \"dist/esm/tests/*.spec.js\""
110
+ },
111
+ "peerDependencies": {
112
+ "@inquirer/prompts": "^7.0.0 || ^8.0.0",
113
+ "@lakutata/core": "3.0.0-beta.0",
114
+ "@lakutata/utils": "3.0.0-beta.0",
115
+ "commander": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
116
+ "express": "^4.21.0 || ^5.0.0",
117
+ "fastify": "^5.0.0",
118
+ "socket.io": "^4.0.0",
119
+ "ws": "^8.0.0"
120
+ },
121
+ "peerDependenciesMeta": {
122
+ "express": {
123
+ "optional": true
124
+ },
125
+ "commander": {
126
+ "optional": true
127
+ },
128
+ "@inquirer/prompts": {
129
+ "optional": true
130
+ },
131
+ "fastify": {
132
+ "optional": true
133
+ },
134
+ "socket.io": {
135
+ "optional": true
136
+ },
137
+ "ws": {
138
+ "optional": true
139
+ }
140
+ },
141
+ "engines": {
142
+ "node": ">=22"
143
+ },
144
+ "files": [
145
+ "dist",
146
+ "!dist/*/tests",
147
+ "*.md",
148
+ "LICENSE",
149
+ "package.json",
150
+ "THIRD_PARTY_NOTICES.md"
151
+ ]
152
+ }