jcc-express-mvc 1.8.21 → 1.8.25

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 (70) hide show
  1. package/global.d.ts +1 -0
  2. package/lib/Application/ApplicationBuilder.d.ts.map +1 -1
  3. package/lib/Application/ApplicationBuilder.js +2 -0
  4. package/lib/Auth/Auth.d.ts +1 -1
  5. package/lib/Auth/Auth.js +1 -1
  6. package/lib/Auth/AuthMiddleware.js +1 -1
  7. package/lib/Cache/CacheFacade.d.ts +24 -0
  8. package/lib/Cache/CacheFacade.d.ts.map +1 -0
  9. package/lib/Cache/CacheFacade.js +60 -0
  10. package/lib/Cache/FileCacheDriver.d.ts +2 -0
  11. package/lib/Cache/FileCacheDriver.d.ts.map +1 -1
  12. package/lib/Cache/FileCacheDriver.js +18 -0
  13. package/lib/Cache/MemoryDriver.d.ts +2 -0
  14. package/lib/Cache/MemoryDriver.d.ts.map +1 -1
  15. package/lib/Cache/MemoryDriver.js +18 -0
  16. package/lib/Cache/RedisDriver.d.ts +3 -0
  17. package/lib/Cache/RedisDriver.d.ts.map +1 -1
  18. package/lib/Cache/RedisDriver.js +25 -2
  19. package/lib/Cache/TaggedCache.d.ts +5 -3
  20. package/lib/Cache/TaggedCache.d.ts.map +1 -1
  21. package/lib/Cache/TaggedCache.js +8 -2
  22. package/lib/Cache/index.d.ts +6 -17
  23. package/lib/Cache/index.d.ts.map +1 -1
  24. package/lib/Cache/index.js +82 -23
  25. package/lib/Command-Line/WatchCommand.d.ts.map +1 -1
  26. package/lib/Command-Line/WatchCommand.js +45 -4
  27. package/lib/Container/index.js +1 -1
  28. package/lib/Event/Event.d.ts.map +1 -1
  29. package/lib/Event/Event.js +10 -5
  30. package/lib/Global/helpers.d.ts.map +1 -1
  31. package/lib/Global/helpers.js +9 -7
  32. package/lib/Interface/index.d.ts +8 -0
  33. package/lib/Interface/index.d.ts.map +1 -1
  34. package/lib/Jcc-eloquent/lib/Builder.d.ts +2 -7
  35. package/lib/Jcc-eloquent/lib/Builder.d.ts.map +1 -1
  36. package/lib/Jcc-eloquent/lib/Builder.js +16 -61
  37. package/lib/Jcc-eloquent/lib/Database/index.js +1 -1
  38. package/lib/Mail/index.d.ts.map +1 -1
  39. package/lib/Mail/index.js +12 -1
  40. package/lib/Providers/CacheServiceProvider.d.ts +11 -0
  41. package/lib/Providers/CacheServiceProvider.d.ts.map +1 -0
  42. package/lib/Providers/CacheServiceProvider.js +34 -0
  43. package/lib/Request/FormRequest.d.ts +1 -1
  44. package/lib/Request/FormRequest.d.ts.map +1 -1
  45. package/lib/Request/FormRequest.js +5 -4
  46. package/lib/Response/index.d.ts +2 -1
  47. package/lib/Response/index.d.ts.map +1 -1
  48. package/lib/Response/index.js +7 -10
  49. package/lib/Routes/Route.d.ts +18 -12
  50. package/lib/Routes/Route.d.ts.map +1 -1
  51. package/lib/Routes/Route.js +32 -13
  52. package/lib/Routes/RouteBuilder.d.ts +4 -2
  53. package/lib/Routes/RouteBuilder.d.ts.map +1 -1
  54. package/lib/Routes/RouteBuilder.js +16 -17
  55. package/lib/Session/RedisSession.d.ts.map +1 -1
  56. package/lib/Session/RedisSession.js +3 -1
  57. package/lib/Templating-engine/index.d.ts.map +1 -1
  58. package/lib/Templating-engine/index.js +6 -2
  59. package/lib/Testing/Concerns/MakesHttpRequests.d.ts.map +1 -1
  60. package/lib/Testing/Concerns/MakesHttpRequests.js +2 -0
  61. package/lib/Testing/TestCase.d.ts +13 -2
  62. package/lib/Testing/TestCase.d.ts.map +1 -1
  63. package/lib/Testing/TestCase.js +29 -5
  64. package/lib/Testing/TestResponse.d.ts +18 -2
  65. package/lib/Testing/TestResponse.d.ts.map +1 -1
  66. package/lib/Testing/TestResponse.js +45 -9
  67. package/lib/util/index.d.ts +5 -0
  68. package/lib/util/index.d.ts.map +1 -1
  69. package/lib/util/index.js +16 -1
  70. package/package.json +1 -1
