legonode 0.0.4 → 0.0.6

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 (164) hide show
  1. package/dist/cli/cli.js +5 -1
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/commands/build.d.ts.map +1 -1
  4. package/dist/cli/commands/build.js +4 -13
  5. package/dist/cli/commands/build.js.map +1 -1
  6. package/dist/cli/commands/create.d.ts +13 -0
  7. package/dist/cli/commands/create.d.ts.map +1 -1
  8. package/dist/cli/commands/create.js +329 -93
  9. package/dist/cli/commands/create.js.map +1 -1
  10. package/dist/cli/commands/dev.d.ts.map +1 -1
  11. package/dist/cli/commands/dev.js +23 -49
  12. package/dist/cli/commands/dev.js.map +1 -1
  13. package/dist/cli/commands/start.d.ts.map +1 -1
  14. package/dist/cli/commands/start.js +0 -2
  15. package/dist/cli/commands/start.js.map +1 -1
  16. package/dist/cli/runServer.d.ts.map +1 -1
  17. package/dist/cli/runServer.js +0 -25
  18. package/dist/cli/runServer.js.map +1 -1
  19. package/dist/src/body/parseBody.d.ts.map +1 -1
  20. package/dist/src/body/parseBody.js +20 -10
  21. package/dist/src/body/parseBody.js.map +1 -1
  22. package/dist/src/cache/cache.d.ts +91 -0
  23. package/dist/src/cache/cache.d.ts.map +1 -0
  24. package/dist/src/cache/cache.js +72 -0
  25. package/dist/src/cache/cache.js.map +1 -0
  26. package/dist/src/config/loadConfig.d.ts +7 -3
  27. package/dist/src/config/loadConfig.d.ts.map +1 -1
  28. package/dist/src/config/loadConfig.js +3 -1
  29. package/dist/src/config/loadConfig.js.map +1 -1
  30. package/dist/src/core/context.d.ts +2 -5
  31. package/dist/src/core/context.d.ts.map +1 -1
  32. package/dist/src/core/context.js +67 -15
  33. package/dist/src/core/context.js.map +1 -1
  34. package/dist/src/core/runtime.d.ts +2 -2
  35. package/dist/src/core/runtime.d.ts.map +1 -1
  36. package/dist/src/core/runtime.js +12 -29
  37. package/dist/src/core/runtime.js.map +1 -1
  38. package/dist/src/cors/cors.d.ts +12 -0
  39. package/dist/src/cors/cors.d.ts.map +1 -1
  40. package/dist/src/cors/cors.js +66 -1
  41. package/dist/src/cors/cors.js.map +1 -1
  42. package/dist/src/events/eventBus.d.ts +18 -8
  43. package/dist/src/events/eventBus.d.ts.map +1 -1
  44. package/dist/src/events/eventBus.js +36 -8
  45. package/dist/src/events/eventBus.js.map +1 -1
  46. package/dist/src/events/eventExecutor.d.ts +11 -0
  47. package/dist/src/events/eventExecutor.d.ts.map +1 -1
  48. package/dist/src/events/eventExecutor.js +93 -27
  49. package/dist/src/events/eventExecutor.js.map +1 -1
  50. package/dist/src/index.d.ts +7 -7
  51. package/dist/src/index.d.ts.map +1 -1
  52. package/dist/src/index.js +3 -3
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/json/fastStringify.d.ts.map +1 -1
  55. package/dist/src/json/fastStringify.js +10 -5
  56. package/dist/src/json/fastStringify.js.map +1 -1
  57. package/dist/src/logger/requestLogger.d.ts +1 -1
  58. package/dist/src/logger/requestLogger.d.ts.map +1 -1
  59. package/dist/src/logger/requestLogger.js +39 -23
  60. package/dist/src/logger/requestLogger.js.map +1 -1
  61. package/dist/src/middleware/middlewareResolver.d.ts.map +1 -1
  62. package/dist/src/middleware/middlewareResolver.js +12 -12
  63. package/dist/src/middleware/middlewareResolver.js.map +1 -1
  64. package/dist/src/middleware/middlewareTable.d.ts.map +1 -1
  65. package/dist/src/middleware/middlewareTable.js +31 -12
  66. package/dist/src/middleware/middlewareTable.js.map +1 -1
  67. package/dist/src/pipeline/compose.d.ts.map +1 -1
  68. package/dist/src/pipeline/compose.js +19 -18
  69. package/dist/src/pipeline/compose.js.map +1 -1
  70. package/dist/src/pipeline/pipelineCache.d.ts.map +1 -1
  71. package/dist/src/pipeline/pipelineCache.js +11 -9
  72. package/dist/src/pipeline/pipelineCache.js.map +1 -1
  73. package/dist/src/plugin/pluginAPI.d.ts +26 -12
  74. package/dist/src/plugin/pluginAPI.d.ts.map +1 -1
  75. package/dist/src/plugin/pluginManager.d.ts.map +1 -1
  76. package/dist/src/plugin/pluginManager.js +21 -4
  77. package/dist/src/plugin/pluginManager.js.map +1 -1
  78. package/dist/src/router/radixTree.d.ts.map +1 -1
  79. package/dist/src/router/radixTree.js +22 -6
  80. package/dist/src/router/radixTree.js.map +1 -1
  81. package/dist/src/router/routeTable.d.ts.map +1 -1
  82. package/dist/src/router/routeTable.js +25 -25
  83. package/dist/src/router/routeTable.js.map +1 -1
  84. package/dist/src/router/router.d.ts.map +1 -1
  85. package/dist/src/router/router.js +13 -15
  86. package/dist/src/router/router.js.map +1 -1
  87. package/dist/src/security/compileSecurity.d.ts +3 -0
  88. package/dist/src/security/compileSecurity.d.ts.map +1 -0
  89. package/dist/src/security/compileSecurity.js +23 -0
  90. package/dist/src/security/compileSecurity.js.map +1 -0
  91. package/dist/src/security/csrf.d.ts +4 -0
  92. package/dist/src/security/csrf.d.ts.map +1 -0
  93. package/dist/src/security/csrf.js +42 -0
  94. package/dist/src/security/csrf.js.map +1 -0
  95. package/dist/src/security/headers.d.ts +4 -0
  96. package/dist/src/security/headers.d.ts.map +1 -0
  97. package/dist/src/security/headers.js +43 -0
  98. package/dist/src/security/headers.js.map +1 -0
  99. package/dist/src/security/index.d.ts +4 -0
  100. package/dist/src/security/index.d.ts.map +1 -0
  101. package/dist/src/security/index.js +3 -0
  102. package/dist/src/security/index.js.map +1 -0
  103. package/dist/src/security/ipFilter.d.ts +6 -0
  104. package/dist/src/security/ipFilter.d.ts.map +1 -0
  105. package/dist/src/security/ipFilter.js +63 -0
  106. package/dist/src/security/ipFilter.js.map +1 -0
  107. package/dist/src/security/middleware.d.ts +4 -0
  108. package/dist/src/security/middleware.d.ts.map +1 -0
  109. package/dist/src/security/middleware.js +54 -0
  110. package/dist/src/security/middleware.js.map +1 -0
  111. package/dist/src/security/rateLimit.d.ts +11 -0
  112. package/dist/src/security/rateLimit.d.ts.map +1 -0
  113. package/dist/src/security/rateLimit.js +51 -0
  114. package/dist/src/security/rateLimit.js.map +1 -0
  115. package/dist/src/security/securityConfigLoader.d.ts +4 -0
  116. package/dist/src/security/securityConfigLoader.d.ts.map +1 -0
  117. package/dist/src/security/securityConfigLoader.js +142 -0
  118. package/dist/src/security/securityConfigLoader.js.map +1 -0
  119. package/dist/src/security/timeout.d.ts +5 -0
  120. package/dist/src/security/timeout.d.ts.map +1 -0
  121. package/dist/src/security/timeout.js +32 -0
  122. package/dist/src/security/timeout.js.map +1 -0
  123. package/dist/src/security/types.d.ts +100 -0
  124. package/dist/src/security/types.d.ts.map +1 -0
  125. package/dist/src/{schedules → security}/types.js.map +1 -1
  126. package/dist/src/server/requestHandler.d.ts +5 -1
  127. package/dist/src/server/requestHandler.d.ts.map +1 -1
  128. package/dist/src/server/requestHandler.js +228 -90
  129. package/dist/src/server/requestHandler.js.map +1 -1
  130. package/dist/src/trace/traceEngine.d.ts +5 -5
  131. package/dist/src/trace/traceEngine.js +3 -3
  132. package/dist/src/trace/traceEngine.js.map +1 -1
  133. package/dist/src/trace/tracingIgnore.d.ts +6 -0
  134. package/dist/src/trace/tracingIgnore.d.ts.map +1 -0
  135. package/dist/src/trace/tracingIgnore.js +24 -0
  136. package/dist/src/trace/tracingIgnore.js.map +1 -0
  137. package/dist/src/validation/routeSchema.d.ts +11 -0
  138. package/dist/src/validation/routeSchema.d.ts.map +1 -1
  139. package/dist/src/validation/routeSchema.js +48 -0
  140. package/dist/src/validation/routeSchema.js.map +1 -1
  141. package/package.json +1 -1
  142. package/dist/src/schedules/parseSchedule.d.ts +0 -15
  143. package/dist/src/schedules/parseSchedule.d.ts.map +0 -1
  144. package/dist/src/schedules/parseSchedule.js +0 -111
  145. package/dist/src/schedules/parseSchedule.js.map +0 -1
  146. package/dist/src/schedules/runScheduler.d.ts +0 -14
  147. package/dist/src/schedules/runScheduler.d.ts.map +0 -1
  148. package/dist/src/schedules/runScheduler.js +0 -58
  149. package/dist/src/schedules/runScheduler.js.map +0 -1
  150. package/dist/src/schedules/scheduleLoader.d.ts +0 -14
  151. package/dist/src/schedules/scheduleLoader.d.ts.map +0 -1
  152. package/dist/src/schedules/scheduleLoader.js +0 -122
  153. package/dist/src/schedules/scheduleLoader.js.map +0 -1
  154. package/dist/src/schedules/types.d.ts +0 -37
  155. package/dist/src/schedules/types.d.ts.map +0 -1
  156. package/dist/src/tasks/scheduler.d.ts +0 -10
  157. package/dist/src/tasks/scheduler.d.ts.map +0 -1
  158. package/dist/src/tasks/scheduler.js +0 -10
  159. package/dist/src/tasks/scheduler.js.map +0 -1
  160. package/dist/src/tasks/taskRunner.d.ts +0 -3
  161. package/dist/src/tasks/taskRunner.d.ts.map +0 -1
  162. package/dist/src/tasks/taskRunner.js +0 -4
  163. package/dist/src/tasks/taskRunner.js.map +0 -1
  164. /package/dist/src/{schedules → security}/types.js +0 -0
