@ereactthohir/core 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/README.md +39 -0
  2. package/dist/database/MigrationRunner.d.ts +21 -0
  3. package/dist/database/MigrationRunner.d.ts.map +1 -0
  4. package/dist/database/MigrationRunner.js +60 -0
  5. package/dist/database/MigrationRunner.js.map +1 -0
  6. package/dist/database/Model.d.ts +81 -0
  7. package/dist/database/Model.d.ts.map +1 -0
  8. package/dist/database/Model.js +186 -0
  9. package/dist/database/Model.js.map +1 -0
  10. package/dist/database/QueryBuilder.d.ts +132 -0
  11. package/dist/database/QueryBuilder.d.ts.map +1 -0
  12. package/dist/database/QueryBuilder.js +267 -0
  13. package/dist/database/QueryBuilder.js.map +1 -0
  14. package/dist/database/drivers/SawitDriver.d.ts +7 -0
  15. package/dist/database/drivers/SawitDriver.d.ts.map +1 -0
  16. package/dist/database/drivers/SawitDriver.js +28 -0
  17. package/dist/database/drivers/SawitDriver.js.map +1 -0
  18. package/dist/foundation/Application.d.ts +23 -0
  19. package/dist/foundation/Application.d.ts.map +1 -0
  20. package/dist/foundation/Application.js +71 -0
  21. package/dist/foundation/Application.js.map +1 -0
  22. package/dist/foundation/Cache.d.ts +35 -0
  23. package/dist/foundation/Cache.d.ts.map +1 -0
  24. package/dist/foundation/Cache.js +92 -0
  25. package/dist/foundation/Cache.js.map +1 -0
  26. package/dist/foundation/Config.d.ts +9 -0
  27. package/dist/foundation/Config.d.ts.map +1 -0
  28. package/dist/foundation/Config.js +31 -0
  29. package/dist/foundation/Config.js.map +1 -0
  30. package/dist/foundation/Container.d.ts +24 -0
  31. package/dist/foundation/Container.d.ts.map +1 -0
  32. package/dist/foundation/Container.js +94 -0
  33. package/dist/foundation/Container.js.map +1 -0
  34. package/dist/foundation/Env.d.ts +17 -0
  35. package/dist/foundation/Env.d.ts.map +1 -0
  36. package/dist/foundation/Env.js +57 -0
  37. package/dist/foundation/Env.js.map +1 -0
  38. package/dist/foundation/Events.d.ts +9 -0
  39. package/dist/foundation/Events.d.ts.map +1 -0
  40. package/dist/foundation/Events.js +23 -0
  41. package/dist/foundation/Events.js.map +1 -0
  42. package/dist/foundation/Hooks.d.ts +9 -0
  43. package/dist/foundation/Hooks.d.ts.map +1 -0
  44. package/dist/foundation/Hooks.js +28 -0
  45. package/dist/foundation/Hooks.js.map +1 -0
  46. package/dist/foundation/Logger.d.ts +6 -0
  47. package/dist/foundation/Logger.d.ts.map +1 -0
  48. package/dist/foundation/Logger.js +16 -0
  49. package/dist/foundation/Logger.js.map +1 -0
  50. package/dist/foundation/Middleware.d.ts +7 -0
  51. package/dist/foundation/Middleware.d.ts.map +1 -0
  52. package/dist/foundation/Middleware.js +7 -0
  53. package/dist/foundation/Middleware.js.map +1 -0
  54. package/dist/foundation/Pipeline.d.ts +14 -0
  55. package/dist/foundation/Pipeline.d.ts.map +1 -0
  56. package/dist/foundation/Pipeline.js +63 -0
  57. package/dist/foundation/Pipeline.js.map +1 -0
  58. package/dist/foundation/Queue.d.ts +11 -0
  59. package/dist/foundation/Queue.d.ts.map +1 -0
  60. package/dist/foundation/Queue.js +38 -0
  61. package/dist/foundation/Queue.js.map +1 -0
  62. package/dist/foundation/RateLimiter.d.ts +16 -0
  63. package/dist/foundation/RateLimiter.d.ts.map +1 -0
  64. package/dist/foundation/RateLimiter.js +51 -0
  65. package/dist/foundation/RateLimiter.js.map +1 -0
  66. package/dist/foundation/Scheduler.d.ts +10 -0
  67. package/dist/foundation/Scheduler.d.ts.map +1 -0
  68. package/dist/foundation/Scheduler.js +48 -0
  69. package/dist/foundation/Scheduler.js.map +1 -0
  70. package/dist/foundation/ServiceProvider.d.ts +23 -0
  71. package/dist/foundation/ServiceProvider.d.ts.map +1 -0
  72. package/dist/foundation/ServiceProvider.js +28 -0
  73. package/dist/foundation/ServiceProvider.js.map +1 -0
  74. package/dist/foundation/Session.d.ts +26 -0
  75. package/dist/foundation/Session.d.ts.map +1 -0
  76. package/dist/foundation/Session.js +59 -0
  77. package/dist/foundation/Session.js.map +1 -0
  78. package/dist/foundation/View.d.ts +6 -0
  79. package/dist/foundation/View.d.ts.map +1 -0
  80. package/dist/foundation/View.js +207 -0
  81. package/dist/foundation/View.js.map +1 -0
  82. package/dist/http/ApiResponse.d.ts +38 -0
  83. package/dist/http/ApiResponse.d.ts.map +1 -0
  84. package/dist/http/ApiResponse.js +152 -0
  85. package/dist/http/ApiResponse.js.map +1 -0
  86. package/dist/http/Controller.d.ts +3 -0
  87. package/dist/http/Controller.d.ts.map +1 -0
  88. package/dist/http/Controller.js +7 -0
  89. package/dist/http/Controller.js.map +1 -0
  90. package/dist/http/ExceptionHandler.d.ts +6 -0
  91. package/dist/http/ExceptionHandler.d.ts.map +1 -0
  92. package/dist/http/ExceptionHandler.js +32 -0
  93. package/dist/http/ExceptionHandler.js.map +1 -0
  94. package/dist/http/Kernel.d.ts +8 -0
  95. package/dist/http/Kernel.d.ts.map +1 -0
  96. package/dist/http/Kernel.js +59 -0
  97. package/dist/http/Kernel.js.map +1 -0
  98. package/dist/http/Middleware/AuthMiddleware.d.ts +8 -0
  99. package/dist/http/Middleware/AuthMiddleware.d.ts.map +1 -0
  100. package/dist/http/Middleware/AuthMiddleware.js +17 -0
  101. package/dist/http/Middleware/AuthMiddleware.js.map +1 -0
  102. package/dist/http/Request.d.ts +35 -0
  103. package/dist/http/Request.d.ts.map +1 -0
  104. package/dist/http/Request.js +106 -0
  105. package/dist/http/Request.js.map +1 -0
  106. package/dist/http/Response.d.ts +26 -0
  107. package/dist/http/Response.d.ts.map +1 -0
  108. package/dist/http/Response.js +90 -0
  109. package/dist/http/Response.js.map +1 -0
  110. package/dist/http/Router.d.ts +46 -0
  111. package/dist/http/Router.d.ts.map +1 -0
  112. package/dist/http/Router.js +150 -0
  113. package/dist/http/Router.js.map +1 -0
  114. package/dist/index.d.ts +38 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +55 -0
  117. package/dist/index.js.map +1 -0
  118. package/dist/security/CSRF.d.ts +18 -0
  119. package/dist/security/CSRF.d.ts.map +1 -0
  120. package/dist/security/CSRF.js +79 -0
  121. package/dist/security/CSRF.js.map +1 -0
  122. package/dist/security/Encrypter.d.ts +18 -0
  123. package/dist/security/Encrypter.d.ts.map +1 -0
  124. package/dist/security/Encrypter.js +75 -0
  125. package/dist/security/Encrypter.js.map +1 -0
  126. package/dist/security/InputSanitizer.d.ts +23 -0
  127. package/dist/security/InputSanitizer.d.ts.map +1 -0
  128. package/dist/security/InputSanitizer.js +65 -0
  129. package/dist/security/InputSanitizer.js.map +1 -0
  130. package/dist/security/PasswordHasher.d.ts +22 -0
  131. package/dist/security/PasswordHasher.d.ts.map +1 -0
  132. package/dist/security/PasswordHasher.js +68 -0
  133. package/dist/security/PasswordHasher.js.map +1 -0
  134. package/dist/services/Auth.d.ts +20 -0
  135. package/dist/services/Auth.d.ts.map +1 -0
  136. package/dist/services/Auth.js +28 -0
  137. package/dist/services/Auth.js.map +1 -0
  138. package/dist/services/Gate.d.ts +10 -0
  139. package/dist/services/Gate.d.ts.map +1 -0
  140. package/dist/services/Gate.js +36 -0
  141. package/dist/services/Gate.js.map +1 -0
  142. package/dist/services/Service.d.ts +4 -0
  143. package/dist/services/Service.d.ts.map +1 -0
  144. package/dist/services/Service.js +7 -0
  145. package/dist/services/Service.js.map +1 -0
  146. package/dist/services/Validator.d.ts +8 -0
  147. package/dist/services/Validator.d.ts.map +1 -0
  148. package/dist/services/Validator.js +39 -0
  149. package/dist/services/Validator.js.map +1 -0
  150. package/dist/src/database/Model.d.ts +13 -0
  151. package/dist/src/database/Model.d.ts.map +1 -0
  152. package/dist/src/database/Model.js +37 -0
  153. package/dist/src/database/Model.js.map +1 -0
  154. package/dist/src/database/QueryBuilder.d.ts +15 -0
  155. package/dist/src/database/QueryBuilder.d.ts.map +1 -0
  156. package/dist/src/database/QueryBuilder.js +43 -0
  157. package/dist/src/database/QueryBuilder.js.map +1 -0
  158. package/dist/src/database/drivers/SawitDriver.d.ts +7 -0
  159. package/dist/src/database/drivers/SawitDriver.d.ts.map +1 -0
  160. package/dist/src/database/drivers/SawitDriver.js +28 -0
  161. package/dist/src/database/drivers/SawitDriver.js.map +1 -0
  162. package/dist/src/foundation/Application.d.ts +13 -0
  163. package/dist/src/foundation/Application.d.ts.map +1 -0
  164. package/dist/src/foundation/Application.js +41 -0
  165. package/dist/src/foundation/Application.js.map +1 -0
  166. package/dist/src/foundation/Container.d.ts +11 -0
  167. package/dist/src/foundation/Container.d.ts.map +1 -0
  168. package/dist/src/foundation/Container.js +43 -0
  169. package/dist/src/foundation/Container.js.map +1 -0
  170. package/dist/src/foundation/Events.d.ts +9 -0
  171. package/dist/src/foundation/Events.d.ts.map +1 -0
  172. package/dist/src/foundation/Events.js +23 -0
  173. package/dist/src/foundation/Events.js.map +1 -0
  174. package/dist/src/foundation/Logger.d.ts +6 -0
  175. package/dist/src/foundation/Logger.d.ts.map +1 -0
  176. package/dist/src/foundation/Logger.js +16 -0
  177. package/dist/src/foundation/Logger.js.map +1 -0
  178. package/dist/src/foundation/Queue.d.ts +11 -0
  179. package/dist/src/foundation/Queue.d.ts.map +1 -0
  180. package/dist/src/foundation/Queue.js +38 -0
  181. package/dist/src/foundation/Queue.js.map +1 -0
  182. package/dist/src/foundation/Scheduler.d.ts +10 -0
  183. package/dist/src/foundation/Scheduler.d.ts.map +1 -0
  184. package/dist/src/foundation/Scheduler.js +48 -0
  185. package/dist/src/foundation/Scheduler.js.map +1 -0
  186. package/dist/src/foundation/ServiceProvider.d.ts +13 -0
  187. package/dist/src/foundation/ServiceProvider.d.ts.map +1 -0
  188. package/dist/src/foundation/ServiceProvider.js +14 -0
  189. package/dist/src/foundation/ServiceProvider.js.map +1 -0
  190. package/dist/src/foundation/View.d.ts +6 -0
  191. package/dist/src/foundation/View.d.ts.map +1 -0
  192. package/dist/src/foundation/View.js +37 -0
  193. package/dist/src/foundation/View.js.map +1 -0
  194. package/dist/src/http/Controller.d.ts +3 -0
  195. package/dist/src/http/Controller.d.ts.map +1 -0
  196. package/dist/src/http/Controller.js +7 -0
  197. package/dist/src/http/Controller.js.map +1 -0
  198. package/dist/src/http/ExceptionHandler.d.ts +6 -0
  199. package/dist/src/http/ExceptionHandler.d.ts.map +1 -0
  200. package/dist/src/http/ExceptionHandler.js +32 -0
  201. package/dist/src/http/ExceptionHandler.js.map +1 -0
  202. package/dist/src/http/Kernel.d.ts +8 -0
  203. package/dist/src/http/Kernel.d.ts.map +1 -0
  204. package/dist/src/http/Kernel.js +58 -0
  205. package/dist/src/http/Kernel.js.map +1 -0
  206. package/dist/src/http/Middleware/AuthMiddleware.d.ts +8 -0
  207. package/dist/src/http/Middleware/AuthMiddleware.d.ts.map +1 -0
  208. package/dist/src/http/Middleware/AuthMiddleware.js +17 -0
  209. package/dist/src/http/Middleware/AuthMiddleware.js.map +1 -0
  210. package/dist/src/http/Router.d.ts +27 -0
  211. package/dist/src/http/Router.d.ts.map +1 -0
  212. package/dist/src/http/Router.js +74 -0
  213. package/dist/src/http/Router.js.map +1 -0
  214. package/dist/src/index.d.ts +20 -0
  215. package/dist/src/index.d.ts.map +1 -0
  216. package/dist/src/index.js +37 -0
  217. package/dist/src/index.js.map +1 -0
  218. package/dist/src/services/Auth.d.ts +20 -0
  219. package/dist/src/services/Auth.d.ts.map +1 -0
  220. package/dist/src/services/Auth.js +28 -0
  221. package/dist/src/services/Auth.js.map +1 -0
  222. package/dist/src/services/Gate.d.ts +10 -0
  223. package/dist/src/services/Gate.d.ts.map +1 -0
  224. package/dist/src/services/Gate.js +36 -0
  225. package/dist/src/services/Gate.js.map +1 -0
  226. package/dist/src/services/Service.d.ts +4 -0
  227. package/dist/src/services/Service.d.ts.map +1 -0
  228. package/dist/src/services/Service.js +7 -0
  229. package/dist/src/services/Service.js.map +1 -0
  230. package/dist/src/services/Validator.d.ts +8 -0
  231. package/dist/src/services/Validator.d.ts.map +1 -0
  232. package/dist/src/services/Validator.js +39 -0
  233. package/dist/src/services/Validator.js.map +1 -0
  234. package/dist/testing/Factory.d.ts +31 -0
  235. package/dist/testing/Factory.d.ts.map +1 -0
  236. package/dist/testing/Factory.js +68 -0
  237. package/dist/testing/Factory.js.map +1 -0
  238. package/dist/testing/TestHelpers.d.ts +65 -0
  239. package/dist/testing/TestHelpers.d.ts.map +1 -0
  240. package/dist/testing/TestHelpers.js +141 -0
  241. package/dist/testing/TestHelpers.js.map +1 -0
  242. package/dist/tests/Application.test.d.ts +2 -0
  243. package/dist/tests/Application.test.d.ts.map +1 -0
  244. package/dist/tests/Application.test.js +22 -0
  245. package/dist/tests/Application.test.js.map +1 -0
  246. package/dist/tsconfig.tsbuildinfo +1 -0
  247. package/package.json +39 -0
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Validator = void 0;
4
+ class Validator {
5
+ static validate(data, rules) {
6
+ const errors = {};
7
+ let isValid = true;
8
+ for (const [field, ruleString] of Object.entries(rules)) {
9
+ const fieldRules = ruleString.split('|');
10
+ const value = data[field];
11
+ for (const rule of fieldRules) {
12
+ if (rule === 'required' && (value === undefined || value === null || value === '')) {
13
+ this.addError(errors, field, `The ${field} field is required.`);
14
+ isValid = false;
15
+ }
16
+ if (rule === 'email' && value && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) {
17
+ this.addError(errors, field, `The ${field} must be a valid email address.`);
18
+ isValid = false;
19
+ }
20
+ if (rule.startsWith('min:')) {
21
+ const min = parseInt(rule.split(':')[1]);
22
+ if (value && value.toString().length < min) {
23
+ this.addError(errors, field, `The ${field} must be at least ${min} characters.`);
24
+ isValid = false;
25
+ }
26
+ }
27
+ }
28
+ }
29
+ return { isValid, errors };
30
+ }
31
+ static addError(errors, field, message) {
32
+ if (!errors[field]) {
33
+ errors[field] = [];
34
+ }
35
+ errors[field].push(message);
36
+ }
37
+ }
38
+ exports.Validator = Validator;
39
+ //# sourceMappingURL=Validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validator.js","sourceRoot":"","sources":["../../src/services/Validator.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IACX,MAAM,CAAC,QAAQ,CAAC,IAAS,EAAE,KAA6B;QAC3D,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,KAAK,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAE1B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC5B,IAAI,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC;oBACjF,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,qBAAqB,CAAC,CAAC;oBAChE,OAAO,GAAG,KAAK,CAAC;gBACpB,CAAC;gBAED,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzE,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,iCAAiC,CAAC,CAAC;oBAC5E,OAAO,GAAG,KAAK,CAAC;gBACpB,CAAC;gBAED,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;wBACzC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,qBAAqB,GAAG,cAAc,CAAC,CAAC;wBACjF,OAAO,GAAG,KAAK,CAAC;oBACpB,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAEO,MAAM,CAAC,QAAQ,CAAC,MAAgC,EAAE,KAAa,EAAE,OAAe;QACpF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACvB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CACJ;AAvCD,8BAuCC"}
@@ -0,0 +1,13 @@
1
+ import { QueryBuilder } from './QueryBuilder';
2
+ export declare abstract class Model {
3
+ static table: string;
4
+ constructor(attributes?: any);
5
+ static query(): QueryBuilder;
6
+ static find(id: any): Promise<any>;
7
+ static all(): Promise<any[]>;
8
+ save(): Promise<this>;
9
+ hasOne(related: any, localKey: string | undefined, foreignKey: string): Promise<any>;
10
+ hasMany(related: any, localKey: string | undefined, foreignKey: string): Promise<any[]>;
11
+ belongsTo(related: any, foreignKey: string, ownerKey?: string): Promise<any>;
12
+ }
13
+ //# sourceMappingURL=Model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Model.d.ts","sourceRoot":"","sources":["../../../src/database/Model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,8BAAsB,KAAK;IACvB,MAAM,CAAC,KAAK,EAAE,MAAM,CAAM;gBAEd,UAAU,GAAE,GAAQ;IAIhC,MAAM,CAAC,KAAK;WAIC,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;WAI3B,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAI5B,IAAI;IAQH,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,YAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI/E,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,YAAO,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAIlF,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAa,GAAG,OAAO,CAAC,GAAG,CAAC;CAG5F"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Model = void 0;
4
+ const QueryBuilder_1 = require("./QueryBuilder");
5
+ class Model {
6
+ constructor(attributes = {}) {
7
+ Object.assign(this, attributes);
8
+ }
9
+ static query() {
10
+ return new QueryBuilder_1.QueryBuilder(this.table);
11
+ }
12
+ static async find(id) {
13
+ return this.query().where('id', id).first();
14
+ }
15
+ static async all() {
16
+ return this.query().get();
17
+ }
18
+ async save() {
19
+ console.log(`Saving record to ${this.constructor.table}...`);
20
+ if (!this.id) {
21
+ this.id = Math.floor(Math.random() * 10000);
22
+ }
23
+ return this;
24
+ }
25
+ hasOne(related, localKey = 'id', foreignKey) {
26
+ return related.query().where(foreignKey, this[localKey]).first();
27
+ }
28
+ hasMany(related, localKey = 'id', foreignKey) {
29
+ return related.query().where(foreignKey, this[localKey]).get();
30
+ }
31
+ belongsTo(related, foreignKey, ownerKey = 'id') {
32
+ return related.query().where(ownerKey, this[foreignKey]).first();
33
+ }
34
+ }
35
+ exports.Model = Model;
36
+ Model.table = '';
37
+ //# sourceMappingURL=Model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Model.js","sourceRoot":"","sources":["../../../src/database/Model.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C,MAAsB,KAAK;IAGvB,YAAY,aAAkB,EAAE;QAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,CAAC,KAAK;QACR,OAAO,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAO;QACrB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG;QACZ,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,IAAI;QACN,OAAO,CAAC,GAAG,CAAC,oBAAqB,IAAI,CAAC,WAAmB,CAAC,KAAK,KAAK,CAAC,CAAC;QACtE,IAAI,CAAE,IAAY,CAAC,EAAE,EAAE,CAAC;YACnB,IAAY,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,OAAY,EAAE,WAAmB,IAAI,EAAE,UAAkB;QACnE,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,EAAG,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9E,CAAC;IAEM,OAAO,CAAC,OAAY,EAAE,WAAmB,IAAI,EAAE,UAAkB;QACpE,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,EAAG,IAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5E,CAAC;IAEM,SAAS,CAAC,OAAY,EAAE,UAAkB,EAAE,WAAmB,IAAI;QACtE,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAG,IAAY,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9E,CAAC;;AArCL,sBAsCC;AArCU,WAAK,GAAW,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare class QueryBuilder {
2
+ private table;
3
+ private wheres;
4
+ private limitValue;
5
+ private order;
6
+ constructor(table: string);
7
+ where(column: string, value: any): this;
8
+ where(column: string, operator: string, value: any): this;
9
+ limit(n: number): this;
10
+ orderBy(column: string, direction?: 'ASC' | 'DESC'): this;
11
+ get(): Promise<any[]>;
12
+ first(): Promise<any | null>;
13
+ private buildWheres;
14
+ }
15
+ //# sourceMappingURL=QueryBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilder.d.ts","sourceRoot":"","sources":["../../../src/database/QueryBuilder.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAA0D;IACxE,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,KAAK,CAA8D;gBAE/D,KAAK,EAAE,MAAM;IAIlB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IACvC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAUzD,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAK1D,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAKrB,KAAK,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IAKzC,OAAO,CAAC,WAAW;CAItB"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryBuilder = void 0;
4
+ class QueryBuilder {
5
+ constructor(table) {
6
+ this.wheres = [];
7
+ this.limitValue = null;
8
+ this.order = null;
9
+ this.table = table;
10
+ }
11
+ where(column, operatorOrValue, value) {
12
+ if (value === undefined) {
13
+ this.wheres.push({ column, operator: '=', value: operatorOrValue });
14
+ }
15
+ else {
16
+ this.wheres.push({ column, operator: operatorOrValue, value });
17
+ }
18
+ return this;
19
+ }
20
+ limit(n) {
21
+ this.limitValue = n;
22
+ return this;
23
+ }
24
+ orderBy(column, direction = 'ASC') {
25
+ this.order = { column, direction };
26
+ return this;
27
+ }
28
+ async get() {
29
+ console.log(`Executing: SELECT * FROM ${this.table} ${this.buildWheres()}`);
30
+ return [];
31
+ }
32
+ async first() {
33
+ const results = await this.limit(1).get();
34
+ return results[0] || null;
35
+ }
36
+ buildWheres() {
37
+ if (this.wheres.length === 0)
38
+ return '';
39
+ return 'WHERE ' + this.wheres.map(w => `${w.column} ${w.operator} ?`).join(' AND ');
40
+ }
41
+ }
42
+ exports.QueryBuilder = QueryBuilder;
43
+ //# sourceMappingURL=QueryBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/database/QueryBuilder.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAY;IAMrB,YAAY,KAAa;QAJjB,WAAM,GAAuD,EAAE,CAAC;QAChE,eAAU,GAAkB,IAAI,CAAC;QACjC,UAAK,GAAyD,IAAI,CAAC;QAGvE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAIM,KAAK,CAAC,MAAc,EAAE,eAAoB,EAAE,KAAW;QAC1D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,CAAS;QAClB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,OAAO,CAAC,MAAc,EAAE,YAA4B,KAAK;QAC5D,IAAI,CAAC,KAAK,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,EAAE,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,KAAK;QACd,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC1C,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC9B,CAAC;IAEO,WAAW;QACf,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxC,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxF,CAAC;CACJ;AA7CD,oCA6CC"}
@@ -0,0 +1,7 @@
1
+ export declare class SawitDriver {
2
+ private dbPath;
3
+ constructor(basePath: string);
4
+ read(table: string): Promise<any[]>;
5
+ write(table: string, records: any[]): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=SawitDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SawitDriver.d.ts","sourceRoot":"","sources":["../../../../src/database/drivers/SawitDriver.ts"],"names":[],"mappings":"AAGA,qBAAa,WAAW;IACpB,OAAO,CAAC,MAAM,CAAS;gBAEX,QAAQ,EAAE,MAAM;IAQf,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAKnC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAKnE"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SawitDriver = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const path_1 = __importDefault(require("path"));
9
+ class SawitDriver {
10
+ constructor(basePath) {
11
+ this.dbPath = path_1.default.join(basePath, 'database', 'sawit.db');
12
+ fs_extra_1.default.ensureFileSync(this.dbPath);
13
+ if (!fs_extra_1.default.readFileSync(this.dbPath, 'utf8')) {
14
+ fs_extra_1.default.writeJSONSync(this.dbPath, {});
15
+ }
16
+ }
17
+ async read(table) {
18
+ const data = await fs_extra_1.default.readJSON(this.dbPath);
19
+ return data[table] || [];
20
+ }
21
+ async write(table, records) {
22
+ const data = await fs_extra_1.default.readJSON(this.dbPath);
23
+ data[table] = records;
24
+ await fs_extra_1.default.writeJSON(this.dbPath, data, { spaces: 2 });
25
+ }
26
+ }
27
+ exports.SawitDriver = SawitDriver;
28
+ //# sourceMappingURL=SawitDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SawitDriver.js","sourceRoot":"","sources":["../../../../src/database/drivers/SawitDriver.ts"],"names":[],"mappings":";;;;;;AAAA,wDAA0B;AAC1B,gDAAwB;AAExB,MAAa,WAAW;IAGpB,YAAY,QAAgB;QACxB,IAAI,CAAC,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1D,kBAAE,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,kBAAE,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;YACxC,kBAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,KAAa;QAC3B,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,OAAc;QAC5C,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QACtB,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;CACJ;AArBD,kCAqBC"}
@@ -0,0 +1,13 @@
1
+ import { Container } from './Container';
2
+ import { ServiceProvider } from './ServiceProvider';
3
+ export declare class Application extends Container {
4
+ protected providers: ServiceProvider[];
5
+ protected isBooted: boolean;
6
+ basePath: string;
7
+ constructor(basePath: string);
8
+ protected loadEnvironment(): void;
9
+ protected registerBaseBindings(): void;
10
+ register(provider: new (app: Application) => ServiceProvider): void;
11
+ boot(): void;
12
+ }
13
+ //# sourceMappingURL=Application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Application.d.ts","sourceRoot":"","sources":["../../../src/foundation/Application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,WAAY,SAAQ,SAAS;IACtC,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,CAAM;IAC5C,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAS;IAC7B,QAAQ,EAAE,MAAM,CAAC;gBAEZ,QAAQ,EAAE,MAAM;IAO5B,SAAS,CAAC,eAAe;IAMzB,SAAS,CAAC,oBAAoB;IAKvB,QAAQ,CAAC,QAAQ,EAAE,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe;IAM5D,IAAI;CAMd"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Application = void 0;
7
+ const Container_1 = require("./Container");
8
+ const dotenv_1 = __importDefault(require("dotenv"));
9
+ const path_1 = __importDefault(require("path"));
10
+ class Application extends Container_1.Container {
11
+ constructor(basePath) {
12
+ super();
13
+ this.providers = [];
14
+ this.isBooted = false;
15
+ this.basePath = basePath;
16
+ this.loadEnvironment();
17
+ this.registerBaseBindings();
18
+ }
19
+ loadEnvironment() {
20
+ dotenv_1.default.config({
21
+ path: path_1.default.join(this.basePath, '.env')
22
+ });
23
+ }
24
+ registerBaseBindings() {
25
+ this.singleton('app', this);
26
+ this.singleton(Application.name, this);
27
+ }
28
+ register(provider) {
29
+ const instance = new provider(this);
30
+ instance.register();
31
+ this.providers.push(instance);
32
+ }
33
+ boot() {
34
+ if (this.isBooted)
35
+ return;
36
+ this.providers.forEach(provider => provider.boot());
37
+ this.isBooted = true;
38
+ }
39
+ }
40
+ exports.Application = Application;
41
+ //# sourceMappingURL=Application.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Application.js","sourceRoot":"","sources":["../../../src/foundation/Application.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAwC;AAExC,oDAA4B;AAC5B,gDAAwB;AAExB,MAAa,WAAY,SAAQ,qBAAS;IAKtC,YAAY,QAAgB;QACxB,KAAK,EAAE,CAAC;QALF,cAAS,GAAsB,EAAE,CAAC;QAClC,aAAQ,GAAY,KAAK,CAAC;QAKhC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAES,eAAe;QACrB,gBAAM,CAAC,MAAM,CAAC;YACV,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC;SACzC,CAAC,CAAC;IACP,CAAC;IAES,oBAAoB;QAC1B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,QAAQ,CAAC,QAAmD;QAC/D,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI;QACP,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAO;QAE1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;CACJ;AAnCD,kCAmCC"}
@@ -0,0 +1,11 @@
1
+ export declare class Container {
2
+ protected bindings: Map<string, {
3
+ concrete: any;
4
+ singleton: boolean;
5
+ }>;
6
+ protected instances: Map<string, any>;
7
+ bind(abstract: string, concrete: any, singleton?: boolean): void;
8
+ singleton(abstract: string, concrete: any): void;
9
+ make<T = any>(abstract: string): T;
10
+ }
11
+ //# sourceMappingURL=Container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/foundation/Container.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAS;IAClB,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAa;IACnF,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IAE3C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,GAAE,OAAe;IAIhE,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAIzC,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC;CA8B5C"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Container = void 0;
4
+ class Container {
5
+ constructor() {
6
+ this.bindings = new Map();
7
+ this.instances = new Map();
8
+ }
9
+ bind(abstract, concrete, singleton = false) {
10
+ this.bindings.set(abstract, { concrete, singleton });
11
+ }
12
+ singleton(abstract, concrete) {
13
+ this.bind(abstract, concrete, true);
14
+ }
15
+ make(abstract) {
16
+ if (this.instances.has(abstract)) {
17
+ return this.instances.get(abstract);
18
+ }
19
+ const binding = this.bindings.get(abstract);
20
+ if (!binding) {
21
+ throw new Error(`Target [${abstract}] is not bound.`);
22
+ }
23
+ let instance;
24
+ if (typeof binding.concrete === 'function' && !binding.concrete.prototype) {
25
+ // It's a closure
26
+ instance = binding.concrete(this);
27
+ }
28
+ else if (typeof binding.concrete === 'function') {
29
+ // It's a class
30
+ instance = new binding.concrete();
31
+ }
32
+ else {
33
+ // It's a value
34
+ instance = binding.concrete;
35
+ }
36
+ if (binding.singleton) {
37
+ this.instances.set(abstract, instance);
38
+ }
39
+ return instance;
40
+ }
41
+ }
42
+ exports.Container = Container;
43
+ //# sourceMappingURL=Container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../src/foundation/Container.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAS;IAAtB;QACc,aAAQ,GAAuD,IAAI,GAAG,EAAE,CAAC;QACzE,cAAS,GAAqB,IAAI,GAAG,EAAE,CAAC;IAwCtD,CAAC;IAtCU,IAAI,CAAC,QAAgB,EAAE,QAAa,EAAE,YAAqB,KAAK;QACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IACzD,CAAC;IAEM,SAAS,CAAC,QAAgB,EAAE,QAAa;QAC5C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAEM,IAAI,CAAU,QAAgB;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,WAAW,QAAQ,iBAAiB,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,QAAa,CAAC;QAElB,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxE,iBAAiB;YACjB,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;aAAM,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAChD,eAAe;YACf,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,CAAC;aAAM,CAAC;YACJ,eAAe;YACf,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAChC,CAAC;QAED,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AA1CD,8BA0CC"}
@@ -0,0 +1,9 @@
1
+ type Listener = (data: any) => void;
2
+ export declare class EventDispatcher {
3
+ private listeners;
4
+ on(event: string, listener: Listener): void;
5
+ emit(event: string, data: any): void;
6
+ }
7
+ export declare const Events: EventDispatcher;
8
+ export {};
9
+ //# sourceMappingURL=Events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.d.ts","sourceRoot":"","sources":["../../../src/foundation/Events.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;AAEpC,qBAAa,eAAe;IACxB,OAAO,CAAC,SAAS,CAAsC;IAEhD,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAOpC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG;CAMvC;AAED,eAAO,MAAM,MAAM,iBAAwB,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Events = exports.EventDispatcher = void 0;
4
+ class EventDispatcher {
5
+ constructor() {
6
+ this.listeners = new Map();
7
+ }
8
+ on(event, listener) {
9
+ if (!this.listeners.has(event)) {
10
+ this.listeners.set(event, []);
11
+ }
12
+ this.listeners.get(event).push(listener);
13
+ }
14
+ emit(event, data) {
15
+ const eventListeners = this.listeners.get(event);
16
+ if (eventListeners) {
17
+ eventListeners.forEach(listener => listener(data));
18
+ }
19
+ }
20
+ }
21
+ exports.EventDispatcher = EventDispatcher;
22
+ exports.Events = new EventDispatcher();
23
+ //# sourceMappingURL=Events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Events.js","sourceRoot":"","sources":["../../../src/foundation/Events.ts"],"names":[],"mappings":";;;AAEA,MAAa,eAAe;IAA5B;QACY,cAAS,GAA4B,IAAI,GAAG,EAAE,CAAC;IAe3D,CAAC;IAbU,EAAE,CAAC,KAAa,EAAE,QAAkB;QACvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,IAAI,CAAC,KAAa,EAAE,IAAS;QAChC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,cAAc,EAAE,CAAC;YACjB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;CACJ;AAhBD,0CAgBC;AAEY,QAAA,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class Logger {
2
+ static info(message: string): void;
3
+ static error(message: string, error?: any): void;
4
+ static warn(message: string): void;
5
+ }
6
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../src/foundation/Logger.ts"],"names":[],"mappings":"AAAA,qBAAa,MAAM;IACf,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;IAI3B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG;IAIzC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM;CAG9B"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = void 0;
4
+ class Logger {
5
+ static info(message) {
6
+ console.log(`[INFO] [${new Date().toISOString()}] ${message}`);
7
+ }
8
+ static error(message, error) {
9
+ console.error(`[ERROR] [${new Date().toISOString()}] ${message}`, error);
10
+ }
11
+ static warn(message) {
12
+ console.warn(`[WARN] [${new Date().toISOString()}] ${message}`);
13
+ }
14
+ }
15
+ exports.Logger = Logger;
16
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../../src/foundation/Logger.ts"],"names":[],"mappings":";;;AAAA,MAAa,MAAM;IACf,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,KAAW;QACrC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAe;QACvB,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;CACJ;AAZD,wBAYC"}
@@ -0,0 +1,11 @@
1
+ export interface Job {
2
+ handle(): Promise<void>;
3
+ }
4
+ export declare class Queue {
5
+ private jobs;
6
+ private isProcessing;
7
+ dispatch(job: Job): void;
8
+ private process;
9
+ }
10
+ export declare const QueueManager: Queue;
11
+ //# sourceMappingURL=Queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.d.ts","sourceRoot":"","sources":["../../../src/foundation/Queue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,GAAG;IAChB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,qBAAa,KAAK;IACd,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,YAAY,CAAkB;IAE/B,QAAQ,CAAC,GAAG,EAAE,GAAG;YAMV,OAAO;CAuBxB;AAED,eAAO,MAAM,YAAY,OAAc,CAAC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueueManager = exports.Queue = void 0;
4
+ class Queue {
5
+ constructor() {
6
+ this.jobs = [];
7
+ this.isProcessing = false;
8
+ }
9
+ dispatch(job) {
10
+ this.jobs.push(job);
11
+ console.log(`Job dispatched. Queue size: ${this.jobs.length}`);
12
+ this.process();
13
+ }
14
+ async process() {
15
+ if (this.isProcessing || this.jobs.length === 0)
16
+ return;
17
+ this.isProcessing = true;
18
+ const job = this.jobs.shift();
19
+ if (job) {
20
+ try {
21
+ console.log('Processing job...');
22
+ await job.handle();
23
+ console.log('Job processed successfully.');
24
+ }
25
+ catch (error) {
26
+ console.error('Job failed:', error);
27
+ }
28
+ }
29
+ this.isProcessing = false;
30
+ // Process next job
31
+ if (this.jobs.length > 0) {
32
+ this.process();
33
+ }
34
+ }
35
+ }
36
+ exports.Queue = Queue;
37
+ exports.QueueManager = new Queue();
38
+ //# sourceMappingURL=Queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/foundation/Queue.ts"],"names":[],"mappings":";;;AAIA,MAAa,KAAK;IAAlB;QACY,SAAI,GAAU,EAAE,CAAC;QACjB,iBAAY,GAAY,KAAK,CAAC;IA+B1C,CAAC;IA7BU,QAAQ,CAAC,GAAQ;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,OAAO;QACjB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAExD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAE9B,IAAI,GAAG,EAAE,CAAC;YACN,IAAI,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBACjC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,mBAAmB;QACnB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACL,CAAC;CACJ;AAjCD,sBAiCC;AAEY,QAAA,YAAY,GAAG,IAAI,KAAK,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type ScheduledTask = () => Promise<void> | void;
2
+ export declare class Scheduler {
3
+ private tasks;
4
+ private timer;
5
+ schedule(name: string, intervalMs: number, task: ScheduledTask): void;
6
+ start(): void;
7
+ stop(): void;
8
+ }
9
+ export declare const Schedule: Scheduler;
10
+ //# sourceMappingURL=Scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../../src/foundation/Scheduler.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEvD,qBAAa,SAAS;IAClB,OAAO,CAAC,KAAK,CAAsF;IACnG,OAAO,CAAC,KAAK,CAA+B;IAErC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa;IAS9D,KAAK;IAsBL,IAAI;CAMd;AAED,eAAO,MAAM,QAAQ,WAAkB,CAAC"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Schedule = exports.Scheduler = void 0;
4
+ class Scheduler {
5
+ constructor() {
6
+ this.tasks = new Map();
7
+ this.timer = null;
8
+ }
9
+ schedule(name, intervalMs, task) {
10
+ this.tasks.set(name, {
11
+ task,
12
+ interval: intervalMs,
13
+ lastRun: 0
14
+ });
15
+ this.start();
16
+ }
17
+ start() {
18
+ if (this.timer)
19
+ return;
20
+ this.timer = setInterval(() => {
21
+ const now = Date.now();
22
+ this.tasks.forEach((config, name) => {
23
+ if (now - config.lastRun >= config.interval) {
24
+ try {
25
+ console.log(`[Scheduler] Running task: ${name}`);
26
+ const result = config.task();
27
+ if (result instanceof Promise) {
28
+ result.catch(err => console.error(`[Scheduler] Task ${name} failed:`, err));
29
+ }
30
+ config.lastRun = now;
31
+ }
32
+ catch (err) {
33
+ console.error(`[Scheduler] Task ${name} failed:`, err);
34
+ }
35
+ }
36
+ });
37
+ }, 1000); // Check every second
38
+ }
39
+ stop() {
40
+ if (this.timer) {
41
+ clearInterval(this.timer);
42
+ this.timer = null;
43
+ }
44
+ }
45
+ }
46
+ exports.Scheduler = Scheduler;
47
+ exports.Schedule = new Scheduler();
48
+ //# sourceMappingURL=Scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../../src/foundation/Scheduler.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IAAtB;QACY,UAAK,GAA4E,IAAI,GAAG,EAAE,CAAC;QAC3F,UAAK,GAA0B,IAAI,CAAC;IAuChD,CAAC;IArCU,QAAQ,CAAC,IAAY,EAAE,UAAkB,EAAE,IAAmB;QACjE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI;YACJ,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,CAAC;SACb,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK;QACR,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAEvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBAChC,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAC1C,IAAI,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;wBACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,MAAM,YAAY,OAAO,EAAE,CAAC;4BAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;wBAChF,CAAC;wBACD,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;oBACzB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,UAAU,EAAE,GAAG,CAAC,CAAC;oBAC3D,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB;IACnC,CAAC;IAEM,IAAI;QACP,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACtB,CAAC;IACL,CAAC;CACJ;AAzCD,8BAyCC;AAEY,QAAA,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare abstract class ServiceProvider {
2
+ protected app: any;
3
+ constructor(app: any);
4
+ /**
5
+ * Register any application services.
6
+ */
7
+ abstract register(): void;
8
+ /**
9
+ * Bootstrap any application services.
10
+ */
11
+ boot(): void;
12
+ }
13
+ //# sourceMappingURL=ServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../../src/foundation/ServiceProvider.ts"],"names":[],"mappings":"AAAA,8BAAsB,eAAe;IACjC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;gBAEP,GAAG,EAAE,GAAG;IAIpB;;OAEG;IACH,QAAQ,CAAC,QAAQ,IAAI,IAAI;IAEzB;;OAEG;IACH,IAAI,IAAI,IAAI;CACf"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServiceProvider = void 0;
4
+ class ServiceProvider {
5
+ constructor(app) {
6
+ this.app = app;
7
+ }
8
+ /**
9
+ * Bootstrap any application services.
10
+ */
11
+ boot() { }
12
+ }
13
+ exports.ServiceProvider = ServiceProvider;
14
+ //# sourceMappingURL=ServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceProvider.js","sourceRoot":"","sources":["../../../src/foundation/ServiceProvider.ts"],"names":[],"mappings":";;;AAAA,MAAsB,eAAe;IAGjC,YAAY,GAAQ;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;IAOD;;OAEG;IACH,IAAI,KAAW,CAAC;CACnB;AAhBD,0CAgBC"}
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare class View {
3
+ static render(component: React.ReactElement, data?: any): string;
4
+ }
5
+ export declare const view: typeof View.render;
6
+ //# sourceMappingURL=View.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../../src/foundation/View.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,qBAAa,IAAI;WACC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,GAAE,GAAQ;CA6BrE;AAED,eAAO,MAAM,IAAI,oBAAc,CAAC"}