@arikajs/cache 0.0.3 → 0.0.5

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 (92) hide show
  1. package/README.md +62 -118
  2. package/dist/CacheLock.d.ts +38 -0
  3. package/dist/CacheLock.d.ts.map +1 -0
  4. package/dist/CacheLock.js +100 -0
  5. package/dist/CacheLock.js.map +1 -0
  6. package/dist/CacheManager.d.ts +8 -1
  7. package/dist/CacheManager.d.ts.map +1 -1
  8. package/dist/CacheManager.js +17 -2
  9. package/dist/CacheManager.js.map +1 -1
  10. package/dist/Contracts/Store.d.ts +4 -0
  11. package/dist/Contracts/Store.d.ts.map +1 -1
  12. package/dist/Drivers/DatabaseDriver.d.ts +6 -1
  13. package/dist/Drivers/DatabaseDriver.d.ts.map +1 -1
  14. package/dist/Drivers/DatabaseDriver.js +70 -10
  15. package/dist/Drivers/DatabaseDriver.js.map +1 -1
  16. package/dist/Drivers/FileDriver.d.ts +19 -0
  17. package/dist/Drivers/FileDriver.d.ts.map +1 -0
  18. package/dist/Drivers/FileDriver.js +111 -0
  19. package/dist/Drivers/FileDriver.js.map +1 -0
  20. package/dist/Drivers/MemoryDriver.d.ts +4 -0
  21. package/dist/Drivers/MemoryDriver.d.ts.map +1 -1
  22. package/dist/Drivers/MemoryDriver.js +25 -0
  23. package/dist/Drivers/MemoryDriver.js.map +1 -1
  24. package/dist/Drivers/RedisDriver.d.ts +4 -0
  25. package/dist/Drivers/RedisDriver.d.ts.map +1 -1
  26. package/dist/Drivers/RedisDriver.js +46 -0
  27. package/dist/Drivers/RedisDriver.js.map +1 -1
  28. package/dist/Repository.d.ts +6 -0
  29. package/dist/Repository.d.ts.map +1 -1
  30. package/dist/Repository.js +42 -0
  31. package/dist/Repository.js.map +1 -1
  32. package/dist/TagSet.d.ts +24 -0
  33. package/dist/TagSet.d.ts.map +1 -0
  34. package/dist/TagSet.js +46 -0
  35. package/dist/TagSet.js.map +1 -0
  36. package/dist/TaggedStore.d.ts +21 -0
  37. package/dist/TaggedStore.d.ts.map +1 -0
  38. package/dist/TaggedStore.js +100 -0
  39. package/dist/TaggedStore.js.map +1 -0
  40. package/dist/index.d.ts +5 -0
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +6 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/src/CacheLock.d.ts +38 -0
  45. package/dist/src/CacheLock.d.ts.map +1 -0
  46. package/dist/src/CacheLock.js +100 -0
  47. package/dist/src/CacheLock.js.map +1 -0
  48. package/dist/src/CacheManager.d.ts +35 -0
  49. package/dist/src/CacheManager.d.ts.map +1 -0
  50. package/dist/src/CacheManager.js +79 -0
  51. package/dist/src/CacheManager.js.map +1 -0
  52. package/dist/src/Contracts/Store.d.ts +15 -0
  53. package/dist/src/Contracts/Store.d.ts.map +1 -0
  54. package/dist/src/Contracts/Store.js +3 -0
  55. package/dist/src/Contracts/Store.js.map +1 -0
  56. package/dist/src/Drivers/DatabaseDriver.d.ts +21 -0
  57. package/dist/src/Drivers/DatabaseDriver.d.ts.map +1 -0
  58. package/dist/src/Drivers/DatabaseDriver.js +146 -0
  59. package/dist/src/Drivers/DatabaseDriver.js.map +1 -0
  60. package/dist/src/Drivers/FileDriver.d.ts +19 -0
  61. package/dist/src/Drivers/FileDriver.d.ts.map +1 -0
  62. package/dist/src/Drivers/FileDriver.js +111 -0
  63. package/dist/src/Drivers/FileDriver.js.map +1 -0
  64. package/dist/src/Drivers/MemoryDriver.d.ts +22 -0
  65. package/dist/src/Drivers/MemoryDriver.d.ts.map +1 -0
  66. package/dist/src/Drivers/MemoryDriver.js +78 -0
  67. package/dist/src/Drivers/MemoryDriver.js.map +1 -0
  68. package/dist/src/Drivers/RedisDriver.d.ts +24 -0
  69. package/dist/src/Drivers/RedisDriver.d.ts.map +1 -0
  70. package/dist/src/Drivers/RedisDriver.js +124 -0
  71. package/dist/src/Drivers/RedisDriver.js.map +1 -0
  72. package/dist/src/Repository.d.ts +25 -0
  73. package/dist/src/Repository.d.ts.map +1 -0
  74. package/dist/src/Repository.js +110 -0
  75. package/dist/src/Repository.js.map +1 -0
  76. package/dist/src/TagSet.d.ts +24 -0
  77. package/dist/src/TagSet.d.ts.map +1 -0
  78. package/dist/src/TagSet.js +46 -0
  79. package/dist/src/TagSet.js.map +1 -0
  80. package/dist/src/TaggedStore.d.ts +21 -0
  81. package/dist/src/TaggedStore.d.ts.map +1 -0
  82. package/dist/src/TaggedStore.js +100 -0
  83. package/dist/src/TaggedStore.js.map +1 -0
  84. package/dist/src/index.d.ts +29 -0
  85. package/dist/src/index.d.ts.map +1 -0
  86. package/dist/src/index.js +46 -0
  87. package/dist/src/index.js.map +1 -0
  88. package/dist/tests/Cache.test.d.ts +2 -0
  89. package/dist/tests/Cache.test.d.ts.map +1 -0
  90. package/dist/tests/Cache.test.js +126 -0
  91. package/dist/tests/Cache.test.js.map +1 -0
  92. package/package.json +7 -5
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DatabaseDriver = void 0;
4
4
  class DatabaseDriver {
5
- constructor(database, table, prefix = '') {
5
+ constructor(database, table, prefix = '', connection) {
6
6
  this.database = database;
7
7
  this.table = table;
8
8
  this.prefix = prefix;
9
+ this.connection = connection;
9
10
  }
10
11
  async get(key) {
11
- const cache = await this.database.table(this.table)
12
+ const cache = await this.database.table(this.table, this.connection)
12
13
  .where('key', this.prefix + key)
13
14
  .first();
14
15
  if (!cache) {
@@ -24,9 +25,9 @@ class DatabaseDriver {
24
25
  const expiration = Math.floor(Date.now() / 1000) + seconds;
25
26
  const jsonValue = JSON.stringify(value);
26
27
  const prefixedKey = this.prefix + key;
27
- const exists = await this.database.table(this.table).where('key', prefixedKey).exists();
28
+ const exists = await this.database.table(this.table, this.connection).where('key', prefixedKey).exists();
28
29
  if (exists) {
29
- await this.database.table(this.table)
30
+ await this.database.table(this.table, this.connection)
30
31
  .where('key', prefixedKey)
31
32
  .update({
32
33
  value: jsonValue,
@@ -34,7 +35,7 @@ class DatabaseDriver {
34
35
  });
35
36
  }
36
37
  else {
37
- await this.database.table(this.table).insert({
38
+ await this.database.table(this.table, this.connection).insert({
38
39
  key: prefixedKey,
39
40
  value: jsonValue,
40
41
  expiration: expiration
@@ -53,9 +54,9 @@ class DatabaseDriver {
53
54
  async forever(key, value) {
54
55
  const jsonValue = JSON.stringify(value);
55
56
  const prefixedKey = this.prefix + key;
56
- const exists = await this.database.table(this.table).where('key', prefixedKey).exists();
57
+ const exists = await this.database.table(this.table, this.connection).where('key', prefixedKey).exists();
57
58
  if (exists) {
58
- await this.database.table(this.table)
59
+ await this.database.table(this.table, this.connection)
59
60
  .where('key', prefixedKey)
60
61
  .update({
61
62
  value: jsonValue,
@@ -63,7 +64,7 @@ class DatabaseDriver {
63
64
  });
64
65
  }
65
66
  else {
66
- await this.database.table(this.table).insert({
67
+ await this.database.table(this.table, this.connection).insert({
67
68
  key: prefixedKey,
68
69
  value: jsonValue,
69
70
  expiration: null
@@ -71,12 +72,71 @@ class DatabaseDriver {
71
72
  }
72
73
  }
73
74
  async forget(key) {
74
- await this.database.table(this.table)
75
+ await this.database.table(this.table, this.connection)
75
76
  .where('key', this.prefix + key)
76
77
  .delete();
77
78
  }
78
79
  async flush() {
79
- await this.database.table(this.table).delete();
80
+ await this.database.table(this.table, this.connection).delete();
81
+ }
82
+ async add(key, value, seconds) {
83
+ const prefixedKey = this.prefix + key;
84
+ const jsonValue = JSON.stringify(value);
85
+ const expiration = Math.floor(Date.now() / 1000) + seconds;
86
+ // Try updating an already expired key first
87
+ const updated = await this.database.table(this.table, this.connection)
88
+ .where('key', prefixedKey)
89
+ .where('expiration', '<=', Math.floor(Date.now() / 1000))
90
+ .update({
91
+ value: jsonValue,
92
+ expiration: expiration
93
+ });
94
+ if (updated > 0)
95
+ return true;
96
+ try {
97
+ await this.database.table(this.table, this.connection).insert({
98
+ key: prefixedKey,
99
+ value: jsonValue,
100
+ expiration: expiration
101
+ });
102
+ return true;
103
+ }
104
+ catch (e) {
105
+ return false;
106
+ }
107
+ }
108
+ async getMultiple(keys) {
109
+ const results = {};
110
+ for (const k of keys)
111
+ results[k] = null;
112
+ if (keys.length === 0)
113
+ return results;
114
+ const prefixedKeys = keys.map(k => this.prefix + k);
115
+ const rows = await this.database.table(this.table, this.connection).whereIn('key', prefixedKeys);
116
+ const now = Math.floor(Date.now() / 1000);
117
+ const expiredKeys = [];
118
+ for (const row of rows) {
119
+ const originalKey = row.key.substring(this.prefix.length);
120
+ if (row.expiration && row.expiration <= now) {
121
+ expiredKeys.push(originalKey);
122
+ }
123
+ else {
124
+ results[originalKey] = JSON.parse(row.value);
125
+ }
126
+ }
127
+ if (expiredKeys.length > 0) {
128
+ await this.forgetMultiple(expiredKeys);
129
+ }
130
+ return results;
131
+ }
132
+ async putMultiple(values, seconds) {
133
+ await Promise.all(Object.entries(values).map(([key, value]) => this.put(key, value, seconds)));
134
+ }
135
+ async forgetMultiple(keys) {
136
+ if (keys.length === 0)
137
+ return;
138
+ const prefixedKeys = keys.map(k => this.prefix + k);
139
+ await this.database.table(this.table, this.connection).whereIn('key', prefixedKeys).delete();
80
140
  }
81
141
  getPrefix() {
82
142
  return this.prefix;
@@ -1 +1 @@
1
- {"version":3,"file":"DatabaseDriver.js","sourceRoot":"","sources":["../../src/Drivers/DatabaseDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DatabaseDriver.js","sourceRoot":"","sources":["../../src/Drivers/DatabaseDriver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { Store } from '../Contracts/Store';
2
+ export declare class FileDriver implements Store {
3
+ protected prefix: string;
4
+ protected directory: string;
5
+ constructor(directory: string, prefix?: string);
6
+ get(key: string): Promise<any>;
7
+ put(key: string, value: any, seconds: number): Promise<void>;
8
+ increment(key: string, value?: number): Promise<number>;
9
+ decrement(key: string, value?: number): Promise<number>;
10
+ forever(key: string, value: any): Promise<void>;
11
+ forget(key: string): Promise<void>;
12
+ flush(): Promise<void>;
13
+ getPrefix(): string;
14
+ protected getPath(key: string): string;
15
+ protected ensureDirectoryExists(filePath?: string): void;
16
+ protected deleteFolderRecursive(dir: string): void;
17
+ protected sha1(str: string): string;
18
+ }
19
+ //# sourceMappingURL=FileDriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/FileDriver.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,qBAAa,UAAW,YAAW,KAAK;IAGL,SAAS,CAAC,MAAM,EAAE,MAAM;IAFvD,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEhB,SAAS,EAAE,MAAM,EAAY,MAAM,GAAE,MAAW;IAK/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAsB9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB5D,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,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,SAAS,IAAI,MAAM;IAI1B,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAStC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM;IAOjD,SAAS,CAAC,qBAAqB,CAAC,GAAG,EAAE,MAAM;IAiB3C,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAItC"}
@@ -0,0 +1,111 @@
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.FileDriver = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ class FileDriver {
10
+ constructor(directory, prefix = '') {
11
+ this.prefix = prefix;
12
+ this.directory = directory;
13
+ this.ensureDirectoryExists();
14
+ }
15
+ async get(key) {
16
+ const path = this.getPath(key);
17
+ if (!fs_1.default.existsSync(path)) {
18
+ return null;
19
+ }
20
+ try {
21
+ const content = fs_1.default.readFileSync(path, 'utf8');
22
+ const data = JSON.parse(content);
23
+ if (data.expiration && Date.now() / 1000 > data.expiration) {
24
+ await this.forget(key);
25
+ return null;
26
+ }
27
+ return data.value;
28
+ }
29
+ catch (e) {
30
+ return null;
31
+ }
32
+ }
33
+ async put(key, value, seconds) {
34
+ const path = this.getPath(key);
35
+ const expiration = seconds > 0 ? (Date.now() / 1000) + seconds : 0;
36
+ const data = {
37
+ value,
38
+ expiration
39
+ };
40
+ try {
41
+ this.ensureDirectoryExists(path);
42
+ fs_1.default.writeFileSync(path, JSON.stringify(data), 'utf8');
43
+ }
44
+ catch (e) {
45
+ // Silently fail or log
46
+ }
47
+ }
48
+ async increment(key, value = 1) {
49
+ const current = await this.get(key);
50
+ const newValue = (typeof current === 'number' ? current : 0) + value;
51
+ await this.put(key, newValue, 0);
52
+ return newValue;
53
+ }
54
+ async decrement(key, value = 1) {
55
+ return this.increment(key, -value);
56
+ }
57
+ async forever(key, value) {
58
+ await this.put(key, value, 0);
59
+ }
60
+ async forget(key) {
61
+ const path = this.getPath(key);
62
+ if (fs_1.default.existsSync(path)) {
63
+ fs_1.default.unlinkSync(path);
64
+ }
65
+ }
66
+ async flush() {
67
+ if (fs_1.default.existsSync(this.directory)) {
68
+ this.deleteFolderRecursive(this.directory);
69
+ this.ensureDirectoryExists();
70
+ }
71
+ }
72
+ getPrefix() {
73
+ return this.prefix;
74
+ }
75
+ getPath(key) {
76
+ // Simple hash-based partitioning like Laravel: 2 levels deep
77
+ const hash = this.sha1(this.prefix + key);
78
+ const folder1 = hash.substring(0, 2);
79
+ const folder2 = hash.substring(2, 4);
80
+ return path_1.default.join(this.directory, folder1, folder2, hash);
81
+ }
82
+ ensureDirectoryExists(filePath) {
83
+ const dir = filePath ? path_1.default.dirname(filePath) : this.directory;
84
+ if (!fs_1.default.existsSync(dir)) {
85
+ fs_1.default.mkdirSync(dir, { recursive: true });
86
+ }
87
+ }
88
+ deleteFolderRecursive(dir) {
89
+ if (fs_1.default.existsSync(dir)) {
90
+ fs_1.default.readdirSync(dir).forEach((file) => {
91
+ const curPath = path_1.default.join(dir, file);
92
+ if (fs_1.default.lstatSync(curPath).isDirectory()) {
93
+ this.deleteFolderRecursive(curPath);
94
+ }
95
+ else {
96
+ fs_1.default.unlinkSync(curPath);
97
+ }
98
+ });
99
+ // Don't delete the root directory itself if it's the cache root
100
+ if (dir !== this.directory) {
101
+ fs_1.default.rmdirSync(dir);
102
+ }
103
+ }
104
+ }
105
+ sha1(str) {
106
+ const crypto = require('crypto');
107
+ return crypto.createHash('sha1').update(str).digest('hex');
108
+ }
109
+ }
110
+ exports.FileDriver = FileDriver;
111
+ //# sourceMappingURL=FileDriver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileDriver.js","sourceRoot":"","sources":["../../src/Drivers/FileDriver.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,10 @@ export declare class MemoryDriver implements Store {
12
12
  forever(key: string, value: any): Promise<void>;
13
13
  forget(key: string): Promise<void>;
14
14
  flush(): Promise<void>;
15
+ add(key: string, value: any, seconds: number): Promise<boolean>;
16
+ getMultiple(keys: string[]): Promise<Record<string, any>>;
17
+ putMultiple(values: Record<string, any>, seconds: number): Promise<void>;
18
+ forgetMultiple(keys: string[]): Promise<void>;
15
19
  getPrefix(): string;
16
20
  }
17
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/MemoryDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,UAAU,SAAS;IACf,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,KAAK;IACtC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAe9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,MAAM;CAGtB"}
1
+ {"version":3,"file":"MemoryDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/MemoryDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,UAAU,SAAS;IACf,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,YAAa,YAAW,KAAK;IACtC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAe9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAgB1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQzD,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,IAAI,MAAM;CAGtB"}
@@ -45,6 +45,31 @@ class MemoryDriver {
45
45
  async flush() {
46
46
  this.storage.clear();
47
47
  }
48
+ async add(key, value, seconds) {
49
+ const item = this.storage.get(key);
50
+ if (item && (item.expiresAt === null || item.expiresAt > Date.now())) {
51
+ return false;
52
+ }
53
+ await this.put(key, value, seconds);
54
+ return true;
55
+ }
56
+ async getMultiple(keys) {
57
+ const results = {};
58
+ for (const key of keys) {
59
+ results[key] = await this.get(key);
60
+ }
61
+ return results;
62
+ }
63
+ async putMultiple(values, seconds) {
64
+ for (const [key, value] of Object.entries(values)) {
65
+ await this.put(key, value, seconds);
66
+ }
67
+ }
68
+ async forgetMultiple(keys) {
69
+ for (const key of keys) {
70
+ this.storage.delete(key);
71
+ }
72
+ }
48
73
  getPrefix() {
49
74
  return '';
50
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryDriver.js","sourceRoot":"","sources":["../../src/Drivers/MemoryDriver.ts"],"names":[],"mappings":";;;AAQA,MAAa,YAAY;IAAzB;QACc,YAAO,GAA2B,IAAI,GAAG,EAAE,CAAC;IAyD1D,CAAC;IAvDG,KAAK,CAAC,GAAG,CAAC,GAAW;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACR,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,KAAU,EAAE,OAAe;QAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,QAAgB,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;QAEjC,6DAA6D;QAC7D,qEAAqE;QACrE,4CAA4C;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK,EAAE,QAAQ;YACf,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SAC1C,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,GAAW,EAAE,QAAgB,CAAC;QAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAU;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,SAAS;QACL,OAAO,EAAE,CAAC;IACd,CAAC;CACJ;AA1DD,oCA0DC"}
1
+ {"version":3,"file":"MemoryDriver.js","sourceRoot":"","sources":["../../src/Drivers/MemoryDriver.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ export declare class RedisDriver implements Store {
11
11
  forever(key: string, value: any): Promise<void>;
12
12
  forget(key: string): Promise<void>;
13
13
  flush(): Promise<void>;
14
+ add(key: string, value: any, seconds: number): Promise<boolean>;
15
+ getMultiple(keys: string[]): Promise<Record<string, any>>;
16
+ putMultiple(values: Record<string, any>, seconds: number): Promise<void>;
17
+ forgetMultiple(keys: string[]): Promise<void>;
14
18
  getPrefix(): string;
15
19
  /**
16
20
  * Get the underlying Redis instance.
@@ -1 +1 @@
1
- {"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/RedisDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,EAAE,OAAO,EAAgB,MAAM,SAAS,CAAC;AAEvD,qBAAa,WAAY,YAAW,KAAK;IAGZ,SAAS,CAAC,MAAM,EAAE,MAAM;IAFjD,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;gBAErB,MAAM,EAAE,GAAG,EAAY,MAAM,GAAE,MAAW;IA6BzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAK9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,QAAQ,IAAI,KAAK,GAAG,OAAO;CAGrC"}
1
+ {"version":3,"file":"RedisDriver.d.ts","sourceRoot":"","sources":["../../src/Drivers/RedisDriver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,EAAE,OAAO,EAAgB,MAAM,SAAS,CAAC;AAEvD,qBAAa,WAAY,YAAW,KAAK;IAGZ,SAAS,CAAC,MAAM,EAAE,MAAM;IAFjD,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;gBAErB,MAAM,EAAE,GAAG,EAAY,MAAM,GAAE,MAAW;IA6BzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAK9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW/D,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAYzD,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,SAAS,IAAI,MAAM;IAI1B;;OAEG;IACI,QAAQ,IAAI,KAAK,GAAG,OAAO;CAGrC"}
@@ -64,6 +64,52 @@ class RedisDriver {
64
64
  async flush() {
65
65
  await this.redis.flushdb();
66
66
  }
67
+ async add(key, value, seconds) {
68
+ const serializedValue = JSON.stringify(value);
69
+ let result;
70
+ if (seconds > 0) {
71
+ result = await this.redis.set(this.prefix + key, serializedValue, 'EX', seconds, 'NX');
72
+ }
73
+ else {
74
+ result = await this.redis.set(this.prefix + key, serializedValue, 'NX');
75
+ }
76
+ return result === 'OK';
77
+ }
78
+ async getMultiple(keys) {
79
+ if (keys.length === 0)
80
+ return {};
81
+ const prefixedKeys = keys.map(k => this.prefix + k);
82
+ const values = await this.redis.mget(...prefixedKeys);
83
+ const result = {};
84
+ for (let i = 0; i < keys.length; i++) {
85
+ result[keys[i]] = values[i] ? JSON.parse(values[i]) : null;
86
+ }
87
+ return result;
88
+ }
89
+ async putMultiple(values, seconds) {
90
+ if (Object.keys(values).length === 0)
91
+ return;
92
+ if (seconds > 0) {
93
+ const pipeline = this.redis.pipeline();
94
+ for (const [key, value] of Object.entries(values)) {
95
+ pipeline.set(this.prefix + key, JSON.stringify(value), 'EX', seconds);
96
+ }
97
+ await pipeline.exec();
98
+ }
99
+ else {
100
+ const multiValues = {};
101
+ for (const [key, value] of Object.entries(values)) {
102
+ multiValues[this.prefix + key] = JSON.stringify(value);
103
+ }
104
+ await this.redis.mset(multiValues);
105
+ }
106
+ }
107
+ async forgetMultiple(keys) {
108
+ if (keys.length === 0)
109
+ return;
110
+ const prefixedKeys = keys.map(k => this.prefix + k);
111
+ await this.redis.del(...prefixedKeys);
112
+ }
67
113
  getPrefix() {
68
114
  return this.prefix;
69
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RedisDriver.js","sourceRoot":"","sources":["../../src/Drivers/RedisDriver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedisDriver.js","sourceRoot":"","sources":["../../src/Drivers/RedisDriver.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Store } from './Contracts/Store';
2
+ import { CacheLock } from './CacheLock';
2
3
  export declare class Repository {
3
4
  protected store: Store;
4
5
  constructor(store: Store);
@@ -14,6 +15,11 @@ export declare class Repository {
14
15
  pull(key: string, defaultValue?: any): Promise<any>;
15
16
  forget(key: string): Promise<void>;
16
17
  flush(): Promise<void>;
18
+ getMultiple(keys: string[]): Promise<Record<string, any>>;
19
+ putMultiple(values: Record<string, any>, seconds: number): Promise<void>;
20
+ forgetMultiple(keys: string[]): Promise<void>;
21
+ lock(name: string, seconds?: number, owner?: string | null): CacheLock;
22
+ tags(names: string | string[]): Repository;
17
23
  getStore(): Store;
18
24
  }
19
25
  //# sourceMappingURL=Repository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../src/Repository.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,qBAAa,UAAU;IACP,SAAS,CAAC,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;IAE5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAKxD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAalF,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAaxE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAMzD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,QAAQ,IAAI,KAAK;CAGpB"}
1
+ {"version":3,"file":"Repository.d.ts","sourceRoot":"","sources":["../src/Repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,qBAAa,UAAU;IACP,SAAS,CAAC,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;IAE5B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAKxD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1D,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAalF,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAaxE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,GAAE,GAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAMzD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAazD,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxE,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAU,EAAE,KAAK,GAAE,MAAM,GAAG,IAAW,GAAG,SAAS;IAI/E,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,UAAU;IAK1C,QAAQ,IAAI,KAAK;CAGpB"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Repository = void 0;
4
+ const CacheLock_1 = require("./CacheLock");
5
+ const TagSet_1 = require("./TagSet");
6
+ const TaggedStore_1 = require("./TaggedStore");
4
7
  class Repository {
5
8
  constructor(store) {
6
9
  this.store = store;
@@ -60,6 +63,45 @@ class Repository {
60
63
  async flush() {
61
64
  await this.store.flush();
62
65
  }
66
+ async getMultiple(keys) {
67
+ if (keys.length === 0)
68
+ return {};
69
+ if (this.store.getMultiple) {
70
+ return await this.store.getMultiple(keys);
71
+ }
72
+ const results = {};
73
+ for (const key of keys) {
74
+ results[key] = await this.get(key);
75
+ }
76
+ return results;
77
+ }
78
+ async putMultiple(values, seconds) {
79
+ if (Object.keys(values).length === 0)
80
+ return;
81
+ if (this.store.putMultiple) {
82
+ return await this.store.putMultiple(values, seconds);
83
+ }
84
+ for (const [key, value] of Object.entries(values)) {
85
+ await this.put(key, value, seconds);
86
+ }
87
+ }
88
+ async forgetMultiple(keys) {
89
+ if (keys.length === 0)
90
+ return;
91
+ if (this.store.forgetMultiple) {
92
+ return await this.store.forgetMultiple(keys);
93
+ }
94
+ for (const key of keys) {
95
+ await this.forget(key);
96
+ }
97
+ }
98
+ lock(name, seconds = 0, owner = null) {
99
+ return new CacheLock_1.CacheLock(this.store, name, seconds, owner);
100
+ }
101
+ tags(names) {
102
+ const tagNames = Array.isArray(names) ? names : [names];
103
+ return new Repository(new TaggedStore_1.TaggedStore(this.store, new TagSet_1.TagSet(this.store, tagNames)));
104
+ }
63
105
  getStore() {
64
106
  return this.store;
65
107
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../src/Repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Repository.js","sourceRoot":"","sources":["../src/Repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { Store } from './Contracts/Store';
2
+ export declare class TagSet {
3
+ protected store: Store;
4
+ protected names: string[];
5
+ constructor(store: Store, names: string[]);
6
+ /**
7
+ * Get a combined namespace prefix for all tags.
8
+ */
9
+ getNamespace(): Promise<string>;
10
+ /**
11
+ * Get or create entirely a unique identifier for a tag.
12
+ */
13
+ tagId(name: string): Promise<string>;
14
+ /**
15
+ * Reset all assigned tags by generating new IDs.
16
+ * This effectively orphans all previous cache entries.
17
+ */
18
+ reset(): Promise<void>;
19
+ /**
20
+ * Generate a unique tag ID.
21
+ */
22
+ protected generateId(): string;
23
+ }
24
+ //# sourceMappingURL=TagSet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagSet.d.ts","sourceRoot":"","sources":["../src/TagSet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,qBAAa,MAAM;IACH,SAAS,CAAC,KAAK,EAAE,KAAK;IAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE;gBAAvC,KAAK,EAAE,KAAK,EAAY,KAAK,EAAE,MAAM,EAAE;IAE7D;;OAEG;IACU,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5C;;OAEG;IACU,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYjD;;;OAGG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOnC;;OAEG;IACH,SAAS,CAAC,UAAU,IAAI,MAAM;CAGjC"}
package/dist/TagSet.js ADDED
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TagSet = void 0;
4
+ class TagSet {
5
+ constructor(store, names) {
6
+ this.store = store;
7
+ this.names = names;
8
+ }
9
+ /**
10
+ * Get a combined namespace prefix for all tags.
11
+ */
12
+ async getNamespace() {
13
+ const ids = await Promise.all(this.names.map(name => this.tagId(name)));
14
+ return ids.join('|') + ':';
15
+ }
16
+ /**
17
+ * Get or create entirely a unique identifier for a tag.
18
+ */
19
+ async tagId(name) {
20
+ const key = `tag:${name}:key`;
21
+ let id = await this.store.get(key);
22
+ if (!id) {
23
+ id = this.generateId();
24
+ await this.store.forever(key, id);
25
+ }
26
+ return String(id);
27
+ }
28
+ /**
29
+ * Reset all assigned tags by generating new IDs.
30
+ * This effectively orphans all previous cache entries.
31
+ */
32
+ async reset() {
33
+ await Promise.all(this.names.map(async (name) => {
34
+ const key = `tag:${name}:key`;
35
+ await this.store.forever(key, this.generateId());
36
+ }));
37
+ }
38
+ /**
39
+ * Generate a unique tag ID.
40
+ */
41
+ generateId() {
42
+ return Date.now().toString(36) + Math.random().toString(36).substring(2, 15);
43
+ }
44
+ }
45
+ exports.TagSet = TagSet;
46
+ //# sourceMappingURL=TagSet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagSet.js","sourceRoot":"","sources":["../src/TagSet.ts"],"names":[],"mappings":";;;AAEA,MAAa,MAAM;IACf,YAAsB,KAAY,EAAY,KAAe;QAAvC,UAAK,GAAL,KAAK,CAAO;QAAY,UAAK,GAAL,KAAK,CAAU;IAAI,CAAC;IAElE;;OAEG;IACI,KAAK,CAAC,YAAY;QACrB,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,KAAK,CAAC,IAAY;QAC3B,MAAM,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC;QAC9B,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,KAAK;QACd,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAC1C,MAAM,GAAG,GAAG,OAAO,IAAI,MAAM,CAAC;YAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED;;OAEG;IACO,UAAU;QAChB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACjF,CAAC;CACJ;AA3CD,wBA2CC"}