@orchestr-sh/orchestr 1.7.4 → 1.9.1
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.
- package/README.md +666 -0
- package/dist/Cache/CacheManager.d.ts +109 -0
- package/dist/Cache/CacheManager.d.ts.map +1 -0
- package/dist/Cache/CacheManager.js +181 -0
- package/dist/Cache/CacheManager.js.map +1 -0
- package/dist/Cache/CacheServiceProvider.d.ts +19 -0
- package/dist/Cache/CacheServiceProvider.d.ts.map +1 -0
- package/dist/Cache/CacheServiceProvider.js +71 -0
- package/dist/Cache/CacheServiceProvider.js.map +1 -0
- package/dist/Cache/Contracts/Lock.d.ts +31 -0
- package/dist/Cache/Contracts/Lock.d.ts.map +1 -0
- package/dist/Cache/Contracts/Lock.js +3 -0
- package/dist/Cache/Contracts/Lock.js.map +1 -0
- package/dist/Cache/Contracts/Repository.d.ts +59 -0
- package/dist/Cache/Contracts/Repository.d.ts.map +1 -0
- package/dist/Cache/Contracts/Repository.js +9 -0
- package/dist/Cache/Contracts/Repository.js.map +1 -0
- package/dist/Cache/Contracts/Store.d.ts +51 -0
- package/dist/Cache/Contracts/Store.d.ts.map +1 -0
- package/dist/Cache/Contracts/Store.js +3 -0
- package/dist/Cache/Contracts/Store.js.map +1 -0
- package/dist/Cache/Events/CacheFlushed.d.ts +11 -0
- package/dist/Cache/Events/CacheFlushed.d.ts.map +1 -0
- package/dist/Cache/Events/CacheFlushed.js +18 -0
- package/dist/Cache/Events/CacheFlushed.js.map +1 -0
- package/dist/Cache/Events/CacheHit.d.ts +13 -0
- package/dist/Cache/Events/CacheHit.d.ts.map +1 -0
- package/dist/Cache/Events/CacheHit.js +22 -0
- package/dist/Cache/Events/CacheHit.js.map +1 -0
- package/dist/Cache/Events/CacheMissed.d.ts +12 -0
- package/dist/Cache/Events/CacheMissed.d.ts.map +1 -0
- package/dist/Cache/Events/CacheMissed.js +20 -0
- package/dist/Cache/Events/CacheMissed.js.map +1 -0
- package/dist/Cache/Events/KeyForgotten.d.ts +12 -0
- package/dist/Cache/Events/KeyForgotten.d.ts.map +1 -0
- package/dist/Cache/Events/KeyForgotten.js +20 -0
- package/dist/Cache/Events/KeyForgotten.js.map +1 -0
- package/dist/Cache/Events/KeyWritten.d.ts +14 -0
- package/dist/Cache/Events/KeyWritten.d.ts.map +1 -0
- package/dist/Cache/Events/KeyWritten.js +24 -0
- package/dist/Cache/Events/KeyWritten.js.map +1 -0
- package/dist/Cache/Events/index.d.ts +6 -0
- package/dist/Cache/Events/index.d.ts.map +1 -0
- package/dist/Cache/Events/index.js +14 -0
- package/dist/Cache/Events/index.js.map +1 -0
- package/dist/Cache/Locks/CacheLock.d.ts +19 -0
- package/dist/Cache/Locks/CacheLock.d.ts.map +1 -0
- package/dist/Cache/Locks/CacheLock.js +49 -0
- package/dist/Cache/Locks/CacheLock.js.map +1 -0
- package/dist/Cache/Locks/Lock.d.ts +51 -0
- package/dist/Cache/Locks/Lock.d.ts.map +1 -0
- package/dist/Cache/Locks/Lock.js +83 -0
- package/dist/Cache/Locks/Lock.js.map +1 -0
- package/dist/Cache/Locks/LockTimeoutException.d.ts +9 -0
- package/dist/Cache/Locks/LockTimeoutException.d.ts.map +1 -0
- package/dist/Cache/Locks/LockTimeoutException.js +16 -0
- package/dist/Cache/Locks/LockTimeoutException.js.map +1 -0
- package/dist/Cache/Locks/index.d.ts +4 -0
- package/dist/Cache/Locks/index.d.ts.map +1 -0
- package/dist/Cache/Locks/index.js +10 -0
- package/dist/Cache/Locks/index.js.map +1 -0
- package/dist/Cache/Repository.d.ts +61 -0
- package/dist/Cache/Repository.d.ts.map +1 -0
- package/dist/Cache/Repository.js +207 -0
- package/dist/Cache/Repository.js.map +1 -0
- package/dist/Cache/Stores/ArrayStore.d.ts +44 -0
- package/dist/Cache/Stores/ArrayStore.d.ts.map +1 -0
- package/dist/Cache/Stores/ArrayStore.js +118 -0
- package/dist/Cache/Stores/ArrayStore.js.map +1 -0
- package/dist/Cache/Stores/DatabaseStore.d.ts +44 -0
- package/dist/Cache/Stores/DatabaseStore.d.ts.map +1 -0
- package/dist/Cache/Stores/DatabaseStore.js +165 -0
- package/dist/Cache/Stores/DatabaseStore.js.map +1 -0
- package/dist/Cache/Stores/FileStore.d.ts +50 -0
- package/dist/Cache/Stores/FileStore.d.ts.map +1 -0
- package/dist/Cache/Stores/FileStore.js +194 -0
- package/dist/Cache/Stores/FileStore.js.map +1 -0
- package/dist/Cache/Stores/NullStore.d.ts +22 -0
- package/dist/Cache/Stores/NullStore.d.ts.map +1 -0
- package/dist/Cache/Stores/NullStore.js +49 -0
- package/dist/Cache/Stores/NullStore.js.map +1 -0
- package/dist/Cache/Stores/index.d.ts +5 -0
- package/dist/Cache/Stores/index.d.ts.map +1 -0
- package/dist/Cache/Stores/index.js +12 -0
- package/dist/Cache/Stores/index.js.map +1 -0
- package/dist/Cache/Tags/TagSet.d.ts +39 -0
- package/dist/Cache/Tags/TagSet.d.ts.map +1 -0
- package/dist/Cache/Tags/TagSet.js +72 -0
- package/dist/Cache/Tags/TagSet.js.map +1 -0
- package/dist/Cache/Tags/TaggedCache.d.ts +54 -0
- package/dist/Cache/Tags/TaggedCache.d.ts.map +1 -0
- package/dist/Cache/Tags/TaggedCache.js +125 -0
- package/dist/Cache/Tags/TaggedCache.js.map +1 -0
- package/dist/Cache/Tags/index.d.ts +3 -0
- package/dist/Cache/Tags/index.d.ts.map +1 -0
- package/dist/Cache/Tags/index.js +8 -0
- package/dist/Cache/Tags/index.js.map +1 -0
- package/dist/Cache/index.d.ts +27 -0
- package/dist/Cache/index.d.ts.map +1 -0
- package/dist/Cache/index.js +48 -0
- package/dist/Cache/index.js.map +1 -0
- package/dist/Console/Commands/CacheClearCommand.d.ts +16 -0
- package/dist/Console/Commands/CacheClearCommand.d.ts.map +1 -0
- package/dist/Console/Commands/CacheClearCommand.js +33 -0
- package/dist/Console/Commands/CacheClearCommand.js.map +1 -0
- package/dist/Console/Commands/CacheForgetCommand.d.ts +16 -0
- package/dist/Console/Commands/CacheForgetCommand.d.ts.map +1 -0
- package/dist/Console/Commands/CacheForgetCommand.js +39 -0
- package/dist/Console/Commands/CacheForgetCommand.js.map +1 -0
- package/dist/Console/Commands/CacheTableCommand.d.ts +17 -0
- package/dist/Console/Commands/CacheTableCommand.d.ts.map +1 -0
- package/dist/Console/Commands/CacheTableCommand.js +92 -0
- package/dist/Console/Commands/CacheTableCommand.js.map +1 -0
- package/dist/Console/Commands/MakeJobCommand.d.ts +20 -0
- package/dist/Console/Commands/MakeJobCommand.d.ts.map +1 -0
- package/dist/Console/Commands/MakeJobCommand.js +165 -0
- package/dist/Console/Commands/MakeJobCommand.js.map +1 -0
- package/dist/Console/Commands/QueueBatchesTableCommand.d.ts +17 -0
- package/dist/Console/Commands/QueueBatchesTableCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueBatchesTableCommand.js +92 -0
- package/dist/Console/Commands/QueueBatchesTableCommand.js.map +1 -0
- package/dist/Console/Commands/QueueClearCommand.d.ts +16 -0
- package/dist/Console/Commands/QueueClearCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueClearCommand.js +29 -0
- package/dist/Console/Commands/QueueClearCommand.js.map +1 -0
- package/dist/Console/Commands/QueueFailedCommand.d.ts +18 -0
- package/dist/Console/Commands/QueueFailedCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueFailedCommand.js +76 -0
- package/dist/Console/Commands/QueueFailedCommand.js.map +1 -0
- package/dist/Console/Commands/QueueFailedTableCommand.d.ts +17 -0
- package/dist/Console/Commands/QueueFailedTableCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueFailedTableCommand.js +89 -0
- package/dist/Console/Commands/QueueFailedTableCommand.js.map +1 -0
- package/dist/Console/Commands/QueueFlushCommand.d.ts +18 -0
- package/dist/Console/Commands/QueueFlushCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueFlushCommand.js +44 -0
- package/dist/Console/Commands/QueueFlushCommand.js.map +1 -0
- package/dist/Console/Commands/QueueForgetCommand.d.ts +18 -0
- package/dist/Console/Commands/QueueForgetCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueForgetCommand.js +48 -0
- package/dist/Console/Commands/QueueForgetCommand.js.map +1 -0
- package/dist/Console/Commands/QueueMonitorCommand.d.ts +16 -0
- package/dist/Console/Commands/QueueMonitorCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueMonitorCommand.js +42 -0
- package/dist/Console/Commands/QueueMonitorCommand.js.map +1 -0
- package/dist/Console/Commands/QueuePruneBatchesCommand.d.ts +16 -0
- package/dist/Console/Commands/QueuePruneBatchesCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueuePruneBatchesCommand.js +44 -0
- package/dist/Console/Commands/QueuePruneBatchesCommand.js.map +1 -0
- package/dist/Console/Commands/QueuePruneFailedCommand.d.ts +18 -0
- package/dist/Console/Commands/QueuePruneFailedCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueuePruneFailedCommand.js +39 -0
- package/dist/Console/Commands/QueuePruneFailedCommand.js.map +1 -0
- package/dist/Console/Commands/QueueRestartCommand.d.ts +16 -0
- package/dist/Console/Commands/QueueRestartCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueRestartCommand.js +34 -0
- package/dist/Console/Commands/QueueRestartCommand.js.map +1 -0
- package/dist/Console/Commands/QueueRetryCommand.d.ts +20 -0
- package/dist/Console/Commands/QueueRetryCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueRetryCommand.js +77 -0
- package/dist/Console/Commands/QueueRetryCommand.js.map +1 -0
- package/dist/Console/Commands/QueueTableCommand.d.ts +17 -0
- package/dist/Console/Commands/QueueTableCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueTableCommand.js +89 -0
- package/dist/Console/Commands/QueueTableCommand.js.map +1 -0
- package/dist/Console/Commands/QueueWorkCommand.d.ts +16 -0
- package/dist/Console/Commands/QueueWorkCommand.d.ts.map +1 -0
- package/dist/Console/Commands/QueueWorkCommand.js +51 -0
- package/dist/Console/Commands/QueueWorkCommand.js.map +1 -0
- package/dist/Facades/Bus.d.ts +62 -0
- package/dist/Facades/Bus.d.ts.map +1 -0
- package/dist/Facades/Bus.js +102 -0
- package/dist/Facades/Bus.js.map +1 -0
- package/dist/Facades/Cache.d.ts +41 -0
- package/dist/Facades/Cache.d.ts.map +1 -0
- package/dist/Facades/Cache.js +78 -0
- package/dist/Facades/Cache.js.map +1 -0
- package/dist/Facades/Queue.d.ts +42 -0
- package/dist/Facades/Queue.d.ts.map +1 -0
- package/dist/Facades/Queue.js +71 -0
- package/dist/Facades/Queue.js.map +1 -0
- package/dist/Facades/index.d.ts +3 -0
- package/dist/Facades/index.d.ts.map +1 -1
- package/dist/Facades/index.js +7 -1
- package/dist/Facades/index.js.map +1 -1
- package/dist/Queue/Batching/Batch.d.ts +86 -0
- package/dist/Queue/Batching/Batch.d.ts.map +1 -0
- package/dist/Queue/Batching/Batch.js +170 -0
- package/dist/Queue/Batching/Batch.js.map +1 -0
- package/dist/Queue/Batching/PendingBatch.d.ts +72 -0
- package/dist/Queue/Batching/PendingBatch.d.ts.map +1 -0
- package/dist/Queue/Batching/PendingBatch.js +122 -0
- package/dist/Queue/Batching/PendingBatch.js.map +1 -0
- package/dist/Queue/Batching/index.d.ts +3 -0
- package/dist/Queue/Batching/index.d.ts.map +1 -0
- package/dist/Queue/Batching/index.js +8 -0
- package/dist/Queue/Batching/index.js.map +1 -0
- package/dist/Queue/Concerns/Dispatchable.d.ts +36 -0
- package/dist/Queue/Concerns/Dispatchable.d.ts.map +1 -0
- package/dist/Queue/Concerns/Dispatchable.js +102 -0
- package/dist/Queue/Concerns/Dispatchable.js.map +1 -0
- package/dist/Queue/Contracts/QueueDriver.d.ts +67 -0
- package/dist/Queue/Contracts/QueueDriver.d.ts.map +1 -0
- package/dist/Queue/Contracts/QueueDriver.js +9 -0
- package/dist/Queue/Contracts/QueueDriver.js.map +1 -0
- package/dist/Queue/Contracts/QueueableJob.d.ts +74 -0
- package/dist/Queue/Contracts/QueueableJob.d.ts.map +1 -0
- package/dist/Queue/Contracts/QueueableJob.js +9 -0
- package/dist/Queue/Contracts/QueueableJob.js.map +1 -0
- package/dist/Queue/Contracts/ShouldBeUnique.d.ts +43 -0
- package/dist/Queue/Contracts/ShouldBeUnique.d.ts.map +1 -0
- package/dist/Queue/Contracts/ShouldBeUnique.js +12 -0
- package/dist/Queue/Contracts/ShouldBeUnique.js.map +1 -0
- package/dist/Queue/Drivers/DatabaseDriver.d.ts +39 -0
- package/dist/Queue/Drivers/DatabaseDriver.d.ts.map +1 -0
- package/dist/Queue/Drivers/DatabaseDriver.js +176 -0
- package/dist/Queue/Drivers/DatabaseDriver.js.map +1 -0
- package/dist/Queue/Drivers/NullDriver.d.ts +30 -0
- package/dist/Queue/Drivers/NullDriver.d.ts.map +1 -0
- package/dist/Queue/Drivers/NullDriver.js +57 -0
- package/dist/Queue/Drivers/NullDriver.js.map +1 -0
- package/dist/Queue/Drivers/SyncDriver.d.ts +29 -0
- package/dist/Queue/Drivers/SyncDriver.d.ts.map +1 -0
- package/dist/Queue/Drivers/SyncDriver.js +67 -0
- package/dist/Queue/Drivers/SyncDriver.js.map +1 -0
- package/dist/Queue/Drivers/index.d.ts +4 -0
- package/dist/Queue/Drivers/index.d.ts.map +1 -0
- package/dist/Queue/Drivers/index.js +10 -0
- package/dist/Queue/Drivers/index.js.map +1 -0
- package/dist/Queue/Events/JobExceptionOccurred.d.ts +13 -0
- package/dist/Queue/Events/JobExceptionOccurred.d.ts.map +1 -0
- package/dist/Queue/Events/JobExceptionOccurred.js +20 -0
- package/dist/Queue/Events/JobExceptionOccurred.js.map +1 -0
- package/dist/Queue/Events/JobFailed.d.ts +13 -0
- package/dist/Queue/Events/JobFailed.d.ts.map +1 -0
- package/dist/Queue/Events/JobFailed.js +20 -0
- package/dist/Queue/Events/JobFailed.js.map +1 -0
- package/dist/Queue/Events/JobProcessed.d.ts +12 -0
- package/dist/Queue/Events/JobProcessed.d.ts.map +1 -0
- package/dist/Queue/Events/JobProcessed.js +18 -0
- package/dist/Queue/Events/JobProcessed.js.map +1 -0
- package/dist/Queue/Events/JobProcessing.d.ts +12 -0
- package/dist/Queue/Events/JobProcessing.d.ts.map +1 -0
- package/dist/Queue/Events/JobProcessing.js +18 -0
- package/dist/Queue/Events/JobProcessing.js.map +1 -0
- package/dist/Queue/Events/JobQueued.d.ts +14 -0
- package/dist/Queue/Events/JobQueued.d.ts.map +1 -0
- package/dist/Queue/Events/JobQueued.js +22 -0
- package/dist/Queue/Events/JobQueued.js.map +1 -0
- package/dist/Queue/Events/JobRetryRequested.d.ts +12 -0
- package/dist/Queue/Events/JobRetryRequested.d.ts.map +1 -0
- package/dist/Queue/Events/JobRetryRequested.js +20 -0
- package/dist/Queue/Events/JobRetryRequested.js.map +1 -0
- package/dist/Queue/Events/WorkerStopping.d.ts +11 -0
- package/dist/Queue/Events/WorkerStopping.d.ts.map +1 -0
- package/dist/Queue/Events/WorkerStopping.js +18 -0
- package/dist/Queue/Events/WorkerStopping.js.map +1 -0
- package/dist/Queue/Events/index.d.ts +8 -0
- package/dist/Queue/Events/index.d.ts.map +1 -0
- package/dist/Queue/Events/index.js +18 -0
- package/dist/Queue/Events/index.js.map +1 -0
- package/dist/Queue/Failed/DatabaseFailedJobProvider.d.ts +33 -0
- package/dist/Queue/Failed/DatabaseFailedJobProvider.d.ts.map +1 -0
- package/dist/Queue/Failed/DatabaseFailedJobProvider.js +100 -0
- package/dist/Queue/Failed/DatabaseFailedJobProvider.js.map +1 -0
- package/dist/Queue/Failed/FailedJobProvider.d.ts +42 -0
- package/dist/Queue/Failed/FailedJobProvider.d.ts.map +1 -0
- package/dist/Queue/Failed/FailedJobProvider.js +9 -0
- package/dist/Queue/Failed/FailedJobProvider.js.map +1 -0
- package/dist/Queue/Job.d.ts +194 -0
- package/dist/Queue/Job.d.ts.map +1 -0
- package/dist/Queue/Job.js +286 -0
- package/dist/Queue/Job.js.map +1 -0
- package/dist/Queue/JobPayload.d.ts +37 -0
- package/dist/Queue/JobPayload.d.ts.map +1 -0
- package/dist/Queue/JobPayload.js +46 -0
- package/dist/Queue/JobPayload.js.map +1 -0
- package/dist/Queue/Middleware/JobMiddleware.d.ts +29 -0
- package/dist/Queue/Middleware/JobMiddleware.d.ts.map +1 -0
- package/dist/Queue/Middleware/JobMiddleware.js +21 -0
- package/dist/Queue/Middleware/JobMiddleware.js.map +1 -0
- package/dist/Queue/Middleware/RateLimited.d.ts +56 -0
- package/dist/Queue/Middleware/RateLimited.d.ts.map +1 -0
- package/dist/Queue/Middleware/RateLimited.js +83 -0
- package/dist/Queue/Middleware/RateLimited.js.map +1 -0
- package/dist/Queue/Middleware/ThrottlesExceptions.d.ts +71 -0
- package/dist/Queue/Middleware/ThrottlesExceptions.d.ts.map +1 -0
- package/dist/Queue/Middleware/ThrottlesExceptions.js +119 -0
- package/dist/Queue/Middleware/ThrottlesExceptions.js.map +1 -0
- package/dist/Queue/Middleware/WithoutOverlapping.d.ts +64 -0
- package/dist/Queue/Middleware/WithoutOverlapping.d.ts.map +1 -0
- package/dist/Queue/Middleware/WithoutOverlapping.js +103 -0
- package/dist/Queue/Middleware/WithoutOverlapping.js.map +1 -0
- package/dist/Queue/Middleware/index.d.ts +5 -0
- package/dist/Queue/Middleware/index.d.ts.map +1 -0
- package/dist/Queue/Middleware/index.js +10 -0
- package/dist/Queue/Middleware/index.js.map +1 -0
- package/dist/Queue/PendingChain.d.ts +63 -0
- package/dist/Queue/PendingChain.d.ts.map +1 -0
- package/dist/Queue/PendingChain.js +111 -0
- package/dist/Queue/PendingChain.js.map +1 -0
- package/dist/Queue/PendingDispatch.d.ts +66 -0
- package/dist/Queue/PendingDispatch.d.ts.map +1 -0
- package/dist/Queue/PendingDispatch.js +101 -0
- package/dist/Queue/PendingDispatch.js.map +1 -0
- package/dist/Queue/QueueManager.d.ts +151 -0
- package/dist/Queue/QueueManager.d.ts.map +1 -0
- package/dist/Queue/QueueManager.js +227 -0
- package/dist/Queue/QueueManager.js.map +1 -0
- package/dist/Queue/QueueServiceProvider.d.ts +19 -0
- package/dist/Queue/QueueServiceProvider.d.ts.map +1 -0
- package/dist/Queue/QueueServiceProvider.js +75 -0
- package/dist/Queue/QueueServiceProvider.js.map +1 -0
- package/dist/Queue/Workers/Worker.d.ts +99 -0
- package/dist/Queue/Workers/Worker.d.ts.map +1 -0
- package/dist/Queue/Workers/Worker.js +324 -0
- package/dist/Queue/Workers/Worker.js.map +1 -0
- package/dist/Queue/Workers/WorkerOptions.d.ts +62 -0
- package/dist/Queue/Workers/WorkerOptions.d.ts.map +1 -0
- package/dist/Queue/Workers/WorkerOptions.js +23 -0
- package/dist/Queue/Workers/WorkerOptions.js.map +1 -0
- package/dist/Queue/index.d.ts +41 -0
- package/dist/Queue/index.d.ts.map +1 -0
- package/dist/Queue/index.js +67 -0
- package/dist/Queue/index.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Repository
|
|
4
|
+
*
|
|
5
|
+
* High-level cache API that wraps a Store implementation.
|
|
6
|
+
* Provides convenience methods like remember(), pull(), has(),
|
|
7
|
+
* lock(), tags(), and TTL normalization.
|
|
8
|
+
*
|
|
9
|
+
* Mirrors Laravel's Illuminate\Cache\Repository.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const repo = new Repository(new ArrayStore());
|
|
14
|
+
*
|
|
15
|
+
* await repo.put('key', 'value', 3600);
|
|
16
|
+
* const value = await repo.get('key', 'default');
|
|
17
|
+
*
|
|
18
|
+
* const user = await repo.remember('user:1', 3600, async () => {
|
|
19
|
+
* return await fetchUser(1);
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.Repository = void 0;
|
|
25
|
+
const CacheLock_1 = require("./Locks/CacheLock");
|
|
26
|
+
const TaggedCache_1 = require("./Tags/TaggedCache");
|
|
27
|
+
const TagSet_1 = require("./Tags/TagSet");
|
|
28
|
+
class Repository {
|
|
29
|
+
store;
|
|
30
|
+
config;
|
|
31
|
+
defaultCacheTime = null;
|
|
32
|
+
storeName = '';
|
|
33
|
+
constructor(store, config = {}) {
|
|
34
|
+
this.store = store;
|
|
35
|
+
this.config = config;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Set the store name (used for events)
|
|
39
|
+
*/
|
|
40
|
+
setStoreName(name) {
|
|
41
|
+
this.storeName = name;
|
|
42
|
+
return this;
|
|
43
|
+
}
|
|
44
|
+
async get(key, defaultValue) {
|
|
45
|
+
const value = await this.store.get(key);
|
|
46
|
+
if (value !== null && value !== undefined) {
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
if (typeof defaultValue === 'function') {
|
|
50
|
+
return defaultValue();
|
|
51
|
+
}
|
|
52
|
+
return defaultValue ?? null;
|
|
53
|
+
}
|
|
54
|
+
async many(keys) {
|
|
55
|
+
return this.store.many(keys);
|
|
56
|
+
}
|
|
57
|
+
async put(key, value, ttl) {
|
|
58
|
+
const seconds = this.getSeconds(ttl);
|
|
59
|
+
if (seconds === null) {
|
|
60
|
+
return this.forever(key, value);
|
|
61
|
+
}
|
|
62
|
+
if (seconds <= 0) {
|
|
63
|
+
return this.forget(key);
|
|
64
|
+
}
|
|
65
|
+
return this.store.put(key, value, seconds);
|
|
66
|
+
}
|
|
67
|
+
async putMany(values, ttl) {
|
|
68
|
+
const seconds = this.getSeconds(ttl) ?? 0;
|
|
69
|
+
return this.store.putMany(values, seconds);
|
|
70
|
+
}
|
|
71
|
+
async increment(key, value = 1) {
|
|
72
|
+
return this.store.increment(key, value);
|
|
73
|
+
}
|
|
74
|
+
async decrement(key, value = 1) {
|
|
75
|
+
return this.store.decrement(key, value);
|
|
76
|
+
}
|
|
77
|
+
async forever(key, value) {
|
|
78
|
+
return this.store.forever(key, value);
|
|
79
|
+
}
|
|
80
|
+
async forget(key) {
|
|
81
|
+
return this.store.forget(key);
|
|
82
|
+
}
|
|
83
|
+
async flush() {
|
|
84
|
+
return this.store.flush();
|
|
85
|
+
}
|
|
86
|
+
getPrefix() {
|
|
87
|
+
return this.store.getPrefix();
|
|
88
|
+
}
|
|
89
|
+
// --- High-level Repository methods ---
|
|
90
|
+
async has(key) {
|
|
91
|
+
const value = await this.store.get(key);
|
|
92
|
+
return value !== null && value !== undefined;
|
|
93
|
+
}
|
|
94
|
+
async missing(key) {
|
|
95
|
+
return !(await this.has(key));
|
|
96
|
+
}
|
|
97
|
+
async pull(key, defaultValue) {
|
|
98
|
+
const value = await this.get(key, defaultValue);
|
|
99
|
+
if (value !== null && value !== undefined && value !== defaultValue) {
|
|
100
|
+
await this.forget(key);
|
|
101
|
+
}
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
async add(key, value, ttl) {
|
|
105
|
+
if (await this.has(key)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return this.put(key, value, ttl);
|
|
109
|
+
}
|
|
110
|
+
async remember(key, ttl, callback) {
|
|
111
|
+
const value = await this.store.get(key);
|
|
112
|
+
if (value !== null && value !== undefined) {
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
const result = await callback();
|
|
116
|
+
const seconds = this.getSeconds(ttl);
|
|
117
|
+
if (seconds !== null && seconds > 0) {
|
|
118
|
+
await this.store.put(key, result, seconds);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
await this.store.forever(key, result);
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
async rememberForever(key, callback) {
|
|
126
|
+
const value = await this.store.get(key);
|
|
127
|
+
if (value !== null && value !== undefined) {
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
const result = await callback();
|
|
131
|
+
await this.store.forever(key, result);
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
async flexible(key, ttl, callback) {
|
|
135
|
+
const [freshTtl, staleTtl] = ttl;
|
|
136
|
+
// Try to get the cached value with its freshness
|
|
137
|
+
const metaKey = `${key}:flexible_meta`;
|
|
138
|
+
const value = await this.store.get(key);
|
|
139
|
+
const meta = await this.store.get(metaKey);
|
|
140
|
+
if (value !== null && value !== undefined) {
|
|
141
|
+
// Check if still fresh
|
|
142
|
+
if (meta && typeof meta === 'object' && meta.freshUntil) {
|
|
143
|
+
const now = Math.floor(Date.now() / 1000);
|
|
144
|
+
if (now < meta.freshUntil) {
|
|
145
|
+
// Still fresh
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
148
|
+
// Stale but within total TTL - revalidate in background
|
|
149
|
+
setImmediate(async () => {
|
|
150
|
+
try {
|
|
151
|
+
const newValue = await callback();
|
|
152
|
+
const freshUntil = Math.floor(Date.now() / 1000) + freshTtl;
|
|
153
|
+
await this.store.put(key, newValue, staleTtl);
|
|
154
|
+
await this.store.put(metaKey, { freshUntil }, staleTtl);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
// Silently fail background refresh
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Cache miss - fetch and store
|
|
164
|
+
const result = await callback();
|
|
165
|
+
const freshUntil = Math.floor(Date.now() / 1000) + freshTtl;
|
|
166
|
+
await this.store.put(key, result, staleTtl);
|
|
167
|
+
await this.store.put(metaKey, { freshUntil }, staleTtl);
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
// --- Locks ---
|
|
171
|
+
lock(name, seconds = 0, owner) {
|
|
172
|
+
return new CacheLock_1.CacheLock(this.store, name, seconds, owner);
|
|
173
|
+
}
|
|
174
|
+
restoreLock(name, owner) {
|
|
175
|
+
return new CacheLock_1.CacheLock(this.store, name, 0, owner);
|
|
176
|
+
}
|
|
177
|
+
// --- Tags ---
|
|
178
|
+
tags(names) {
|
|
179
|
+
const tagNames = Array.isArray(names) ? names : [names];
|
|
180
|
+
const tagSet = new TagSet_1.TagSet(this.store, tagNames);
|
|
181
|
+
return new TaggedCache_1.TaggedCache(this.store, tagSet);
|
|
182
|
+
}
|
|
183
|
+
// --- Accessors ---
|
|
184
|
+
getStore() {
|
|
185
|
+
return this.store;
|
|
186
|
+
}
|
|
187
|
+
getDefaultCacheTime() {
|
|
188
|
+
return this.defaultCacheTime;
|
|
189
|
+
}
|
|
190
|
+
setDefaultCacheTime(seconds) {
|
|
191
|
+
this.defaultCacheTime = seconds;
|
|
192
|
+
return this;
|
|
193
|
+
}
|
|
194
|
+
// --- TTL helpers ---
|
|
195
|
+
getSeconds(ttl) {
|
|
196
|
+
if (ttl === undefined || ttl === null) {
|
|
197
|
+
return this.defaultCacheTime;
|
|
198
|
+
}
|
|
199
|
+
if (ttl instanceof Date) {
|
|
200
|
+
const seconds = Math.floor((ttl.getTime() - Date.now()) / 1000);
|
|
201
|
+
return Math.max(0, seconds);
|
|
202
|
+
}
|
|
203
|
+
return ttl;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
exports.Repository = Repository;
|
|
207
|
+
//# sourceMappingURL=Repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Repository.js","sourceRoot":"","sources":["../../src/Cache/Repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArrayStore
|
|
3
|
+
*
|
|
4
|
+
* In-memory cache store. Perfect for testing and short-lived caching.
|
|
5
|
+
* Supports tags via TaggableStore.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors Laravel's Illuminate\Cache\ArrayStore.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const store = new ArrayStore({ serialize: false }, 'app_');
|
|
12
|
+
* await store.put('key', 'value', 3600);
|
|
13
|
+
* const value = await store.get('key');
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import type { Store } from '../Contracts/Store';
|
|
17
|
+
interface CacheEntry {
|
|
18
|
+
value: any;
|
|
19
|
+
expiration: number;
|
|
20
|
+
}
|
|
21
|
+
export declare class ArrayStore implements Store {
|
|
22
|
+
protected config: Record<string, any>;
|
|
23
|
+
protected prefix: string;
|
|
24
|
+
protected storage: Map<string, CacheEntry>;
|
|
25
|
+
protected shouldSerialize: boolean;
|
|
26
|
+
constructor(config?: Record<string, any>, prefix?: string);
|
|
27
|
+
get(key: string): Promise<any>;
|
|
28
|
+
many(keys: string[]): Promise<Record<string, any>>;
|
|
29
|
+
put(key: string, value: any, seconds: number): Promise<boolean>;
|
|
30
|
+
putMany(values: Record<string, any>, seconds: number): Promise<boolean>;
|
|
31
|
+
increment(key: string, value?: number): Promise<number | boolean>;
|
|
32
|
+
decrement(key: string, value?: number): Promise<number | boolean>;
|
|
33
|
+
forever(key: string, value: any): Promise<boolean>;
|
|
34
|
+
forget(key: string): Promise<boolean>;
|
|
35
|
+
flush(): Promise<boolean>;
|
|
36
|
+
getPrefix(): string;
|
|
37
|
+
protected prefixedKey(key: string): string;
|
|
38
|
+
protected isExpired(expiration: number): boolean;
|
|
39
|
+
protected currentTime(): number;
|
|
40
|
+
protected serialize(value: any): any;
|
|
41
|
+
protected unserialize(value: any): any;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=ArrayStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArrayStore.d.ts","sourceRoot":"","sources":["../../../src/Cache/Stores/ArrayStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,UAAU,UAAU;IAClB,KAAK,EAAE,GAAG,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAW,YAAW,KAAK;IAKpC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,MAAM;IAL1B,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAa;IACvD,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC;gBAGvB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,EAChC,MAAM,GAAE,MAAW;IAKzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAc9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQlD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY/D,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOvE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAgBpE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAIpE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI1C,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAKhD,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAIpC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;CAUvC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ArrayStore
|
|
4
|
+
*
|
|
5
|
+
* In-memory cache store. Perfect for testing and short-lived caching.
|
|
6
|
+
* Supports tags via TaggableStore.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors Laravel's Illuminate\Cache\ArrayStore.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const store = new ArrayStore({ serialize: false }, 'app_');
|
|
13
|
+
* await store.put('key', 'value', 3600);
|
|
14
|
+
* const value = await store.get('key');
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.ArrayStore = void 0;
|
|
19
|
+
class ArrayStore {
|
|
20
|
+
config;
|
|
21
|
+
prefix;
|
|
22
|
+
storage = new Map();
|
|
23
|
+
shouldSerialize;
|
|
24
|
+
constructor(config = {}, prefix = '') {
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.prefix = prefix;
|
|
27
|
+
this.shouldSerialize = config.serialize !== false;
|
|
28
|
+
}
|
|
29
|
+
async get(key) {
|
|
30
|
+
const prefixed = this.prefixedKey(key);
|
|
31
|
+
const entry = this.storage.get(prefixed);
|
|
32
|
+
if (!entry)
|
|
33
|
+
return null;
|
|
34
|
+
if (this.isExpired(entry.expiration)) {
|
|
35
|
+
this.storage.delete(prefixed);
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return this.shouldSerialize ? this.unserialize(entry.value) : entry.value;
|
|
39
|
+
}
|
|
40
|
+
async many(keys) {
|
|
41
|
+
const result = {};
|
|
42
|
+
for (const key of keys) {
|
|
43
|
+
result[key] = await this.get(key);
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
async put(key, value, seconds) {
|
|
48
|
+
const prefixed = this.prefixedKey(key);
|
|
49
|
+
const stored = this.shouldSerialize ? this.serialize(value) : value;
|
|
50
|
+
this.storage.set(prefixed, {
|
|
51
|
+
value: stored,
|
|
52
|
+
expiration: seconds > 0 ? this.currentTime() + seconds : 0,
|
|
53
|
+
});
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
async putMany(values, seconds) {
|
|
57
|
+
for (const [key, value] of Object.entries(values)) {
|
|
58
|
+
await this.put(key, value, seconds);
|
|
59
|
+
}
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
async increment(key, value = 1) {
|
|
63
|
+
const current = await this.get(key);
|
|
64
|
+
const newValue = (typeof current === 'number' ? current : 0) + value;
|
|
65
|
+
const prefixed = this.prefixedKey(key);
|
|
66
|
+
const entry = this.storage.get(prefixed);
|
|
67
|
+
const expiration = entry ? entry.expiration : 0;
|
|
68
|
+
this.storage.set(prefixed, {
|
|
69
|
+
value: this.shouldSerialize ? this.serialize(newValue) : newValue,
|
|
70
|
+
expiration,
|
|
71
|
+
});
|
|
72
|
+
return newValue;
|
|
73
|
+
}
|
|
74
|
+
async decrement(key, value = 1) {
|
|
75
|
+
return this.increment(key, -value);
|
|
76
|
+
}
|
|
77
|
+
async forever(key, value) {
|
|
78
|
+
return this.put(key, value, 0);
|
|
79
|
+
}
|
|
80
|
+
async forget(key) {
|
|
81
|
+
const prefixed = this.prefixedKey(key);
|
|
82
|
+
return this.storage.delete(prefixed);
|
|
83
|
+
}
|
|
84
|
+
async flush() {
|
|
85
|
+
this.storage.clear();
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
getPrefix() {
|
|
89
|
+
return this.prefix;
|
|
90
|
+
}
|
|
91
|
+
prefixedKey(key) {
|
|
92
|
+
return `${this.prefix}${key}`;
|
|
93
|
+
}
|
|
94
|
+
isExpired(expiration) {
|
|
95
|
+
if (expiration === 0)
|
|
96
|
+
return false;
|
|
97
|
+
return this.currentTime() >= expiration;
|
|
98
|
+
}
|
|
99
|
+
currentTime() {
|
|
100
|
+
return Math.floor(Date.now() / 1000);
|
|
101
|
+
}
|
|
102
|
+
serialize(value) {
|
|
103
|
+
return JSON.stringify(value);
|
|
104
|
+
}
|
|
105
|
+
unserialize(value) {
|
|
106
|
+
if (typeof value === 'string') {
|
|
107
|
+
try {
|
|
108
|
+
return JSON.parse(value);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return value;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.ArrayStore = ArrayStore;
|
|
118
|
+
//# sourceMappingURL=ArrayStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArrayStore.js","sourceRoot":"","sources":["../../../src/Cache/Stores/ArrayStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DatabaseStore
|
|
3
|
+
*
|
|
4
|
+
* Database-backed cache store. Stores cache entries in a database table.
|
|
5
|
+
* Requires a `cache` table with columns: key (PK), value (text), expiration (int).
|
|
6
|
+
*
|
|
7
|
+
* Mirrors Laravel's Illuminate\Cache\DatabaseStore.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const store = new DatabaseStore({
|
|
12
|
+
* driver: 'database',
|
|
13
|
+
* connection: null,
|
|
14
|
+
* table: 'cache',
|
|
15
|
+
* }, 'app_', application);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { Store } from '../Contracts/Store';
|
|
19
|
+
import type { Application } from '../../Foundation/Application';
|
|
20
|
+
import type { Connection } from '../../Database/Connection';
|
|
21
|
+
export declare class DatabaseStore implements Store {
|
|
22
|
+
protected config: Record<string, any>;
|
|
23
|
+
protected prefix: string;
|
|
24
|
+
protected app: Application;
|
|
25
|
+
protected tableName: string;
|
|
26
|
+
protected connectionName?: string;
|
|
27
|
+
constructor(config: Record<string, any>, prefix: string | undefined, app: Application);
|
|
28
|
+
protected getConnection(): Connection;
|
|
29
|
+
get(key: string): Promise<any>;
|
|
30
|
+
many(keys: string[]): Promise<Record<string, any>>;
|
|
31
|
+
put(key: string, value: any, seconds: number): Promise<boolean>;
|
|
32
|
+
putMany(values: Record<string, any>, seconds: number): Promise<boolean>;
|
|
33
|
+
increment(key: string, value?: number): Promise<number | boolean>;
|
|
34
|
+
decrement(key: string, value?: number): Promise<number | boolean>;
|
|
35
|
+
forever(key: string, value: any): Promise<boolean>;
|
|
36
|
+
forget(key: string): Promise<boolean>;
|
|
37
|
+
flush(): Promise<boolean>;
|
|
38
|
+
getPrefix(): string;
|
|
39
|
+
protected prefixedKey(key: string): string;
|
|
40
|
+
protected currentTime(): number;
|
|
41
|
+
protected serialize(value: any): string;
|
|
42
|
+
protected unserialize(value: string): any;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=DatabaseStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseStore.d.ts","sourceRoot":"","sources":["../../../src/Cache/Stores/DatabaseStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,qBAAa,aAAc,YAAW,KAAK;IAKvC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,GAAG,EAAE,WAAW;IAN5B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;gBAGtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,EAAE,MAAM,YAAK,EACnB,GAAG,EAAE,WAAW;IAM5B,SAAS,CAAC,aAAa,IAAI,UAAU;IAK/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAoB9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQlD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B/D,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUvE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAuBpE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAIpE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAcrC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAW/B,SAAS,IAAI,MAAM;IAInB,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI1C,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM;IAIvC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG;CAO1C"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DatabaseStore
|
|
4
|
+
*
|
|
5
|
+
* Database-backed cache store. Stores cache entries in a database table.
|
|
6
|
+
* Requires a `cache` table with columns: key (PK), value (text), expiration (int).
|
|
7
|
+
*
|
|
8
|
+
* Mirrors Laravel's Illuminate\Cache\DatabaseStore.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const store = new DatabaseStore({
|
|
13
|
+
* driver: 'database',
|
|
14
|
+
* connection: null,
|
|
15
|
+
* table: 'cache',
|
|
16
|
+
* }, 'app_', application);
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.DatabaseStore = void 0;
|
|
21
|
+
class DatabaseStore {
|
|
22
|
+
config;
|
|
23
|
+
prefix;
|
|
24
|
+
app;
|
|
25
|
+
tableName;
|
|
26
|
+
connectionName;
|
|
27
|
+
constructor(config, prefix = '', app) {
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.prefix = prefix;
|
|
30
|
+
this.app = app;
|
|
31
|
+
this.tableName = config.table || 'cache';
|
|
32
|
+
this.connectionName = config.connection || undefined;
|
|
33
|
+
}
|
|
34
|
+
getConnection() {
|
|
35
|
+
const db = this.app.make('db');
|
|
36
|
+
return db.connection(this.connectionName);
|
|
37
|
+
}
|
|
38
|
+
async get(key) {
|
|
39
|
+
const prefixed = this.prefixedKey(key);
|
|
40
|
+
const conn = this.getConnection();
|
|
41
|
+
const now = this.currentTime();
|
|
42
|
+
const row = await conn.table(this.tableName)
|
|
43
|
+
.where('key', '=', prefixed)
|
|
44
|
+
.first();
|
|
45
|
+
if (!row)
|
|
46
|
+
return null;
|
|
47
|
+
// Check expiration
|
|
48
|
+
if (row.expiration !== 0 && now >= row.expiration) {
|
|
49
|
+
await this.forget(key);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return this.unserialize(row.value);
|
|
53
|
+
}
|
|
54
|
+
async many(keys) {
|
|
55
|
+
const result = {};
|
|
56
|
+
for (const key of keys) {
|
|
57
|
+
result[key] = await this.get(key);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
async put(key, value, seconds) {
|
|
62
|
+
const prefixed = this.prefixedKey(key);
|
|
63
|
+
const serialized = this.serialize(value);
|
|
64
|
+
const expiration = seconds > 0 ? this.currentTime() + seconds : 0;
|
|
65
|
+
const conn = this.getConnection();
|
|
66
|
+
try {
|
|
67
|
+
// Try update first
|
|
68
|
+
const existing = await conn.table(this.tableName)
|
|
69
|
+
.where('key', '=', prefixed)
|
|
70
|
+
.first();
|
|
71
|
+
if (existing) {
|
|
72
|
+
await conn.table(this.tableName)
|
|
73
|
+
.where('key', '=', prefixed)
|
|
74
|
+
.update({ value: serialized, expiration });
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
await conn.table(this.tableName)
|
|
78
|
+
.insert({ key: prefixed, value: serialized, expiration });
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async putMany(values, seconds) {
|
|
87
|
+
let success = true;
|
|
88
|
+
for (const [key, value] of Object.entries(values)) {
|
|
89
|
+
if (!(await this.put(key, value, seconds))) {
|
|
90
|
+
success = false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return success;
|
|
94
|
+
}
|
|
95
|
+
async increment(key, value = 1) {
|
|
96
|
+
const current = await this.get(key);
|
|
97
|
+
const newValue = (typeof current === 'number' ? current : 0) + value;
|
|
98
|
+
const prefixed = this.prefixedKey(key);
|
|
99
|
+
const conn = this.getConnection();
|
|
100
|
+
const existing = await conn.table(this.tableName)
|
|
101
|
+
.where('key', '=', prefixed)
|
|
102
|
+
.first();
|
|
103
|
+
if (existing) {
|
|
104
|
+
await conn.table(this.tableName)
|
|
105
|
+
.where('key', '=', prefixed)
|
|
106
|
+
.update({ value: this.serialize(newValue) });
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
await conn.table(this.tableName)
|
|
110
|
+
.insert({ key: prefixed, value: this.serialize(newValue), expiration: 0 });
|
|
111
|
+
}
|
|
112
|
+
return newValue;
|
|
113
|
+
}
|
|
114
|
+
async decrement(key, value = 1) {
|
|
115
|
+
return this.increment(key, -value);
|
|
116
|
+
}
|
|
117
|
+
async forever(key, value) {
|
|
118
|
+
return this.put(key, value, 0);
|
|
119
|
+
}
|
|
120
|
+
async forget(key) {
|
|
121
|
+
const prefixed = this.prefixedKey(key);
|
|
122
|
+
const conn = this.getConnection();
|
|
123
|
+
try {
|
|
124
|
+
await conn.table(this.tableName)
|
|
125
|
+
.where('key', '=', prefixed)
|
|
126
|
+
.delete();
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async flush() {
|
|
134
|
+
const conn = this.getConnection();
|
|
135
|
+
try {
|
|
136
|
+
await conn.table(this.tableName).delete();
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
getPrefix() {
|
|
144
|
+
return this.prefix;
|
|
145
|
+
}
|
|
146
|
+
prefixedKey(key) {
|
|
147
|
+
return `${this.prefix}${key}`;
|
|
148
|
+
}
|
|
149
|
+
currentTime() {
|
|
150
|
+
return Math.floor(Date.now() / 1000);
|
|
151
|
+
}
|
|
152
|
+
serialize(value) {
|
|
153
|
+
return JSON.stringify(value);
|
|
154
|
+
}
|
|
155
|
+
unserialize(value) {
|
|
156
|
+
try {
|
|
157
|
+
return JSON.parse(value);
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
exports.DatabaseStore = DatabaseStore;
|
|
165
|
+
//# sourceMappingURL=DatabaseStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatabaseStore.js","sourceRoot":"","sources":["../../../src/Cache/Stores/DatabaseStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FileStore
|
|
3
|
+
*
|
|
4
|
+
* File-based cache store. Stores each cache entry as a JSON file
|
|
5
|
+
* on the filesystem, organized by a two-character hash prefix.
|
|
6
|
+
*
|
|
7
|
+
* Mirrors Laravel's Illuminate\Cache\FileStore.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* const store = new FileStore({
|
|
12
|
+
* driver: 'file',
|
|
13
|
+
* path: 'storage/framework/cache/data',
|
|
14
|
+
* }, 'app_');
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
import type { Store } from '../Contracts/Store';
|
|
18
|
+
export declare class FileStore implements Store {
|
|
19
|
+
protected config: Record<string, any>;
|
|
20
|
+
protected prefix: string;
|
|
21
|
+
protected cachePath: string;
|
|
22
|
+
constructor(config: Record<string, any>, prefix?: string);
|
|
23
|
+
get(key: string): Promise<any>;
|
|
24
|
+
many(keys: string[]): Promise<Record<string, any>>;
|
|
25
|
+
put(key: string, value: any, seconds: number): Promise<boolean>;
|
|
26
|
+
putMany(values: Record<string, any>, seconds: number): Promise<boolean>;
|
|
27
|
+
increment(key: string, value?: number): Promise<number | boolean>;
|
|
28
|
+
decrement(key: string, value?: number): Promise<number | boolean>;
|
|
29
|
+
forever(key: string, value: any): Promise<boolean>;
|
|
30
|
+
forget(key: string): Promise<boolean>;
|
|
31
|
+
flush(): Promise<boolean>;
|
|
32
|
+
getPrefix(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get the full file path for a cache key
|
|
35
|
+
*/
|
|
36
|
+
protected path(key: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* Get the hashed key
|
|
39
|
+
*/
|
|
40
|
+
protected hash(key: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Read and validate the cache payload
|
|
43
|
+
*/
|
|
44
|
+
protected getPayload(key: string): Promise<any>;
|
|
45
|
+
protected ensureDirectory(dir: string): Promise<void>;
|
|
46
|
+
protected currentTime(): number;
|
|
47
|
+
protected serialize(value: any): any;
|
|
48
|
+
protected unserialize(value: any): any;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=FileStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileStore.d.ts","sourceRoot":"","sources":["../../../src/Cache/Stores/FileStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD,qBAAa,SAAU,YAAW,KAAK;IAInC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,MAAM;IAJ1B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;gBAGhB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,MAAM,GAAE,MAAW;IAKzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAQlD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB/D,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUvE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAOpE,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;IAIpE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUrC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC;IAU/B,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAQnC;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC;;OAEG;cACa,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;cAmBrC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAIpC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;CAUvC"}
|