@serve.zone/dcrouter 11.0.0 → 11.0.4
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/dist_serve/bundle.js +560 -560
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts_web/00_commitinfo_data.js +1 -1
- package/dist_ts_web/appstate.js +24 -16
- package/dist_ts_web/elements/ops-dashboard.js +22 -7
- package/package.json +14 -21
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/appstate.ts +24 -16
- package/ts_web/elements/ops-dashboard.ts +21 -6
- package/dist_serve/bundle.js.map +0 -7
- package/dist_serve/index.html +0 -1
- package/dist_ts/cache/classes.cached.document.d.ts +0 -76
- package/dist_ts/cache/classes.cached.document.js +0 -100
- package/dist_ts/cache/classes.cachedb.d.ts +0 -60
- package/dist_ts/cache/classes.cachedb.js +0 -126
package/dist_serve/index.html
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang=en><head><meta content="user-scalable=0,initial-scale=1,maximum-scale=1,minimum-scale=1,width=device-width,height=device-height" name=viewport><meta content="text/html; charset=utf-8" http-equiv=Content-Type><meta content=#000000 name=theme-color><link href=/manifest.json rel=manifest><link href=/assetbroker/manifest/favicon.png rel=icon type=image/png><link href=https://assetbroker.lossless.one/ rel=preconnect crossorigin><link href=https://assetbroker.lossless.one/fonts/fonts.css rel=stylesheet><style>html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{position:relative;background:#000;margin:0}</style><script>projectVersion=""</script></head><body><noscript><style>body{background:#303f9f;font-family:Inter,Roboto,sans-serif;color:#fff}a{color:#fff;text-decoration:none}.logo{margin-top:100px;text-align:center}img{width:130px}.container{width:600px;margin:auto;margin-top:20px;box-shadow:0 0 5px rgba(0,0,0,.3);overflow:hidden;border-radius:3px;background:#4357d9}.contentHeader{padding:20px;text-align:center;font-size:25px;border-bottom:1px solid rgba(255,255,255,.1)}.content{padding:20px}.footer{padding:10px;text-align:center}</style><div class=logo><img src=https://assetbroker.lossless.one/brandfiles/lossless/svg-minimal-bright.svg></div><div class=container><div class=contentHeader>We need JavaScript to run properly!</div><div class=content>This site is being built using lit-element (made by Google). This technology works with JavaScript. Subsequently this website does not work as intended by Lossless GmbH without JavaScript.</div></div><div class=footer><a href=https://lossless.gmbh>Legal Info</a>|<a href=https://lossless.gmbh/privacy>Privacy Policy</a></div></noscript><script defer=defer type=text/javascript async>window.revenueEnabled=!0;let runRevenueCheck=async()=>{var e=document.createElement("div");e.id="476kjuhzgtr764",e.style.display="none",document.body.appendChild(e),document.getElementById("476kjuhzgtr764")?window.revenueEnabled=!0:window.revenueEnabled=!1,console.log("revenue enabled: "+window.revenueEnabled)};runRevenueCheck()</script></body><script defer=defer type=module src=/bundle.js></script></html>
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
/**
|
|
3
|
-
* Base class for all cached documents with TTL support
|
|
4
|
-
*
|
|
5
|
-
* Extends smartdata's SmartDataDbDoc to add:
|
|
6
|
-
* - Automatic timestamps (createdAt, lastAccessedAt)
|
|
7
|
-
* - TTL/expiration support (expiresAt)
|
|
8
|
-
* - Helper methods for TTL management
|
|
9
|
-
*
|
|
10
|
-
* NOTE: Subclasses MUST add @svDb() decorators to createdAt, expiresAt, and lastAccessedAt
|
|
11
|
-
* since decorators on abstract classes don't propagate correctly.
|
|
12
|
-
*/
|
|
13
|
-
export declare abstract class CachedDocument<T extends CachedDocument<T>> extends plugins.smartdata.SmartDataDbDoc<T, T> {
|
|
14
|
-
/**
|
|
15
|
-
* Timestamp when the document was created
|
|
16
|
-
* NOTE: Subclasses must add @svDb() decorator
|
|
17
|
-
*/
|
|
18
|
-
createdAt: Date;
|
|
19
|
-
/**
|
|
20
|
-
* Timestamp when the document expires and should be cleaned up
|
|
21
|
-
* NOTE: Subclasses must add @svDb() decorator
|
|
22
|
-
*/
|
|
23
|
-
expiresAt: Date;
|
|
24
|
-
/**
|
|
25
|
-
* Timestamp of last access (for LRU-style eviction if needed)
|
|
26
|
-
* NOTE: Subclasses must add @svDb() decorator
|
|
27
|
-
*/
|
|
28
|
-
lastAccessedAt: Date;
|
|
29
|
-
/**
|
|
30
|
-
* Set the TTL (time to live) for this document
|
|
31
|
-
* @param ttlMs Time to live in milliseconds
|
|
32
|
-
*/
|
|
33
|
-
setTTL(ttlMs: number): void;
|
|
34
|
-
/**
|
|
35
|
-
* Set TTL using days
|
|
36
|
-
* @param days Number of days until expiration
|
|
37
|
-
*/
|
|
38
|
-
setTTLDays(days: number): void;
|
|
39
|
-
/**
|
|
40
|
-
* Set TTL using hours
|
|
41
|
-
* @param hours Number of hours until expiration
|
|
42
|
-
*/
|
|
43
|
-
setTTLHours(hours: number): void;
|
|
44
|
-
/**
|
|
45
|
-
* Check if this document has expired
|
|
46
|
-
*/
|
|
47
|
-
isExpired(): boolean;
|
|
48
|
-
/**
|
|
49
|
-
* Update the lastAccessedAt timestamp
|
|
50
|
-
*/
|
|
51
|
-
touch(): void;
|
|
52
|
-
/**
|
|
53
|
-
* Get remaining TTL in milliseconds
|
|
54
|
-
* Returns 0 if expired, -1 if no expiration set
|
|
55
|
-
*/
|
|
56
|
-
getRemainingTTL(): number;
|
|
57
|
-
/**
|
|
58
|
-
* Extend the TTL by the specified milliseconds from now
|
|
59
|
-
* @param ttlMs Additional time to live in milliseconds
|
|
60
|
-
*/
|
|
61
|
-
extendTTL(ttlMs: number): void;
|
|
62
|
-
/**
|
|
63
|
-
* Set the document to never expire (100 years in the future)
|
|
64
|
-
*/
|
|
65
|
-
setNeverExpires(): void;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* TTL constants in milliseconds
|
|
69
|
-
*/
|
|
70
|
-
export declare const TTL: {
|
|
71
|
-
readonly HOURS_1: number;
|
|
72
|
-
readonly HOURS_24: number;
|
|
73
|
-
readonly DAYS_7: number;
|
|
74
|
-
readonly DAYS_30: number;
|
|
75
|
-
readonly DAYS_90: number;
|
|
76
|
-
};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
/**
|
|
3
|
-
* Base class for all cached documents with TTL support
|
|
4
|
-
*
|
|
5
|
-
* Extends smartdata's SmartDataDbDoc to add:
|
|
6
|
-
* - Automatic timestamps (createdAt, lastAccessedAt)
|
|
7
|
-
* - TTL/expiration support (expiresAt)
|
|
8
|
-
* - Helper methods for TTL management
|
|
9
|
-
*
|
|
10
|
-
* NOTE: Subclasses MUST add @svDb() decorators to createdAt, expiresAt, and lastAccessedAt
|
|
11
|
-
* since decorators on abstract classes don't propagate correctly.
|
|
12
|
-
*/
|
|
13
|
-
export class CachedDocument extends plugins.smartdata.SmartDataDbDoc {
|
|
14
|
-
/**
|
|
15
|
-
* Timestamp when the document was created
|
|
16
|
-
* NOTE: Subclasses must add @svDb() decorator
|
|
17
|
-
*/
|
|
18
|
-
createdAt = new Date();
|
|
19
|
-
/**
|
|
20
|
-
* Timestamp when the document expires and should be cleaned up
|
|
21
|
-
* NOTE: Subclasses must add @svDb() decorator
|
|
22
|
-
*/
|
|
23
|
-
expiresAt;
|
|
24
|
-
/**
|
|
25
|
-
* Timestamp of last access (for LRU-style eviction if needed)
|
|
26
|
-
* NOTE: Subclasses must add @svDb() decorator
|
|
27
|
-
*/
|
|
28
|
-
lastAccessedAt = new Date();
|
|
29
|
-
/**
|
|
30
|
-
* Set the TTL (time to live) for this document
|
|
31
|
-
* @param ttlMs Time to live in milliseconds
|
|
32
|
-
*/
|
|
33
|
-
setTTL(ttlMs) {
|
|
34
|
-
this.expiresAt = new Date(Date.now() + ttlMs);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Set TTL using days
|
|
38
|
-
* @param days Number of days until expiration
|
|
39
|
-
*/
|
|
40
|
-
setTTLDays(days) {
|
|
41
|
-
this.setTTL(days * 24 * 60 * 60 * 1000);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Set TTL using hours
|
|
45
|
-
* @param hours Number of hours until expiration
|
|
46
|
-
*/
|
|
47
|
-
setTTLHours(hours) {
|
|
48
|
-
this.setTTL(hours * 60 * 60 * 1000);
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Check if this document has expired
|
|
52
|
-
*/
|
|
53
|
-
isExpired() {
|
|
54
|
-
if (!this.expiresAt) {
|
|
55
|
-
return false; // No expiration set
|
|
56
|
-
}
|
|
57
|
-
return new Date() > this.expiresAt;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Update the lastAccessedAt timestamp
|
|
61
|
-
*/
|
|
62
|
-
touch() {
|
|
63
|
-
this.lastAccessedAt = new Date();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Get remaining TTL in milliseconds
|
|
67
|
-
* Returns 0 if expired, -1 if no expiration set
|
|
68
|
-
*/
|
|
69
|
-
getRemainingTTL() {
|
|
70
|
-
if (!this.expiresAt) {
|
|
71
|
-
return -1;
|
|
72
|
-
}
|
|
73
|
-
const remaining = this.expiresAt.getTime() - Date.now();
|
|
74
|
-
return remaining > 0 ? remaining : 0;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Extend the TTL by the specified milliseconds from now
|
|
78
|
-
* @param ttlMs Additional time to live in milliseconds
|
|
79
|
-
*/
|
|
80
|
-
extendTTL(ttlMs) {
|
|
81
|
-
this.expiresAt = new Date(Date.now() + ttlMs);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Set the document to never expire (100 years in the future)
|
|
85
|
-
*/
|
|
86
|
-
setNeverExpires() {
|
|
87
|
-
this.expiresAt = new Date(Date.now() + 100 * 365 * 24 * 60 * 60 * 1000);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* TTL constants in milliseconds
|
|
92
|
-
*/
|
|
93
|
-
export const TTL = {
|
|
94
|
-
HOURS_1: 1 * 60 * 60 * 1000,
|
|
95
|
-
HOURS_24: 24 * 60 * 60 * 1000,
|
|
96
|
-
DAYS_7: 7 * 24 * 60 * 60 * 1000,
|
|
97
|
-
DAYS_30: 30 * 24 * 60 * 60 * 1000,
|
|
98
|
-
DAYS_90: 90 * 24 * 60 * 60 * 1000,
|
|
99
|
-
};
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZWQuZG9jdW1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90cy9jYWNoZS9jbGFzc2VzLmNhY2hlZC5kb2N1bWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGVBQWUsQ0FBQztBQUV6Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxPQUFnQixjQUE0QyxTQUFRLE9BQU8sQ0FBQyxTQUFTLENBQUMsY0FBb0I7SUFDOUc7OztPQUdHO0lBQ0ksU0FBUyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7SUFFcEM7OztPQUdHO0lBQ0ksU0FBUyxDQUFPO0lBRXZCOzs7T0FHRztJQUNJLGNBQWMsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO0lBRXpDOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7O09BR0c7SUFDSSxVQUFVLENBQUMsSUFBWTtRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksV0FBVyxDQUFDLEtBQWE7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNwQixPQUFPLEtBQUssQ0FBQyxDQUFDLG9CQUFvQjtRQUNwQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDckMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNWLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDeEQsT0FBTyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQWE7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZUFBZTtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHO0lBQ2pCLE9BQU8sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzNCLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0lBQzdCLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSTtJQUMvQixPQUFPLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUk7SUFDakMsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJO0NBQ3pCLENBQUMifQ==
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
/**
|
|
3
|
-
* Configuration options for CacheDb
|
|
4
|
-
*/
|
|
5
|
-
export interface ICacheDbOptions {
|
|
6
|
-
/** Base storage path for TsmDB data (default: ~/.serve.zone/dcrouter/tsmdb) */
|
|
7
|
-
storagePath?: string;
|
|
8
|
-
/** Database name (default: dcrouter) */
|
|
9
|
-
dbName?: string;
|
|
10
|
-
/** Enable debug logging */
|
|
11
|
-
debug?: boolean;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* CacheDb - Wrapper around LocalTsmDb and smartdata
|
|
15
|
-
*
|
|
16
|
-
* Provides persistent caching using smartdata as the ORM layer
|
|
17
|
-
* and LocalTsmDb as the embedded database engine.
|
|
18
|
-
*/
|
|
19
|
-
export declare class CacheDb {
|
|
20
|
-
private static instance;
|
|
21
|
-
private localTsmDb;
|
|
22
|
-
private smartdataDb;
|
|
23
|
-
private options;
|
|
24
|
-
private isStarted;
|
|
25
|
-
constructor(options?: ICacheDbOptions);
|
|
26
|
-
/**
|
|
27
|
-
* Get or create the singleton instance
|
|
28
|
-
*/
|
|
29
|
-
static getInstance(options?: ICacheDbOptions): CacheDb;
|
|
30
|
-
/**
|
|
31
|
-
* Reset the singleton instance (useful for testing)
|
|
32
|
-
*/
|
|
33
|
-
static resetInstance(): void;
|
|
34
|
-
/**
|
|
35
|
-
* Start the cache database
|
|
36
|
-
* - Initializes LocalTsmDb with file persistence
|
|
37
|
-
* - Connects smartdata to the LocalTsmDb via Unix socket
|
|
38
|
-
*/
|
|
39
|
-
start(): Promise<void>;
|
|
40
|
-
/**
|
|
41
|
-
* Stop the cache database
|
|
42
|
-
*/
|
|
43
|
-
stop(): Promise<void>;
|
|
44
|
-
/**
|
|
45
|
-
* Get the smartdata database instance
|
|
46
|
-
*/
|
|
47
|
-
getDb(): plugins.smartdata.SmartdataDb;
|
|
48
|
-
/**
|
|
49
|
-
* Check if the database is ready
|
|
50
|
-
*/
|
|
51
|
-
isReady(): boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Get the storage path
|
|
54
|
-
*/
|
|
55
|
-
getStoragePath(): string;
|
|
56
|
-
/**
|
|
57
|
-
* Get the database name
|
|
58
|
-
*/
|
|
59
|
-
getDbName(): string;
|
|
60
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import * as plugins from '../plugins.js';
|
|
2
|
-
import { logger } from '../logger.js';
|
|
3
|
-
import { defaultTsmDbPath } from '../paths.js';
|
|
4
|
-
/**
|
|
5
|
-
* CacheDb - Wrapper around LocalTsmDb and smartdata
|
|
6
|
-
*
|
|
7
|
-
* Provides persistent caching using smartdata as the ORM layer
|
|
8
|
-
* and LocalTsmDb as the embedded database engine.
|
|
9
|
-
*/
|
|
10
|
-
export class CacheDb {
|
|
11
|
-
static instance = null;
|
|
12
|
-
localTsmDb;
|
|
13
|
-
smartdataDb;
|
|
14
|
-
options;
|
|
15
|
-
isStarted = false;
|
|
16
|
-
constructor(options = {}) {
|
|
17
|
-
this.options = {
|
|
18
|
-
storagePath: options.storagePath || defaultTsmDbPath,
|
|
19
|
-
dbName: options.dbName || 'dcrouter',
|
|
20
|
-
debug: options.debug || false,
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get or create the singleton instance
|
|
25
|
-
*/
|
|
26
|
-
static getInstance(options) {
|
|
27
|
-
if (!CacheDb.instance) {
|
|
28
|
-
CacheDb.instance = new CacheDb(options);
|
|
29
|
-
}
|
|
30
|
-
return CacheDb.instance;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Reset the singleton instance (useful for testing)
|
|
34
|
-
*/
|
|
35
|
-
static resetInstance() {
|
|
36
|
-
CacheDb.instance = null;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Start the cache database
|
|
40
|
-
* - Initializes LocalTsmDb with file persistence
|
|
41
|
-
* - Connects smartdata to the LocalTsmDb via Unix socket
|
|
42
|
-
*/
|
|
43
|
-
async start() {
|
|
44
|
-
if (this.isStarted) {
|
|
45
|
-
logger.log('warn', 'CacheDb already started');
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
try {
|
|
49
|
-
// Ensure storage directory exists
|
|
50
|
-
await plugins.fsUtils.ensureDir(this.options.storagePath);
|
|
51
|
-
// Create LocalTsmDb instance
|
|
52
|
-
this.localTsmDb = new plugins.smartmongo.LocalTsmDb({
|
|
53
|
-
folderPath: this.options.storagePath,
|
|
54
|
-
});
|
|
55
|
-
// Start LocalTsmDb and get connection info
|
|
56
|
-
const connectionInfo = await this.localTsmDb.start();
|
|
57
|
-
if (this.options.debug) {
|
|
58
|
-
logger.log('debug', `LocalTsmDb started with URI: ${connectionInfo.connectionUri}`);
|
|
59
|
-
}
|
|
60
|
-
// Initialize smartdata with the connection URI
|
|
61
|
-
this.smartdataDb = new plugins.smartdata.SmartdataDb({
|
|
62
|
-
mongoDbUrl: connectionInfo.connectionUri,
|
|
63
|
-
mongoDbName: this.options.dbName,
|
|
64
|
-
});
|
|
65
|
-
await this.smartdataDb.init();
|
|
66
|
-
this.isStarted = true;
|
|
67
|
-
logger.log('info', `CacheDb started at ${this.options.storagePath}`);
|
|
68
|
-
}
|
|
69
|
-
catch (error) {
|
|
70
|
-
logger.log('error', `Failed to start CacheDb: ${error.message}`);
|
|
71
|
-
throw error;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Stop the cache database
|
|
76
|
-
*/
|
|
77
|
-
async stop() {
|
|
78
|
-
if (!this.isStarted) {
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
try {
|
|
82
|
-
// Close smartdata connection
|
|
83
|
-
if (this.smartdataDb) {
|
|
84
|
-
await this.smartdataDb.close();
|
|
85
|
-
}
|
|
86
|
-
// Stop LocalTsmDb
|
|
87
|
-
if (this.localTsmDb) {
|
|
88
|
-
await this.localTsmDb.stop();
|
|
89
|
-
}
|
|
90
|
-
this.isStarted = false;
|
|
91
|
-
logger.log('info', 'CacheDb stopped');
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
logger.log('error', `Error stopping CacheDb: ${error.message}`);
|
|
95
|
-
throw error;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Get the smartdata database instance
|
|
100
|
-
*/
|
|
101
|
-
getDb() {
|
|
102
|
-
if (!this.isStarted) {
|
|
103
|
-
throw new Error('CacheDb not started. Call start() first.');
|
|
104
|
-
}
|
|
105
|
-
return this.smartdataDb;
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Check if the database is ready
|
|
109
|
-
*/
|
|
110
|
-
isReady() {
|
|
111
|
-
return this.isStarted;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Get the storage path
|
|
115
|
-
*/
|
|
116
|
-
getStoragePath() {
|
|
117
|
-
return this.options.storagePath;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Get the database name
|
|
121
|
-
*/
|
|
122
|
-
getDbName() {
|
|
123
|
-
return this.options.dbName;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5jYWNoZWRiLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvY2FjaGUvY2xhc3Nlcy5jYWNoZWRiLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBYy9DOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLE9BQU87SUFDVixNQUFNLENBQUMsUUFBUSxHQUFtQixJQUFJLENBQUM7SUFFdkMsVUFBVSxDQUFnQztJQUMxQyxXQUFXLENBQWdDO0lBQzNDLE9BQU8sQ0FBNEI7SUFDbkMsU0FBUyxHQUFZLEtBQUssQ0FBQztJQUVuQyxZQUFZLFVBQTJCLEVBQUU7UUFDdkMsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLGdCQUFnQjtZQUNwRCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxVQUFVO1lBQ3BDLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUs7U0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsT0FBeUI7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGFBQWE7UUFDekIsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsS0FBSztRQUNoQixJ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
|