@serve.zone/dcrouter 11.0.36 → 11.0.38

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.
@@ -39328,4 +39328,4 @@ ibantools/jsnext/ibantools.js:
39328
39328
  * @preferred
39329
39329
  *)
39330
39330
  */
39331
- //# sourceMappingURL=bundle-1772723153480.js.map
39331
+ //# sourceMappingURL=bundle-1772723500635.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.0.36',
6
+ version: '11.0.38',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUsc0JBQXNCO0lBQzVCLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLFdBQVcsRUFBRSwwRUFBMEU7Q0FDeEYsQ0FBQSJ9
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@serve.zone/dcrouter",
3
3
  "private": false,
4
- "version": "11.0.36",
4
+ "version": "11.0.38",
5
5
  "description": "A multifaceted routing service handling mail and SMS delivery functions.",
6
6
  "type": "module",
7
7
  "exports": {
@@ -19,7 +19,7 @@
19
19
  "watch": "tswatch"
20
20
  },
21
21
  "devDependencies": {
22
- "@git.zone/tsbuild": "^4.1.23",
22
+ "@git.zone/tsbuild": "^4.1.24",
23
23
  "@git.zone/tsbundle": "^2.9.0",
24
24
  "@git.zone/tsrun": "^2.0.1",
25
25
  "@git.zone/tstest": "^3.2.0",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.0.36',
6
+ version: '11.0.38',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/dcrouter',
6
- version: '11.0.36',
6
+ version: '11.0.38',
7
7
  description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
8
  }
