@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.
- package/LICENSE +23 -0
- package/README.md +183 -0
- package/THIRD_PARTY_NOTICES.md +206 -0
- package/dist/cjs/Entrypoint.d.ts +868 -0
- package/dist/cjs/Entrypoint.js +998 -0
- package/dist/cjs/adapter/commander/CommanderCLIEntrypoint.d.ts +192 -0
- package/dist/cjs/adapter/commander/CommanderCLIEntrypoint.js +439 -0
- package/dist/cjs/adapter/commander/Prompt.d.ts +22 -0
- package/dist/cjs/adapter/commander/Prompt.js +164 -0
- package/dist/cjs/adapter/commander/Width.d.ts +12 -0
- package/dist/cjs/adapter/commander/Width.js +67 -0
- package/dist/cjs/adapter/electron/ElectronIPCServiceEntrypoint.d.ts +203 -0
- package/dist/cjs/adapter/electron/ElectronIPCServiceEntrypoint.js +249 -0
- package/dist/cjs/adapter/express/ExpressHTTPEntrypoint.d.ts +172 -0
- package/dist/cjs/adapter/express/ExpressHTTPEntrypoint.js +301 -0
- package/dist/cjs/adapter/express/Responders.d.ts +89 -0
- package/dist/cjs/adapter/express/Responders.js +71 -0
- package/dist/cjs/adapter/express/StaticUI.d.ts +83 -0
- package/dist/cjs/adapter/express/StaticUI.js +104 -0
- package/dist/cjs/adapter/fastify/FastifyHTTPEntrypoint.d.ts +156 -0
- package/dist/cjs/adapter/fastify/FastifyHTTPEntrypoint.js +339 -0
- package/dist/cjs/adapter/fastify/Responders.d.ts +88 -0
- package/dist/cjs/adapter/fastify/Responders.js +77 -0
- package/dist/cjs/adapter/http/HTTPServiceEntrypoint.d.ts +117 -0
- package/dist/cjs/adapter/http/HTTPServiceEntrypoint.js +257 -0
- package/dist/cjs/adapter/jsonrpc/JSONRPCProtocol.d.ts +194 -0
- package/dist/cjs/adapter/jsonrpc/JSONRPCProtocol.js +187 -0
- package/dist/cjs/adapter/jsonrpc/JSONRPCServiceEntrypoint.d.ts +154 -0
- package/dist/cjs/adapter/jsonrpc/JSONRPCServiceEntrypoint.js +397 -0
- package/dist/cjs/adapter/schedule/ScheduleEntrypoint.d.ts +86 -0
- package/dist/cjs/adapter/schedule/ScheduleEntrypoint.js +275 -0
- package/dist/cjs/adapter/socket.io/SocketIOServiceEntrypoint.d.ts +138 -0
- package/dist/cjs/adapter/socket.io/SocketIOServiceEntrypoint.js +216 -0
- package/dist/cjs/channel/BuiltinChannels.d.ts +18 -0
- package/dist/cjs/channel/BuiltinChannels.js +128 -0
- package/dist/cjs/channel/Channel.d.ts +196 -0
- package/dist/cjs/channel/Channel.js +106 -0
- package/dist/cjs/channel/EntrypointAdapter.d.ts +195 -0
- package/dist/cjs/channel/EntrypointAdapter.js +43 -0
- package/dist/cjs/context/BaseContext.d.ts +75 -0
- package/dist/cjs/context/BaseContext.js +90 -0
- package/dist/cjs/context/CLIContext.d.ts +38 -0
- package/dist/cjs/context/CLIContext.js +53 -0
- package/dist/cjs/context/HTTPContext.d.ts +52 -0
- package/dist/cjs/context/HTTPContext.js +78 -0
- package/dist/cjs/context/ScheduleContext.d.ts +47 -0
- package/dist/cjs/context/ScheduleContext.js +65 -0
- package/dist/cjs/context/ServiceContext.d.ts +47 -0
- package/dist/cjs/context/ServiceContext.js +62 -0
- package/dist/cjs/decorators/CLIAction.d.ts +120 -0
- package/dist/cjs/decorators/CLIAction.js +13 -0
- package/dist/cjs/decorators/HTTPAction.d.ts +178 -0
- package/dist/cjs/decorators/HTTPAction.js +14 -0
- package/dist/cjs/decorators/Prefix.d.ts +44 -0
- package/dist/cjs/decorators/Prefix.js +48 -0
- package/dist/cjs/decorators/Schedule.d.ts +120 -0
- package/dist/cjs/decorators/Schedule.js +64 -0
- package/dist/cjs/decorators/ServiceAction.d.ts +116 -0
- package/dist/cjs/decorators/ServiceAction.js +12 -0
- package/dist/cjs/decorators/UseMiddlewares.d.ts +52 -0
- package/dist/cjs/decorators/UseMiddlewares.js +58 -0
- package/dist/cjs/decorators/http/DELETE.d.ts +87 -0
- package/dist/cjs/decorators/http/DELETE.js +7 -0
- package/dist/cjs/decorators/http/GET.d.ts +89 -0
- package/dist/cjs/decorators/http/GET.js +7 -0
- package/dist/cjs/decorators/http/HEAD.d.ts +84 -0
- package/dist/cjs/decorators/http/HEAD.js +7 -0
- package/dist/cjs/decorators/http/OPTIONS.d.ts +80 -0
- package/dist/cjs/decorators/http/OPTIONS.js +7 -0
- package/dist/cjs/decorators/http/PATCH.d.ts +90 -0
- package/dist/cjs/decorators/http/PATCH.js +7 -0
- package/dist/cjs/decorators/http/POST.d.ts +91 -0
- package/dist/cjs/decorators/http/POST.js +7 -0
- package/dist/cjs/decorators/http/PUT.d.ts +92 -0
- package/dist/cjs/decorators/http/PUT.js +7 -0
- package/dist/cjs/exceptions/AccessDeniedException.d.ts +10 -0
- package/dist/cjs/exceptions/AccessDeniedException.js +17 -0
- package/dist/cjs/exceptions/ControllerActionNotFoundException.d.ts +9 -0
- package/dist/cjs/exceptions/ControllerActionNotFoundException.js +16 -0
- package/dist/cjs/exceptions/DuplicateActionNameException.d.ts +8 -0
- package/dist/cjs/exceptions/DuplicateActionNameException.js +15 -0
- package/dist/cjs/exceptions/EntrypointStoppedException.d.ts +9 -0
- package/dist/cjs/exceptions/EntrypointStoppedException.js +16 -0
- package/dist/cjs/exceptions/InvalidActionGroupException.d.ts +4 -0
- package/dist/cjs/exceptions/InvalidActionGroupException.js +11 -0
- package/dist/cjs/exceptions/InvalidChannelException.d.ts +8 -0
- package/dist/cjs/exceptions/InvalidChannelException.js +15 -0
- package/dist/cjs/exceptions/InvalidEntrypointAdapterException.d.ts +9 -0
- package/dist/cjs/exceptions/InvalidEntrypointAdapterException.js +16 -0
- package/dist/cjs/exceptions/InvalidMiddlewareException.d.ts +8 -0
- package/dist/cjs/exceptions/InvalidMiddlewareException.js +15 -0
- package/dist/cjs/exceptions/InvalidPrefixException.d.ts +8 -0
- package/dist/cjs/exceptions/InvalidPrefixException.js +15 -0
- package/dist/cjs/exceptions/MiddlewareNextCalledException.d.ts +8 -0
- package/dist/cjs/exceptions/MiddlewareNextCalledException.js +15 -0
- package/dist/cjs/exceptions/RouteNotFoundException.d.ts +9 -0
- package/dist/cjs/exceptions/RouteNotFoundException.js +16 -0
- package/dist/cjs/exceptions/ServiceInvokeException.d.ts +11 -0
- package/dist/cjs/exceptions/ServiceInvokeException.js +14 -0
- package/dist/cjs/exports/CTRLDecorators.d.ts +13 -0
- package/dist/cjs/exports/CTRLDecorators.js +38 -0
- package/dist/cjs/exports/Channel.d.ts +14 -0
- package/dist/cjs/exports/Channel.js +33 -0
- package/dist/cjs/exports/CommanderAdapter.d.ts +1 -0
- package/dist/cjs/exports/CommanderAdapter.js +8 -0
- package/dist/cjs/exports/ElectronAdapter.d.ts +1 -0
- package/dist/cjs/exports/ElectronAdapter.js +9 -0
- package/dist/cjs/exports/Entrypoint.d.ts +24 -0
- package/dist/cjs/exports/Entrypoint.js +55 -0
- package/dist/cjs/exports/ExpressAdapter.d.ts +4 -0
- package/dist/cjs/exports/ExpressAdapter.js +15 -0
- package/dist/cjs/exports/FastifyAdapter.d.ts +4 -0
- package/dist/cjs/exports/FastifyAdapter.js +14 -0
- package/dist/cjs/exports/JSONRPCAdapter.d.ts +2 -0
- package/dist/cjs/exports/JSONRPCAdapter.js +11 -0
- package/dist/cjs/exports/SocketIOAdapter.d.ts +1 -0
- package/dist/cjs/exports/SocketIOAdapter.js +9 -0
- package/dist/cjs/lib/AccessControl.d.ts +118 -0
- package/dist/cjs/lib/AccessControl.js +208 -0
- package/dist/cjs/lib/AccessControlRule.d.ts +91 -0
- package/dist/cjs/lib/AccessControlRule.js +76 -0
- package/dist/cjs/lib/ActionOptions.d.ts +67 -0
- package/dist/cjs/lib/ActionOptions.js +67 -0
- package/dist/cjs/lib/ActionResult.d.ts +28 -0
- package/dist/cjs/lib/ActionResult.js +28 -0
- package/dist/cjs/lib/ApplicationOf.d.ts +6 -0
- package/dist/cjs/lib/ApplicationOf.js +14 -0
- package/dist/cjs/lib/Controller.d.ts +59 -0
- package/dist/cjs/lib/Controller.js +64 -0
- package/dist/cjs/lib/ControllerEntrypoint.d.ts +168 -0
- package/dist/cjs/lib/ControllerEntrypoint.js +239 -0
- package/dist/cjs/lib/GetActionDTOAndOptions.d.ts +29 -0
- package/dist/cjs/lib/GetActionDTOAndOptions.js +49 -0
- package/dist/cjs/lib/HTTPErrors.d.ts +55 -0
- package/dist/cjs/lib/HTTPErrors.js +52 -0
- package/dist/cjs/lib/Middleware.d.ts +146 -0
- package/dist/cjs/lib/Middleware.js +144 -0
- package/dist/cjs/lib/Prefix.d.ts +98 -0
- package/dist/cjs/lib/Prefix.js +151 -0
- package/dist/cjs/lib/Result.d.ts +173 -0
- package/dist/cjs/lib/Result.js +153 -0
- package/dist/cjs/lib/ServiceResponseCodec.d.ts +82 -0
- package/dist/cjs/lib/ServiceResponseCodec.js +117 -0
- package/dist/cjs/lib/StringifyPattern.d.ts +7 -0
- package/dist/cjs/lib/StringifyPattern.js +58 -0
- package/dist/cjs/lib/UnsetValue.d.ts +12 -0
- package/dist/cjs/lib/UnsetValue.js +216 -0
- package/dist/cjs/lib/pattern/GlobPattern.d.ts +34 -0
- package/dist/cjs/lib/pattern/GlobPattern.js +68 -0
- package/dist/cjs/lib/pattern/PatternManager.d.ts +103 -0
- package/dist/cjs/lib/pattern/PatternManager.js +233 -0
- package/dist/cjs/lib/schedule/Cron.d.ts +56 -0
- package/dist/cjs/lib/schedule/Cron.js +282 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types/CLIContextParams.d.ts +14 -0
- package/dist/cjs/types/CLIContextParams.js +2 -0
- package/dist/cjs/types/ErrorDescription.d.ts +14 -0
- package/dist/cjs/types/ErrorDescription.js +2 -0
- package/dist/cjs/types/HTTPContextParams.d.ts +27 -0
- package/dist/cjs/types/HTTPContextParams.js +2 -0
- package/dist/cjs/types/ScheduleContextParams.d.ts +21 -0
- package/dist/cjs/types/ScheduleContextParams.js +2 -0
- package/dist/cjs/types/ServiceContextParams.d.ts +16 -0
- package/dist/cjs/types/ServiceContextParams.js +2 -0
- package/dist/esm/Entrypoint.js +985 -0
- package/dist/esm/adapter/commander/CommanderCLIEntrypoint.js +433 -0
- package/dist/esm/adapter/commander/Prompt.js +127 -0
- package/dist/esm/adapter/commander/Width.js +63 -0
- package/dist/esm/adapter/electron/ElectronIPCServiceEntrypoint.js +212 -0
- package/dist/esm/adapter/express/ExpressHTTPEntrypoint.js +295 -0
- package/dist/esm/adapter/express/Responders.js +66 -0
- package/dist/esm/adapter/express/StaticUI.js +96 -0
- package/dist/esm/adapter/fastify/FastifyHTTPEntrypoint.js +333 -0
- package/dist/esm/adapter/fastify/Responders.js +73 -0
- package/dist/esm/adapter/http/HTTPServiceEntrypoint.js +253 -0
- package/dist/esm/adapter/jsonrpc/JSONRPCProtocol.js +182 -0
- package/dist/esm/adapter/jsonrpc/JSONRPCServiceEntrypoint.js +361 -0
- package/dist/esm/adapter/schedule/ScheduleEntrypoint.js +272 -0
- package/dist/esm/adapter/socket.io/SocketIOServiceEntrypoint.js +212 -0
- package/dist/esm/channel/BuiltinChannels.js +125 -0
- package/dist/esm/channel/Channel.js +100 -0
- package/dist/esm/channel/EntrypointAdapter.js +39 -0
- package/dist/esm/context/BaseContext.js +87 -0
- package/dist/esm/context/CLIContext.js +49 -0
- package/dist/esm/context/HTTPContext.js +74 -0
- package/dist/esm/context/ScheduleContext.js +61 -0
- package/dist/esm/context/ServiceContext.js +58 -0
- package/dist/esm/decorators/CLIAction.js +10 -0
- package/dist/esm/decorators/HTTPAction.js +11 -0
- package/dist/esm/decorators/Prefix.js +45 -0
- package/dist/esm/decorators/Schedule.js +61 -0
- package/dist/esm/decorators/ServiceAction.js +9 -0
- package/dist/esm/decorators/UseMiddlewares.js +55 -0
- package/dist/esm/decorators/http/DELETE.js +4 -0
- package/dist/esm/decorators/http/GET.js +4 -0
- package/dist/esm/decorators/http/HEAD.js +4 -0
- package/dist/esm/decorators/http/OPTIONS.js +4 -0
- package/dist/esm/decorators/http/PATCH.js +4 -0
- package/dist/esm/decorators/http/POST.js +4 -0
- package/dist/esm/decorators/http/PUT.js +4 -0
- package/dist/esm/exceptions/AccessDeniedException.js +13 -0
- package/dist/esm/exceptions/ControllerActionNotFoundException.js +12 -0
- package/dist/esm/exceptions/DuplicateActionNameException.js +11 -0
- package/dist/esm/exceptions/EntrypointStoppedException.js +12 -0
- package/dist/esm/exceptions/InvalidActionGroupException.js +7 -0
- package/dist/esm/exceptions/InvalidChannelException.js +11 -0
- package/dist/esm/exceptions/InvalidEntrypointAdapterException.js +12 -0
- package/dist/esm/exceptions/InvalidMiddlewareException.js +11 -0
- package/dist/esm/exceptions/InvalidPrefixException.js +11 -0
- package/dist/esm/exceptions/MiddlewareNextCalledException.js +11 -0
- package/dist/esm/exceptions/RouteNotFoundException.js +12 -0
- package/dist/esm/exceptions/ServiceInvokeException.js +10 -0
- package/dist/esm/exports/CTRLDecorators.js +19 -0
- package/dist/esm/exports/Channel.js +11 -0
- package/dist/esm/exports/CommanderAdapter.js +1 -0
- package/dist/esm/exports/ElectronAdapter.js +1 -0
- package/dist/esm/exports/Entrypoint.js +22 -0
- package/dist/esm/exports/ExpressAdapter.js +3 -0
- package/dist/esm/exports/FastifyAdapter.js +3 -0
- package/dist/esm/exports/JSONRPCAdapter.js +2 -0
- package/dist/esm/exports/SocketIOAdapter.js +1 -0
- package/dist/esm/lib/AccessControl.js +204 -0
- package/dist/esm/lib/AccessControlRule.js +72 -0
- package/dist/esm/lib/ActionOptions.js +63 -0
- package/dist/esm/lib/ActionResult.js +24 -0
- package/dist/esm/lib/ApplicationOf.js +11 -0
- package/dist/esm/lib/Controller.js +61 -0
- package/dist/esm/lib/ControllerEntrypoint.js +229 -0
- package/dist/esm/lib/GetActionDTOAndOptions.js +46 -0
- package/dist/esm/lib/HTTPErrors.js +48 -0
- package/dist/esm/lib/Middleware.js +134 -0
- package/dist/esm/lib/Prefix.js +143 -0
- package/dist/esm/lib/Result.js +147 -0
- package/dist/esm/lib/ServiceResponseCodec.js +113 -0
- package/dist/esm/lib/StringifyPattern.js +55 -0
- package/dist/esm/lib/UnsetValue.js +213 -0
- package/dist/esm/lib/pattern/GlobPattern.js +64 -0
- package/dist/esm/lib/pattern/PatternManager.js +229 -0
- package/dist/esm/lib/schedule/Cron.js +277 -0
- package/dist/esm/types/CLIContextParams.js +1 -0
- package/dist/esm/types/ErrorDescription.js +1 -0
- package/dist/esm/types/HTTPContextParams.js +1 -0
- package/dist/esm/types/ScheduleContextParams.js +1 -0
- package/dist/esm/types/ServiceContextParams.js +1 -0
- package/dist/types/Entrypoint.d.ts +868 -0
- package/dist/types/adapter/commander/CommanderCLIEntrypoint.d.ts +192 -0
- package/dist/types/adapter/commander/Prompt.d.ts +22 -0
- package/dist/types/adapter/commander/Width.d.ts +12 -0
- package/dist/types/adapter/electron/ElectronIPCServiceEntrypoint.d.ts +203 -0
- package/dist/types/adapter/express/ExpressHTTPEntrypoint.d.ts +172 -0
- package/dist/types/adapter/express/Responders.d.ts +89 -0
- package/dist/types/adapter/express/StaticUI.d.ts +83 -0
- package/dist/types/adapter/fastify/FastifyHTTPEntrypoint.d.ts +156 -0
- package/dist/types/adapter/fastify/Responders.d.ts +88 -0
- package/dist/types/adapter/http/HTTPServiceEntrypoint.d.ts +117 -0
- package/dist/types/adapter/jsonrpc/JSONRPCProtocol.d.ts +194 -0
- package/dist/types/adapter/jsonrpc/JSONRPCServiceEntrypoint.d.ts +154 -0
- package/dist/types/adapter/schedule/ScheduleEntrypoint.d.ts +86 -0
- package/dist/types/adapter/socket.io/SocketIOServiceEntrypoint.d.ts +138 -0
- package/dist/types/channel/BuiltinChannels.d.ts +18 -0
- package/dist/types/channel/Channel.d.ts +196 -0
- package/dist/types/channel/EntrypointAdapter.d.ts +195 -0
- package/dist/types/context/BaseContext.d.ts +75 -0
- package/dist/types/context/CLIContext.d.ts +38 -0
- package/dist/types/context/HTTPContext.d.ts +52 -0
- package/dist/types/context/ScheduleContext.d.ts +47 -0
- package/dist/types/context/ServiceContext.d.ts +47 -0
- package/dist/types/decorators/CLIAction.d.ts +120 -0
- package/dist/types/decorators/HTTPAction.d.ts +178 -0
- package/dist/types/decorators/Prefix.d.ts +44 -0
- package/dist/types/decorators/Schedule.d.ts +120 -0
- package/dist/types/decorators/ServiceAction.d.ts +116 -0
- package/dist/types/decorators/UseMiddlewares.d.ts +52 -0
- package/dist/types/decorators/http/DELETE.d.ts +87 -0
- package/dist/types/decorators/http/GET.d.ts +89 -0
- package/dist/types/decorators/http/HEAD.d.ts +84 -0
- package/dist/types/decorators/http/OPTIONS.d.ts +80 -0
- package/dist/types/decorators/http/PATCH.d.ts +90 -0
- package/dist/types/decorators/http/POST.d.ts +91 -0
- package/dist/types/decorators/http/PUT.d.ts +92 -0
- package/dist/types/exceptions/AccessDeniedException.d.ts +10 -0
- package/dist/types/exceptions/ControllerActionNotFoundException.d.ts +9 -0
- package/dist/types/exceptions/DuplicateActionNameException.d.ts +8 -0
- package/dist/types/exceptions/EntrypointStoppedException.d.ts +9 -0
- package/dist/types/exceptions/InvalidActionGroupException.d.ts +4 -0
- package/dist/types/exceptions/InvalidChannelException.d.ts +8 -0
- package/dist/types/exceptions/InvalidEntrypointAdapterException.d.ts +9 -0
- package/dist/types/exceptions/InvalidMiddlewareException.d.ts +8 -0
- package/dist/types/exceptions/InvalidPrefixException.d.ts +8 -0
- package/dist/types/exceptions/MiddlewareNextCalledException.d.ts +8 -0
- package/dist/types/exceptions/RouteNotFoundException.d.ts +9 -0
- package/dist/types/exceptions/ServiceInvokeException.d.ts +11 -0
- package/dist/types/exports/CTRLDecorators.d.ts +13 -0
- package/dist/types/exports/Channel.d.ts +14 -0
- package/dist/types/exports/CommanderAdapter.d.ts +1 -0
- package/dist/types/exports/ElectronAdapter.d.ts +1 -0
- package/dist/types/exports/Entrypoint.d.ts +24 -0
- package/dist/types/exports/ExpressAdapter.d.ts +4 -0
- package/dist/types/exports/FastifyAdapter.d.ts +4 -0
- package/dist/types/exports/JSONRPCAdapter.d.ts +2 -0
- package/dist/types/exports/SocketIOAdapter.d.ts +1 -0
- package/dist/types/lib/AccessControl.d.ts +118 -0
- package/dist/types/lib/AccessControlRule.d.ts +91 -0
- package/dist/types/lib/ActionOptions.d.ts +67 -0
- package/dist/types/lib/ActionResult.d.ts +28 -0
- package/dist/types/lib/ApplicationOf.d.ts +6 -0
- package/dist/types/lib/Controller.d.ts +59 -0
- package/dist/types/lib/ControllerEntrypoint.d.ts +168 -0
- package/dist/types/lib/GetActionDTOAndOptions.d.ts +29 -0
- package/dist/types/lib/HTTPErrors.d.ts +55 -0
- package/dist/types/lib/Middleware.d.ts +146 -0
- package/dist/types/lib/Prefix.d.ts +98 -0
- package/dist/types/lib/Result.d.ts +173 -0
- package/dist/types/lib/ServiceResponseCodec.d.ts +82 -0
- package/dist/types/lib/StringifyPattern.d.ts +7 -0
- package/dist/types/lib/UnsetValue.d.ts +12 -0
- package/dist/types/lib/pattern/GlobPattern.d.ts +34 -0
- package/dist/types/lib/pattern/PatternManager.d.ts +103 -0
- package/dist/types/lib/schedule/Cron.d.ts +56 -0
- package/dist/types/types/CLIContextParams.d.ts +14 -0
- package/dist/types/types/ErrorDescription.d.ts +14 -0
- package/dist/types/types/HTTPContextParams.d.ts +27 -0
- package/dist/types/types/ScheduleContextParams.d.ts +21 -0
- package/dist/types/types/ServiceContextParams.d.ts +16 -0
- package/package.json +152 -0
|
@@ -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,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Cron = void 0;
|
|
4
|
+
exports.parseDuration = parseDuration;
|
|
5
|
+
const MONTHS = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
|
|
6
|
+
const WEEKDAYS = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
|
|
7
|
+
const MACROS = {
|
|
8
|
+
'@yearly': '0 0 0 1 1 *',
|
|
9
|
+
'@annually': '0 0 0 1 1 *',
|
|
10
|
+
'@monthly': '0 0 0 1 * *',
|
|
11
|
+
'@weekly': '0 0 0 * * 0',
|
|
12
|
+
'@daily': '0 0 0 * * *',
|
|
13
|
+
'@midnight': '0 0 0 * * *',
|
|
14
|
+
'@hourly': '0 0 * * * *'
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* The formatters of the time zones
|
|
18
|
+
*/
|
|
19
|
+
const formatters = new Map();
|
|
20
|
+
/**
|
|
21
|
+
* The wall clock time of an instant, in a time zone or in the local time
|
|
22
|
+
* @param time
|
|
23
|
+
* @param timezone
|
|
24
|
+
*/
|
|
25
|
+
function wallClock(time, timezone) {
|
|
26
|
+
if (!timezone) {
|
|
27
|
+
const date = new Date(time);
|
|
28
|
+
return {
|
|
29
|
+
year: date.getFullYear(),
|
|
30
|
+
month: date.getMonth() + 1,
|
|
31
|
+
day: date.getDate(),
|
|
32
|
+
hour: date.getHours(),
|
|
33
|
+
minute: date.getMinutes(),
|
|
34
|
+
second: date.getSeconds(),
|
|
35
|
+
weekday: date.getDay()
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
let formatter = formatters.get(timezone);
|
|
39
|
+
if (!formatter) {
|
|
40
|
+
formatter = new Intl.DateTimeFormat('en-US', {
|
|
41
|
+
timeZone: timezone,
|
|
42
|
+
hourCycle: 'h23',
|
|
43
|
+
year: 'numeric',
|
|
44
|
+
month: 'numeric',
|
|
45
|
+
day: 'numeric',
|
|
46
|
+
hour: 'numeric',
|
|
47
|
+
minute: 'numeric',
|
|
48
|
+
second: 'numeric',
|
|
49
|
+
weekday: 'short'
|
|
50
|
+
});
|
|
51
|
+
formatters.set(timezone, formatter);
|
|
52
|
+
}
|
|
53
|
+
const parts = {};
|
|
54
|
+
for (const part of formatter.formatToParts(new Date(time)))
|
|
55
|
+
parts[part.type] = part.value;
|
|
56
|
+
return {
|
|
57
|
+
year: Number(parts.year),
|
|
58
|
+
month: Number(parts.month),
|
|
59
|
+
day: Number(parts.day),
|
|
60
|
+
hour: Number(parts.hour),
|
|
61
|
+
minute: Number(parts.minute),
|
|
62
|
+
second: Number(parts.second),
|
|
63
|
+
weekday: WEEKDAYS.indexOf(parts.weekday.toLowerCase())
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A wall clock time as a number, to compare them
|
|
68
|
+
* @param clock
|
|
69
|
+
*/
|
|
70
|
+
function wallKey(clock) {
|
|
71
|
+
return Date.UTC(clock.year, clock.month - 1, clock.day, clock.hour, clock.minute, clock.second);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The instant of a wall clock time (the overflowing fields carry over), in a time zone or in the local time
|
|
75
|
+
* @param year
|
|
76
|
+
* @param month
|
|
77
|
+
* @param day
|
|
78
|
+
* @param hour
|
|
79
|
+
* @param minute
|
|
80
|
+
* @param second
|
|
81
|
+
* @param timezone
|
|
82
|
+
*/
|
|
83
|
+
function instant(year, month, day, hour, minute, second, timezone) {
|
|
84
|
+
if (!timezone)
|
|
85
|
+
return new Date(year, month - 1, day, hour, minute, second).getTime();
|
|
86
|
+
const wall = Date.UTC(year, month - 1, day, hour, minute, second);
|
|
87
|
+
//The offset of the time zone at the instant, found again at the corrected instant (the offset changes with the daylight saving time)
|
|
88
|
+
let time = wall;
|
|
89
|
+
for (let pass = 0; pass < 2; pass++) {
|
|
90
|
+
const clock = wallClock(time, timezone);
|
|
91
|
+
const offset = Date.UTC(clock.year, clock.month - 1, clock.day, clock.hour, clock.minute, clock.second) - time;
|
|
92
|
+
time = wall - offset;
|
|
93
|
+
}
|
|
94
|
+
return time;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Parse a field of an expression
|
|
98
|
+
* @param text
|
|
99
|
+
* @param min
|
|
100
|
+
* @param max
|
|
101
|
+
* @param names the names of the values from min
|
|
102
|
+
* @param expression
|
|
103
|
+
*/
|
|
104
|
+
function parseField(text, min, max, names, expression) {
|
|
105
|
+
const invalid = (reason) => new SyntaxError(`Invalid cron expression "${expression}": ${reason}`);
|
|
106
|
+
const value = (item) => {
|
|
107
|
+
const index = names ? names.indexOf(item.toLowerCase()) : -1;
|
|
108
|
+
const parsed = index >= 0 ? index + min : /^\d+$/.test(item) ? Number(item) : NaN;
|
|
109
|
+
if (Number.isNaN(parsed) || parsed < min || parsed > max)
|
|
110
|
+
throw invalid(`"${item}" is not a value from ${min} to ${max}`);
|
|
111
|
+
return parsed;
|
|
112
|
+
};
|
|
113
|
+
const values = new Set();
|
|
114
|
+
const restricted = text !== '*' && text !== '?';
|
|
115
|
+
for (const item of text.split(',')) {
|
|
116
|
+
const [range, stepText] = item.split('/');
|
|
117
|
+
const step = stepText === undefined ? 1 : Number(stepText);
|
|
118
|
+
if (!Number.isInteger(step) || step < 1)
|
|
119
|
+
throw invalid(`"${stepText}" is not a step`);
|
|
120
|
+
let start = min;
|
|
121
|
+
let end = max;
|
|
122
|
+
if (range !== '*' && range !== '?') {
|
|
123
|
+
const [from, to] = range.split('-');
|
|
124
|
+
start = value(from);
|
|
125
|
+
end = to === undefined ? (stepText === undefined ? start : max) : value(to);
|
|
126
|
+
if (end < start)
|
|
127
|
+
throw invalid(`the range "${range}" is reversed`);
|
|
128
|
+
}
|
|
129
|
+
for (let current = start; current <= end; current += step)
|
|
130
|
+
values.add(current);
|
|
131
|
+
}
|
|
132
|
+
return { values: values, restricted: restricted };
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* A cron expression, as `@Schedule` uses it: `second minute hour day-of-month month day-of-week`, the second optional
|
|
136
|
+
* (0 when omitted). Each field accepts `*` (or `?`), values, ranges (`1-5`), steps (`*\/15`, `10/5`, `1-30/2`) and lists
|
|
137
|
+
* (`1,15`); the months and the days of the week also accept their English three-letter names (`jan`, `mon`), and the
|
|
138
|
+
* day of the week 7 is Sunday like 0. The macros `@yearly`, `@annually`, `@monthly`, `@weekly`, `@daily`, `@midnight`
|
|
139
|
+
* and `@hourly` are accepted. When both the day of the month and the day of the week are restricted, a day matching
|
|
140
|
+
* either of them matches.
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* import {Cron} from 'lakutata/com/entrypoint'
|
|
144
|
+
*
|
|
145
|
+
* //At 09:30 on the weekdays, in Shanghai
|
|
146
|
+
* const cron: Cron = new Cron('30 9 * * mon-fri', 'Asia/Shanghai')
|
|
147
|
+
* const next: Date | undefined = cron.next(new Date('2026-01-02T12:00:00Z'))
|
|
148
|
+
* console.log(next?.toISOString()) //2026-01-05T01:30:00.000Z
|
|
149
|
+
* console.log(new Cron('0 0 30 2 *').next()) //undefined: February has no 30th
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
class Cron {
|
|
153
|
+
#second;
|
|
154
|
+
#minute;
|
|
155
|
+
#hour;
|
|
156
|
+
#day;
|
|
157
|
+
#month;
|
|
158
|
+
#weekday;
|
|
159
|
+
/**
|
|
160
|
+
* Parse a cron expression.
|
|
161
|
+
* @param expression The expression, 5 or 6 fields separated by spaces, or a macro (case-insensitive).
|
|
162
|
+
* @param timezone The IANA time zone the expression's times are in (`Asia/Shanghai`); the local time zone when
|
|
163
|
+
* omitted.
|
|
164
|
+
* @throws {SyntaxError} When the expression does not have 5 or 6 fields, or a field has a value out of its range,
|
|
165
|
+
* a reversed range or an invalid step.
|
|
166
|
+
* @throws {RangeError} When the time zone is unknown.
|
|
167
|
+
*/
|
|
168
|
+
constructor(expression, timezone) {
|
|
169
|
+
this.expression = expression;
|
|
170
|
+
this.timezone = timezone;
|
|
171
|
+
if (timezone)
|
|
172
|
+
new Intl.DateTimeFormat('en-US', { timeZone: timezone });
|
|
173
|
+
const normalized = expression.trim().toLowerCase();
|
|
174
|
+
const fields = (MACROS[normalized] ?? normalized).split(/\s+/);
|
|
175
|
+
if (fields.length === 5)
|
|
176
|
+
fields.unshift('0');
|
|
177
|
+
if (fields.length !== 6)
|
|
178
|
+
throw new SyntaxError(`Invalid cron expression "${expression}": 5 or 6 fields are expected`);
|
|
179
|
+
this.#second = parseField(fields[0], 0, 59, undefined, expression);
|
|
180
|
+
this.#minute = parseField(fields[1], 0, 59, undefined, expression);
|
|
181
|
+
this.#hour = parseField(fields[2], 0, 23, undefined, expression);
|
|
182
|
+
this.#day = parseField(fields[3], 1, 31, undefined, expression);
|
|
183
|
+
this.#month = parseField(fields[4], 1, 12, MONTHS, expression);
|
|
184
|
+
const weekday = parseField(fields[5], 0, 7, WEEKDAYS, expression);
|
|
185
|
+
//7 is Sunday too
|
|
186
|
+
if (weekday.values.delete(7))
|
|
187
|
+
weekday.values.add(0);
|
|
188
|
+
this.#weekday = weekday;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Whether a day matches
|
|
192
|
+
* @param clock
|
|
193
|
+
*/
|
|
194
|
+
#dayMatches(clock) {
|
|
195
|
+
const day = this.#day.values.has(clock.day);
|
|
196
|
+
const weekday = this.#weekday.values.has(clock.weekday);
|
|
197
|
+
if (this.#day.restricted && this.#weekday.restricted)
|
|
198
|
+
return day || weekday;
|
|
199
|
+
return day && weekday;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Find the next time matching the expression, strictly after a time, to the second. When the clocks go back, the
|
|
203
|
+
* times of the repeated hour match once; the times skipped when the clocks go forward never match.
|
|
204
|
+
* @param after The time to search from, a date or milliseconds since the epoch; now by default.
|
|
205
|
+
* @returns The next matching time, `undefined` when none matches within eight years (such as February 30th).
|
|
206
|
+
*/
|
|
207
|
+
next(after = Date.now()) {
|
|
208
|
+
const timezone = this.timezone;
|
|
209
|
+
const start = Math.floor(new Date(after).getTime() / 1000) * 1000;
|
|
210
|
+
//When the clocks go back, the times of the repeated hour match once
|
|
211
|
+
const afterKey = wallKey(wallClock(start, timezone));
|
|
212
|
+
let time = start + 1000;
|
|
213
|
+
//Eight years of candidates at most: a leap day on a weekday comes back within them
|
|
214
|
+
const limit = time + 8 * 366 * 24 * 3600 * 1000;
|
|
215
|
+
while (time < limit) {
|
|
216
|
+
const clock = wallClock(time, timezone);
|
|
217
|
+
let candidate;
|
|
218
|
+
if (!this.#month.values.has(clock.month)) {
|
|
219
|
+
candidate = instant(clock.year, clock.month + 1, 1, 0, 0, 0, timezone);
|
|
220
|
+
}
|
|
221
|
+
else if (!this.#dayMatches(clock)) {
|
|
222
|
+
candidate = instant(clock.year, clock.month, clock.day + 1, 0, 0, 0, timezone);
|
|
223
|
+
}
|
|
224
|
+
else if (!this.#hour.values.has(clock.hour)) {
|
|
225
|
+
candidate = instant(clock.year, clock.month, clock.day, clock.hour + 1, 0, 0, timezone);
|
|
226
|
+
}
|
|
227
|
+
else if (!this.#minute.values.has(clock.minute)) {
|
|
228
|
+
candidate = instant(clock.year, clock.month, clock.day, clock.hour, clock.minute + 1, 0, timezone);
|
|
229
|
+
}
|
|
230
|
+
else if (!this.#second.values.has(clock.second)) {
|
|
231
|
+
candidate = instant(clock.year, clock.month, clock.day, clock.hour, clock.minute, clock.second + 1, timezone);
|
|
232
|
+
}
|
|
233
|
+
else if (wallKey(clock) <= afterKey) {
|
|
234
|
+
candidate = time + (afterKey - wallKey(clock)) + 1000;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
return new Date(time);
|
|
238
|
+
}
|
|
239
|
+
//A time skipped by the daylight saving time may map back: the search always moves forward
|
|
240
|
+
time = candidate > time ? candidate : time + 1000;
|
|
241
|
+
}
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
exports.Cron = Cron;
|
|
246
|
+
/**
|
|
247
|
+
* Parse a duration into milliseconds, as `@Schedule` reads its intervals.
|
|
248
|
+
* @param duration A number of milliseconds, or a text of numbers with their units (`ms`, `s`, `m`, `h`, `d`), summed
|
|
249
|
+
* and case-insensitive: `500ms`, `30s`, `1.5h`, `1h 30m`, `1d`.
|
|
250
|
+
* @returns The duration in milliseconds.
|
|
251
|
+
* @throws {SyntaxError} When the duration is not positive (or not finite), or the text has an unknown part.
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* import {parseDuration} from 'lakutata/com/entrypoint'
|
|
255
|
+
*
|
|
256
|
+
* console.log(parseDuration('1h30m')) //5400000
|
|
257
|
+
* console.log(parseDuration('500ms')) //500
|
|
258
|
+
* console.log(parseDuration(2000)) //2000
|
|
259
|
+
* ```
|
|
260
|
+
*/
|
|
261
|
+
function parseDuration(duration) {
|
|
262
|
+
if (typeof duration === 'number') {
|
|
263
|
+
if (!Number.isFinite(duration) || duration <= 0)
|
|
264
|
+
throw new SyntaxError(`Invalid duration ${duration}: a positive number of milliseconds is expected`);
|
|
265
|
+
return duration;
|
|
266
|
+
}
|
|
267
|
+
const units = { ms: 1, s: 1000, m: 60000, h: 3600000, d: 86400000 };
|
|
268
|
+
const text = duration.trim().toLowerCase();
|
|
269
|
+
let total = 0;
|
|
270
|
+
let rest = text;
|
|
271
|
+
const part = /^(\d+(?:\.\d+)?)(ms|s|m|h|d)/;
|
|
272
|
+
while (rest) {
|
|
273
|
+
const matched = part.exec(rest);
|
|
274
|
+
if (!matched)
|
|
275
|
+
throw new SyntaxError(`Invalid duration "${duration}": such as "500ms", "30s", "5m", "1h30m" or "1d"`);
|
|
276
|
+
total += Number(matched[1]) * units[matched[2]];
|
|
277
|
+
rest = rest.slice(matched[0].length).trim();
|
|
278
|
+
}
|
|
279
|
+
if (total <= 0)
|
|
280
|
+
throw new SyntaxError(`Invalid duration "${duration}": it must be positive`);
|
|
281
|
+
return total;
|
|
282
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"commonjs"}
|
|
@@ -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
|
+
};
|