@@ -35,6 +35,11 @@ export type ResponseValidationResult = {
35
35
  ok: false;
36
36
  details: unknown;
37
37
  };
38
+ export type CompiledRouteValidators = {
39
+ body?: z.ZodTypeAny;
40
+ params?: z.ZodTypeAny;
41
+ query?: z.ZodTypeAny;
42
+ };
38
43
  /** Validate response body against a schema (e.g. from config.responses[200] or GET_RESPONSE_SCHEMA[201]). */
39
44
  export declare function validateResponseBody(schema: SchemaPart, data: unknown): ResponseValidationResult;
40
45
  /** Merge method overrides onto base. Method schema wins for each key (body, params, query). */
@@ -73,5 +78,11 @@ export declare function validateRoute(schema: RouteSchema, method: string, ctx:
73
78
  params: Record<string, string | string[]>;
74
79
  query: Record<string, string>;
75
80
  }): ValidationResult;
81
+ export declare function compileRouteValidators(schema: RouteSchema): CompiledRouteValidators;
82
+ export declare function validateRouteWithCompiled(validators: CompiledRouteValidators, method: string, ctx: {
83
+ body: unknown;
84
+ params: Record<string, string | string[]>;
85
+ query: Record<string, string>;
86
+ }): ValidationResult;
76
87
  export { z };