@@ -1,8 +0,0 @@
1
- /**
2
- * autocreated commitinfo by @push.rocks/commitinfo
3
- */
4
- export declare const commitinfo: {
5
- name: string;
6
- version: string;
7
- description: string;
8
- };
@@ -1,9 +0,0 @@
1
- /**
2
- * autocreated commitinfo by @push.rocks/commitinfo
3
- */
4
- export const commitinfo = {
5
- name: '@serve.zone/dcrouter',
6
- version: '11.0.36',
7
- description: 'A multifaceted routing service handling mail and SMS delivery functions.'
8
- };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLDBFQUEwRTtDQUN4RixDQUFBIn0=
@@ -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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
@@ -1,21 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import { SmartlogDestinationBuffer } from '@push.rocks/smartlog/destination-buffer';
3
- export declare const logBuffer: SmartlogDestinationBuffer;
4
- export declare const baseLogger: plugins.smartlog.Smartlog;
5
- declare class StandardLogger {
6
- private defaultContext;
7
- private correlationId;
8
- constructor();
9
- log(level: 'error' | 'warn' | 'info' | 'success' | 'debug', message: string, context?: Record<string, any>): void;
10
- error(message: string, context?: Record<string, any>): void;
11
- warn(message: string, context?: Record<string, any>): void;
12
- info(message: string, context?: Record<string, any>): void;
13
- success(message: string, context?: Record<string, any>): void;
14
- debug(message: string, context?: Record<string, any>): void;
15
- setContext(context: Record<string, any>, overwrite?: boolean): void;
16
- setCorrelationId(id?: string | null): string;
17
- getCorrelationId(): string | null;
18
- clearCorrelationId(): void;
19
- }
20
- export declare const logger: StandardLogger;
21
- export {};
package/dist_ts/logger.js DELETED
@@ -1,81 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- import { randomUUID } from 'node:crypto';
3
- import { SmartlogDestinationBuffer } from '@push.rocks/smartlog/destination-buffer';
4
- // Map NODE_ENV to valid TEnvironment
5
- const nodeEnv = process.env.NODE_ENV || 'production';
6
- const envMap = {
7
- 'development': 'local',
8
- 'test': 'test',
9
- 'staging': 'staging',
10
- 'production': 'production'
11
- };
12
- // In-memory log buffer for the OpsServer UI
13
- export const logBuffer = new SmartlogDestinationBuffer({ maxEntries: 2000 });
14
- // Default Smartlog instance (exported so OpsServer can add push destinations)
15
- export const baseLogger = new plugins.smartlog.Smartlog({
16
- logContext: {
17
- environment: envMap[nodeEnv] || 'production',
18
- runtime: 'node',
19
- zone: 'serve.zone',
20
- }
21
- });
22
- // Wire the buffer destination so all logs are captured
23
- baseLogger.addLogDestination(logBuffer);
24
- // Extended logger compatible with the original enhanced logger API
25
- class StandardLogger {
26
- defaultContext = {};
27
- correlationId = null;
28
- constructor() { }
29
- // Log methods
30
- log(level, message, context = {}) {
31
- const combinedContext = {
32
- ...this.defaultContext,
33
- ...context
34
- };
35
- if (this.correlationId) {
36
- combinedContext.correlation_id = this.correlationId;
37
- }
38
- baseLogger.log(level, message, combinedContext);
39
- }
40
- error(message, context = {}) {
41
- this.log('error', message, context);
42
- }
43
- warn(message, context = {}) {
44
- this.log('warn', message, context);
45
- }
46
- info(message, context = {}) {
47
- this.log('info', message, context);
48
- }
49
- success(message, context = {}) {
50
- this.log('success', message, context);
51
- }
52
- debug(message, context = {}) {
53
- this.log('debug', message, context);
54
- }
55
- // Context management
56
- setContext(context, overwrite = false) {
57
- if (overwrite) {
58
- this.defaultContext = context;
59
- }
60
- else {
61
- this.defaultContext = {
62
- ...this.defaultContext,
63
- ...context
64
- };
65
- }
66
- }
67
- // Correlation ID management
68
- setCorrelationId(id = null) {
69
- this.correlationId = id || randomUUID();
70
- return this.correlationId;
71
- }
72
- getCorrelationId() {
73
- return this.correlationId;
74
- }
75
- clearCorrelationId() {
76
- this.correlationId = null;
77
- }
78
- }
79
- // Export a singleton instance
80
- export const logger = new StandardLogger();
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvbG9nZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDekMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFFcEYscUNBQXFDO0FBQ3JDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQztBQUNyRCxNQUFNLE1BQU0sR0FBZ0U7SUFDMUUsYUFBYSxFQUFFLE9BQU87SUFDdEIsTUFBTSxFQUFFLE1BQU07SUFDZCxTQUFTLEVBQUUsU0FBUztJQUNwQixZQUFZLEVBQUUsWUFBWTtDQUMzQixDQUFDO0FBRUYsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxJQUFJLHlCQUF5QixDQUFDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFN0UsOEVBQThFO0FBQzlFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ3RELFVBQVUsRUFBRTtRQUNWLFdBQVcsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksWUFBWTtRQUM1QyxPQUFPLEVBQUUsTUFBTTtRQUNmLElBQUksRUFBRSxZQUFZO0tBQ25CO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsdURBQXVEO0FBQ3ZELFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUV4QyxtRUFBbUU7QUFDbkUsTUFBTSxjQUFjO0lBQ1YsY0FBYyxHQUF3QixFQUFFLENBQUM7SUFDekMsYUFBYSxHQUFrQixJQUFJLENBQUM7SUFFNUMsZ0JBQWUsQ0FBQztJQUVoQixjQUFjO0lBQ1AsR0FBRyxDQUFDLEtBQXNELEVBQUUsT0FBZSxFQUFFLFVBQStCLEVBQUU7UUFDbkgsTUFBTSxlQUFlLEdBQUc7WUFDdEIsR0FBRyxJQUFJLENBQUMsY0FBYztZQUN0QixHQUFHLE9BQU87U0FDWCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsZUFBZSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RELENBQUM7UUFFRCxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsVUFBK0IsRUFBRTtRQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFlLEVBQUUsVUFBK0IsRUFBRTtRQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFlLEVBQUUsVUFBK0IsRUFBRTtRQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUFlLEVBQUUsVUFBK0IsRUFBRTtRQUMvRCxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFlLEVBQUUsVUFBK0IsRUFBRTtRQUM3RCxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHFCQUFxQjtJQUNkLFVBQVUsQ0FBQyxPQUE0QixFQUFFLFlBQXFCLEtBQUs7UUFDeEUsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRztnQkFDcEIsR0FBRyxJQUFJLENBQUMsY0FBYztnQkFDdEIsR0FBRyxPQUFPO2FBQ1gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsNEJBQTRCO0lBQ3JCLGdCQUFnQixDQUFDLEtBQW9CLElBQUk7UUFDOUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLElBQUksVUFBVSxFQUFFLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztDQUNGO0FBRUQsOEJBQThCO0FBQzlCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDIn0=
@@ -1,26 +0,0 @@
1
- export declare const packageDir: string;
2
- export declare const distServe: string;
3
- export declare const dcrouterHomeDir: string;
4
- export declare const dataDir: string;
5
- export declare const defaultTsmDbPath: string;
6
- export declare const dnsRecordsDir: string;
7
- /**
8
- * Resolve all data paths from a given baseDir.
9
- * When no baseDir is provided, falls back to ~/.serve.zone/dcrouter.
10
- * Specific overrides (e.g. DATA_DIR env) take precedence.
11
- */
12
- export declare function resolvePaths(baseDir?: string): {
13
- dcrouterHomeDir: string;
14
- dataDir: string;
15
- defaultTsmDbPath: string;
16
- defaultStoragePath: string;
17
- dnsRecordsDir: string;
18
- };
19
- /**
20
- * Ensure only the data directories that are actually used exist.
21
- */
22
- export declare function ensureDataDirectories(resolvedPaths: ReturnType<typeof resolvePaths>): void;
23
- /**
24
- * Legacy wrapper — delegates to ensureDataDirectories with module-level defaults.
25
- */
26
- export declare function ensureDirectories(): void;
package/dist_ts/paths.js DELETED
@@ -1,45 +0,0 @@
1
- import * as plugins from './plugins.js';
2
- // Code/asset paths (not affected by baseDir)
3
- export const packageDir = plugins.path.join(plugins.smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');
4
- export const distServe = plugins.path.join(packageDir, './dist_serve');
5
- // Default base for all dcrouter data (always user-writable)
6
- export const dcrouterHomeDir = plugins.path.join(plugins.os.homedir(), '.serve.zone', 'dcrouter');
7
- // Configure data directory with environment variable or default to ~/.serve.zone/dcrouter/data
8
- const DEFAULT_DATA_PATH = plugins.path.join(dcrouterHomeDir, 'data');
9
- export const dataDir = process.env.DATA_DIR
10
- ? process.env.DATA_DIR
11
- : DEFAULT_DATA_PATH;
12
- // Default TsmDB path for CacheDb
13
- export const defaultTsmDbPath = plugins.path.join(dcrouterHomeDir, 'tsmdb');
14
- // DNS records directory (only surviving MTA directory reference)
15
- export const dnsRecordsDir = plugins.path.join(dataDir, 'dns');
16
- /**
17
- * Resolve all data paths from a given baseDir.
18
- * When no baseDir is provided, falls back to ~/.serve.zone/dcrouter.
19
- * Specific overrides (e.g. DATA_DIR env) take precedence.
20
- */
21
- export function resolvePaths(baseDir) {
22
- const root = baseDir ?? plugins.path.join(plugins.os.homedir(), '.serve.zone', 'dcrouter');
23
- const resolvedDataDir = process.env.DATA_DIR ?? plugins.path.join(root, 'data');
24
- return {
25
- dcrouterHomeDir: root,
26
- dataDir: resolvedDataDir,
27
- defaultTsmDbPath: plugins.path.join(root, 'tsmdb'),
28
- defaultStoragePath: plugins.path.join(root, 'storage'),
29
- dnsRecordsDir: plugins.path.join(resolvedDataDir, 'dns'),
30
- };
31
- }
32
- /**
33
- * Ensure only the data directories that are actually used exist.
34
- */
35
- export function ensureDataDirectories(resolvedPaths) {
36
- plugins.fsUtils.ensureDirSync(resolvedPaths.dataDir);
37
- plugins.fsUtils.ensureDirSync(resolvedPaths.dnsRecordsDir);
38
- }
39
- /**
40
- * Legacy wrapper — delegates to ensureDataDirectories with module-level defaults.
41
- */
42
- export function ensureDirectories() {
43
- ensureDataDirectories(resolvePaths());
44
- }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90cy9wYXRocy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUV4Qyw2Q0FBNkM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUN6QyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUMvRCxLQUFLLENBQ04sQ0FBQztBQUNGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFdkUsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUVsRywrRkFBK0Y7QUFDL0YsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDckUsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUTtJQUN6QyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO0lBQ3RCLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztBQUV0QixpQ0FBaUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTVFLGlFQUFpRTtBQUNqRSxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBRS9EOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLE9BQWdCO0lBQzNDLE1BQU0sSUFBSSxHQUFHLE9BQU8sSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMzRixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsT0FBTztRQUNMLGVBQWUsRUFBRSxJQUFJO1FBQ3JCLE9BQU8sRUFBRSxlQUFlO1FBQ3hCLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7UUFDbEQsa0JBQWtCLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQztRQUN0RCxhQUFhLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQztLQUN6RCxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHFCQUFxQixDQUFDLGFBQThDO0lBQ2xGLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNyRCxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDN0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQjtJQUMvQixxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO0FBQ3hDLENBQUMifQ==
@@ -1,79 +0,0 @@
1
- import * as dns from 'dns';
2
- import * as fs from 'fs';
3
- import * as crypto from 'crypto';
4
- import * as http from 'http';
5
- import * as net from 'net';
6
- import * as os from 'os';
7
- import * as path from 'path';
8
- import * as tls from 'tls';
9
- import * as util from 'util';
10
- export { dns, fs, crypto, http, net, os, path, tls, util, };
11
- import * as servezoneInterfaces from '@serve.zone/interfaces';
12
- import * as remoteingress from '@serve.zone/remoteingress';
13
- export { servezoneInterfaces, remoteingress, };
14
- import * as typedrequest from '@api.global/typedrequest';
15
- import * as typedserver from '@api.global/typedserver';
16
- import * as typedsocket from '@api.global/typedsocket';
17
- export { typedrequest, typedserver, typedsocket, };
18
- import * as projectinfo from '@push.rocks/projectinfo';
19
- import * as qenv from '@push.rocks/qenv';
20
- import * as smartacme from '@push.rocks/smartacme';
21
- import * as smartdata from '@push.rocks/smartdata';
22
- import * as smartdns from '@push.rocks/smartdns';
23
- import * as smartfile from '@push.rocks/smartfile';
24
- import * as smartguard from '@push.rocks/smartguard';
25
- import * as smartjwt from '@push.rocks/smartjwt';
26
- import * as smartlog from '@push.rocks/smartlog';
27
- import * as smartmetrics from '@push.rocks/smartmetrics';
28
- import * as smartmta from '@push.rocks/smartmta';
29
- import * as smartmongo from '@push.rocks/smartmongo';
30
- import * as smartnetwork from '@push.rocks/smartnetwork';
31
- import * as smartpath from '@push.rocks/smartpath';
32
- import * as smartproxy from '@push.rocks/smartproxy';
33
- import * as smartpromise from '@push.rocks/smartpromise';
34
- import * as smartradius from '@push.rocks/smartradius';
35
- import * as smartrequest from '@push.rocks/smartrequest';
36
- import * as smartrx from '@push.rocks/smartrx';
37
- import * as smartunique from '@push.rocks/smartunique';
38
- export { projectinfo, qenv, smartacme, smartdata, smartdns, smartfile, smartguard, smartjwt, smartlog, smartmetrics, smartmongo, smartmta, smartnetwork, smartpath, smartproxy, smartpromise, smartradius, smartrequest, smartrx, smartunique };
39
- export type TLogLevel = 'error' | 'warn' | 'info' | 'success' | 'debug';
40
- import * as cloudflare from '@apiclient.xyz/cloudflare';
41
- export { cloudflare, };
42
- import * as tsclass from '@tsclass/tsclass';
43
- export { tsclass, };
44
- import * as uuid from 'uuid';
45
- export { uuid, };
46
- export declare const fsUtils: {
47
- /**
48
- * Ensure a directory exists, creating it recursively if needed (sync)
49
- */
50
- ensureDirSync: (dirPath: string) => void;
51
- /**
52
- * Ensure a directory exists, creating it recursively if needed (async)
53
- */
54
- ensureDir: (dirPath: string) => Promise<void>;
55
- /**
56
- * Write JSON content to a file synchronously
57
- */
58
- toFsSync: (content: any, filePath: string) => void;
59
- /**
60
- * Write JSON content to a file asynchronously
61
- */
62
- toFs: (content: any, filePath: string) => Promise<void>;
63
- /**
64
- * Check if a file or directory exists
65
- */
66
- fileExistsSync: (filePath: string) => boolean;
67
- /**
68
- * Check if a file or directory exists (async)
69
- */
70
- fileExists: (filePath: string) => Promise<boolean>;
71
- /**
72
- * Read a JSON file synchronously
73
- */
74
- toObjectSync: <T = any>(filePath: string) => T;
75
- /**
76
- * Read a JSON file asynchronously
77
- */
78
- toObject: <T = any>(filePath: string) => Promise<T>;
79
- };
@@ -1,113 +0,0 @@
1
- // node native
2
- import * as dns from 'dns';
3
- import * as fs from 'fs';
4
- import * as crypto from 'crypto';
5
- import * as http from 'http';
6
- import * as net from 'net';
7
- import * as os from 'os';
8
- import * as path from 'path';
9
- import * as tls from 'tls';
10
- import * as util from 'util';
11
- export { dns, fs, crypto, http, net, os, path, tls, util, };
12
- // @serve.zone scope
13
- import * as servezoneInterfaces from '@serve.zone/interfaces';
14
- import * as remoteingress from '@serve.zone/remoteingress';
15
- export { servezoneInterfaces, remoteingress, };
16
- // @api.global scope
17
- import * as typedrequest from '@api.global/typedrequest';
18
- import * as typedserver from '@api.global/typedserver';
19
- import * as typedsocket from '@api.global/typedsocket';
20
- export { typedrequest, typedserver, typedsocket, };
21
- // @push.rocks scope
22
- import * as projectinfo from '@push.rocks/projectinfo';
23
- import * as qenv from '@push.rocks/qenv';
24
- import * as smartacme from '@push.rocks/smartacme';
25
- import * as smartdata from '@push.rocks/smartdata';
26
- import * as smartdns from '@push.rocks/smartdns';
27
- import * as smartfile from '@push.rocks/smartfile';
28
- import * as smartguard from '@push.rocks/smartguard';
29
- import * as smartjwt from '@push.rocks/smartjwt';
30
- import * as smartlog from '@push.rocks/smartlog';
31
- import * as smartmetrics from '@push.rocks/smartmetrics';
32
- import * as smartmta from '@push.rocks/smartmta';
33
- import * as smartmongo from '@push.rocks/smartmongo';
34
- import * as smartnetwork from '@push.rocks/smartnetwork';
35
- import * as smartpath from '@push.rocks/smartpath';
36
- import * as smartproxy from '@push.rocks/smartproxy';
37
- import * as smartpromise from '@push.rocks/smartpromise';
38
- import * as smartradius from '@push.rocks/smartradius';
39
- import * as smartrequest from '@push.rocks/smartrequest';
40
- import * as smartrx from '@push.rocks/smartrx';
41
- import * as smartunique from '@push.rocks/smartunique';
42
- export { projectinfo, qenv, smartacme, smartdata, smartdns, smartfile, smartguard, smartjwt, smartlog, smartmetrics, smartmongo, smartmta, smartnetwork, smartpath, smartproxy, smartpromise, smartradius, smartrequest, smartrx, smartunique };
43
- // apiclient.xyz scope
44
- import * as cloudflare from '@apiclient.xyz/cloudflare';
45
- export { cloudflare, };
46
- // tsclass scope
47
- import * as tsclass from '@tsclass/tsclass';
48
- export { tsclass, };
49
- // third party
50
- import * as uuid from 'uuid';
51
- export { uuid, };
52
- // Filesystem utilities (compatibility helpers for smartfile v13+)
53
- export const fsUtils = {
54
- /**
55
- * Ensure a directory exists, creating it recursively if needed (sync)
56
- */
57
- ensureDirSync: (dirPath) => {
58
- fs.mkdirSync(dirPath, { recursive: true });
59
- },
60
- /**
61
- * Ensure a directory exists, creating it recursively if needed (async)
62
- */
63
- ensureDir: async (dirPath) => {
64
- await fs.promises.mkdir(dirPath, { recursive: true });
65
- },
66
- /**
67
- * Write JSON content to a file synchronously
68
- */
69
- toFsSync: (content, filePath) => {
70
- const data = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
71
- fs.writeFileSync(filePath, data);
72
- },
73
- /**
74
- * Write JSON content to a file asynchronously
75
- */
76
- toFs: async (content, filePath) => {
77
- const data = typeof content === 'string' ? content : JSON.stringify(content, null, 2);
78
- await fs.promises.writeFile(filePath, data);
79
- },
80
- /**
81
- * Check if a file or directory exists
82
- */
83
- fileExistsSync: (filePath) => {
84
- return fs.existsSync(filePath);
85
- },
86
- /**
87
- * Check if a file or directory exists (async)
88
- */
89
- fileExists: async (filePath) => {
90
- try {
91
- await fs.promises.access(filePath);
92
- return true;
93
- }
94
- catch {
95
- return false;
96
- }
97
- },
98
- /**
99
- * Read a JSON file synchronously
100
- */
101
- toObjectSync: (filePath) => {
102
- const content = fs.readFileSync(filePath, 'utf8');
103
- return JSON.parse(content);
104
- },
105
- /**
106
- * Read a JSON file asynchronously
107
- */
108
- toObject: async (filePath) => {
109
- const content = await fs.promises.readFile(filePath, 'utf8');
110
- return JSON.parse(content);
111
- },
112
- };
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYztBQUNkLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxHQUFHLE1BQU0sS0FBSyxDQUFDO0FBQzNCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBRTdCLE9BQU8sRUFDTCxHQUFHLEVBQ0gsRUFBRSxFQUNGLE1BQU0sRUFDTixJQUFJLEVBQ0osR0FBRyxFQUNILEVBQUUsRUFDRixJQUFJLEVBQ0osR0FBRyxFQUNILElBQUksR0FDTCxDQUFBO0FBRUQsb0JBQW9CO0FBQ3BCLE9BQU8sS0FBSyxtQkFBbUIsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEtBQUssYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBRTNELE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsYUFBYSxHQUNkLENBQUE7QUFFRCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLFlBQVksTUFBTSwwQkFBMEIsQ0FBQztBQUN6RCxPQUFPLEtBQUssV0FBVyxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sS0FBSyxXQUFXLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUNMLFlBQVksRUFDWixXQUFXLEVBQ1gsV0FBVyxHQUNaLENBQUE7QUFFRCxvQkFBb0I7QUFDcEIsT0FBTyxLQUFLLFdBQVcsTUFBTSx5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