package/global.d.ts CHANGED
@@ -60,6 +60,7 @@ declare global {
60
60
  var can: typeof GateFacade.can;
61
61
  var authorize: typeof GateFacade.authorize;
62
62
  var session: () => Request["jccSession"];
63
+ var defer: (callback: () => any) => void;
63
64
  }
64
65
 
65
66
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationBuilder.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Application/ApplicationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAU3C,qBAAa,kBAAkB;IACtB,GAAG,EAAE,WAAW,CAAC;gBAEZ,GAAG,EAAE,WAAW;IAIrB,UAAU,CAAC,MAAM,EAAE,GAAG;IAKtB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IActC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE;IAOtC,aAAa,CAClB,SAAS,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAAC;IAyB7D,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,gBAAgB;IAIjB,WAAW;IAKX,cAAc;IAWd,MAAM;CAKd"}
1
+ {"version":3,"file":"ApplicationBuilder.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Application/ApplicationBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAW3C,qBAAa,kBAAkB;IACtB,GAAG,EAAE,WAAW,CAAC;gBAEZ,GAAG,EAAE,WAAW;IAIrB,UAAU,CAAC,MAAM,EAAE,GAAG;IAKtB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IActC,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE;IAOtC,aAAa,CAClB,SAAS,EAAE,KAAK,CAAC,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAAC;IA0B7D,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,gBAAgB;IAIjB,WAAW;IAKX,cAAc;IAWd,MAAM;CAKd"}
@@ -8,6 +8,7 @@ const helpers_1 = require("../Global/helpers");
8
8
  const AuthServiceProvider_1 = require("../Providers/AuthServiceProvider");
9
9
  const SessionServiceProvider_1 = require("../Providers/SessionServiceProvider");
10
10
  const QueueServiceProvider_1 = require("../Queue/QueueServiceProvider");
