jcc-express-mvc 1.8.7 → 1.8.21

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 (296) hide show
  1. package/Core/index.d.ts +4 -0
  2. package/Core/index.d.ts.map +1 -1
  3. package/Core/index.js +5 -0
  4. package/__tests__/Job.test.d.ts +2 -0
  5. package/__tests__/Job.test.d.ts.map +1 -0
  6. package/__tests__/Job.test.js +205 -0
  7. package/__tests__/MySqlSchemaBlueprint.test.d.ts +2 -0
  8. package/__tests__/MySqlSchemaBlueprint.test.d.ts.map +1 -0
  9. package/__tests__/MySqlSchemaBlueprint.test.js +55 -0
  10. package/__tests__/PostgresTranslator.test.d.ts +2 -0
  11. package/__tests__/PostgresTranslator.test.d.ts.map +1 -0
  12. package/__tests__/PostgresTranslator.test.js +82 -0
  13. package/__tests__/SQLiteTranslator.test.d.ts +2 -0
  14. package/__tests__/SQLiteTranslator.test.d.ts.map +1 -0
  15. package/__tests__/SQLiteTranslator.test.js +125 -0
  16. package/__tests__/SchemaAlterBlueprint.test.d.ts +2 -0
  17. package/__tests__/SchemaAlterBlueprint.test.d.ts.map +1 -0
  18. package/__tests__/SchemaAlterBlueprint.test.js +35 -0
  19. package/global.d.ts +3 -1
  20. package/index.d.ts +28 -3
  21. package/index.d.ts.map +1 -1
  22. package/index.js +33 -75
  23. package/lib/Application/Application.d.ts.map +1 -1
  24. package/lib/Application/Application.js +2 -2
  25. package/lib/Application/ApplicationBuilder.d.ts.map +1 -1
  26. package/lib/Application/ApplicationBuilder.js +22 -11
  27. package/lib/Auth/AuthMiddleware.d.ts.map +1 -1
  28. package/lib/Auth/AuthMiddleware.js +29 -12
  29. package/lib/Auth/index.d.ts +17 -3
  30. package/lib/Auth/index.d.ts.map +1 -1
  31. package/lib/Auth/index.js +128 -26
  32. package/lib/Auth/loginRateLimit.d.ts +6 -0
  33. package/lib/Auth/loginRateLimit.d.ts.map +1 -0
  34. package/lib/Auth/loginRateLimit.js +25 -0
  35. package/lib/Auth/refreshTokenStore.d.ts +24 -0
  36. package/lib/Auth/refreshTokenStore.d.ts.map +1 -0
  37. package/lib/Auth/refreshTokenStore.js +46 -0
  38. package/lib/Command-Line/DBCommand.d.ts.map +1 -1
  39. package/lib/Command-Line/DBCommand.js +9 -3
  40. package/lib/Command-Line/KeyGenerateCommand.d.ts +6 -0
  41. package/lib/Command-Line/KeyGenerateCommand.d.ts.map +1 -0
  42. package/lib/Command-Line/KeyGenerateCommand.js +47 -0
  43. package/lib/Command-Line/MakeCommand.d.ts +1 -0
  44. package/lib/Command-Line/MakeCommand.d.ts.map +1 -1
  45. package/lib/Command-Line/MakeCommand.js +36 -32
  46. package/lib/Command-Line/NodeArtisanCommand.d.ts +2 -0
  47. package/lib/Command-Line/NodeArtisanCommand.d.ts.map +1 -1
  48. package/lib/Command-Line/NodeArtisanCommand.js +24 -6
  49. package/lib/Command-Line/NodeTinker/Tinker.d.ts +5 -2
  50. package/lib/Command-Line/NodeTinker/Tinker.d.ts.map +1 -1
  51. package/lib/Command-Line/NodeTinker/Tinker.js +13 -3
  52. package/lib/Command-Line/WatchCommand.d.ts +29 -0
  53. package/lib/Command-Line/WatchCommand.d.ts.map +1 -0
  54. package/lib/Command-Line/WatchCommand.js +234 -0
  55. package/lib/Command-Line/files/Models.d.ts.map +1 -1
  56. package/lib/Command-Line/files/Models.js +67 -0
  57. package/lib/Console/Command.d.ts +18 -0
  58. package/lib/Console/Command.d.ts.map +1 -1
  59. package/lib/Console/Command.js +29 -0
  60. package/lib/Container/index.d.ts.map +1 -1
  61. package/lib/Container/index.js +22 -8
  62. package/lib/Database/Database.d.ts +21 -0
  63. package/lib/Database/Database.d.ts.map +1 -0
  64. package/lib/Database/Database.js +55 -0
  65. package/lib/Database/DatabaseServiceProvider.d.ts +22 -0
  66. package/lib/Database/DatabaseServiceProvider.d.ts.map +1 -0
  67. package/lib/Database/DatabaseServiceProvider.js +50 -0
  68. package/lib/Database/Drivers/KnexDriver.d.ts +13 -0
  69. package/lib/Database/Drivers/KnexDriver.d.ts.map +1 -0
  70. package/lib/Database/Drivers/KnexDriver.js +29 -0
  71. package/lib/Database/Drivers/MongooseDriver.d.ts +20 -0
  72. package/lib/Database/Drivers/MongooseDriver.d.ts.map +1 -0
  73. package/lib/Database/Drivers/MongooseDriver.js +57 -0
  74. package/lib/Database/Drivers/SequelizeDriver.d.ts +24 -0
  75. package/lib/Database/Drivers/SequelizeDriver.d.ts.map +1 -0
  76. package/lib/Database/Drivers/SequelizeDriver.js +82 -0
  77. package/lib/Database/index.d.ts +7 -0
  78. package/lib/Database/index.d.ts.map +1 -0
  79. package/lib/Database/index.js +11 -0
  80. package/lib/Database/interface.d.ts +14 -0
  81. package/lib/Database/interface.d.ts.map +1 -0
  82. package/lib/Database/interface.js +2 -0
  83. package/lib/Database/type.d.ts +18 -0
  84. package/lib/Database/type.d.ts.map +1 -0
  85. package/lib/Database/type.js +2 -0
  86. package/lib/Error/DisplayErrorCode.d.ts.map +1 -1
  87. package/lib/Error/DisplayErrorCode.js +27 -17
  88. package/lib/Error/MissMatchTokenException/index.d.ts +4 -0
  89. package/lib/Error/MissMatchTokenException/index.d.ts.map +1 -0
  90. package/lib/Error/MissMatchTokenException/index.js +9 -0
  91. package/lib/Error/SocialiteAuthError/SocialiteAuthError.d.ts +9 -0
  92. package/lib/Error/SocialiteAuthError/SocialiteAuthError.d.ts.map +1 -0
  93. package/lib/Error/SocialiteAuthError/SocialiteAuthError.js +17 -0
  94. package/lib/Global/helpers.d.ts.map +1 -1
  95. package/lib/Global/helpers.js +7 -6
  96. package/lib/Http/index.d.ts +3 -1
  97. package/lib/Http/index.d.ts.map +1 -1
  98. package/lib/Http/index.js +26 -5
  99. package/lib/Interface/index.d.ts +17 -3
  100. package/lib/Interface/index.d.ts.map +1 -1
  101. package/lib/Jcc-eloquent/lib/Builder.d.ts +12 -1
  102. package/lib/Jcc-eloquent/lib/Builder.d.ts.map +1 -1
  103. package/lib/Jcc-eloquent/lib/Builder.js +119 -5
  104. package/lib/Jcc-eloquent/lib/Database/index.d.ts.map +1 -1
  105. package/lib/Jcc-eloquent/lib/Database/index.js +2 -1
  106. package/lib/Jcc-eloquent/lib/Interfaces/index.d.ts +37 -2
  107. package/lib/Jcc-eloquent/lib/Interfaces/index.d.ts.map +1 -1
  108. package/lib/Jcc-eloquent/lib/Migration.d.ts +6 -0
  109. package/lib/Jcc-eloquent/lib/Migration.d.ts.map +1 -1
  110. package/lib/Jcc-eloquent/lib/Migration.js +24 -2
  111. package/lib/Jcc-eloquent/lib/Model.d.ts +24 -7
  112. package/lib/Jcc-eloquent/lib/Model.d.ts.map +1 -1
  113. package/lib/Jcc-eloquent/lib/Model.js +35 -2
  114. package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts +2 -1
  115. package/lib/Jcc-eloquent/lib/QueryBuilder.d.ts.map +1 -1
  116. package/lib/Jcc-eloquent/lib/QueryBuilder.js +10 -1
  117. package/lib/Jcc-eloquent/lib/Rollback.d.ts.map +1 -1
  118. package/lib/Jcc-eloquent/lib/Rollback.js +9 -2
  119. package/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.d.ts.map +1 -1
  120. package/lib/Jcc-eloquent/lib/Schema/BaseSchemaEntity/index.js +3 -3
  121. package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.d.ts +6 -2
  122. package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.d.ts.map +1 -1
  123. package/lib/Jcc-eloquent/lib/Schema/BluePrint/index.js +41 -12
  124. package/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.d.ts.map +1 -1
  125. package/lib/Jcc-eloquent/lib/Schema/Translator/Sqlite.js +21 -3
  126. package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.d.ts +1 -0
  127. package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.d.ts.map +1 -1
  128. package/lib/Jcc-eloquent/lib/Schema/Translator/postgres.js +70 -14
  129. package/lib/Jcc-eloquent/lib/Schema/index.d.ts +12 -0
  130. package/lib/Jcc-eloquent/lib/Schema/index.d.ts.map +1 -1
  131. package/lib/Jcc-eloquent/lib/Schema/index.js +27 -6
  132. package/lib/Jcc-eloquent/lib/utils/index.d.ts +13 -0
  133. package/lib/Jcc-eloquent/lib/utils/index.d.ts.map +1 -1
  134. package/lib/Jcc-eloquent/lib/utils/index.js +62 -0
  135. package/lib/Middleware/index.d.ts +1 -0
  136. package/lib/Middleware/index.d.ts.map +1 -1
  137. package/lib/Middleware/index.js +20 -8
  138. package/lib/Model/Sequelize.d.ts +3 -0
  139. package/lib/Model/Sequelize.d.ts.map +1 -0
  140. package/lib/Model/Sequelize.js +6 -0
  141. package/lib/Providers/RouteServiceProvider.d.ts.map +1 -1
  142. package/lib/Providers/RouteServiceProvider.js +3 -0
  143. package/lib/Providers/SessionServiceProvider.d.ts +12 -0
  144. package/lib/Providers/SessionServiceProvider.d.ts.map +1 -0
  145. package/lib/Providers/SessionServiceProvider.js +47 -0
  146. package/lib/Queue/Controllers/QueueControllers.d.ts +31 -0
  147. package/lib/Queue/Controllers/QueueControllers.d.ts.map +1 -0
  148. package/lib/Queue/Controllers/QueueControllers.js +126 -0
  149. package/lib/Queue/Drivers/DatabaseDriver.d.ts +6 -1
  150. package/lib/Queue/Drivers/DatabaseDriver.d.ts.map +1 -1
  151. package/lib/Queue/Drivers/DatabaseDriver.js +76 -21
  152. package/lib/Queue/Drivers/MemoryDriver.d.ts +17 -6
  153. package/lib/Queue/Drivers/MemoryDriver.d.ts.map +1 -1
  154. package/lib/Queue/Drivers/MemoryDriver.js +323 -14
  155. package/lib/Queue/Drivers/RedisDriver.d.ts +48 -0
  156. package/lib/Queue/Drivers/RedisDriver.d.ts.map +1 -0
  157. package/lib/Queue/Drivers/RedisDriver.js +533 -0
  158. package/lib/Queue/Job.d.ts +8 -0
  159. package/lib/Queue/Job.d.ts.map +1 -1
  160. package/lib/Queue/Job.js +25 -1
  161. package/lib/Queue/JobsLogger.d.ts.map +1 -1
  162. package/lib/Queue/JobsLogger.js +6 -3
  163. package/lib/Queue/Queue.d.ts +17 -0
  164. package/lib/Queue/Queue.d.ts.map +1 -1
  165. package/lib/Queue/Queue.js +146 -11
  166. package/lib/Queue/QueueServiceProvider.d.ts +6 -0
  167. package/lib/Queue/QueueServiceProvider.d.ts.map +1 -0
  168. package/lib/Queue/QueueServiceProvider.js +18 -0
  169. package/lib/Queue/Route/web.d.ts +2 -0
  170. package/lib/Queue/Route/web.d.ts.map +1 -0
  171. package/lib/Queue/Route/web.js +16 -0
  172. package/lib/Queue/index.d.ts +1 -0
  173. package/lib/Queue/index.d.ts.map +1 -1
  174. package/lib/Queue/index.js +3 -0
  175. package/lib/Queue/interface.d.ts +25 -0
  176. package/lib/Queue/interface.d.ts.map +1 -1
  177. package/lib/Queue/middleware/queueDashboardGuard.d.ts +7 -0
  178. package/lib/Queue/middleware/queueDashboardGuard.d.ts.map +1 -0
  179. package/lib/Queue/middleware/queueDashboardGuard.js +43 -0
  180. package/lib/Queue/type.d.ts +12 -1
  181. package/lib/Queue/type.d.ts.map +1 -1
  182. package/lib/Response/index.d.ts.map +1 -1
  183. package/lib/Response/index.js +6 -1
  184. package/lib/Routes/Route.d.ts +2 -2
  185. package/lib/Routes/Route.d.ts.map +1 -1
  186. package/lib/Routes/RouteBuilder.d.ts +2 -2
  187. package/lib/Routes/RouteBuilder.d.ts.map +1 -1
  188. package/lib/Security/CsrfMiddleware.d.ts +37 -0
  189. package/lib/Security/CsrfMiddleware.d.ts.map +1 -0
  190. package/lib/Security/CsrfMiddleware.js +85 -0
  191. package/lib/Security/MethodSpoofingMiddleware.d.ts +36 -0
  192. package/lib/Security/MethodSpoofingMiddleware.d.ts.map +1 -0
  193. package/lib/Security/MethodSpoofingMiddleware.js +51 -0
  194. package/lib/Security/index.d.ts +5 -0
  195. package/lib/Security/index.d.ts.map +1 -0
  196. package/lib/Security/index.js +7 -0
  197. package/lib/Session/DatabaseSession.d.ts +9 -3
  198. package/lib/Session/DatabaseSession.d.ts.map +1 -1
  199. package/lib/Session/DatabaseSession.js +38 -36
  200. package/lib/Session/ExpressJccSession.d.ts +23 -0
  201. package/lib/Session/ExpressJccSession.d.ts.map +1 -0
  202. package/lib/Session/ExpressJccSession.js +110 -0
  203. package/lib/Session/RedisSession.d.ts +2 -2
  204. package/lib/Session/RedisSession.d.ts.map +1 -1
  205. package/lib/Session/RedisSession.js +19 -5
  206. package/lib/Session/SessionManager.d.ts +18 -4
  207. package/lib/Session/SessionManager.d.ts.map +1 -1
  208. package/lib/Session/SessionManager.js +53 -17
  209. package/lib/Socialite/AbstractProvider.d.ts +60 -0
  210. package/lib/Socialite/AbstractProvider.d.ts.map +1 -0
  211. package/lib/Socialite/AbstractProvider.js +136 -0
  212. package/lib/Socialite/Drivers/facebook/FacebookDriver.d.ts +9 -0
  213. package/lib/Socialite/Drivers/facebook/FacebookDriver.d.ts.map +1 -0
  214. package/lib/Socialite/Drivers/facebook/FacebookDriver.js +40 -0
  215. package/lib/Socialite/Drivers/facebook/FacebookProvider.d.ts +15 -0
  216. package/lib/Socialite/Drivers/facebook/FacebookProvider.d.ts.map +1 -0
  217. package/lib/Socialite/Drivers/facebook/FacebookProvider.js +28 -0
  218. package/lib/Socialite/Drivers/github/GitHubDriver.d.ts +9 -0
  219. package/lib/Socialite/Drivers/github/GitHubDriver.d.ts.map +1 -0
  220. package/lib/Socialite/Drivers/github/GitHubDriver.js +54 -0
  221. package/lib/Socialite/Drivers/github/GitHubProvider.d.ts +15 -0
  222. package/lib/Socialite/Drivers/github/GitHubProvider.d.ts.map +1 -0
  223. package/lib/Socialite/Drivers/github/GitHubProvider.js +28 -0
  224. package/lib/Socialite/Drivers/gitlab/GitLabDriver.d.ts +10 -0
  225. package/lib/Socialite/Drivers/gitlab/GitLabDriver.d.ts.map +1 -0
  226. package/lib/Socialite/Drivers/gitlab/GitLabDriver.js +37 -0
  227. package/lib/Socialite/Drivers/gitlab/GitLabProvider.d.ts +15 -0
  228. package/lib/Socialite/Drivers/gitlab/GitLabProvider.d.ts.map +1 -0
  229. package/lib/Socialite/Drivers/gitlab/GitLabProvider.js +28 -0
  230. package/lib/Socialite/Drivers/google/GoogleDriver.d.ts +9 -0
  231. package/lib/Socialite/Drivers/google/GoogleDriver.d.ts.map +1 -0
  232. package/lib/Socialite/Drivers/google/GoogleDriver.js +39 -0
  233. package/lib/Socialite/Drivers/google/GoogleProvider.d.ts +15 -0
  234. package/lib/Socialite/Drivers/google/GoogleProvider.d.ts.map +1 -0
  235. package/lib/Socialite/Drivers/google/GoogleProvider.js +28 -0
  236. package/lib/Socialite/Drivers/slack/SlackDriver.d.ts +9 -0
  237. package/lib/Socialite/Drivers/slack/SlackDriver.d.ts.map +1 -0
  238. package/lib/Socialite/Drivers/slack/SlackDriver.js +41 -0
  239. package/lib/Socialite/Drivers/slack/SlackProvider.d.ts +16 -0
  240. package/lib/Socialite/Drivers/slack/SlackProvider.d.ts.map +1 -0
  241. package/lib/Socialite/Drivers/slack/SlackProvider.js +37 -0
  242. package/lib/Socialite/Drivers/twitter/TwitterDriver.d.ts +9 -0
  243. package/lib/Socialite/Drivers/twitter/TwitterDriver.d.ts.map +1 -0
  244. package/lib/Socialite/Drivers/twitter/TwitterDriver.js +57 -0
  245. package/lib/Socialite/Drivers/twitter/TwitterProvider.d.ts +16 -0
  246. package/lib/Socialite/Drivers/twitter/TwitterProvider.d.ts.map +1 -0
  247. package/lib/Socialite/Drivers/twitter/TwitterProvider.js +38 -0
  248. package/lib/Socialite/SocialUser.d.ts +42 -0
  249. package/lib/Socialite/SocialUser.d.ts.map +1 -0
  250. package/lib/Socialite/SocialUser.js +116 -0
  251. package/lib/Socialite/Socialite.d.ts +13 -0
  252. package/lib/Socialite/Socialite.d.ts.map +1 -0
  253. package/lib/Socialite/Socialite.js +41 -0
  254. package/lib/Socialite/SocialiteProvider.d.ts +9 -0
  255. package/lib/Socialite/SocialiteProvider.d.ts.map +1 -0
  256. package/lib/Socialite/SocialiteProvider.js +15 -0
  257. package/lib/Socialite/config.d.ts +7 -0
  258. package/lib/Socialite/config.d.ts.map +1 -0
  259. package/lib/Socialite/config.js +44 -0
  260. package/lib/Socialite/constant.d.ts +18 -0
  261. package/lib/Socialite/constant.d.ts.map +1 -0
  262. package/lib/Socialite/constant.js +20 -0
  263. package/lib/Socialite/index.d.ts +13 -0
  264. package/lib/Socialite/index.d.ts.map +1 -0
  265. package/lib/Socialite/index.js +25 -0
  266. package/lib/Socialite/types.d.ts +13 -0
  267. package/lib/Socialite/types.d.ts.map +1 -0
  268. package/lib/Socialite/types.js +2 -0
  269. package/lib/Templating-engine/benchmark.d.ts +7 -0
  270. package/lib/Templating-engine/benchmark.d.ts.map +1 -0
  271. package/lib/Templating-engine/benchmark.js +44 -0
  272. package/lib/Templating-engine/engineHelper.d.ts +37 -8
  273. package/lib/Templating-engine/engineHelper.d.ts.map +1 -1
  274. package/lib/Templating-engine/engineHelper.js +203 -26
  275. package/lib/Templating-engine/errors.d.ts +15 -0
  276. package/lib/Templating-engine/errors.d.ts.map +1 -0
  277. package/lib/Templating-engine/errors.js +35 -0
  278. package/lib/Templating-engine/expressions.d.ts +24 -0
  279. package/lib/Templating-engine/expressions.d.ts.map +1 -1
  280. package/lib/Templating-engine/expressions.js +27 -5
  281. package/lib/Templating-engine/index.d.ts +87 -17
  282. package/lib/Templating-engine/index.d.ts.map +1 -1
  283. package/lib/Templating-engine/index.js +701 -96
  284. package/lib/Templating-engine/plugins.d.ts +30 -0
  285. package/lib/Templating-engine/plugins.d.ts.map +1 -0
  286. package/lib/Templating-engine/plugins.js +47 -0
  287. package/lib/Type/index.d.ts +1 -0
  288. package/lib/Type/index.d.ts.map +1 -1
  289. package/lib/Validation/Validator/CustomValidation.d.ts.map +1 -1
  290. package/lib/Validation/Validator/CustomValidation.js +2 -2
  291. package/lib/Validation/Validator/helper.d.ts.map +1 -1
  292. package/lib/Validation/Validator/helper.js +8 -1
  293. package/lib/util/index.d.ts +42 -1
  294. package/lib/util/index.d.ts.map +1 -1
  295. package/lib/util/index.js +154 -17
  296. package/package.json +1 -1
