@explorins/pers-sdk 1.6.14 → 1.6.17

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 (110) hide show
  1. package/dist/analytics.cjs +4 -0
  2. package/dist/analytics.cjs.map +1 -1
  3. package/dist/analytics.js +1 -1
  4. package/dist/api-key/api/api-key-api.d.ts +37 -0
  5. package/dist/api-key/api/api-key-api.d.ts.map +1 -0
  6. package/dist/api-key/index.d.ts +7 -0
  7. package/dist/api-key/index.d.ts.map +1 -0
  8. package/dist/business.cjs +4 -0
  9. package/dist/business.cjs.map +1 -1
  10. package/dist/business.js +1 -1
  11. package/dist/campaign.cjs +4 -0
  12. package/dist/campaign.cjs.map +1 -1
  13. package/dist/campaign.js +1 -1
  14. package/dist/chunks/{explorer.utils-mn6hK7S2.cjs → explorer.utils-Bj4uQw83.cjs} +2 -2
  15. package/dist/chunks/{explorer.utils-mn6hK7S2.cjs.map → explorer.utils-Bj4uQw83.cjs.map} +1 -1
  16. package/dist/chunks/{explorer.utils-BBs-6DZI.js → explorer.utils-vHiCoUYQ.js} +2 -2
  17. package/dist/chunks/{explorer.utils-BBs-6DZI.js.map → explorer.utils-vHiCoUYQ.js.map} +1 -1
  18. package/dist/chunks/index-B6-bbNnd.cjs +281 -0
  19. package/dist/chunks/index-B6-bbNnd.cjs.map +1 -0
  20. package/dist/chunks/index-DBLskLuH.js +277 -0
  21. package/dist/chunks/index-DBLskLuH.js.map +1 -0
  22. package/dist/chunks/{pers-sdk-RNGAnn-O.cjs → pers-sdk-CCegy2bB.cjs} +295 -51
  23. package/dist/chunks/pers-sdk-CCegy2bB.cjs.map +1 -0
  24. package/dist/chunks/{pers-sdk-Doc9KxB7.js → pers-sdk-FWPQvR7K.js} +294 -52
  25. package/dist/chunks/pers-sdk-FWPQvR7K.js.map +1 -0
  26. package/dist/chunks/{tenant-service-Ba7xrWED.cjs → tenant-service-DME24vr1.cjs} +6 -20
  27. package/dist/chunks/tenant-service-DME24vr1.cjs.map +1 -0
  28. package/dist/chunks/{tenant-service-DELk412y.js → tenant-service-DxtHAlaa.js} +6 -20
  29. package/dist/chunks/tenant-service-DxtHAlaa.js.map +1 -0
  30. package/dist/chunks/{web3-chain-service-Dww1Hert.js → web3-chain-service-D0IJ794i.js} +59 -5
  31. package/dist/chunks/web3-chain-service-D0IJ794i.js.map +1 -0
  32. package/dist/chunks/{web3-chain-service-DtNLaIGT.cjs → web3-chain-service-oMqWfd61.cjs} +59 -4
  33. package/dist/chunks/web3-chain-service-oMqWfd61.cjs.map +1 -0
  34. package/dist/core/auth/auth-provider.interface.d.ts +4 -6
  35. package/dist/core/auth/auth-provider.interface.d.ts.map +1 -1
  36. package/dist/core/auth/auth-status.d.ts +17 -0
  37. package/dist/core/auth/auth-status.d.ts.map +1 -0
  38. package/dist/core/auth/default-auth-provider.d.ts +2 -1
  39. package/dist/core/auth/default-auth-provider.d.ts.map +1 -1
  40. package/dist/core/auth/refresh-manager.d.ts.map +1 -1
  41. package/dist/core/auth/services/auth-service.d.ts +6 -1
  42. package/dist/core/auth/services/auth-service.d.ts.map +1 -1
  43. package/dist/core/cache/cache.service.d.ts +22 -26
  44. package/dist/core/cache/cache.service.d.ts.map +1 -1
  45. package/dist/core/errors/index.d.ts +13 -2
  46. package/dist/core/errors/index.d.ts.map +1 -1
  47. package/dist/core/pers-api-client.d.ts +1 -0
  48. package/dist/core/pers-api-client.d.ts.map +1 -1
  49. package/dist/core/pers-config.d.ts +0 -4
  50. package/dist/core/pers-config.d.ts.map +1 -1
  51. package/dist/core.cjs +6 -5
  52. package/dist/core.cjs.map +1 -1
  53. package/dist/core.js +5 -5
  54. package/dist/donation.cjs +4 -0
  55. package/dist/donation.cjs.map +1 -1
  56. package/dist/donation.js +1 -1
  57. package/dist/index.cjs +15 -5
  58. package/dist/index.cjs.map +1 -1
  59. package/dist/index.d.ts +2 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +6 -6
  62. package/dist/managers/api-key-manager.d.ts +100 -0
  63. package/dist/managers/api-key-manager.d.ts.map +1 -0
  64. package/dist/managers/index.d.ts +1 -0
  65. package/dist/managers/index.d.ts.map +1 -1
  66. package/dist/package.json +2 -2
  67. package/dist/payment.cjs +4 -0
  68. package/dist/payment.cjs.map +1 -1
  69. package/dist/payment.js +1 -1
  70. package/dist/pers-sdk.d.ts +24 -1
  71. package/dist/pers-sdk.d.ts.map +1 -1
  72. package/dist/redemption.cjs +4 -0
  73. package/dist/redemption.cjs.map +1 -1
  74. package/dist/redemption.js +1 -1
  75. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts +2 -0
  76. package/dist/shared/interfaces/pers-shared-lib.interfaces.d.ts.map +1 -1
  77. package/dist/tenant/api/tenant-api.d.ts +5 -15
  78. package/dist/tenant/api/tenant-api.d.ts.map +1 -1
  79. package/dist/tenant.cjs +5 -1
  80. package/dist/tenant.cjs.map +1 -1
  81. package/dist/tenant.js +2 -2
  82. package/dist/token.cjs +4 -0
  83. package/dist/token.cjs.map +1 -1
  84. package/dist/token.js +1 -1
  85. package/dist/transaction.cjs +4 -0
  86. package/dist/transaction.cjs.map +1 -1
  87. package/dist/transaction.js +1 -1
  88. package/dist/user-status.cjs +4 -0
  89. package/dist/user-status.cjs.map +1 -1
  90. package/dist/user-status.js +1 -1
  91. package/dist/user.cjs +4 -0
  92. package/dist/user.cjs.map +1 -1
  93. package/dist/user.js +1 -1
  94. package/dist/web3-chain/api/web3-chain-api.d.ts.map +1 -1
  95. package/dist/web3-chain.cjs +6 -2
  96. package/dist/web3-chain.cjs.map +1 -1
  97. package/dist/web3-chain.js +3 -3
  98. package/dist/web3.cjs +2 -2
  99. package/dist/web3.js +2 -2
  100. package/package.json +2 -2
  101. package/dist/chunks/index-60201NKa.js +0 -265
  102. package/dist/chunks/index-60201NKa.js.map +0 -1
  103. package/dist/chunks/index-CcQkbZBZ.cjs +0 -269
  104. package/dist/chunks/index-CcQkbZBZ.cjs.map +0 -1
  105. package/dist/chunks/pers-sdk-Doc9KxB7.js.map +0 -1
  106. package/dist/chunks/pers-sdk-RNGAnn-O.cjs.map +0 -1
  107. package/dist/chunks/tenant-service-Ba7xrWED.cjs.map +0 -1
  108. package/dist/chunks/tenant-service-DELk412y.js.map +0 -1
  109. package/dist/chunks/web3-chain-service-DtNLaIGT.cjs.map +0 -1
  110. package/dist/chunks/web3-chain-service-Dww1Hert.js.map +0 -1
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Centralized Cache Service for PERS SDK
3
+ * Simple, efficient caching with memory management
4
+ */
5
+ const DEFAULT_CACHE_CONFIG = {
6
+ defaultTtl: 30 * 60 * 1000, // 30 minutes
7
+ maxMemoryMB: 50, // 50MB cache limit
8
+ cleanupInterval: 5 * 60 * 1000, // Cleanup every 5 minutes
9
+ maxEntries: 10000, // Entry count limit
10
+ evictionBatchPercent: 0.2, // Remove 20% when evicting
11
+ };
12
+ // Constants for memory estimation
13
+ const ENTRY_OVERHEAD_BYTES = 64;
14
+ const DEFAULT_OBJECT_SIZE_BYTES = 1024;
15
+ const MEMORY_CHECK_INTERVAL_MS = 60000; // Lazy check every 60s
16
+ class CacheService {
17
+ constructor(config) {
18
+ this.cache = new Map();
19
+ this.cleanupTimer = null;
20
+ this.lastMemoryCheck = 0;
21
+ this.pendingFetches = new Map();
22
+ this.accessOrder = new Set();
23
+ this.stats = {
24
+ hits: 0,
25
+ misses: 0,
26
+ errors: 0
27
+ };
28
+ this.config = { ...DEFAULT_CACHE_CONFIG, ...config };
29
+ this.startCleanupTimer();
30
+ }
31
+ /**
32
+ * Set a value in cache with optional TTL
33
+ */
34
+ set(key, value, ttl) {
35
+ if (!key || value === undefined)
36
+ return;
37
+ const entry = {
38
+ value,
39
+ timestamp: Date.now(),
40
+ ttl: ttl || this.config.defaultTtl,
41
+ lastAccessed: Date.now()
42
+ };
43
+ this.cache.set(key, entry);
44
+ this.accessOrder.add(key);
45
+ // Fast entry count check first
46
+ if (this.cache.size > this.config.maxEntries) {
47
+ this.evictOldestEntries();
48
+ }
49
+ // Lazy memory check (only every 10s)
50
+ const now = Date.now();
51
+ if (now - this.lastMemoryCheck > MEMORY_CHECK_INTERVAL_MS) {
52
+ this.lastMemoryCheck = now;
53
+ this.enforceMemoryLimit();
54
+ }
55
+ }
56
+ /**
57
+ * Get a value from cache
58
+ */
59
+ get(key) {
60
+ const entry = this.cache.get(key);
61
+ if (!entry) {
62
+ this.stats.misses++;
63
+ return null;
64
+ }
65
+ // Check if expired
66
+ const now = Date.now();
67
+ if (now - entry.timestamp > entry.ttl) {
68
+ this.cache.delete(key);
69
+ this.accessOrder.delete(key);
70
+ this.stats.misses++;
71
+ return null;
72
+ }
73
+ // Update access order efficiently
74
+ this.accessOrder.delete(key);
75
+ this.accessOrder.add(key);
76
+ entry.lastAccessed = now;
77
+ this.stats.hits++;
78
+ return entry.value;
79
+ }
80
+ /**
81
+ * Get or set pattern - common caching pattern with race condition protection
82
+ */
83
+ async getOrSet(key, fetcher, ttl) {
84
+ const cached = this.get(key);
85
+ if (cached !== null)
86
+ return cached;
87
+ // Prevent duplicate fetches
88
+ if (this.pendingFetches.has(key)) {
89
+ return this.pendingFetches.get(key);
90
+ }
91
+ const fetchPromise = fetcher()
92
+ .then(value => {
93
+ this.pendingFetches.delete(key);
94
+ if (value !== undefined) {
95
+ this.set(key, value, ttl);
96
+ }
97
+ return value;
98
+ })
99
+ .catch(error => {
100
+ this.pendingFetches.delete(key);
101
+ this.stats.errors++;
102
+ throw error;
103
+ });
104
+ this.pendingFetches.set(key, fetchPromise);
105
+ return fetchPromise;
106
+ }
107
+ /**
108
+ * Delete a specific key
109
+ */
110
+ delete(key) {
111
+ this.accessOrder.delete(key);
112
+ return this.cache.delete(key);
113
+ }
114
+ /**
115
+ * Clear all keys matching a prefix
116
+ */
117
+ clearByPrefix(prefix) {
118
+ const keysToDelete = Array.from(this.cache.keys()).filter(key => key.startsWith(prefix));
119
+ keysToDelete.forEach(key => {
120
+ this.cache.delete(key);
121
+ this.accessOrder.delete(key);
122
+ });
123
+ return keysToDelete.length;
124
+ }
125
+ /**
126
+ * Clear all cache
127
+ */
128
+ clear() {
129
+ this.cache.clear();
130
+ this.accessOrder.clear();
131
+ this.pendingFetches.clear();
132
+ this.stats = { hits: 0, misses: 0, errors: 0 };
133
+ }
134
+ /**
135
+ * Force cleanup of expired entries
136
+ */
137
+ cleanup() {
138
+ const now = Date.now();
139
+ const keysToDelete = [];
140
+ for (const [key, entry] of this.cache.entries()) {
141
+ if (now - entry.timestamp > entry.ttl) {
142
+ keysToDelete.push(key);
143
+ }
144
+ }
145
+ keysToDelete.forEach(key => {
146
+ this.cache.delete(key);
147
+ this.accessOrder.delete(key);
148
+ });
149
+ return keysToDelete.length;
150
+ }
151
+ /**
152
+ * Stop cleanup timer and clear cache
153
+ */
154
+ destroy() {
155
+ this.stopCleanupTimer();
156
+ this.clear();
157
+ }
158
+ /**
159
+ * Create a namespaced cache interface
160
+ */
161
+ createNamespace(namespace) {
162
+ if (!namespace || namespace.includes(':')) {
163
+ throw new Error('Namespace must be non-empty and cannot contain ":"');
164
+ }
165
+ return {
166
+ set: (key, value, ttl) => this.set(`${namespace}:${key}`, value, ttl),
167
+ get: (key) => this.get(`${namespace}:${key}`),
168
+ getOrSet: (key, fetcher, ttl) => this.getOrSet(`${namespace}:${key}`, fetcher, ttl),
169
+ delete: (key) => this.delete(`${namespace}:${key}`),
170
+ clear: () => this.clearByPrefix(`${namespace}:`)
171
+ };
172
+ }
173
+ startCleanupTimer() {
174
+ this.stopCleanupTimer();
175
+ this.cleanupTimer = setInterval(() => {
176
+ this.safeCleanup();
177
+ }, this.config.cleanupInterval);
178
+ // Platform-agnostic: Prevent hanging process in Node.js environments
179
+ if (this.cleanupTimer && typeof this.cleanupTimer.unref === 'function') {
180
+ this.cleanupTimer.unref();
181
+ }
182
+ }
183
+ stopCleanupTimer() {
184
+ if (this.cleanupTimer) {
185
+ clearInterval(this.cleanupTimer);
186
+ this.cleanupTimer = null;
187
+ }
188
+ }
189
+ safeCleanup() {
190
+ try {
191
+ this.cleanup();
192
+ this.enforceMemoryLimit();
193
+ }
194
+ catch (error) {
195
+ this.stats.errors++;
196
+ // Platform-agnostic error logging
197
+ if (typeof console !== 'undefined' && console.warn) {
198
+ console.warn('Cache cleanup error:', error);
199
+ }
200
+ }
201
+ }
202
+ estimateValueSize(value) {
203
+ if (typeof value === 'string') {
204
+ return value.length * 2; // UTF-16 encoding
205
+ }
206
+ if (typeof value === 'number' || typeof value === 'boolean') {
207
+ return 8; // Primitive values
208
+ }
209
+ if (value === null || value === undefined) {
210
+ return 4;
211
+ }
212
+ try {
213
+ // More accurate JSON-based estimation for serializable objects
214
+ const jsonString = JSON.stringify(value);
215
+ return jsonString.length * 2;
216
+ }
217
+ catch {
218
+ // Fallback for non-serializable objects
219
+ if (Array.isArray(value)) {
220
+ return value.length * 100; // Better estimate for arrays
221
+ }
222
+ if (value && typeof value === 'object') {
223
+ return Object.keys(value).length * 50; // Better estimate for objects
224
+ }
225
+ return DEFAULT_OBJECT_SIZE_BYTES;
226
+ }
227
+ }
228
+ estimateMemoryUsage() {
229
+ let totalSize = 0;
230
+ for (const [key, entry] of this.cache.entries()) {
231
+ totalSize += key.length * 2; // Key size
232
+ totalSize += this.estimateValueSize(entry.value);
233
+ totalSize += ENTRY_OVERHEAD_BYTES;
234
+ }
235
+ return totalSize / (1024 * 1024);
236
+ }
237
+ enforceMemoryLimit() {
238
+ const memoryUsage = this.estimateMemoryUsage();
239
+ if (memoryUsage <= this.config.maxMemoryMB || this.cache.size === 0)
240
+ return;
241
+ this.evictOldestEntries();
242
+ }
243
+ evictOldestEntries() {
244
+ if (this.cache.size === 0)
245
+ return;
246
+ const batchSize = Math.floor(this.cache.size * this.config.evictionBatchPercent);
247
+ const toRemove = Math.max(batchSize, 1);
248
+ // Efficiently remove oldest entries using access order
249
+ const iterator = this.accessOrder.values();
250
+ for (let i = 0; i < toRemove; i++) {
251
+ const result = iterator.next();
252
+ if (result.done)
253
+ break;
254
+ const key = result.value;
255
+ this.cache.delete(key);
256
+ this.accessOrder.delete(key);
257
+ }
258
+ }
259
+ }
260
+ // Singleton instance
261
+ const globalCacheService = new CacheService();
262
+
263
+ /**
264
+ * Cache module exports
265
+ */
266
+ // Predefined cache TTL constants
267
+ const CacheTTL = {
268
+ SHORT: 5 * 60 * 1000, // 5 minutes
269
+ MEDIUM: 30 * 60 * 1000, // 30 minutes
270
+ LONG: 24 * 60 * 60 * 1000, // 24 hours
271
+ METADATA: 24 * 60 * 60 * 1000, // 24 hours - IPFS metadata is immutable
272
+ GATEWAY: 30 * 60 * 1000, // 30 minutes - Gateway config can change
273
+ PROVIDER: 60 * 60 * 1000, // 1 hour - Provider connections with auth
274
+ };
275
+
276
+ export { CacheTTL as C, CacheService as a, globalCacheService as g };
277
+ //# sourceMappingURL=index-DBLskLuH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DBLskLuH.js","sources":["../../src/core/cache/cache.service.ts","../../src/core/cache/index.ts"],"sourcesContent":[null,null],"names":[],"mappings":"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"}