77
88
  //# sourceMappingURL=routeSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routeSchema.d.ts","sourceRoot":"","sources":["../../../src/validation/routeSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routeSchema.d.ts","sourceRoot":"","sources":["../../../src/validation/routeSchema.ts"],"names":[],"mappings":"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"}
@@ -130,5 +130,53 @@ export function validateRoute(schema, method, ctx) {
130
130
  }
131
131
  return result;
132
132
  }
133
+ export function compileRouteValidators(schema) {
134
+ const out = {};
135
+ if (schema.body)
136
+ out.body = toZodSchema(schema.body);
137
+ if (schema.params)
138
+ out.params = toZodSchema(schema.params);
139
+ if (schema.query)
140
+ out.query = toZodSchema(schema.query);
141
+ return out;
142
+ }
143
+ export function validateRouteWithCompiled(validators, method, ctx) {
144
+ const validateBody = BODY_METHODS.has(method);
145
+ const result = { ok: true };
146
+ if (validators.body && validateBody) {
147
+ const parsed = validators.body.safeParse(ctx.body);
148
+ if (!parsed.success) {
149
+ return {
150
+ ok: false,
151
+ status: 400,
152
+ json: { error: "Validation failed", details: parsed.error.flatten() }
153
+ };
154
+ }
155
+ result.body = parsed.data;
156
+ }
157
+ if (validators.params) {
158
+ const parsed = validators.params.safeParse(ctx.params);
159
+ if (!parsed.success) {
160
+ return {
161
+ ok: false,
162
+ status: 400,
163
+ json: { error: "Invalid params", details: parsed.error.flatten() }
164
+ };
165
+ }
166
+ result.params = parsed.data;
167
+ }
168
+ if (validators.query) {
169
+ const parsed = validators.query.safeParse(ctx.query);
170
+ if (!parsed.success) {
171
+ return {
172
+ ok: false,
173
+ status: 400,
174
+ json: { error: "Invalid query", details: parsed.error.flatten() }
175
+ };
176
+ }
177
+ result.query = parsed.data;
178
+ }
179
+ return result;
180
+ }
133
181
  export { z };