11
+ const CacheServiceProvider_1 = require("../Providers/CacheServiceProvider");
11
12
  class ApplicationBuilder {
12
13
  constructor(app) {
13
14
  this.app = app;
@@ -45,6 +46,7 @@ class ApplicationBuilder {
45
46
  const chain = [
46
47
  DatabaseServiceProvider_1.DatabaseServiceProvider,
47
48
  SessionServiceProvider_1.SessionServiceProvider,
49
+ CacheServiceProvider_1.CacheServiceProvider,
48
50
  ...ordered,
49
51
  QueueServiceProvider_1.QueueServiceProvider,
50
52
  ];
@@ -3,6 +3,6 @@ export declare class Auth {
3
3
  user(): Record<string, any>;
4
4
  isAuthenticated(): boolean;
5
5
  isGuest(): boolean;
6
- check(): () => boolean;
6
+ check(): boolean;
7
7
  }
8
8
  //# sourceMappingURL=Auth.d.ts.map
package/lib/Auth/Auth.js CHANGED
@@ -16,7 +16,7 @@ class Auth {
16
16
  return request().user ? false : true;
17
17
  }
18
18
  check() {
19
- return this.isAuthenticated;
19
+ return this.isAuthenticated();
20
20
  }
21
21
  }
22
22
  exports.Auth = Auth;
@@ -68,7 +68,7 @@ class AuthMiddleware {
68
68
  const token = req.cookies.auth_token;
69
69
  if (token) {
70
70
  if (!req.get("Referer")) {
71
- if (req.previousUrls[0] == req.url) {
71
+ if (req.previousUrls?.length >= 2 && req.previousUrls[0] === req.url) {
72
72
  return res.redirect(303, req.previousUrls[1]);
73
73
  }
74
74
  else {
@@ -0,0 +1,24 @@
1
+ import { TaggedCache } from "./TaggedCache";
2
+ /**
3
+ * static facade for cache operations.
4
+ */
5
+ export declare class CacheFacade {
6
+ static store(name?: string): import("../Interface").CacheDriver;
7
+ static get<T = any>(key: string, fallback?: T | (() => T) | (() => Promise<T>)): Promise<T | null>;
8
+ static put<T = any>(key: string, value: T, seconds?: number): Promise<void>;
9
+ static forget(key: string): Promise<boolean>;
10
+ static flush(): Promise<void>;
11
+ static forever<T = any>(key: string, value: T): Promise<void>;
12
+ static increment(key: string, value?: number): Promise<number>;
13
+ static decrement(key: string, value?: number): Promise<number>;
14
+ static many<T = any>(keys: string[]): Promise<Record<string, T | null>>;
15
+ static putMany(values: Record<string, any>, seconds?: number): Promise<void>;
16
+ static has(key: string): Promise<boolean>;
17
+ static remember<T = any>(key: string, seconds: number, callback: () => Promise<T> | T): Promise<T>;
18
+ static rememberForever<T = any>(key: string, callback: () => Promise<T> | T): Promise<T>;
19
+ static pull<T = any>(key: string, fallback?: T | (() => T) | (() => Promise<T>)): Promise<T | null>;
20
+ static add<T = any>(key: string, value: T, seconds?: number): Promise<boolean>;
21
+ static tags(tags: string[]): TaggedCache;
22
+ }
23
+ export declare const CacheFacde: typeof CacheFacade;
24
+ //# sourceMappingURL=CacheFacade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CacheFacade.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/CacheFacade.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,qBAAa,WAAW;IACtB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM;WAIb,GAAG,CAAC,CAAC,GAAG,GAAG,EACtB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;WAIP,GAAG,CAAC,CAAC,GAAG,GAAG,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;WAIH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;WAItB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;WAItD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAIvD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;WAIvD,IAAI,CAAC,CAAC,GAAG,GAAG,EACvB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;WAIvB,OAAO,CAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;WAIH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;WAIlC,QAAQ,CAAC,CAAC,GAAG,GAAG,EAC3B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;WAIA,eAAe,CAAC,CAAC,GAAG,GAAG,EAClC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;WAIA,IAAI,CAAC,CAAC,GAAG,GAAG,EACvB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;WAIP,GAAG,CAAC,CAAC,GAAG,GAAG,EACtB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC;IAInB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW;CAGzC;AAGD,eAAO,MAAM,UAAU,oBAAc,CAAC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheFacde = exports.CacheFacade = void 0;
4
+ const index_1 = require("./index");
5
+ /**
6
+ * static facade for cache operations.
7
+ */
8
+ class CacheFacade {
9
+ static store(name) {
10
+ return index_1.Cache.getInstance().store(name);
11
+ }
12
+ static async get(key, fallback) {
13
+ return index_1.Cache.getInstance().get(key, fallback);
14
+ }
15
+ static async put(key, value, seconds) {
16
+ return index_1.Cache.getInstance().put(key, value, seconds);
17
+ }
18
+ static async forget(key) {
19
+ return index_1.Cache.getInstance().forget(key);
20
+ }
21
+ static async flush() {
22
+ return index_1.Cache.getInstance().flush();
23
+ }
24
+ static async forever(key, value) {
25
+ return index_1.Cache.getInstance().forever(key, value);
26
+ }
27
+ static async increment(key, value) {
28
+ return index_1.Cache.getInstance().increment(key, value);
29
+ }
30
+ static async decrement(key, value) {
31
+ return index_1.Cache.getInstance().decrement(key, value);
32
+ }
33
+ static async many(keys) {
34
+ return index_1.Cache.getInstance().many(keys);
35
+ }
36
+ static async putMany(values, seconds) {
37
+ return index_1.Cache.getInstance().putMany(values, seconds);
38
+ }
39
+ static async has(key) {
40
+ return index_1.Cache.getInstance().has(key);
41
+ }
42
+ static async remember(key, seconds, callback) {
43
+ return index_1.Cache.getInstance().remember(key, seconds, callback);
44
+ }
45
+ static async rememberForever(key, callback) {
46
+ return index_1.Cache.getInstance().rememberForever(key, callback);
47
+ }
48
+ static async pull(key, fallback) {
49
+ return index_1.Cache.getInstance().pull(key, fallback);
50
+ }
51
+ static async add(key, value, seconds) {
52
+ return index_1.Cache.getInstance().add(key, value, seconds);
53
+ }
54
+ static tags(tags) {
55
+ return index_1.Cache.getInstance().tags(tags);
56
+ }
57
+ }
58
+ exports.CacheFacade = CacheFacade;
59
+ // Backwards-compatible alias for requested name typo.
60
+ exports.CacheFacde = CacheFacade;
@@ -18,6 +18,8 @@ export declare class FileDriver implements CacheDriver {
18
18
  many(keys: string[]): Promise<Record<string, any>>;
19
19
  putMany(values: Record<string, any>, seconds?: number): Promise<void>;
20
20
  has(key: string): Promise<boolean>;
21
+ remember<T = any>(key: string, seconds: number, callback: () => Promise<T> | T): Promise<T>;
22
+ rememberForever<T = any>(key: string, callback: () => Promise<T> | T): Promise<T>;
21
23
  size(): Promise<number>;
22
24
  cleanup(): Promise<number>;
23
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileCacheDriver.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/FileCacheDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;YAIhC,cAAc;IAQ5B,OAAO,CAAC,WAAW;YAML,aAAa;YAWb,cAAc;IAQtB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAc5C,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAetB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAUlD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKlC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IASvB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAoBjC"}
1
+ {"version":3,"file":"FileCacheDriver.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/FileCacheDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAK3C,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAS;gBAEb,MAAM,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO;YAIhC,cAAc;IAQ5B,OAAO,CAAC,WAAW;YAML,aAAa;YAWb,cAAc;IAQtB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAc5C,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAetB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAUlD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,QAAQ,CAAC,CAAC,GAAG,GAAG,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAWP,eAAe,CAAC,CAAC,GAAG,GAAG,EAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAYP,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IASvB,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;CAoBjC"}
@@ -129,6 +129,24 @@ class FileDriver {
129
129
  async has(key) {
130
130
  return (await this.get(key)) !== null;
131
131
  }
132
+ async remember(key, seconds, callback) {
133
+ const cached = await this.get(key);
134
+ if (cached !== null) {
135
+ return cached;
136
+ }
137
+ const value = await Promise.resolve(callback());
138
+ await this.put(key, value, seconds);
139
+ return value;
140
+ }
141
+ async rememberForever(key, callback) {
142
+ const cached = await this.get(key);
143
+ if (cached !== null) {
144
+ return cached;
145
+ }
146
+ const value = await Promise.resolve(callback());
147
+ await this.forever(key, value);
148
+ return value;
149
+ }
132
150
  // Additional utility methods specific to file cache
133
151
  async size() {
134
152
  try {
@@ -11,5 +11,7 @@ export declare class MemoryDriver implements CacheDriver {
11
11
  many(keys: string[]): Promise<Record<string, any>>;
12
12
  putMany(values: Record<string, any>, seconds?: number): Promise<void>;
13
13
  has(key: string): Promise<boolean>;
14
+ remember<T = any>(key: string, seconds: number, callback: () => Promise<T> | T): Promise<T>;
15
+ rememberForever<T = any>(key: string, callback: () => Promise<T> | T): Promise<T>;
14
16
  }
15
17
  //# sourceMappingURL=MemoryDriver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/MemoryDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,qBAAa,YAAa,YAAW,WAAW;IAC9C,OAAO,CAAC,KAAK,CAA4D;IAEnE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAY5C,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQlD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGzC"}
1
+ {"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/MemoryDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,qBAAa,YAAa,YAAW,WAAW;IAC9C,OAAO,CAAC,KAAK,CAA4D;IAEnE,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAY5C,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQlD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,QAAQ,CAAC,CAAC,GAAG,GAAG,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAWP,eAAe,CAAC,CAAC,GAAG,GAAG,EAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;CAUd"}
@@ -52,5 +52,23 @@ class MemoryDriver {
52
52
  async has(key) {
53
53
  return (await this.get(key)) !== null;
54
54
  }
55
+ async remember(key, seconds, callback) {
56
+ const cached = await this.get(key);
57
+ if (cached !== null) {
58
+ return cached;
59
+ }
60
+ const value = await Promise.resolve(callback());
61
+ await this.put(key, value, seconds);
62
+ return value;
63
+ }
64
+ async rememberForever(key, callback) {
65
+ const cached = await this.get(key);
66
+ if (cached !== null) {
67
+ return cached;
68
+ }
69
+ const value = await Promise.resolve(callback());
70
+ await this.forever(key, value);
71
+ return value;
72
+ }
55
73
  }
56
74
  exports.MemoryDriver = MemoryDriver;
@@ -18,5 +18,8 @@ export declare class RedisDriver implements CacheDriver {
18
18
  many(keys: string[]): Promise<Record<string, any>>;
19
19
  putMany(values: Record<string, any>, seconds?: number): Promise<void>;
20
20
  has(key: string): Promise<boolean>;
21
+ disconnect(): Promise<void>;
22
+ remember<T = any>(key: string, seconds: number, callback: () => Promise<T> | T): Promise<T>;
23
+ rememberForever<T = any>(key: string, callback: () => Promise<T> | T): Promise<T>;
21
24
  }
22
25
  //# sourceMappingURL=RedisDriver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/RedisDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,qBAAa,WAAY,YAAW,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAWK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAM5C,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAYlD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAKzC"}
1
+ {"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/RedisDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,qBAAa,WAAY,YAAW,WAAW;IAC7C,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB;IAYK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAM5C,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1D,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAYlD,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,QAAQ,CAAC,CAAC,GAAG,GAAG,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAWP,eAAe,CAAC,CAAC,GAAG,GAAG,EAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;CAUd"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RedisDriver = void 0;
4
- const redis_1 = require("redis");
5
4
  class RedisDriver {
6
5
  constructor(config) {
7
- this.client = (0, redis_1.createClient)({
6
+ const redis = require("redis");
7
+ this.client = redis.createClient({
8
8
  socket: {
9
9
  host: config.host || "localhost",
10
10
  port: config.port || 6379,
@@ -84,5 +84,28 @@ class RedisDriver {
84
84
  const exists = await this.client.exists(key);
85
85
  return exists > 0;
86
86
  }
87
+ async disconnect() {
88
+ if (this.client.isOpen) {
89
+ await this.client.quit();
90
+ }
91
+ }
92
+ async remember(key, seconds, callback) {
93
+ const cached = await this.get(key);
94
+ if (cached !== null) {
95
+ return cached;
96
+ }
97
+ const value = await Promise.resolve(callback());
98
+ await this.put(key, value, seconds);
99
+ return value;
100
+ }
101
+ async rememberForever(key, callback) {
102
+ const cached = await this.get(key);
103
+ if (cached !== null) {
104
+ return cached;
105
+ }
106
+ const value = await Promise.resolve(callback());
107
+ await this.forever(key, value);
108
+ return value;
109
+ }
87
110
  }
88
111
  exports.RedisDriver = RedisDriver;
@@ -1,12 +1,14 @@
1
- import { Cache } from ".";
1
+ import { CacheManager } from ".";
2
2
  export declare class TaggedCache {
3
3
  private cache;
4
4
  private tags;
5
- constructor(cache: Cache, tags: string[]);
5
+ constructor(cache: CacheManager, tags: string[]);
6
6
  private getTaggedKey;
7
- get<T = any>(key: string): Promise<T | null>;
7
+ get<T = any>(key: string, fallback?: T | (() => T) | (() => Promise<T>)): Promise<T | null>;
8
8
  put<T = any>(key: string, value: T, seconds?: number): Promise<void>;
9
9
  forget(key: string): Promise<boolean>;
10
10
  flush(): Promise<void>;
11
+ remember<T = any>(key: string, seconds: number, callback: () => Promise<T> | T): Promise<T>;
12
+ rememberForever<T = any>(key: string, callback: () => Promise<T> | T): Promise<T>;
11
13
  }
12
14
  //# sourceMappingURL=TaggedCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaggedCache.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/TaggedCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC;AAE1B,qBAAa,WAAW;IACV,OAAO,CAAC,KAAK;IAAS,OAAO,CAAC,IAAI;gBAA1B,KAAK,EAAE,KAAK,EAAU,IAAI,EAAE,MAAM,EAAE;IAExD,OAAO,CAAC,YAAY;IAId,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAI5C,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAa7B"}
1
+ {"version":3,"file":"TaggedCache.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/TaggedCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,CAAC;AAEjC,qBAAa,WAAW;IACV,OAAO,CAAC,KAAK;IAAgB,OAAO,CAAC,IAAI;gBAAjC,KAAK,EAAE,YAAY,EAAU,IAAI,EAAE,MAAM,EAAE;IAE/D,OAAO,CAAC,YAAY;IAId,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAI3F,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,QAAQ,CAAC,CAAC,GAAG,GAAG,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAIP,eAAe,CAAC,CAAC,GAAG,GAAG,EAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;CAGd"}
@@ -9,8 +9,8 @@ class TaggedCache {
9
9
  getTaggedKey(key) {
10
10
  return `tagged:${this.tags.join(":")}:${key}`;
11
11
  }
12
- async get(key) {
13
- return this.cache.get(this.getTaggedKey(key));
12
+ async get(key, fallback) {
13
+ return this.cache.get(this.getTaggedKey(key), fallback);
14
14
  }
15
15
  async put(key, value, seconds) {
16
16
  await this.cache.put(this.getTaggedKey(key), value, seconds);
@@ -38,5 +38,11 @@ class TaggedCache {
38
38
  await this.cache.forget(tagKey);
39
39
  }
40
40
  }
41
+ async remember(key, seconds, callback) {
42
+ return this.cache.store().remember(this.getTaggedKey(key), seconds, callback);
43
+ }
44
+ async rememberForever(key, callback) {
45
+ return this.cache.store().rememberForever(this.getTaggedKey(key), callback);
46
+ }
41
47
  }
42
48
  exports.TaggedCache = TaggedCache;
@@ -1,17 +1,5 @@
1
- import { CacheConfig } from "../Interface";
1
+ import { CacheConfig, CacheDriver } from "../Interface";
2
2
  import { TaggedCache } from "./TaggedCache";
3
- interface CacheStore<T> {
4
- get(key: string): Promise<T | null>;
5
- put(key: string, value: T, seconds?: number): Promise<void>;
6
- forget(key: string): Promise<boolean>;
7
- forever(key: string, value: T): Promise<void>;
8
- flush(): Promise<void>;
9
- many(keys: string[]): Promise<Record<string, T | null>>;
10
- putMany(values: Record<string, T>, seconds?: number): Promise<void>;
11
- has(key: string): Promise<boolean>;
12
- increment(key: string, value?: number): Promise<number>;
13
- decrement(key: string, value?: number): Promise<number>;
14
- }
15
3
  export declare class Cache {
16
4
  private static instance;
17
5
  private drivers;
@@ -19,8 +7,8 @@ export declare class Cache {
19
7
  constructor(config: CacheConfig);
20
8
  static getInstance(config?: CacheConfig): Cache;
21
9
  private initializeDrivers;
22
- store<T = any>(name?: string): CacheStore<T>;
23
- get<T>(key: string): Promise<T | null>;
10
+ store<T = any>(name?: string): CacheDriver;
11
+ get<T>(key: string, fallback?: T | (() => T) | (() => Promise<T>)): Promise<T | null>;
24
12
  put<T>(key: string, value: T, seconds?: number): Promise<void>;
25
13
  forget(key: string): Promise<boolean>;
26
14
  flush(): Promise<void>;
@@ -32,9 +20,10 @@ export declare class Cache {
32
20
  has(key: string): Promise<boolean>;
33
21
  remember<T>(key: string, seconds: number, callback: () => Promise<T> | T): Promise<T>;
34
22
  rememberForever<T = any>(key: string, callback: () => Promise<T> | T): Promise<T>;
35
- pull<T = any>(key: string): Promise<T | null>;
23
+ pull<T = any>(key: string, fallback?: T | (() => T) | (() => Promise<T>)): Promise<T | null>;
36
24
  add<T = any>(key: string, value: T, seconds?: number): Promise<boolean>;
37
25
  tags(tags: string[]): TaggedCache;
38
26
  }
39
- export {};
27
+ export { Cache as CacheManager };
28
+ export { CacheFacade, CacheFacde } from "./CacheFacade";
40
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAkB5C,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAQ;IAC/B,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,WAAW;IAK/B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK;IAa/C,OAAO,CAAC,iBAAiB;IA6BzB,KAAK,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW;IAYpC,GAAG,CAAC,CAAC,EACT,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAmBd,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvD,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAO1D,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAeP,eAAe,CAAC,CAAC,GAAG,GAAG,EAC3B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC;IAYP,IAAI,CAAC,CAAC,GAAG,GAAG,EAChB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IASd,GAAG,CAAC,CAAC,GAAG,GAAG,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,OAAO,CAAC;IASnB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW;CAGlC;AACD,OAAO,EAAE,KAAK,IAAI,YAAY,EAAE,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
@@ -1,9 +1,57 @@
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
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Cache = void 0;
36
+ exports.CacheFacde = exports.CacheFacade = exports.CacheManager = exports.Cache = void 0;
4
37
  const MemoryDriver_1 = require("./MemoryDriver");
5
38
  const RedisDriver_1 = require("./RedisDriver");
39
+ const FileCacheDriver_1 = require("./FileCacheDriver");
6
40
  const TaggedCache_1 = require("./TaggedCache");
41
+ const path = __importStar(require("path"));
42
+ // CacheDriver is imported from ../Interface
43
+ const fallbackCacheConfig = {
44
+ default: "memory",
45
+ stores: {
46
+ memory: {
47
+ driver: "memory",
48
+ },
49
+ file: {
50
+ driver: "file",
51
+ cacheDir: path.join(process.cwd(), "storage/framework/cache"),
52
+ },
53
+ },
54
+ };
7
55
  class Cache {
8
56
  constructor(config) {
9
57
  this.drivers = new Map();
@@ -11,11 +59,12 @@ class Cache {
11
59
  this.initializeDrivers();
12
60
  }
13
61
  static getInstance(config) {
14
- if (!Cache.instance) {
15
- if (!config) {
16
- throw new Error("Cache configuration is required on first initialization");
17
- }
62
+ if (config) {
18
63
  Cache.instance = new Cache(config);
64
+ return Cache.instance;
65
+ }
66
+ if (!Cache.instance) {
67
+ Cache.instance = new Cache(fallbackCacheConfig);
19
68
  }
20
69
  return Cache.instance;
21
70
  }
@@ -36,6 +85,9 @@ class Cache {
36
85
  };
37
86
  driver = new RedisDriver_1.RedisDriver(redisConfig);
38
87
  break;
88
+ case "file":
89
+ driver = new FileCacheDriver_1.FileDriver({ cacheDir: storeConfig.cacheDir });
90
+ break;
39
91
  default:
40
92
  throw new Error(`Unsupported cache driver: ${storeConfig.driver}`);
41
93
  }
@@ -51,11 +103,20 @@ class Cache {
51
103
  return driver;
52
104
  }
53
105
  // Proxy methods to default store
54
- async get(key) {
106
+ async get(key, fallback) {
55
107
  if (!key) {
56
108
  throw new Error("Cache key must be provided");
57
109
  }
58
- return this.store().get(key);
110
+ const value = await this.store().get(key);
111
+ if (value !== null && value !== undefined) {
112
+ return value;
113
+ }
114
+ if (fallback !== undefined) {
115
+ return typeof fallback === "function"
116
+ ? await fallback()
117
+ : fallback;
118
+ }
119
+ return null;
59
120
  }
60
121
  async put(key, value, seconds) {
61
122
  if (!key) {
@@ -106,28 +167,22 @@ class Cache {
106
167
  if (typeof callback !== "function") {
107
168
  throw new Error("Callback must be a function");
108
169
  }
109
- const cached = await this.get(key);
110
- if (cached !== null) {
111
- return cached;
112
- }
113
- const value = await Promise.resolve(callback());
114
- await this.put(key, value, seconds);
115
- return value;
170
+ return this.store().remember(key, seconds, callback);
116
171
  }
117
172
  // Laravel-like rememberForever method
118
173
  async rememberForever(key, callback) {
119
- const cached = await this.get(key);
120
- if (cached !== null) {
121
- return cached;
174
+ if (!key) {
175
+ throw new Error("Cache key must be provided");
122
176
  }
123
- const value = await callback();
124
- await this.forever(key, value);
125
- return value;
177
+ if (typeof callback !== "function") {
178
+ throw new Error("Callback must be a function");
179
+ }
180
+ return this.store().rememberForever(key, callback);
126
181
  }
127
182
  // Laravel-like pull method (get and forget)
128
- async pull(key) {
129
- const value = await this.get(key);
130
- if (value !== null) {
183
+ async pull(key, fallback) {
184
+ const value = await this.get(key, fallback);
185
+ if (value !== null && value !== undefined) {
131
186
  await this.forget(key);
132
187
  }
133
188
  return value;
@@ -146,3 +201,7 @@ class Cache {
146
201
  }
147
202
  }
148
203
  exports.Cache = Cache;
204
+ exports.CacheManager = Cache;
205
+ var CacheFacade_1 = require("./CacheFacade");
206
+ Object.defineProperty(exports, "CacheFacade", { enumerable: true, get: function () { return CacheFacade_1.CacheFacade; } });
207
+ Object.defineProperty(exports, "CacheFacde", { enumerable: true, get: function () { return CacheFacade_1.CacheFacde; } });
@@ -1 +1 @@
1
- {"version":3,"file":"WatchCommand.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Command-Line/WatchCommand.ts"],"names":[],"mappings":"AAOA,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAQzB;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CASlC;IACF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IAEtD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAO;IACvC,OAAO,CAAC,SAAS,CAAe;IAE1B,GAAG,CAAC,SAAS,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjD,OAAO,CAAC,eAAe;IAgCvB,OAAO,CAAC,uBAAuB;IAkB/B,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,aAAa;CAQtB"}
1
+ {"version":3,"file":"WatchCommand.d.ts","sourceRoot":"","sources":["../../../jcc-express-mvc/lib/Command-Line/WatchCommand.ts"],"names":[],"mappings":"AAOA,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAQzB;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAUlC;IACF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IAEtD,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,KAAK,CAA6B;IAC1C,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAO;IACvC,OAAO,CAAC,SAAS,CAAe;IAE1B,GAAG,CAAC,SAAS,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAcjD,OAAO,CAAC,eAAe;IAoDvB,OAAO,CAAC,uBAAuB;IAqC/B,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,aAAa;CAQtB"}