@@ -1,17 +1,137 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
2
38
  Object.defineProperty(exports, "__esModule", { value: true });
3
39
  exports.MemoryDriver = void 0;
40
+ const fs = __importStar(require("fs"));
41
+ const path = __importStar(require("path"));
42
+ const app_root_path_1 = __importDefault(require("app-root-path"));
4
43
  const uuid_1 = require("uuid");
44
+ function toStored(item) {
45
+ return {
46
+ id: item.id,
47
+ job: item.job,
48
+ availableAt: item.availableAt,
49
+ status: item.status,
50
+ startedAt: item.startedAt,
51
+ finishedAt: item.finishedAt,
52
+ failedAt: item.failedAt,
53
+ exception: item.exception,
54
+ };
55
+ }
56
+ function fromStored(stored) {
57
+ return {
58
+ id: stored.id,
59
+ job: stored.job,
60
+ availableAt: stored.availableAt,
61
+ status: stored.status,
62
+ startedAt: stored.startedAt,
63
+ finishedAt: stored.finishedAt,
64
+ failedAt: stored.failedAt,
65
+ ...(stored.exception && { exception: stored.exception }),
66
+ };
67
+ }
5
68
  class MemoryDriver {
6
- constructor(defaultQueue) {
7
- this.defaultQueue = defaultQueue;
69
+ constructor(config = "default") {
8
70
  this.queues = {};
9
71
  this.fail = [];
10
- this.jobClasses = {};
72
+ this.completed = [];
73
+ this.processing = new Map();
74
+ this.filePath = null;
75
+ const defaultQueue = typeof config === "string" ? config : (config.defaultQueue ?? "default");
11
76
  this.queues[defaultQueue] = [];
77
+ if (typeof config === "object" && config.file) {
78
+ this.filePath = path.resolve(app_root_path_1.default.path, config.file);
79
+ this.load();
80
+ }
12
81
  }
13
- registerJobClass(name, jobClass) {
14
- this.jobClasses[name] = jobClass;
82
+ load() {
83
+ const filePath = this.filePath ?? path.resolve(app_root_path_1.default.path, "storage/queue.json");
84
+ if (!filePath || !fs.existsSync(filePath))
85
+ return;
86
+ try {
87
+ const data = JSON.parse(fs.readFileSync(filePath, "utf-8"));
88
+ this.queues = {};
89
+ for (const [q, items] of Object.entries(data.queues || {})) {
90
+ this.queues[q] = items.map(fromStored);
91
+ }
92
+ this.completed = (data.completed || []).map(fromStored);
93
+ this.fail = (data.fail || []).map((f) => ({
94
+ id: f.id,
95
+ job: f.job,
96
+ error: f.error ?? {
97
+ message: f.exception ?? "",
98
+ stack: f.error?.stack ?? "",
99
+ },
100
+ failedAt: f.failedAt ?? Date.now(),
101
+ exception: f.exception,
102
+ }));
103
+ }
104
+ catch {
105
+ // Ignore corrupt or missing file
106
+ }
107
+ }
108
+ save() {
109
+ if (!this.filePath)
110
+ return;
111
+ try {
112
+ const dir = path.dirname(this.filePath);
113
+ if (!fs.existsSync(dir)) {
114
+ fs.mkdirSync(dir, { recursive: true });
115
+ }
116
+ const data = {
117
+ queues: {},
118
+ completed: this.completed.map(toStored),
119
+ fail: this.fail.map((f) => ({
120
+ id: f.id,
121
+ job: f.job,
122
+ error: f.error,
123
+ failedAt: f.failedAt,
124
+ exception: f.exception ?? f.error?.message + "\n" + (f.error?.stack || ""),
125
+ })),
126
+ };
127
+ for (const [q, items] of Object.entries(this.queues)) {
128
+ data.queues[q] = items.map(toStored);
129
+ }
130
+ fs.writeFileSync(this.filePath, JSON.stringify(data, null, 0));
131
+ }
132
+ catch {
133
+ // Ignore write errors
134
+ }
15
135
  }
16
136
  async push(job, queue) {
17
137
  if (!this.queues[queue]) {
@@ -21,9 +141,14 @@ class MemoryDriver {
21
141
  job.id = id;
22
142
  this.queues[queue].push({
23
143
  id,
24
- job,
144
+ job: { ...job, status: "pending" },
25
145
  availableAt: Date.now(),
146
+ status: "pending",
147
+ startedAt: undefined,
148
+ finishedAt: undefined,
149
+ failedAt: undefined,
26
150
  });
151
+ this.save();
27
152
  }
28
153
  async later(job, delay, queue) {
29
154
  if (!this.queues[queue]) {
@@ -31,40 +156,224 @@ class MemoryDriver {
31
156
  }
32
157
  const id = job.id || (0, uuid_1.v4)();
33
158
  job.id = id;
159
+ this.queues[queue].push({
160
+ id,
161
+ job: { ...job, status: "pending" },
162
+ availableAt: Date.now() + delay * 1000,
163
+ status: "pending",
164
+ startedAt: undefined,
165
+ finishedAt: undefined,
166
+ failedAt: undefined,
167
+ });
168
+ this.save();
34
169
  }
35
170
  async pop(queue) {
171
+ this.load();
36
172
  if (!this.queues[queue]) {
37
173
  return null;
38
174
  }
39
175
  const now = Date.now();
40
- // Find the first job that's available
41
- const index = this.queues[queue].findIndex((item) => item.availableAt <= now);
42
- if (index === -1) {
176
+ const index = this.queues[queue].findIndex((item) => item.availableAt <= now && (!item.status || item.status === "pending" || item.status === "processing"));
177
+ if (index === -1)
43
178
  return null;
44
- }
45
- // Remove from queue but keep a reference
46
179
  const [item] = this.queues[queue].splice(index, 1);
47
- return item;
180
+ item.status = "processing";
181
+ item.startedAt = Date.now();
182
+ this.processing.set(item.id, item);
183
+ const queuedJob = item.job;
184
+ if (typeof queuedJob.payload !== "string") {
185
+ queuedJob.payload = JSON.stringify(queuedJob.payload);
186
+ }
187
+ queuedJob.status = "processing";
188
+ queuedJob.startedAt = new Date(item.startedAt);
189
+ this.save();
190
+ return queuedJob;
48
191
  }
49
192
  async delete(jobId) {
193
+ this.processing.delete(jobId);
50
194
  for (const queueName in this.queues) {
51
- this.queues[queueName] = this.queues[queueName].filter((job) => job.id !== jobId);
195
+ this.queues[queueName] = this.queues[queueName].filter((item) => item.id !== jobId);
196
+ }
197
+ this.fail = this.fail.filter((f) => f.id !== jobId);
198
+ this.completed = this.completed.filter((c) => c.id !== jobId);
199
+ this.save();
200
+ }
201
+ async updateStatus(jobId, update) {
202
+ const item = this.processing.get(jobId);
203
+ if (item) {
204
+ item.status = update.status;
205
+ if (update.startedAt)
206
+ item.startedAt = update.startedAt.getTime();
207
+ if (update.finishedAt)
208
+ item.finishedAt = update.finishedAt.getTime();
209
+ if (update.failedAt)
210
+ item.failedAt = update.failedAt.getTime();
211
+ if (update.status === "completed") {
212
+ this.processing.delete(jobId);
213
+ this.completed.push(item);
214
+ }
215
+ else if (update.status === "failed") {
216
+ this.processing.delete(jobId);
217
+ }
52
218
  }
219
+ const inQueue = Object.values(this.queues)
220
+ .flat()
221
+ .find((i) => i.id === jobId);
222
+ if (inQueue) {
223
+ inQueue.status = update.status;
224
+ if (update.startedAt)
225
+ inQueue.startedAt = update.startedAt.getTime();
226
+ if (update.finishedAt)
227
+ inQueue.finishedAt = update.finishedAt.getTime();
228
+ if (update.failedAt)
229
+ inQueue.failedAt = update.failedAt.getTime();
230
+ if (update.status === "completed") {
231
+ for (const queueName in this.queues) {
232
+ this.queues[queueName] = this.queues[queueName].filter((i) => i.id !== jobId);
233
+ }
234
+ this.completed.push(inQueue);
235
+ }
236
+ }
237
+ this.save();
53
238
  }
54
239
  async release(job, delay = 0) {
240
+ if (!this.queues[job.queue]) {
241
+ this.queues[job.queue] = [];
242
+ }
55
243
  this.queues[job.queue].push({
56
244
  id: job.id,
57
245
  job,
58
246
  availableAt: Date.now() + delay,
247
+ status: "pending",
248
+ startedAt: undefined,
249
+ finishedAt: undefined,
250
+ failedAt: undefined,
59
251
  });
252
+ this.save();
60
253
  }
61
254
  async failed(job, error) {
255
+ const exception = error?.message + "\n" + (error?.stack || "");
256
+ this.processing.delete(job.id);
62
257
  this.fail.push({
63
258
  id: job.id,
64
- job,
259
+ job: { ...job, status: "failed", failedAt: new Date() },
65
260
  error,
66
261
  failedAt: Date.now(),
262
+ exception,
67
263
  });
264
+ this.save();
265
+ }
266
+ async getQueues() {
267
+ this.load();
268
+ const all = [];
269
+ for (const items of Object.values(this.queues)) {
270
+ for (const item of items) {
271
+ all.push(this.toJobRecord(item, "default"));
272
+ }
273
+ }
274
+ for (const item of this.processing.values()) {
275
+ all.push(this.toJobRecord(item, "default", "processing"));
276
+ }
277
+ for (const item of this.completed) {
278
+ all.push(this.toJobRecord(item, "default", "completed"));
279
+ }
280
+ for (const f of this.fail) {
281
+ all.push({
282
+ id: f.id,
283
+ queue: "default",
284
+ payload: f.job.payload,
285
+ attempts: f.job.attempts,
286
+ available_at: null,
287
+ created_at: f.job.createdAt,
288
+ status: "failed",
289
+ started_at: null,
290
+ finished_at: null,
291
+ failed_at: f.failedAt ?? null,
292
+ exception: f.exception ?? f.error?.message + "\n" + (f.error?.stack || ""),
293
+ });
294
+ }
295
+ return this.sortByLatest(all);
296
+ }
297
+ sortByLatest(jobs) {
298
+ return jobs.sort((a, b) => {
299
+ const tsA = a.finished_at ?? a.failed_at ?? a.available_at ?? a.created_at ?? 0;
300
+ const tsB = b.finished_at ?? b.failed_at ?? b.available_at ?? b.created_at ?? 0;
301
+ const numA = typeof tsA === "number" ? tsA : tsA?.getTime?.() ?? 0;
302
+ const numB = typeof tsB === "number" ? tsB : tsB?.getTime?.() ?? 0;
303
+ return numB - numA;
304
+ });
305
+ }
306
+ async findQueueById(id) {
307
+ this.load();
308
+ for (const items of Object.values(this.queues)) {
309
+ const item = items.find((i) => i.id === id);
310
+ if (item)
311
+ return this.toJobRecord(item, "default");
312
+ }
313
+ const proc = this.processing.get(id);
314
+ if (proc)
315
+ return this.toJobRecord(proc, "default");
316
+ const comp = this.completed.find((c) => c.id === id);
317
+ if (comp)
318
+ return this.toJobRecord(comp, "default");
319
+ const f = this.fail.find((x) => x.id === id);
320
+ if (f) {
321
+ return {
322
+ id: f.id,
323
+ queue: "default",
324
+ payload: f.job.payload,
325
+ attempts: f.job.attempts,
326
+ status: "failed",
327
+ started_at: null,
328
+ finished_at: null,
329
+ failed_at: f.failedAt,
330
+ exception: f.exception ?? f.error?.message + "\n" + (f.error?.stack || ""),
331
+ };
332
+ }
333
+ return null;
334
+ }
335
+ toJobRecord(item, queue, statusOverride) {
336
+ return {
337
+ id: item.id,
338
+ queue,
339
+ payload: item.job.payload,
340
+ attempts: item.job.attempts,
341
+ available_at: item.availableAt,
342
+ created_at: item.job.createdAt,
343
+ status: statusOverride ?? item.status ?? "pending",
344
+ started_at: item.startedAt ?? null,
345
+ finished_at: item.finishedAt ?? null,
346
+ failed_at: item.failedAt ?? null,
347
+ exception: item.exception ?? null,
348
+ };
349
+ }
350
+ async findQueueBy(key, value) {
351
+ this.load();
352
+ const results = [];
353
+ const fromFail = this.fail.filter((f) => f[key] === value || f.job?.[key] === value);
354
+ for (const f of fromFail) {
355
+ results.push({
356
+ id: f.id,
357
+ queue: "default",
358
+ payload: f.job.payload,
359
+ attempts: f.job.attempts,
360
+ status: "failed",
361
+ started_at: null,
362
+ finished_at: null,
363
+ failed_at: f.failedAt,
364
+ exception: f.exception ?? f.error?.message + "\n" + (f.error?.stack || ""),
365
+ });
366
+ }
367
+ const allItems = [
368
+ ...Object.values(this.queues).flat(),
369
+ ...this.processing.values(),
370
+ ...this.completed,
371
+ ];
372
+ const matching = allItems.filter((i) => i[key] === value || i.job?.[key] === value);
373
+ for (const item of matching) {
374
+ results.push(this.toJobRecord(item, "default"));
375
+ }
376
+ return this.sortByLatest(results);
68
377
  }
69
378
  }
70
379
  exports.MemoryDriver = MemoryDriver;
@@ -0,0 +1,48 @@
1
+ import { JobStatusUpdate, QueueDriver, QueuedJob } from "../interface";
2
+ export interface RedisQueueConfig {
3
+ driver: "redis";
4
+ connection?: string | Record<string, any>;
5
+ queue?: string;
6
+ prefix?: string;
7
+ /** Seconds to block when waiting for jobs (BLPOP). Default 5. */
8
+ blockFor?: number;
9
+ }
10
+ export declare class RedisDriver implements QueueDriver {
11
+ private redis;
12
+ private prefix;
13
+ private defaultQueue;
14
+ private blockFor;
15
+ constructor(config: RedisQueueConfig);
16
+ private listKey;
17
+ private delayedKey;
18
+ private failedKey;
19
+ private completedKey;
20
+ private metaKey;
21
+ private dataKey;
22
+ private serializeJob;
23
+ private deserializeJob;
24
+ push(job: QueuedJob, queue: string): Promise<void>;
25
+ later(job: QueuedJob, delay: number, queue: string): Promise<void>;
26
+ private migrateDelayedJobs;
27
+ pop(queue: string): Promise<QueuedJob | null>;
28
+ delete(jobId: string): Promise<void>;
29
+ updateStatus(jobId: string, update: JobStatusUpdate): Promise<void>;
30
+ release(job: QueuedJob, delay?: number): Promise<void>;
31
+ failed(job: QueuedJob, error: any): Promise<void>;
32
+ /**
33
+ * Get all jobs from all queues (pending, processing, completed, failed).
34
+ * Returns array with status, started_at, finished_at, failed_at.
35
+ */
36
+ getQueues(): Promise<any[]>;
37
+ private sortByLatest;
38
+ private toJobRecord;
39
+ /**
40
+ * Find a job by ID. Scans queues, processing, completed, failed.
41
+ */
42
+ findQueueById(id: string): Promise<any>;
43
+ /**
44
+ * Find jobs by property key/value. Scans queue lists. Returns array of matches.
45
+ */
46
+ findQueueBy(key: string, value: any): Promise<any[]>;
47
+ }
48
+ //# sourceMappingURL=RedisDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../../../jcc-express-mvc/lib/Queue/Drivers/RedisDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAUD,qBAAa,WAAY,YAAW,WAAW;IAC7C,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,EAAE,gBAAgB;IAQpC,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,cAAc;IA4BT,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMlD,KAAK,CAChB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;YAUF,kBAAkB;IAiBnB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAiC7C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CpC,YAAY,CACvB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC;IA+DH,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzD,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC9D;;;OAGG;IACU,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAgExC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,WAAW;IA0BnB;;OAEG;IACU,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA0DpD;;OAEG;IACU,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;CA6FlE"}