134
182
  //# sourceMappingURL=routeSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routeSchema.js","sourceRoot":"","sources":["../../../src/validation/routeSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routeSchema.js","sourceRoot":"","sources":["../../../src/validation/routeSchema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "legonode",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "dependencies": {
5
5
  "@inquirer/prompts": "^7.2.0",
6
6
  "commander": "^12.0.0",
@@ -1,15 +0,0 @@
1
- import type { ScheduleDef } from "./types.js";
2
- /**
3
- * Returns interval in ms for setInterval, or null if this is an "at" schedule (day/week/month).
4
- */
5
- export declare function getIntervalMs(def: ScheduleDef): number | null;
6
- /**
7
- * Returns true if this schedule runs at a specific time (day at, week day at, month date at).
8
- */
9
- export declare function isAtSchedule(def: ScheduleDef): boolean;
10
- /**
11
- * Get ms until the next run for "at" schedules (day at HH:MM, week day at HH:MM, month date at HH:MM).
12
- * Never returns 0 so we avoid setTimeout(..., 0) and immediate re-runs.
13
- */
14
- export declare function getNextRunMs(def: ScheduleDef): number;
15
- //# sourceMappingURL=parseSchedule.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseSchedule.d.ts","sourceRoot":"","sources":["../../../src/schedules/parseSchedule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0C9C;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAM7D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAKtD;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAkCrD"}
@@ -1,111 +0,0 @@
1
- const DAY_MS = 24 * 60 * 60 * 1000;
2
- const HOUR_MS = 60 * 60 * 1000;
3
- const MINUTE_MS = 60 * 1000;
4
- const WEEKDAYS = {
5
- sunday: 0,
6
- monday: 1,
7
- tuesday: 2,
8
- wednesday: 3,
9
- thursday: 4,
10
- friday: 5,
11
- saturday: 6
12
- };
13
- function parseTime(at) {
14
- const match = /^(\d{1,2}):(\d{2})$/.exec(at.trim());
15
- if (!match)
16
- return { hours: 0, minutes: 0 };
17
- return {
18
- hours: Math.min(23, Math.max(0, parseInt(match[1], 10))),
19
- minutes: Math.min(59, Math.max(0, parseInt(match[2], 10)))
20
- };
21
- }
22
- /** Parse interval string like "5m", "10s", "1h" to ms. */
23
- function parseIntervalEvery(every) {
24
- const s = every.trim().toLowerCase();
25
- const match = /^(\d+)\s*(s|sec|m|min|h|hr|d|day)s?$/.exec(s);
26
- if (match) {
27
- const n = parseInt(match[1], 10);
28
- const unit = match[2];
29
- if (unit === "s" || unit === "sec")
30
- return n * 1000;
31
- if (unit === "m" || unit === "min")
32
- return n * MINUTE_MS;
33
- if (unit === "h" || unit === "hr")
34
- return n * HOUR_MS;
35
- if (unit === "d" || unit === "day")
36
- return n * DAY_MS;
37
- }
38
- if (s === "minute" || s === "1m")
39
- return MINUTE_MS;
40
- if (s === "hour" || s === "1h")
41
- return HOUR_MS;
42
- return null;
43
- }
44
- /**
45
- * Returns interval in ms for setInterval, or null if this is an "at" schedule (day/week/month).
46
- */
47
- export function getIntervalMs(def) {
48
- if (def.every === "minute")
49
- return MINUTE_MS;
50
- if (def.every === "hour")
51
- return HOUR_MS;
52
- const interval = parseIntervalEvery(def.every);
53
- if (interval !== null)
54
- return interval;
55
- return null;
56
- }
57
- /**
58
- * Returns true if this schedule runs at a specific time (day at, week day at, month date at).
59
- */
60
- export function isAtSchedule(def) {
61
- if (def.every === "day" && "at" in def)
62
- return true;
63
- if (def.every === "week")
64
- return true;
65
- if (def.every === "month")
66
- return true;
67
- return false;
68
- }
69
- /**
70
- * Get ms until the next run for "at" schedules (day at HH:MM, week day at HH:MM, month date at HH:MM).
71
- * Never returns 0 so we avoid setTimeout(..., 0) and immediate re-runs.
72
- */
73
- export function getNextRunMs(def) {
74
- const now = new Date();
75
- const at = "at" in def && typeof def.at === "string" ? def.at : "00:00";
76
- const { hours, minutes } = parseTime(at);
77
- let ms;
78
- if (def.every === "day") {
79
- let next = new Date(now);
80
- next.setHours(hours, minutes, 0, 0);
81
- if (next.getTime() <= now.getTime())
82
- next = new Date(next.getTime() + DAY_MS);
83
- ms = next.getTime() - now.getTime();
84
- }
85
- else if (def.every === "week") {
86
- const dayName = def.day ?? "monday";
87
- const targetDay = WEEKDAYS[dayName.toLowerCase()] ?? 1;
88
- let next = new Date(now);
89
- next.setHours(hours, minutes, 0, 0);
90
- let diff = targetDay - next.getDay();
91
- if (diff < 0)
92
- diff += 7;
93
- else if (diff === 0 && next.getTime() <= now.getTime())
94
- diff = 7;
95
- next = new Date(next.getTime() + diff * DAY_MS);
96
- ms = next.getTime() - now.getTime();
97
- }
98
- else if (def.every === "month") {
99
- const date = def.date ?? 1;
100
- let next = new Date(now.getFullYear(), now.getMonth(), date, hours, minutes, 0, 0);
101
- if (next.getTime() <= now.getTime()) {
102
- next = new Date(now.getFullYear(), now.getMonth() + 1, date, hours, minutes, 0, 0);
103
- }
104
- ms = next.getTime() - now.getTime();
105
- }
106
- else {
107
- ms = DAY_MS;
108
- }
109
- return Math.max(1, ms);
110
- }
111
- //# sourceMappingURL=parseSchedule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parseSchedule.js","sourceRoot":"","sources":["../../../src/schedules/parseSchedule.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- import type { LoadedTask, TaskContext } from "./types.js";
2
- export type RunSchedulerOptions = {
3
- ctx?: TaskContext;
4
- onRun?: (taskName: string, ctx: TaskContext) => void | Promise<void>;
5
- onComplete?: (taskName: string, ctx: TaskContext) => void | Promise<void>;
6
- onError?: (taskName: string, err: unknown) => void;
7
- };
8
- /**
9
- * Start the scheduler for the given tasks. Uses setInterval for interval-based schedules
10
- * and setTimeout for "at" schedules (day/week/month), then reschedules.
11
- * Does not return; call from a long-running process.
12
- */
13
- export declare function runScheduler(tasks: LoadedTask[], options?: RunSchedulerOptions): () => void;
14
- //# sourceMappingURL=runScheduler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runScheduler.d.ts","sourceRoot":"","sources":["../../../src/schedules/runScheduler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CACpD,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,IAAI,CAiD/F"}
@@ -1,58 +0,0 @@
1
- import { getIntervalMs, isAtSchedule, getNextRunMs } from "./parseSchedule.js";
2
- /**
3
- * Start the scheduler for the given tasks. Uses setInterval for interval-based schedules
4
- * and setTimeout for "at" schedules (day/week/month), then reschedules.
5
- * Does not return; call from a long-running process.
6
- */
7
- export function runScheduler(tasks, options = {}) {
8
- const ctx = options.ctx ?? {};
9
- const onRun = options.onRun ?? null;
10
- const onComplete = options.onComplete ?? null;
11
- const onError = options.onError ?? ((name, err) => console.error(`[legonode task ${name}]`, err));
12
- const timeouts = [];
13
- const intervals = [];
14
- function runTask(task) {
15
- void (async () => {
16
- try {
17
- if (onRun)
18
- await onRun(task.name, ctx);
19
- await task.run(ctx);
20
- if (onComplete)
21
- await onComplete(task.name, ctx);
22
- }
23
- catch (err) {
24
- onError(task.name, err);
25
- }
26
- })();
27
- }
28
- function scheduleAt(task, def) {
29
- // Use at least 1s delay so we don't reschedule in the same second and risk multiple runs (e.g. hot reload).
30
- const ms = Math.max(1000, getNextRunMs(def));
31
- const t = setTimeout(() => {
32
- runTask(task);
33
- scheduleAt(task, def);
34
- }, ms);
35
- timeouts.push(t);
36
- }
37
- for (const task of tasks) {
38
- for (const def of task.schedule) {
39
- const intervalMs = getIntervalMs(def);
40
- if (intervalMs !== null) {
41
- // First run after intervalMs, then every intervalMs (no run at startup)
42
- const t = setInterval(() => runTask(task), intervalMs);
43
- intervals.push(t);
44
- continue;
45
- }
46
- if (isAtSchedule(def)) {
47
- scheduleAt(task, def);
48
- }
49
- }
50
- }
51
- return function stop() {
52
- for (const t of timeouts)
53
- clearTimeout(t);
54
- for (const t of intervals)
55
- clearInterval(t);
56
- };
57
- }
58
- //# sourceMappingURL=runScheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runScheduler.js","sourceRoot":"","sources":["../../../src/schedules/runScheduler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAS/E;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAmB,EAAE,UAA+B,EAAE;IACjF,MAAM,GAAG,GAAgB,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAClG,MAAM,QAAQ,GAAoC,EAAE,CAAC;IACrD,MAAM,SAAS,GAAqC,EAAE,CAAC;IAEvD,SAAS,OAAO,CAAC,IAAgB;QAC/B,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,CAAC;gBACH,IAAI,KAAK;oBAAE,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpB,IAAI,UAAU;oBAAE,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,SAAS,UAAU,CAAC,IAAgB,EAAE,GAAqC;QACzE,4GAA4G;QAC5G,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;gBACxB,wEAAwE;gBACxE,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;gBACvD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,SAAS,IAAI;QAClB,KAAK,MAAM,CAAC,IAAI,QAAQ;YAAE,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC;AACJ,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { LoadedTask } from "./types.js";
2
- export type ScheduleRunnerFn = (name: string, payload?: unknown) => void | Promise<void>;
3
- /** Build a runner that invokes a schedule's run by name (e.g. "interval.example"). */
4
- export declare function createScheduleRunner(tasks: LoadedTask[]): ScheduleRunnerFn;
5
- export declare function getOrCreateScheduleRunner(appDir: string): Promise<ScheduleRunnerFn>;
6
- export declare function clearScheduleRunnerCache(appDir?: string): void;
7
- export type ScannedSchedule = {
8
- name: string;
9
- filePath: string;
10
- };
11
- export declare function scanScheduleFiles(appDir: string): ScannedSchedule[];
12
- export declare function loadScheduleModule(filePath: string, cacheBust?: string): Promise<LoadedTask | null>;
13
- export declare function loadSchedulesFromApp(appDir: string, cacheBust?: string): Promise<LoadedTask[]>;
14
- //# sourceMappingURL=scheduleLoader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduleLoader.d.ts","sourceRoot":"","sources":["../../../src/schedules/scheduleLoader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAyB,UAAU,EAA0B,MAAM,YAAY,CAAC;AAuB5F,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAIzF,sFAAsF;AACtF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,gBAAgB,CAc1E;AAED,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CASzF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAG9D;AAOD,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAoBnE;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAmB5B;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,EAAE,CAAC,CAQvB"}
@@ -1,122 +0,0 @@
1
- import { readdirSync } from "node:fs";
2
- import { join, resolve, basename } from "node:path";
3
- import { pathToFileURL } from "node:url";
4
- import { invalidateModuleCache } from "../loader/moduleCache.js";
5
- const CRON_EXTENSIONS = [".cron.ts", ".cron.js", ".cron.mts", ".cron.mjs"];
6
- const CRON_DIR = "cron";
7
- /** Convert task name (e.g. intervalExample) to schedule name (e.g. interval.example). */
8
- function toScheduleName(name) {
9
- if (!name.length)
10
- return "";
11
- const parts = [];
12
- let current = name[0].toLowerCase();
13
- for (let i = 1; i < name.length; i++) {
14
- const c = name[i];
15
- if (c >= "A" && c <= "Z") {
16
- parts.push(current);
17
- current = c.toLowerCase();
18
- }
19
- else {
20
- current += c;
21
- }
22
- }
23
- parts.push(current);
24
- return parts.join(".");
25
- }
26
- const scheduleRunnerCache = new Map();
27
- /** Build a runner that invokes a schedule's run by name (e.g. "interval.example"). */
28
- export function createScheduleRunner(tasks) {
29
- const byName = new Map();
30
- for (const task of tasks) {
31
- byName.set(toScheduleName(task.name), task);
32
- }
33
- return (name, payload) => {
34
- const task = byName.get(name);
35
- if (!task) {
36
- console.warn(`[legonode] schedule not found: "${name}"`);
37
- return;
38
- }
39
- const ctx = { payload };
40
- return Promise.resolve(task.run(ctx));
41
- };
42
- }
43
- export async function getOrCreateScheduleRunner(appDir) {
44
- const key = resolve(appDir);
45
- let runner = scheduleRunnerCache.get(key);
46
- if (runner)
47
- return runner;
48
- const cacheBust = typeof process !== "undefined" ? process.env.LEGONODE_CRON_RELOAD_TOKEN : undefined;
49
- const tasks = await loadSchedulesFromApp(appDir, cacheBust);
50
- runner = createScheduleRunner(tasks);
51
- scheduleRunnerCache.set(key, runner);
52
- return runner;
53
- }
54
- export function clearScheduleRunnerCache(appDir) {
55
- if (appDir)
56
- scheduleRunnerCache.delete(resolve(appDir));
57
- else
58
- scheduleRunnerCache.clear();
59
- }
60
- function normalizeSchedule(schedule) {
61
- if (Array.isArray(schedule))
62
- return schedule;
63
- return [schedule];
64
- }
65
- export function scanScheduleFiles(appDir) {
66
- const base = resolve(appDir, CRON_DIR);
67
- const list = [];
68
- let entries;
69
- try {
70
- entries = readdirSync(base, { withFileTypes: true }).map((e) => ({
71
- name: e.name,
72
- isFile: e.isFile()
73
- }));
74
- }
75
- catch {
76
- return list;
77
- }
78
- for (const entry of entries) {
79
- if (!entry.isFile)
80
- continue;
81
- const ext = CRON_EXTENSIONS.find((e) => entry.name.endsWith(e));
82
- if (!ext)
83
- continue;
84
- const name = entry.name.slice(0, -ext.length);
85
- list.push({ name, filePath: join(base, entry.name) });
86
- }
87
- return list;
88
- }
89
- export async function loadScheduleModule(filePath, cacheBust) {
90
- try {
91
- if (cacheBust)
92
- invalidateModuleCache(filePath);
93
- const url = pathToFileURL(filePath).href;
94
- const importUrl = cacheBust ? `${url}?t=${cacheBust}` : url;
95
- const mod = await import(importUrl);
96
- const schedule = mod.schedule;
97
- const run = mod.run;
98
- if (schedule == null || typeof run !== "function")
99
- return null;
100
- const scheduleList = normalizeSchedule(schedule);
101
- const name = (mod.name ?? basename(filePath).replace(/\.cron\.(ts|js|mts|mjs)$/i, "")) || "task";
102
- return {
103
- name,
104
- schedule: scheduleList,
105
- run: run
106
- };
107
- }
108
- catch {
109
- return null;
110
- }
111
- }
112
- export async function loadSchedulesFromApp(appDir, cacheBust) {
113
- const scanned = scanScheduleFiles(appDir);
114
- const tasks = [];
115
- for (const { filePath } of scanned) {
116
- const task = await loadScheduleModule(filePath, cacheBust);
117
- if (task)
118
- tasks.push(task);
119
- }
120
- return tasks;
121
- }
122
- //# sourceMappingURL=scheduleLoader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduleLoader.js","sourceRoot":"","sources":["../../../src/schedules/scheduleLoader.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * JSON-based schedule definition (no cron strings).
3
- * Supports: every minute/hour, every day at, every week day at, every month date at, or interval (e.g. "5m", "10s").
4
- */
5
- export type ScheduleDef = {
6
- every: "minute";
7
- } | {
8
- every: "hour";
9
- } | {
10
- every: "day";
11
- at?: string;
12
- } | {
13
- every: "week";
14
- day?: string;
15
- at?: string;
16
- } | {
17
- every: "month";
18
- date?: number;
19
- at?: string;
20
- } | {
21
- every: string;
22
- };
23
- /** One task can have multiple schedules. */
24
- export type Schedule = ScheduleDef | ScheduleDef[];
25
- export type TaskContext = {
26
- /** Reserved for app-specific services (e.g. db, reportService). */
27
- services?: Record<string, unknown>;
28
- /** Set when the schedule is triggered via ctx.schedule(name, payload). */
29
- payload?: unknown;
30
- };
31
- export type TaskRunFn = (ctx: TaskContext) => void | Promise<void>;
32
- export type LoadedTask = {
33
- name: string;
34
- schedule: ScheduleDef[];
35
- run: TaskRunFn;
36
- };
37
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/schedules/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,KAAK,EAAE,QAAQ,CAAA;CAAE,GACnB;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GACjB;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtB,4CAA4C;AAC5C,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,WAAW,EAAE,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG;IACxB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnE,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,GAAG,EAAE,SAAS,CAAC;CAChB,CAAC"}
@@ -1,10 +0,0 @@
1
- export type ScheduledTask = {
2
- name: string;
3
- cron: string;
4
- run: () => Promise<void> | void;
5
- };
6
- export declare function createScheduler(): {
7
- register: (task: ScheduledTask) => void;
8
- list: () => ScheduledTask[];
9
- };
10
- //# sourceMappingURL=scheduler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/tasks/scheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,wBAAgB,eAAe;qBAIV,aAAa;;EAKjC"}
@@ -1,10 +0,0 @@
1
- export function createScheduler() {
2
- const tasks = [];
3
- return {
4
- register: (task) => {
5
- tasks.push(task);
6
- },
7
- list: () => tasks.slice()
8
- };
9
- }
10
- //# sourceMappingURL=scheduler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../../src/tasks/scheduler.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,eAAe;IAC7B,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,OAAO;QACL,QAAQ,EAAE,CAAC,IAAmB,EAAE,EAAE;YAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;KAC1B,CAAC;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { ScheduledTask } from "./scheduler.js";
2
- export declare function runTask(task: ScheduledTask): Promise<void>;
3
- //# sourceMappingURL=taskRunner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taskRunner.d.ts","sourceRoot":"","sources":["../../../src/tasks/taskRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,wBAAsB,OAAO,CAAC,IAAI,EAAE,aAAa,iBAEhD"}
@@ -1,4 +0,0 @@
1
- export async function runTask(task) {
2
- await task.run();
3
- }
4
- //# sourceMappingURL=taskRunner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taskRunner.js","sourceRoot":"","sources":["../../../src/tasks/taskRunner.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAmB;IAC/C,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,CAAC"}
File without changes