bootifyjs 1.4.0 → 2.0.0
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/BootifyApp.d.ts +48 -0
- package/dist/BootifyApp.d.ts.map +1 -0
- package/dist/BootifyApp.js +153 -0
- package/dist/BootifyApp.js.map +1 -0
- package/dist/api.d.ts +10 -3
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +54 -37
- package/dist/api.js.map +1 -1
- package/dist/core/decorators.d.ts +27 -1
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js +26 -3
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +17 -2
- package/dist/core/router.js.map +1 -1
- package/dist/examples/controllers/todo.controller.d.ts.map +1 -1
- package/dist/examples/controllers/todo.controller.js +16 -0
- package/dist/examples/controllers/todo.controller.js.map +1 -1
- package/dist/examples/enhanced-logger-example.d.ts +2 -0
- package/dist/examples/enhanced-logger-example.d.ts.map +1 -0
- package/dist/examples/enhanced-logger-example.js +143 -0
- package/dist/examples/enhanced-logger-example.js.map +1 -0
- package/dist/examples/index.d.ts +1 -0
- package/dist/examples/index.d.ts.map +1 -1
- package/dist/examples/index.js +117 -51
- package/dist/examples/index.js.map +1 -1
- package/dist/examples/scheduled-jobs-example.d.ts +10 -0
- package/dist/examples/scheduled-jobs-example.d.ts.map +1 -0
- package/dist/examples/scheduled-jobs-example.js +134 -0
- package/dist/examples/scheduled-jobs-example.js.map +1 -0
- package/dist/examples/services/scheduled-tasks.service.d.ts +17 -0
- package/dist/examples/services/scheduled-tasks.service.d.ts.map +1 -0
- package/dist/examples/services/scheduled-tasks.service.js +77 -0
- package/dist/examples/services/scheduled-tasks.service.js.map +1 -0
- package/dist/examples/services/todo.service.d.ts.map +1 -1
- package/dist/examples/services/todo.service.js.map +1 -1
- package/dist/examples/simple-scheduler-test.d.ts +6 -0
- package/dist/examples/simple-scheduler-test.d.ts.map +1 -0
- package/dist/examples/simple-scheduler-test.js +57 -0
- package/dist/examples/simple-scheduler-test.js.map +1 -0
- package/dist/examples/streaming-logger-example.d.ts +2 -0
- package/dist/examples/streaming-logger-example.d.ts.map +1 -0
- package/dist/examples/streaming-logger-example.js +124 -0
- package/dist/examples/streaming-logger-example.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/logging/core/adapters/index.d.ts +2 -0
- package/dist/logging/core/adapters/index.d.ts.map +1 -0
- package/dist/logging/core/adapters/index.js +18 -0
- package/dist/logging/core/adapters/index.js.map +1 -0
- package/dist/logging/core/adapters/pino.adapter.d.ts +32 -0
- package/dist/logging/core/adapters/pino.adapter.d.ts.map +1 -0
- package/dist/logging/core/adapters/pino.adapter.js +82 -0
- package/dist/logging/core/adapters/pino.adapter.js.map +1 -0
- package/dist/logging/core/base-logger.d.ts +44 -0
- package/dist/logging/core/base-logger.d.ts.map +1 -0
- package/dist/logging/core/base-logger.js +147 -0
- package/dist/logging/core/base-logger.js.map +1 -0
- package/dist/logging/core/context-providers/index.d.ts +2 -0
- package/dist/logging/core/context-providers/index.d.ts.map +1 -0
- package/dist/logging/core/context-providers/index.js +18 -0
- package/dist/logging/core/context-providers/index.js.map +1 -0
- package/dist/logging/core/context-providers/request-context.provider.d.ts +5 -0
- package/dist/logging/core/context-providers/request-context.provider.d.ts.map +1 -0
- package/dist/logging/core/context-providers/request-context.provider.js +19 -0
- package/dist/logging/core/context-providers/request-context.provider.js.map +1 -0
- package/dist/logging/core/enhanced-startup-logger.d.ts +48 -0
- package/dist/logging/core/enhanced-startup-logger.d.ts.map +1 -0
- package/dist/logging/core/enhanced-startup-logger.js +537 -0
- package/dist/logging/core/enhanced-startup-logger.js.map +1 -0
- package/dist/logging/core/interfaces.d.ts +75 -0
- package/dist/logging/core/interfaces.d.ts.map +1 -0
- package/dist/logging/core/interfaces.js +9 -0
- package/dist/logging/core/interfaces.js.map +1 -0
- package/dist/logging/core/logger-builder.d.ts +58 -0
- package/dist/logging/core/logger-builder.d.ts.map +1 -0
- package/dist/logging/core/logger-builder.js +121 -0
- package/dist/logging/core/logger-builder.js.map +1 -0
- package/dist/logging/core/startup.logger.d.ts +1 -0
- package/dist/logging/core/startup.logger.d.ts.map +1 -1
- package/dist/logging/core/startup.logger.js +28 -3
- package/dist/logging/core/startup.logger.js.map +1 -1
- package/dist/logging/core/streaming-startup-logger.d.ts +21 -0
- package/dist/logging/core/streaming-startup-logger.d.ts.map +1 -0
- package/dist/logging/core/streaming-startup-logger.js +209 -0
- package/dist/logging/core/streaming-startup-logger.js.map +1 -0
- package/dist/logging/core/transports/console.transport.d.ts +19 -0
- package/dist/logging/core/transports/console.transport.d.ts.map +1 -0
- package/dist/logging/core/transports/console.transport.js +67 -0
- package/dist/logging/core/transports/console.transport.js.map +1 -0
- package/dist/logging/core/transports/index.d.ts +2 -0
- package/dist/logging/core/transports/index.d.ts.map +1 -0
- package/dist/logging/core/transports/index.js +18 -0
- package/dist/logging/core/transports/index.js.map +1 -0
- package/dist/logging/index.d.ts +73 -2
- package/dist/logging/index.d.ts.map +1 -1
- package/dist/logging/index.js +115 -16
- package/dist/logging/index.js.map +1 -1
- package/dist/middleware/auth.middleware.d.ts +2 -2
- package/dist/middleware/auth.middleware.d.ts.map +1 -1
- package/dist/middleware/auth.middleware.js +12 -23
- package/dist/middleware/auth.middleware.js.map +1 -1
- package/dist/middleware/index.d.ts +1 -2
- package/dist/middleware/index.d.ts.map +1 -1
- package/dist/middleware/index.js +0 -1
- package/dist/middleware/index.js.map +1 -1
- package/dist/scheduling/index.d.ts +25 -0
- package/dist/scheduling/index.d.ts.map +1 -0
- package/dist/scheduling/index.js +41 -0
- package/dist/scheduling/index.js.map +1 -0
- package/dist/scheduling/scheduled.decorator.d.ts +25 -0
- package/dist/scheduling/scheduled.decorator.d.ts.map +1 -0
- package/dist/scheduling/scheduled.decorator.js +52 -0
- package/dist/scheduling/scheduled.decorator.js.map +1 -0
- package/dist/scheduling/scheduler.service.d.ts +39 -0
- package/dist/scheduling/scheduler.service.d.ts.map +1 -0
- package/dist/scheduling/scheduler.service.js +341 -0
- package/dist/scheduling/scheduler.service.js.map +1 -0
- package/dist/scheduling/scheduler.types.d.ts +47 -0
- package/dist/scheduling/scheduler.types.d.ts.map +1 -0
- package/dist/scheduling/scheduler.types.js +6 -0
- package/dist/scheduling/scheduler.types.js.map +1 -0
- package/package.json +16 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./console.transport"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/logging/core/transports/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
|
package/dist/logging/index.d.ts
CHANGED
|
@@ -1,9 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BootifyJS Logging Module
|
|
3
|
+
*
|
|
4
|
+
* A flexible, extensible logging system using Builder and Strategy patterns.
|
|
5
|
+
*
|
|
6
|
+
* Quick Start:
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { createLogger, RequestContextProvider } from 'bootifyjs/logging'
|
|
9
|
+
*
|
|
10
|
+
* // Simple usage
|
|
11
|
+
* const logger = createLogger()
|
|
12
|
+
* .setLevel('debug')
|
|
13
|
+
* .setServiceName('my-api')
|
|
14
|
+
* .build()
|
|
15
|
+
*
|
|
16
|
+
* logger.info('Hello world')
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* Custom Transport:
|
|
20
|
+
* ```typescript
|
|
21
|
+
* import { ILogTransport, LogEntry } from 'bootifyjs/logging'
|
|
22
|
+
*
|
|
23
|
+
* class MyTransport implements ILogTransport {
|
|
24
|
+
* name = 'my-transport'
|
|
25
|
+
* write(entry: LogEntry) {
|
|
26
|
+
* // Send to your logging service
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
*
|
|
30
|
+
* createLogger()
|
|
31
|
+
* .addTransport(new MyTransport())
|
|
32
|
+
* .build()
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* Using Pino:
|
|
36
|
+
* ```typescript
|
|
37
|
+
* import { createLogger, PinoAdapter } from 'bootifyjs/logging'
|
|
38
|
+
*
|
|
39
|
+
* createLogger()
|
|
40
|
+
* .useCustomLogger(PinoAdapter)
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export * from './core/interfaces';
|
|
44
|
+
export { createLogger, getLogger, LOGGER_TOKEN, LoggerBuilder } from './core/logger-builder';
|
|
45
|
+
export { BaseLogger } from './core/base-logger';
|
|
46
|
+
export { ConsoleTransport, ConsoleTransportOptions } from './core/transports/console.transport';
|
|
47
|
+
export { RequestContextProvider } from './core/context-providers/request-context.provider';
|
|
48
|
+
export { PinoAdapter, PinoAdapterOptions } from './core/adapters/pino.adapter';
|
|
49
|
+
export { EnhancedStartupLogger } from './core/enhanced-startup-logger';
|
|
50
|
+
export { StartupLoggerService } from './core/startup.logger';
|
|
51
|
+
export { StreamingStartupLogger } from './core/streaming-startup-logger';
|
|
52
|
+
export { Logger } from './core/logger';
|
|
53
|
+
export { loggerFactory, LOGGER_TOKEN as PINO_LOGGER_TOKEN } from './core/logger.provider';
|
|
54
|
+
export * from './core/decorators';
|
|
55
|
+
import { EnhancedStartupLogger } from './core/enhanced-startup-logger';
|
|
1
56
|
import { Logger } from './core/logger';
|
|
2
57
|
import { StartupLoggerService } from './core/startup.logger';
|
|
58
|
+
import { StreamingStartupLogger } from './core/streaming-startup-logger';
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated Use createLogger() builder instead
|
|
61
|
+
*/
|
|
3
62
|
export declare function intitializeLogging(): Promise<{
|
|
4
63
|
logger: Logger;
|
|
5
64
|
startupLogger: StartupLoggerService;
|
|
6
65
|
}>;
|
|
7
|
-
|
|
8
|
-
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Use createLogger() builder instead
|
|
68
|
+
*/
|
|
69
|
+
export declare function initializeEnhancedLogging(): Promise<{
|
|
70
|
+
logger: Logger;
|
|
71
|
+
startupLogger: EnhancedStartupLogger;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Initialize streaming startup logger (Spring Boot style)
|
|
75
|
+
*/
|
|
76
|
+
export declare function initializeStreamingLogging(): Promise<{
|
|
77
|
+
logger: Logger;
|
|
78
|
+
startupLogger: StreamingStartupLogger;
|
|
79
|
+
}>;
|
|
9
80
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAGH,cAAc,mBAAmB,CAAA;AAGjC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAG5F,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAG/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAA;AAG1F,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAG9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAGxE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAGzF,cAAc,mBAAmB,CAAA;AAOjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAExE;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,oBAAoB,CAAA;CACpC,CAAC,CAMD;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IACzD,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,qBAAqB,CAAA;CACrC,CAAC,CAMD;AAED;;GAEG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,aAAa,EAAE,sBAAsB,CAAA;CACtC,CAAC,CAMD"}
|
package/dist/logging/index.js
CHANGED
|
@@ -1,4 +1,46 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BootifyJS Logging Module
|
|
4
|
+
*
|
|
5
|
+
* A flexible, extensible logging system using Builder and Strategy patterns.
|
|
6
|
+
*
|
|
7
|
+
* Quick Start:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { createLogger, RequestContextProvider } from 'bootifyjs/logging'
|
|
10
|
+
*
|
|
11
|
+
* // Simple usage
|
|
12
|
+
* const logger = createLogger()
|
|
13
|
+
* .setLevel('debug')
|
|
14
|
+
* .setServiceName('my-api')
|
|
15
|
+
* .build()
|
|
16
|
+
*
|
|
17
|
+
* logger.info('Hello world')
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* Custom Transport:
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { ILogTransport, LogEntry } from 'bootifyjs/logging'
|
|
23
|
+
*
|
|
24
|
+
* class MyTransport implements ILogTransport {
|
|
25
|
+
* name = 'my-transport'
|
|
26
|
+
* write(entry: LogEntry) {
|
|
27
|
+
* // Send to your logging service
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* createLogger()
|
|
32
|
+
* .addTransport(new MyTransport())
|
|
33
|
+
* .build()
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Using Pino:
|
|
37
|
+
* ```typescript
|
|
38
|
+
* import { createLogger, PinoAdapter } from 'bootifyjs/logging'
|
|
39
|
+
*
|
|
40
|
+
* createLogger()
|
|
41
|
+
* .useCustomLogger(PinoAdapter)
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
2
44
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
45
|
if (k2 === undefined) k2 = k;
|
|
4
46
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
@@ -14,25 +56,82 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
56
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
57
|
};
|
|
16
58
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
59
|
+
exports.PINO_LOGGER_TOKEN = exports.loggerFactory = exports.Logger = exports.StreamingStartupLogger = exports.StartupLoggerService = exports.EnhancedStartupLogger = exports.PinoAdapter = exports.RequestContextProvider = exports.ConsoleTransport = exports.BaseLogger = exports.LoggerBuilder = exports.LOGGER_TOKEN = exports.getLogger = exports.createLogger = void 0;
|
|
17
60
|
exports.intitializeLogging = intitializeLogging;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
61
|
+
exports.initializeEnhancedLogging = initializeEnhancedLogging;
|
|
62
|
+
exports.initializeStreamingLogging = initializeStreamingLogging;
|
|
63
|
+
// Core interfaces (Strategy pattern contracts)
|
|
64
|
+
__exportStar(require("./core/interfaces"), exports);
|
|
65
|
+
// Builder pattern
|
|
66
|
+
var logger_builder_1 = require("./core/logger-builder");
|
|
67
|
+
Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_builder_1.createLogger; } });
|
|
68
|
+
Object.defineProperty(exports, "getLogger", { enumerable: true, get: function () { return logger_builder_1.getLogger; } });
|
|
69
|
+
Object.defineProperty(exports, "LOGGER_TOKEN", { enumerable: true, get: function () { return logger_builder_1.LOGGER_TOKEN; } });
|
|
70
|
+
Object.defineProperty(exports, "LoggerBuilder", { enumerable: true, get: function () { return logger_builder_1.LoggerBuilder; } });
|
|
71
|
+
// Default implementations
|
|
72
|
+
var base_logger_1 = require("./core/base-logger");
|
|
73
|
+
Object.defineProperty(exports, "BaseLogger", { enumerable: true, get: function () { return base_logger_1.BaseLogger; } });
|
|
74
|
+
// Transports
|
|
75
|
+
var console_transport_1 = require("./core/transports/console.transport");
|
|
76
|
+
Object.defineProperty(exports, "ConsoleTransport", { enumerable: true, get: function () { return console_transport_1.ConsoleTransport; } });
|
|
77
|
+
// Context providers
|
|
78
|
+
var request_context_provider_1 = require("./core/context-providers/request-context.provider");
|
|
79
|
+
Object.defineProperty(exports, "RequestContextProvider", { enumerable: true, get: function () { return request_context_provider_1.RequestContextProvider; } });
|
|
80
|
+
// Adapters (for using external logging libraries)
|
|
81
|
+
var pino_adapter_1 = require("./core/adapters/pino.adapter");
|
|
82
|
+
Object.defineProperty(exports, "PinoAdapter", { enumerable: true, get: function () { return pino_adapter_1.PinoAdapter; } });
|
|
83
|
+
// Startup loggers
|
|
84
|
+
var enhanced_startup_logger_1 = require("./core/enhanced-startup-logger");
|
|
85
|
+
Object.defineProperty(exports, "EnhancedStartupLogger", { enumerable: true, get: function () { return enhanced_startup_logger_1.EnhancedStartupLogger; } });
|
|
86
|
+
var startup_logger_1 = require("./core/startup.logger");
|
|
87
|
+
Object.defineProperty(exports, "StartupLoggerService", { enumerable: true, get: function () { return startup_logger_1.StartupLoggerService; } });
|
|
88
|
+
var streaming_startup_logger_1 = require("./core/streaming-startup-logger");
|
|
89
|
+
Object.defineProperty(exports, "StreamingStartupLogger", { enumerable: true, get: function () { return streaming_startup_logger_1.StreamingStartupLogger; } });
|
|
90
|
+
// Legacy exports (for backward compatibility)
|
|
91
|
+
var logger_1 = require("./core/logger");
|
|
92
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
93
|
+
var logger_provider_1 = require("./core/logger.provider");
|
|
94
|
+
Object.defineProperty(exports, "loggerFactory", { enumerable: true, get: function () { return logger_provider_1.loggerFactory; } });
|
|
95
|
+
Object.defineProperty(exports, "PINO_LOGGER_TOKEN", { enumerable: true, get: function () { return logger_provider_1.LOGGER_TOKEN; } });
|
|
96
|
+
// Decorators
|
|
97
|
+
__exportStar(require("./core/decorators"), exports);
|
|
98
|
+
// ============================================================================
|
|
99
|
+
// Initialization Functions
|
|
100
|
+
// ============================================================================
|
|
101
|
+
const di_container_1 = require("../core/di-container");
|
|
102
|
+
const enhanced_startup_logger_2 = require("./core/enhanced-startup-logger");
|
|
103
|
+
const logger_2 = require("./core/logger");
|
|
104
|
+
const logger_provider_2 = require("./core/logger.provider");
|
|
105
|
+
const startup_logger_2 = require("./core/startup.logger");
|
|
106
|
+
const streaming_startup_logger_2 = require("./core/streaming-startup-logger");
|
|
107
|
+
/**
|
|
108
|
+
* @deprecated Use createLogger() builder instead
|
|
109
|
+
*/
|
|
22
110
|
async function intitializeLogging() {
|
|
23
|
-
|
|
24
|
-
console.log('NODE_ENV', process.env.NODE_ENV);
|
|
25
|
-
// First, ensure the config service itself is registered as a component.
|
|
26
|
-
// Our @Service decorator already handles this.
|
|
27
|
-
// Now, register the factory that DEPENDS on the config service.
|
|
28
|
-
core_1.container.register(logger_provider_1.LOGGER_TOKEN, { useFactory: logger_provider_1.loggerFactory });
|
|
29
|
-
console.log('✅ Logging System bootstrapped successfully!\n');
|
|
111
|
+
di_container_1.container.register(logger_provider_2.LOGGER_TOKEN, { useFactory: logger_provider_2.loggerFactory });
|
|
30
112
|
return {
|
|
31
|
-
logger:
|
|
32
|
-
startupLogger:
|
|
113
|
+
logger: di_container_1.container.resolve(logger_2.Logger),
|
|
114
|
+
startupLogger: di_container_1.container.resolve(startup_logger_2.StartupLoggerService),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* @deprecated Use createLogger() builder instead
|
|
119
|
+
*/
|
|
120
|
+
async function initializeEnhancedLogging() {
|
|
121
|
+
di_container_1.container.register(logger_provider_2.LOGGER_TOKEN, { useFactory: logger_provider_2.loggerFactory });
|
|
122
|
+
return {
|
|
123
|
+
logger: di_container_1.container.resolve(logger_2.Logger),
|
|
124
|
+
startupLogger: di_container_1.container.resolve(enhanced_startup_logger_2.EnhancedStartupLogger),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Initialize streaming startup logger (Spring Boot style)
|
|
129
|
+
*/
|
|
130
|
+
async function initializeStreamingLogging() {
|
|
131
|
+
di_container_1.container.register(logger_provider_2.LOGGER_TOKEN, { useFactory: logger_provider_2.loggerFactory });
|
|
132
|
+
return {
|
|
133
|
+
logger: di_container_1.container.resolve(logger_2.Logger),
|
|
134
|
+
startupLogger: di_container_1.container.resolve(streaming_startup_logger_2.StreamingStartupLogger),
|
|
33
135
|
};
|
|
34
136
|
}
|
|
35
|
-
// export const logger = container.resolve<pino.Logger>(LOGGER_TOKEN)
|
|
36
|
-
__exportStar(require("./core/decorators"), exports);
|
|
37
|
-
__exportStar(require("./core/logger"), exports);
|
|
38
137
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;;;;;;;;;;;;;;;;;AA8CH,gDASC;AAKD,8DASC;AAKD,gEASC;AAjFD,+CAA+C;AAC/C,oDAAiC;AAEjC,kBAAkB;AAClB,wDAA4F;AAAnF,8GAAA,YAAY,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,8GAAA,YAAY,OAAA;AAAE,+GAAA,aAAa,OAAA;AAE7D,0BAA0B;AAC1B,kDAA+C;AAAtC,yGAAA,UAAU,OAAA;AAEnB,aAAa;AACb,yEAA+F;AAAtF,qHAAA,gBAAgB,OAAA;AAEzB,oBAAoB;AACpB,8FAA0F;AAAjF,kIAAA,sBAAsB,OAAA;AAE/B,kDAAkD;AAClD,6DAA8E;AAArE,2GAAA,WAAW,OAAA;AAEpB,kBAAkB;AAClB,0EAAsE;AAA7D,gIAAA,qBAAqB,OAAA;AAC9B,wDAA4D;AAAnD,sHAAA,oBAAoB,OAAA;AAC7B,4EAAwE;AAA/D,kIAAA,sBAAsB,OAAA;AAE/B,8CAA8C;AAC9C,wCAAsC;AAA7B,gGAAA,MAAM,OAAA;AACf,0DAAyF;AAAhF,gHAAA,aAAa,OAAA;AAAE,oHAAA,YAAY,OAAqB;AAEzD,aAAa;AACb,oDAAiC;AAEjC,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,uDAAgD;AAChD,4EAAsE;AACtE,0CAAsC;AACtC,4DAAoE;AACpE,0DAA4D;AAC5D,8EAAwE;AAExE;;GAEG;AACI,KAAK,UAAU,kBAAkB;IAItC,wBAAS,CAAC,QAAQ,CAAC,8BAAY,EAAE,EAAE,UAAU,EAAE,+BAAa,EAAE,CAAC,CAAA;IAC/D,OAAO;QACL,MAAM,EAAE,wBAAS,CAAC,OAAO,CAAS,eAAM,CAAC;QACzC,aAAa,EAAE,wBAAS,CAAC,OAAO,CAAuB,qCAAoB,CAAC;KAC7E,CAAA;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,yBAAyB;IAI7C,wBAAS,CAAC,QAAQ,CAAC,8BAAY,EAAE,EAAE,UAAU,EAAE,+BAAa,EAAE,CAAC,CAAA;IAC/D,OAAO;QACL,MAAM,EAAE,wBAAS,CAAC,OAAO,CAAS,eAAM,CAAC;QACzC,aAAa,EAAE,wBAAS,CAAC,OAAO,CAAwB,+CAAqB,CAAC;KAC/E,CAAA;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,0BAA0B;IAI9C,wBAAS,CAAC,QAAQ,CAAC,8BAAY,EAAE,EAAE,UAAU,EAAE,+BAAa,EAAE,CAAC,CAAA;IAC/D,OAAO;QACL,MAAM,EAAE,wBAAS,CAAC,OAAO,CAAS,eAAM,CAAC;QACzC,aAAa,EAAE,wBAAS,CAAC,OAAO,CAAyB,iDAAsB,CAAC;KACjF,CAAA;AACH,CAAC"}
|
|
@@ -11,7 +11,7 @@ declare class TokenCache {
|
|
|
11
11
|
* @param tokenSecret JWT secret for token verification
|
|
12
12
|
* @returns Fastify middleware function
|
|
13
13
|
*/
|
|
14
|
-
declare function authenticate(tokenSecret: string): (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
|
|
14
|
+
export declare function authenticate(tokenSecret: string): (request: FastifyRequest, reply: FastifyReply) => Promise<void>;
|
|
15
|
+
export { TokenCache };
|
|
15
16
|
export default authenticate;
|
|
16
|
-
export { authenticate, TokenCache };
|
|
17
17
|
//# sourceMappingURL=auth.middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.middleware.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAIvD,cAAM,UAAU;IACZ,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,MAAM,CAAqC;IAEnD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAkB5D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAIrB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAQ5B;AAcD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,IACrB,SAAS,cAAc,EAAE,OAAO,YAAY,mBAoDtE;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,eAAe,YAAY,CAAC"}
|
|
@@ -6,8 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.TokenCache = void 0;
|
|
7
7
|
exports.authenticate = authenticate;
|
|
8
8
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
9
|
-
const config_1 = require("../config");
|
|
10
|
-
const core_1 = require("../core");
|
|
11
9
|
// Simple in-memory cache for demonstration (replace with Redis in production)
|
|
12
10
|
class TokenCache {
|
|
13
11
|
constructor() {
|
|
@@ -42,19 +40,13 @@ class TokenCache {
|
|
|
42
40
|
}
|
|
43
41
|
exports.TokenCache = TokenCache;
|
|
44
42
|
const tokenCache = new TokenCache();
|
|
45
|
-
// JWT verification function
|
|
43
|
+
// JWT verification function
|
|
46
44
|
const verifyJwtToken = async ({ token, tokenSecret }) => {
|
|
47
|
-
const appConfig = config_1.AppConfig.getInstance();
|
|
48
|
-
const jwtSecret = appConfig.get('JWT_SECRET');
|
|
49
|
-
console.log(`Verifying token: ${token}`);
|
|
50
|
-
console.log(`Token secret: ${tokenSecret}`);
|
|
51
|
-
console.log(`Token JWT secret: ${jwtSecret}`);
|
|
52
45
|
try {
|
|
53
|
-
const decoded = jsonwebtoken_1.default.verify(token,
|
|
46
|
+
const decoded = jsonwebtoken_1.default.verify(token, tokenSecret);
|
|
54
47
|
return decoded;
|
|
55
48
|
}
|
|
56
49
|
catch (error) {
|
|
57
|
-
console.log(error);
|
|
58
50
|
throw new Error('Invalid token');
|
|
59
51
|
}
|
|
60
52
|
};
|
|
@@ -66,46 +58,43 @@ const verifyJwtToken = async ({ token, tokenSecret }) => {
|
|
|
66
58
|
function authenticate(tokenSecret) {
|
|
67
59
|
return async function (request, reply) {
|
|
68
60
|
try {
|
|
69
|
-
// Extract token from headers
|
|
70
|
-
const contextService = new core_1.RequestContextService();
|
|
71
|
-
console.log('Token Secret', tokenSecret);
|
|
72
61
|
const accessToken = request.headers.Authorization || request.headers.authorization;
|
|
73
62
|
if (!accessToken) {
|
|
74
63
|
request.authenticated = false;
|
|
75
64
|
return;
|
|
76
65
|
}
|
|
77
|
-
|
|
66
|
+
// Remove 'Bearer ' prefix if present
|
|
67
|
+
const token = String(accessToken).replace(/^Bearer\s+/i, '');
|
|
78
68
|
// Check cache first
|
|
79
|
-
const cachedToken = tokenCache.get(`token:${
|
|
69
|
+
const cachedToken = tokenCache.get(`token:${token}`);
|
|
80
70
|
if (cachedToken) {
|
|
81
|
-
// Token found in cache
|
|
82
71
|
request.user = cachedToken;
|
|
83
72
|
request.authenticated = true;
|
|
84
|
-
console.log('Token found in cache');
|
|
85
73
|
return;
|
|
86
74
|
}
|
|
87
75
|
// Verify token if not in cache
|
|
88
76
|
try {
|
|
89
77
|
const verifiedToken = await verifyJwtToken({
|
|
90
|
-
token
|
|
78
|
+
token,
|
|
91
79
|
tokenSecret
|
|
92
80
|
});
|
|
93
81
|
// Calculate expiration time
|
|
94
|
-
const expiresIn = verifiedToken.exp
|
|
82
|
+
const expiresIn = verifiedToken.exp
|
|
83
|
+
? verifiedToken.exp - Math.floor(Date.now() / 1000)
|
|
84
|
+
: 3600; // Default 1 hour
|
|
95
85
|
// Cache the verified token
|
|
96
|
-
|
|
86
|
+
if (expiresIn > 0) {
|
|
87
|
+
tokenCache.set(`token:${token}`, verifiedToken, expiresIn);
|
|
88
|
+
}
|
|
97
89
|
request.user = verifiedToken;
|
|
98
90
|
request.authenticated = true;
|
|
99
|
-
contextService.set('user', verifiedToken);
|
|
100
91
|
}
|
|
101
92
|
catch (error) {
|
|
102
|
-
console.error('Error verifying token:', error);
|
|
103
93
|
request.authenticated = false;
|
|
104
94
|
request.user = null;
|
|
105
95
|
}
|
|
106
96
|
}
|
|
107
97
|
catch (error) {
|
|
108
|
-
console.error('Authentication middleware error:', error);
|
|
109
98
|
request.authenticated = false;
|
|
110
99
|
request.user = null;
|
|
111
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"auth.middleware.js","sourceRoot":"","sources":["../../src/middleware/auth.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
export
|
|
1
|
+
export { FastifyMiddleware } from '../core/decorators';
|
|
2
2
|
export * from './context.middleware';
|
|
3
3
|
export * from './request-logger.middleware';
|
|
4
|
-
export { FastifyMiddleware } from '../core/decorators';
|
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,cAAc,sBAAsB,CAAA;AACpC,cAAc,6BAA6B,CAAA"}
|
package/dist/middleware/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./auth.middleware"), exports);
|
|
18
17
|
__exportStar(require("./context.middleware"), exports);
|
|
19
18
|
__exportStar(require("./request-logger.middleware"), exports);
|
|
20
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAEA,uDAAoC;AACpC,8DAA2C"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BootifyJS Scheduling Module
|
|
3
|
+
*
|
|
4
|
+
* Provides @Scheduled decorator for cron jobs and interval-based task execution.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* import { Service, Scheduled, SchedulerService } from 'bootifyjs'
|
|
8
|
+
*
|
|
9
|
+
* @Service()
|
|
10
|
+
* class CleanupService {
|
|
11
|
+
* @Scheduled('0 0 * * *') // Daily at midnight
|
|
12
|
+
* async dailyCleanup() {
|
|
13
|
+
* console.log('Running cleanup...')
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* @Scheduled({ interval: 60000, preventOverlap: true })
|
|
17
|
+
* async healthCheck() {
|
|
18
|
+
* console.log('Health check...')
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
export * from './scheduled.decorator';
|
|
23
|
+
export * from './scheduler.service';
|
|
24
|
+
export * from './scheduler.types';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduling/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* BootifyJS Scheduling Module
|
|
4
|
+
*
|
|
5
|
+
* Provides @Scheduled decorator for cron jobs and interval-based task execution.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* import { Service, Scheduled, SchedulerService } from 'bootifyjs'
|
|
9
|
+
*
|
|
10
|
+
* @Service()
|
|
11
|
+
* class CleanupService {
|
|
12
|
+
* @Scheduled('0 0 * * *') // Daily at midnight
|
|
13
|
+
* async dailyCleanup() {
|
|
14
|
+
* console.log('Running cleanup...')
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* @Scheduled({ interval: 60000, preventOverlap: true })
|
|
18
|
+
* async healthCheck() {
|
|
19
|
+
* console.log('Health check...')
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
*/
|
|
23
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
24
|
+
if (k2 === undefined) k2 = k;
|
|
25
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
26
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
27
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
28
|
+
}
|
|
29
|
+
Object.defineProperty(o, k2, desc);
|
|
30
|
+
}) : (function(o, m, k, k2) {
|
|
31
|
+
if (k2 === undefined) k2 = k;
|
|
32
|
+
o[k2] = m[k];
|
|
33
|
+
}));
|
|
34
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
35
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
36
|
+
};
|
|
37
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
+
__exportStar(require("./scheduled.decorator"), exports);
|
|
39
|
+
__exportStar(require("./scheduler.service"), exports);
|
|
40
|
+
__exportStar(require("./scheduler.types"), exports);
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduling/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;AAEH,wDAAqC;AACrC,sDAAmC;AACnC,oDAAiC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @Scheduled Decorator
|
|
3
|
+
*
|
|
4
|
+
* Marks a method to be executed on a schedule using cron expressions or intervals.
|
|
5
|
+
*/
|
|
6
|
+
import 'reflect-metadata';
|
|
7
|
+
import { ScheduledJobOptions } from './scheduler.types';
|
|
8
|
+
export declare const SCHEDULED_METADATA_KEY = "bootify:scheduled-jobs";
|
|
9
|
+
/**
|
|
10
|
+
* Decorator to schedule method execution.
|
|
11
|
+
*
|
|
12
|
+
* Usage with cron expression:
|
|
13
|
+
* @Scheduled('0 0 * * *') // Daily at midnight
|
|
14
|
+
* async dailyCleanup() { }
|
|
15
|
+
*
|
|
16
|
+
* Usage with options object:
|
|
17
|
+
* @Scheduled({ cron: '0 0 * * *', preventOverlap: true })
|
|
18
|
+
* async healthCheck() { }
|
|
19
|
+
*
|
|
20
|
+
* Usage with interval:
|
|
21
|
+
* @Scheduled({ interval: 60000, runOnInit: true })
|
|
22
|
+
* async syncData() { }
|
|
23
|
+
*/
|
|
24
|
+
export declare function Scheduled(cronOrOptions: string | ScheduledJobOptions): MethodDecorator;
|
|
25
|
+
//# sourceMappingURL=scheduled.decorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled.decorator.d.ts","sourceRoot":"","sources":["../../src/scheduling/scheduled.decorator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,kBAAkB,CAAA;AACzB,OAAO,EAAwB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAE7E,eAAO,MAAM,sBAAsB,2BAA2B,CAAA;AAE9D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB,GAAG,eAAe,CA6BtF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SCHEDULED_METADATA_KEY = void 0;
|
|
4
|
+
exports.Scheduled = Scheduled;
|
|
5
|
+
/**
|
|
6
|
+
* @Scheduled Decorator
|
|
7
|
+
*
|
|
8
|
+
* Marks a method to be executed on a schedule using cron expressions or intervals.
|
|
9
|
+
*/
|
|
10
|
+
require("reflect-metadata");
|
|
11
|
+
exports.SCHEDULED_METADATA_KEY = 'bootify:scheduled-jobs';
|
|
12
|
+
/**
|
|
13
|
+
* Decorator to schedule method execution.
|
|
14
|
+
*
|
|
15
|
+
* Usage with cron expression:
|
|
16
|
+
* @Scheduled('0 0 * * *') // Daily at midnight
|
|
17
|
+
* async dailyCleanup() { }
|
|
18
|
+
*
|
|
19
|
+
* Usage with options object:
|
|
20
|
+
* @Scheduled({ cron: '0 0 * * *', preventOverlap: true })
|
|
21
|
+
* async healthCheck() { }
|
|
22
|
+
*
|
|
23
|
+
* Usage with interval:
|
|
24
|
+
* @Scheduled({ interval: 60000, runOnInit: true })
|
|
25
|
+
* async syncData() { }
|
|
26
|
+
*/
|
|
27
|
+
function Scheduled(cronOrOptions) {
|
|
28
|
+
return (target, propertyKey, descriptor) => {
|
|
29
|
+
const options = typeof cronOrOptions === 'string'
|
|
30
|
+
? { cron: cronOrOptions }
|
|
31
|
+
: cronOrOptions;
|
|
32
|
+
// Get existing scheduled jobs for this class
|
|
33
|
+
const existingJobs = Reflect.getMetadata(exports.SCHEDULED_METADATA_KEY, target.constructor) || [];
|
|
34
|
+
// Add this job
|
|
35
|
+
existingJobs.push({
|
|
36
|
+
methodName: String(propertyKey),
|
|
37
|
+
options: {
|
|
38
|
+
enabled: true,
|
|
39
|
+
preventOverlap: false,
|
|
40
|
+
runOnInit: false,
|
|
41
|
+
maxRetries: 0,
|
|
42
|
+
retryDelay: 1000,
|
|
43
|
+
...options,
|
|
44
|
+
name: options.name || String(propertyKey),
|
|
45
|
+
},
|
|
46
|
+
target: target.constructor,
|
|
47
|
+
});
|
|
48
|
+
Reflect.defineMetadata(exports.SCHEDULED_METADATA_KEY, existingJobs, target.constructor);
|
|
49
|
+
return descriptor;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=scheduled.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled.decorator.js","sourceRoot":"","sources":["../../src/scheduling/scheduled.decorator.ts"],"names":[],"mappings":";;;AAyBA,8BA6BC;AAtDD;;;;GAIG;AACH,4BAAyB;AAGZ,QAAA,sBAAsB,GAAG,wBAAwB,CAAA;AAE9D;;;;;;;;;;;;;;GAcG;AACH,SAAgB,SAAS,CAAC,aAA2C;IACjE,OAAO,CAAC,MAAW,EAAE,WAA4B,EAAE,UAA8B,EAAE,EAAE;QACjF,MAAM,OAAO,GAAwB,OAAO,aAAa,KAAK,QAAQ;YAClE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE;YACzB,CAAC,CAAC,aAAa,CAAA;QAEnB,6CAA6C;QAC7C,MAAM,YAAY,GACd,OAAO,CAAC,WAAW,CAAC,8BAAsB,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAA;QAEzE,eAAe;QACf,YAAY,CAAC,IAAI,CAAC;YACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC;YAC/B,OAAO,EAAE;gBACL,OAAO,EAAE,IAAI;gBACb,cAAc,EAAE,KAAK;gBACrB,SAAS,EAAE,KAAK;gBAChB,UAAU,EAAE,CAAC;gBACb,UAAU,EAAE,IAAI;gBAChB,GAAG,OAAO;gBACV,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC;aAC5C;YACD,MAAM,EAAE,MAAM,CAAC,WAAW;SAC7B,CAAC,CAAA;QAEF,OAAO,CAAC,cAAc,CAAC,8BAAsB,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,CAAC,CAAA;QAEhF,OAAO,UAAU,CAAA;IACrB,CAAC,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { JobStatus, SchedulerStats } from './scheduler.types';
|
|
2
|
+
export declare class SchedulerService {
|
|
3
|
+
private jobs;
|
|
4
|
+
private isStarted;
|
|
5
|
+
private nodeCron;
|
|
6
|
+
/**
|
|
7
|
+
* Initialize and start all scheduled jobs
|
|
8
|
+
*/
|
|
9
|
+
start(): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Stop all scheduled jobs gracefully
|
|
12
|
+
*/
|
|
13
|
+
stop(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Manually trigger a job by name
|
|
16
|
+
*/
|
|
17
|
+
trigger(jobName: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Enable a job
|
|
20
|
+
*/
|
|
21
|
+
enable(jobName: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Disable a job
|
|
24
|
+
*/
|
|
25
|
+
disable(jobName: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get status of all jobs
|
|
28
|
+
*/
|
|
29
|
+
getStats(): SchedulerStats;
|
|
30
|
+
/**
|
|
31
|
+
* Get status of a specific job
|
|
32
|
+
*/
|
|
33
|
+
getJobStatus(jobName: string): JobStatus | undefined;
|
|
34
|
+
private discoverJobs;
|
|
35
|
+
private startJob;
|
|
36
|
+
private executeJob;
|
|
37
|
+
private getNextCronRun;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=scheduler.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.service.d.ts","sourceRoot":"","sources":["../../src/scheduling/scheduler.service.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAwB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAYnF,qBACa,gBAAgB;IACzB,OAAO,CAAC,IAAI,CAAgC;IAC5C,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAY;IAE5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6C3B;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAW7B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAkB9B;;OAEG;IACH,QAAQ,IAAI,cAAc;IAU1B;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAIpD,OAAO,CAAC,YAAY;IA+CpB,OAAO,CAAC,QAAQ;YA8DF,UAAU;IAiExB,OAAO,CAAC,cAAc;CAMzB"}
|