playwright-automation-core 1.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/LICENSE +21 -0
- package/README.md +225 -0
- package/dist/api/api.assertions.d.ts +196 -0
- package/dist/api/api.assertions.d.ts.map +1 -0
- package/dist/api/api.assertions.js +462 -0
- package/dist/api/api.assertions.js.map +1 -0
- package/dist/api/api.builder.d.ts +134 -0
- package/dist/api/api.builder.d.ts.map +1 -0
- package/dist/api/api.builder.js +273 -0
- package/dist/api/api.builder.js.map +1 -0
- package/dist/api/api.client.d.ts +157 -0
- package/dist/api/api.client.d.ts.map +1 -0
- package/dist/api/api.client.js +493 -0
- package/dist/api/api.client.js.map +1 -0
- package/dist/api/index.d.ts +8 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +17 -0
- package/dist/api/index.js.map +1 -0
- package/dist/core/base.driver.d.ts +130 -0
- package/dist/core/base.driver.d.ts.map +1 -0
- package/dist/core/base.driver.js +264 -0
- package/dist/core/base.driver.js.map +1 -0
- package/dist/core/driver.factory.d.ts +120 -0
- package/dist/core/driver.factory.d.ts.map +1 -0
- package/dist/core/driver.factory.js +222 -0
- package/dist/core/driver.factory.js.map +1 -0
- package/dist/core/element.actions.d.ts +119 -0
- package/dist/core/element.actions.d.ts.map +1 -0
- package/dist/core/element.actions.js +379 -0
- package/dist/core/element.actions.js.map +1 -0
- package/dist/core/hook.manager.d.ts +186 -0
- package/dist/core/hook.manager.d.ts.map +1 -0
- package/dist/core/hook.manager.js +297 -0
- package/dist/core/hook.manager.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +22 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +128 -0
- package/dist/index.js.map +1 -0
- package/dist/mobile/index.d.ts +7 -0
- package/dist/mobile/index.d.ts.map +1 -0
- package/dist/mobile/index.js +14 -0
- package/dist/mobile/index.js.map +1 -0
- package/dist/mobile/mobile.assertions.d.ts +146 -0
- package/dist/mobile/mobile.assertions.d.ts.map +1 -0
- package/dist/mobile/mobile.assertions.js +333 -0
- package/dist/mobile/mobile.assertions.js.map +1 -0
- package/dist/mobile/mobile.driver.d.ts +297 -0
- package/dist/mobile/mobile.driver.d.ts.map +1 -0
- package/dist/mobile/mobile.driver.js +808 -0
- package/dist/mobile/mobile.driver.js.map +1 -0
- package/dist/types/common.types.d.ts +200 -0
- package/dist/types/common.types.d.ts.map +1 -0
- package/dist/types/common.types.js +3 -0
- package/dist/types/common.types.js.map +1 -0
- package/dist/types/config.types.d.ts +192 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +3 -0
- package/dist/types/config.types.js.map +1 -0
- package/dist/types/driver.types.d.ts +500 -0
- package/dist/types/driver.types.d.ts.map +1 -0
- package/dist/types/driver.types.js +3 -0
- package/dist/types/driver.types.js.map +1 -0
- package/dist/types/enums.d.ts +53 -0
- package/dist/types/enums.d.ts.map +1 -0
- package/dist/types/enums.js +62 -0
- package/dist/types/enums.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +15 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.manager.d.ts +144 -0
- package/dist/utils/config.manager.d.ts.map +1 -0
- package/dist/utils/config.manager.js +473 -0
- package/dist/utils/config.manager.js.map +1 -0
- package/dist/utils/errors.d.ts +149 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +290 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/helpers.d.ts +124 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +421 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +78 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +145 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +235 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/wait.utils.d.ts +95 -0
- package/dist/utils/wait.utils.d.ts.map +1 -0
- package/dist/utils/wait.utils.js +306 -0
- package/dist/utils/wait.utils.js.map +1 -0
- package/dist/web/index.d.ts +8 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +16 -0
- package/dist/web/index.js.map +1 -0
- package/dist/web/web.assertions.d.ts +164 -0
- package/dist/web/web.assertions.d.ts.map +1 -0
- package/dist/web/web.assertions.js +427 -0
- package/dist/web/web.assertions.js.map +1 -0
- package/dist/web/web.driver.d.ts +174 -0
- package/dist/web/web.driver.d.ts.map +1 -0
- package/dist/web/web.driver.js +571 -0
- package/dist/web/web.driver.js.map +1 -0
- package/dist/web/web.page.d.ts +286 -0
- package/dist/web/web.page.d.ts.map +1 -0
- package/dist/web/web.page.js +570 -0
- package/dist/web/web.page.js.map +1 -0
- package/package.json +115 -0
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import winston from "winston";
|
|
2
|
+
import { LogLevel } from "../types";
|
|
3
|
+
/**
|
|
4
|
+
* Log metadata interface
|
|
5
|
+
*/
|
|
6
|
+
export interface LogMetadata {
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Logger configuration options
|
|
11
|
+
*/
|
|
12
|
+
export interface LoggerOptions {
|
|
13
|
+
/** Log level */
|
|
14
|
+
level?: LogLevel;
|
|
15
|
+
/** Include timestamps */
|
|
16
|
+
timestamp?: boolean;
|
|
17
|
+
/** Log to file */
|
|
18
|
+
logToFile?: boolean;
|
|
19
|
+
/** Log file path */
|
|
20
|
+
logFilePath?: string;
|
|
21
|
+
/** Log format: 'json' or 'simple' */
|
|
22
|
+
format?: "json" | "simple";
|
|
23
|
+
/** Logger name/label */
|
|
24
|
+
label?: string;
|
|
25
|
+
/** Colorize console output */
|
|
26
|
+
colorize?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Logger class providing consistent logging across the framework
|
|
30
|
+
*/
|
|
31
|
+
export declare class Logger {
|
|
32
|
+
private logger;
|
|
33
|
+
private static instance;
|
|
34
|
+
private options;
|
|
35
|
+
/**
|
|
36
|
+
* Create a new Logger instance
|
|
37
|
+
*/
|
|
38
|
+
constructor(options?: LoggerOptions);
|
|
39
|
+
/**
|
|
40
|
+
* Get singleton instance of Logger
|
|
41
|
+
*/
|
|
42
|
+
static getInstance(options?: LoggerOptions): Logger;
|
|
43
|
+
/**
|
|
44
|
+
* Reset the singleton instance (useful for testing)
|
|
45
|
+
*/
|
|
46
|
+
static resetInstance(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Create a child logger with a specific label
|
|
49
|
+
*/
|
|
50
|
+
static createLogger(label: string, options?: LoggerOptions): Logger;
|
|
51
|
+
/**
|
|
52
|
+
* Create winston logger instance
|
|
53
|
+
*/
|
|
54
|
+
private createLogger;
|
|
55
|
+
/**
|
|
56
|
+
* Log error message
|
|
57
|
+
*/
|
|
58
|
+
error(message: string, metadata?: LogMetadata): void;
|
|
59
|
+
/**
|
|
60
|
+
* Log warning message
|
|
61
|
+
*/
|
|
62
|
+
warn(message: string, metadata?: LogMetadata): void;
|
|
63
|
+
/**
|
|
64
|
+
* Log info message
|
|
65
|
+
*/
|
|
66
|
+
info(message: string, metadata?: LogMetadata): void;
|
|
67
|
+
/**
|
|
68
|
+
* Log debug message
|
|
69
|
+
*/
|
|
70
|
+
debug(message: string, metadata?: LogMetadata): void;
|
|
71
|
+
/**
|
|
72
|
+
* Log trace message (uses silly level in winston)
|
|
73
|
+
*/
|
|
74
|
+
trace(message: string, metadata?: LogMetadata): void;
|
|
75
|
+
/**
|
|
76
|
+
* Log a step in the test
|
|
77
|
+
*/
|
|
78
|
+
step(stepNumber: number, description: string, metadata?: LogMetadata): void;
|
|
79
|
+
/**
|
|
80
|
+
* Log start of an action
|
|
81
|
+
*/
|
|
82
|
+
actionStart(action: string, metadata?: LogMetadata): void;
|
|
83
|
+
/**
|
|
84
|
+
* Log end of an action
|
|
85
|
+
*/
|
|
86
|
+
actionEnd(action: string, duration?: number, metadata?: LogMetadata): void;
|
|
87
|
+
/**
|
|
88
|
+
* Log action failure
|
|
89
|
+
*/
|
|
90
|
+
actionFailed(action: string, error: Error, metadata?: LogMetadata): void;
|
|
91
|
+
/**
|
|
92
|
+
* Log API request
|
|
93
|
+
*/
|
|
94
|
+
apiRequest(method: string, url: string, metadata?: LogMetadata): void;
|
|
95
|
+
/**
|
|
96
|
+
* Log API response
|
|
97
|
+
*/
|
|
98
|
+
apiResponse(method: string, url: string, status: number, duration: number, metadata?: LogMetadata): void;
|
|
99
|
+
/**
|
|
100
|
+
* Log navigation
|
|
101
|
+
*/
|
|
102
|
+
navigation(url: string, metadata?: LogMetadata): void;
|
|
103
|
+
/**
|
|
104
|
+
* Log element action
|
|
105
|
+
*/
|
|
106
|
+
elementAction(action: string, locator: string, metadata?: LogMetadata): void;
|
|
107
|
+
/**
|
|
108
|
+
* Log screenshot taken
|
|
109
|
+
*/
|
|
110
|
+
screenshot(path: string, metadata?: LogMetadata): void;
|
|
111
|
+
/**
|
|
112
|
+
* Log test start
|
|
113
|
+
*/
|
|
114
|
+
testStart(testName: string, metadata?: LogMetadata): void;
|
|
115
|
+
/**
|
|
116
|
+
* Log test end
|
|
117
|
+
*/
|
|
118
|
+
testEnd(testName: string, passed: boolean, duration: number, metadata?: LogMetadata): void;
|
|
119
|
+
/**
|
|
120
|
+
* Log suite start
|
|
121
|
+
*/
|
|
122
|
+
suiteStart(suiteName: string, metadata?: LogMetadata): void;
|
|
123
|
+
/**
|
|
124
|
+
* Log suite end
|
|
125
|
+
*/
|
|
126
|
+
suiteEnd(suiteName: string, passed: number, failed: number, duration: number, metadata?: LogMetadata): void;
|
|
127
|
+
/**
|
|
128
|
+
* Create a divider line in logs
|
|
129
|
+
*/
|
|
130
|
+
divider(char?: string, length?: number): void;
|
|
131
|
+
/**
|
|
132
|
+
* Set log level dynamically
|
|
133
|
+
*/
|
|
134
|
+
setLevel(level: LogLevel): void;
|
|
135
|
+
/**
|
|
136
|
+
* Get current log level
|
|
137
|
+
*/
|
|
138
|
+
getLevel(): LogLevel;
|
|
139
|
+
/**
|
|
140
|
+
* Get the underlying winston logger
|
|
141
|
+
*/
|
|
142
|
+
getWinstonLogger(): winston.Logger;
|
|
143
|
+
}
|
|
144
|
+
export declare const getLogger: (options?: LoggerOptions) => Logger;
|
|
145
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getLogger = exports.Logger = void 0;
|
|
7
|
+
const winston_1 = __importDefault(require("winston"));
|
|
8
|
+
const types_1 = require("../types");
|
|
9
|
+
/**
|
|
10
|
+
* Default logger options
|
|
11
|
+
*/
|
|
12
|
+
const defaultOptions = {
|
|
13
|
+
level: types_1.LogLevel.INFO,
|
|
14
|
+
timestamp: true,
|
|
15
|
+
logToFile: false,
|
|
16
|
+
logFilePath: "./logs/automation.log",
|
|
17
|
+
format: "simple",
|
|
18
|
+
label: "playwright-core",
|
|
19
|
+
colorize: true,
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Custom log format for simple output
|
|
23
|
+
*/
|
|
24
|
+
const simpleFormat = winston_1.default.format.printf(({ level, message, label, timestamp, ...metadata }) => {
|
|
25
|
+
let msg = `${timestamp} [${label}] ${level}: ${message}`;
|
|
26
|
+
if (Object.keys(metadata).length > 0) {
|
|
27
|
+
msg += ` ${JSON.stringify(metadata)}`;
|
|
28
|
+
}
|
|
29
|
+
return msg;
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Logger class providing consistent logging across the framework
|
|
33
|
+
*/
|
|
34
|
+
class Logger {
|
|
35
|
+
logger;
|
|
36
|
+
static instance = null;
|
|
37
|
+
options;
|
|
38
|
+
/**
|
|
39
|
+
* Create a new Logger instance
|
|
40
|
+
*/
|
|
41
|
+
constructor(options = {}) {
|
|
42
|
+
this.options = { ...defaultOptions, ...options };
|
|
43
|
+
this.logger = this.createLogger();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get singleton instance of Logger
|
|
47
|
+
*/
|
|
48
|
+
static getInstance(options) {
|
|
49
|
+
if (!Logger.instance) {
|
|
50
|
+
Logger.instance = new Logger(options);
|
|
51
|
+
}
|
|
52
|
+
return Logger.instance;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Reset the singleton instance (useful for testing)
|
|
56
|
+
*/
|
|
57
|
+
static resetInstance() {
|
|
58
|
+
Logger.instance = null;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a child logger with a specific label
|
|
62
|
+
*/
|
|
63
|
+
static createLogger(label, options) {
|
|
64
|
+
return new Logger({ ...options, label });
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create winston logger instance
|
|
68
|
+
*/
|
|
69
|
+
createLogger() {
|
|
70
|
+
const transports = [];
|
|
71
|
+
// Console transport
|
|
72
|
+
const consoleFormat = winston_1.default.format.combine(winston_1.default.format.label({ label: this.options.label }), winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss.SSS" }), this.options.colorize
|
|
73
|
+
? winston_1.default.format.colorize()
|
|
74
|
+
: winston_1.default.format.uncolorize(), this.options.format === "json" ? winston_1.default.format.json() : simpleFormat);
|
|
75
|
+
transports.push(new winston_1.default.transports.Console({
|
|
76
|
+
format: consoleFormat,
|
|
77
|
+
}));
|
|
78
|
+
// File transport (if enabled)
|
|
79
|
+
if (this.options.logToFile && this.options.logFilePath) {
|
|
80
|
+
const fileFormat = winston_1.default.format.combine(winston_1.default.format.label({ label: this.options.label }), winston_1.default.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss.SSS" }), winston_1.default.format.uncolorize(), winston_1.default.format.json());
|
|
81
|
+
transports.push(new winston_1.default.transports.File({
|
|
82
|
+
filename: this.options.logFilePath,
|
|
83
|
+
format: fileFormat,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
return winston_1.default.createLogger({
|
|
87
|
+
level: this.options.level,
|
|
88
|
+
transports,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Log error message
|
|
93
|
+
*/
|
|
94
|
+
error(message, metadata) {
|
|
95
|
+
this.logger.error(message, metadata);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Log warning message
|
|
99
|
+
*/
|
|
100
|
+
warn(message, metadata) {
|
|
101
|
+
this.logger.warn(message, metadata);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Log info message
|
|
105
|
+
*/
|
|
106
|
+
info(message, metadata) {
|
|
107
|
+
this.logger.info(message, metadata);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Log debug message
|
|
111
|
+
*/
|
|
112
|
+
debug(message, metadata) {
|
|
113
|
+
this.logger.debug(message, metadata);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Log trace message (uses silly level in winston)
|
|
117
|
+
*/
|
|
118
|
+
trace(message, metadata) {
|
|
119
|
+
this.logger.silly(message, metadata);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Log a step in the test
|
|
123
|
+
*/
|
|
124
|
+
step(stepNumber, description, metadata) {
|
|
125
|
+
this.info(`Step ${stepNumber}: ${description}`, metadata);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Log start of an action
|
|
129
|
+
*/
|
|
130
|
+
actionStart(action, metadata) {
|
|
131
|
+
this.debug(`▶ Starting: ${action}`, metadata);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Log end of an action
|
|
135
|
+
*/
|
|
136
|
+
actionEnd(action, duration, metadata) {
|
|
137
|
+
const durationStr = duration !== undefined ? ` (${duration}ms)` : "";
|
|
138
|
+
this.debug(`✓ Completed: ${action}${durationStr}`, metadata);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Log action failure
|
|
142
|
+
*/
|
|
143
|
+
actionFailed(action, error, metadata) {
|
|
144
|
+
this.error(`✗ Failed: ${action} - ${error.message}`, {
|
|
145
|
+
...metadata,
|
|
146
|
+
stack: error.stack,
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Log API request
|
|
151
|
+
*/
|
|
152
|
+
apiRequest(method, url, metadata) {
|
|
153
|
+
this.debug(`→ ${method} ${url}`, metadata);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Log API response
|
|
157
|
+
*/
|
|
158
|
+
apiResponse(method, url, status, duration, metadata) {
|
|
159
|
+
const statusIcon = status >= 200 && status < 300 ? "✓" : "✗";
|
|
160
|
+
this.debug(`← ${statusIcon} ${method} ${url} [${status}] (${duration}ms)`, metadata);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Log navigation
|
|
164
|
+
*/
|
|
165
|
+
navigation(url, metadata) {
|
|
166
|
+
this.info(`🌐 Navigating to: ${url}`, metadata);
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Log element action
|
|
170
|
+
*/
|
|
171
|
+
elementAction(action, locator, metadata) {
|
|
172
|
+
this.debug(`🎯 ${action}: ${locator}`, metadata);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Log screenshot taken
|
|
176
|
+
*/
|
|
177
|
+
screenshot(path, metadata) {
|
|
178
|
+
this.info(`📸 Screenshot saved: ${path}`, metadata);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Log test start
|
|
182
|
+
*/
|
|
183
|
+
testStart(testName, metadata) {
|
|
184
|
+
this.info(`\n${"=".repeat(60)}\n🧪 TEST START: ${testName}\n${"=".repeat(60)}`, metadata);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Log test end
|
|
188
|
+
*/
|
|
189
|
+
testEnd(testName, passed, duration, metadata) {
|
|
190
|
+
const status = passed ? "✅ PASSED" : "❌ FAILED";
|
|
191
|
+
this.info(`\n${"=".repeat(60)}\n${status}: ${testName} (${duration}ms)\n${"=".repeat(60)}\n`, metadata);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Log suite start
|
|
195
|
+
*/
|
|
196
|
+
suiteStart(suiteName, metadata) {
|
|
197
|
+
this.info(`\n${"#".repeat(60)}\n📦 SUITE: ${suiteName}\n${"#".repeat(60)}`, metadata);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Log suite end
|
|
201
|
+
*/
|
|
202
|
+
suiteEnd(suiteName, passed, failed, duration, metadata) {
|
|
203
|
+
this.info(`\n${"#".repeat(60)}\n📊 SUITE COMPLETE: ${suiteName}\n Passed: ${passed}, Failed: ${failed}, Duration: ${duration}ms\n${"#".repeat(60)}\n`, metadata);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Create a divider line in logs
|
|
207
|
+
*/
|
|
208
|
+
divider(char = "-", length = 60) {
|
|
209
|
+
this.info(char.repeat(length));
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Set log level dynamically
|
|
213
|
+
*/
|
|
214
|
+
setLevel(level) {
|
|
215
|
+
this.options.level = level;
|
|
216
|
+
this.logger.level = level;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Get current log level
|
|
220
|
+
*/
|
|
221
|
+
getLevel() {
|
|
222
|
+
return this.options.level;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get the underlying winston logger
|
|
226
|
+
*/
|
|
227
|
+
getWinstonLogger() {
|
|
228
|
+
return this.logger;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
exports.Logger = Logger;
|
|
232
|
+
// Export singleton getter for convenience
|
|
233
|
+
const getLogger = (options) => Logger.getInstance(options);
|
|
234
|
+
exports.getLogger = getLogger;
|
|
235
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { WaitOptions, RetryOptions } from "../types";
|
|
2
|
+
import { Logger } from "./logger";
|
|
3
|
+
/**
|
|
4
|
+
* Condition function type
|
|
5
|
+
*/
|
|
6
|
+
export type ConditionFn<T> = () => Promise<T> | T;
|
|
7
|
+
/**
|
|
8
|
+
* Predicate function type
|
|
9
|
+
*/
|
|
10
|
+
export type PredicateFn<T> = (value: T) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Wait timeout error
|
|
13
|
+
*/
|
|
14
|
+
export declare class WaitTimeoutError extends Error {
|
|
15
|
+
readonly timeout: number;
|
|
16
|
+
constructor(message: string, timeout: number);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Retry exhausted error
|
|
20
|
+
*/
|
|
21
|
+
export declare class RetryExhaustedError extends Error {
|
|
22
|
+
readonly attempts: number;
|
|
23
|
+
readonly lastError?: Error | undefined;
|
|
24
|
+
constructor(message: string, attempts: number, lastError?: Error | undefined);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Wait utilities class providing various wait mechanisms
|
|
28
|
+
*/
|
|
29
|
+
export declare class WaitUtils {
|
|
30
|
+
private logger;
|
|
31
|
+
constructor(logger?: Logger);
|
|
32
|
+
/**
|
|
33
|
+
* Sleep for specified milliseconds
|
|
34
|
+
*/
|
|
35
|
+
sleep(ms: number): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Wait for a condition to be truthy
|
|
38
|
+
* @param condition - Function that returns a value to check
|
|
39
|
+
* @param options - Wait options
|
|
40
|
+
* @returns The truthy value returned by condition
|
|
41
|
+
*/
|
|
42
|
+
waitFor<T>(condition: ConditionFn<T>, options?: WaitOptions): Promise<T>;
|
|
43
|
+
/**
|
|
44
|
+
* Wait for a condition to match a predicate
|
|
45
|
+
* @param condition - Function that returns a value
|
|
46
|
+
* @param predicate - Function to check the value
|
|
47
|
+
* @param options - Wait options
|
|
48
|
+
*/
|
|
49
|
+
waitForCondition<T>(condition: ConditionFn<T>, predicate: PredicateFn<T>, options?: WaitOptions): Promise<T>;
|
|
50
|
+
/**
|
|
51
|
+
* Wait for a condition to be false/falsy
|
|
52
|
+
*/
|
|
53
|
+
waitForNot<T>(condition: ConditionFn<T>, options?: WaitOptions): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Wait for any of the conditions to be truthy
|
|
56
|
+
* @returns Object with index and result of the first truthy condition
|
|
57
|
+
*/
|
|
58
|
+
waitForAny<T>(conditions: ConditionFn<T>[], options?: WaitOptions): Promise<{
|
|
59
|
+
index: number;
|
|
60
|
+
result: T;
|
|
61
|
+
}>;
|
|
62
|
+
/**
|
|
63
|
+
* Wait for all conditions to be truthy
|
|
64
|
+
*/
|
|
65
|
+
waitForAll<T>(conditions: ConditionFn<T>[], options?: WaitOptions): Promise<T[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Retry a function until it succeeds or retries are exhausted
|
|
68
|
+
*/
|
|
69
|
+
retry<T>(fn: () => Promise<T>, options?: Partial<RetryOptions>): Promise<T>;
|
|
70
|
+
/**
|
|
71
|
+
* Retry with a condition check
|
|
72
|
+
*/
|
|
73
|
+
retryUntil<T>(fn: () => Promise<T>, predicate: PredicateFn<T>, options?: Partial<RetryOptions>): Promise<T>;
|
|
74
|
+
/**
|
|
75
|
+
* Execute with timeout
|
|
76
|
+
*/
|
|
77
|
+
withTimeout<T>(fn: () => Promise<T>, timeout: number, message?: string): Promise<T>;
|
|
78
|
+
/**
|
|
79
|
+
* Poll a function at regular intervals
|
|
80
|
+
*/
|
|
81
|
+
poll<T>(fn: ConditionFn<T>, interval: number, timeout: number): Promise<T>;
|
|
82
|
+
/**
|
|
83
|
+
* Wait for a value to stabilize (not change for a period)
|
|
84
|
+
*/
|
|
85
|
+
waitForStable<T>(getValue: ConditionFn<T>, stableTime?: number, options?: WaitOptions): Promise<T>;
|
|
86
|
+
/**
|
|
87
|
+
* Execute functions in sequence with delay between each
|
|
88
|
+
*/
|
|
89
|
+
sequence<T>(fns: (() => Promise<T>)[], delayBetween?: number): Promise<T[]>;
|
|
90
|
+
}
|
|
91
|
+
export declare const waitUtils: WaitUtils;
|
|
92
|
+
export declare const sleep: (ms: number) => Promise<void>;
|
|
93
|
+
export declare const waitFor: <T>(condition: ConditionFn<T>, options?: WaitOptions) => Promise<T>;
|
|
94
|
+
export declare const retry: <T>(fn: () => Promise<T>, options?: Partial<RetryOptions>) => Promise<T>;
|
|
95
|
+
//# sourceMappingURL=wait.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait.utils.d.ts","sourceRoot":"","sources":["../../src/utils/wait.utils.ts"],"names":[],"mappings":"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"}
|