polyv-live-cli 1.0.2

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.
Files changed (107) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +417 -0
  3. package/dist/commands/channel.commands.d.ts +9 -0
  4. package/dist/commands/channel.commands.d.ts.map +1 -0
  5. package/dist/commands/channel.commands.js +439 -0
  6. package/dist/commands/channel.commands.js.map +1 -0
  7. package/dist/commands/index.d.ts +3 -0
  8. package/dist/commands/index.d.ts.map +1 -0
  9. package/dist/commands/index.js +8 -0
  10. package/dist/commands/index.js.map +1 -0
  11. package/dist/commands/stream.commands.d.ts +3 -0
  12. package/dist/commands/stream.commands.d.ts.map +1 -0
  13. package/dist/commands/stream.commands.js +272 -0
  14. package/dist/commands/stream.commands.js.map +1 -0
  15. package/dist/config/auth.d.ts +11 -0
  16. package/dist/config/auth.d.ts.map +1 -0
  17. package/dist/config/auth.js +124 -0
  18. package/dist/config/auth.js.map +1 -0
  19. package/dist/config/loader.d.ts +22 -0
  20. package/dist/config/loader.d.ts.map +1 -0
  21. package/dist/config/loader.js +127 -0
  22. package/dist/config/loader.js.map +1 -0
  23. package/dist/config/manager.d.ts +20 -0
  24. package/dist/config/manager.d.ts.map +1 -0
  25. package/dist/config/manager.js +258 -0
  26. package/dist/config/manager.js.map +1 -0
  27. package/dist/config/validator.d.ts +43 -0
  28. package/dist/config/validator.d.ts.map +1 -0
  29. package/dist/config/validator.js +222 -0
  30. package/dist/config/validator.js.map +1 -0
  31. package/dist/handlers/base.handler.d.ts +15 -0
  32. package/dist/handlers/base.handler.d.ts.map +1 -0
  33. package/dist/handlers/base.handler.js +122 -0
  34. package/dist/handlers/base.handler.js.map +1 -0
  35. package/dist/handlers/channel.handler.d.ts +31 -0
  36. package/dist/handlers/channel.handler.d.ts.map +1 -0
  37. package/dist/handlers/channel.handler.js +690 -0
  38. package/dist/handlers/channel.handler.js.map +1 -0
  39. package/dist/handlers/index.d.ts +4 -0
  40. package/dist/handlers/index.d.ts.map +1 -0
  41. package/dist/handlers/index.js +10 -0
  42. package/dist/handlers/index.js.map +1 -0
  43. package/dist/handlers/stream.handler.d.ts +25 -0
  44. package/dist/handlers/stream.handler.d.ts.map +1 -0
  45. package/dist/handlers/stream.handler.js +241 -0
  46. package/dist/handlers/stream.handler.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +342 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/services/channel.service.d.ts +25 -0
  52. package/dist/services/channel.service.d.ts.map +1 -0
  53. package/dist/services/channel.service.js +672 -0
  54. package/dist/services/channel.service.js.map +1 -0
  55. package/dist/services/index.d.ts +3 -0
  56. package/dist/services/index.d.ts.map +1 -0
  57. package/dist/services/index.js +8 -0
  58. package/dist/services/index.js.map +1 -0
  59. package/dist/services/stream.service.d.ts +29 -0
  60. package/dist/services/stream.service.d.ts.map +1 -0
  61. package/dist/services/stream.service.js +489 -0
  62. package/dist/services/stream.service.js.map +1 -0
  63. package/dist/types/auth.d.ts +31 -0
  64. package/dist/types/auth.d.ts.map +1 -0
  65. package/dist/types/auth.js +14 -0
  66. package/dist/types/auth.js.map +1 -0
  67. package/dist/types/channel.d.ts +262 -0
  68. package/dist/types/channel.d.ts.map +1 -0
  69. package/dist/types/channel.js +3 -0
  70. package/dist/types/channel.js.map +1 -0
  71. package/dist/types/config.d.ts +82 -0
  72. package/dist/types/config.d.ts.map +1 -0
  73. package/dist/types/config.js +56 -0
  74. package/dist/types/config.js.map +1 -0
  75. package/dist/types/index.d.ts +6 -0
  76. package/dist/types/index.d.ts.map +1 -0
  77. package/dist/types/index.js +22 -0
  78. package/dist/types/index.js.map +1 -0
  79. package/dist/types/signature.d.ts +22 -0
  80. package/dist/types/signature.d.ts.map +1 -0
  81. package/dist/types/signature.js +3 -0
  82. package/dist/types/signature.js.map +1 -0
  83. package/dist/types/stream.d.ts +104 -0
  84. package/dist/types/stream.d.ts.map +1 -0
  85. package/dist/types/stream.js +3 -0
  86. package/dist/types/stream.js.map +1 -0
  87. package/dist/utils/confirmation.d.ts +12 -0
  88. package/dist/utils/confirmation.d.ts.map +1 -0
  89. package/dist/utils/confirmation.js +164 -0
  90. package/dist/utils/confirmation.js.map +1 -0
  91. package/dist/utils/errors.d.ts +40 -0
  92. package/dist/utils/errors.d.ts.map +1 -0
  93. package/dist/utils/errors.js +113 -0
  94. package/dist/utils/errors.js.map +1 -0
  95. package/dist/utils/formatter.d.ts +8 -0
  96. package/dist/utils/formatter.d.ts.map +1 -0
  97. package/dist/utils/formatter.js +93 -0
  98. package/dist/utils/formatter.js.map +1 -0
  99. package/dist/utils/index.d.ts +4 -0
  100. package/dist/utils/index.d.ts.map +1 -0
  101. package/dist/utils/index.js +20 -0
  102. package/dist/utils/index.js.map +1 -0
  103. package/dist/utils/signature.d.ts +9 -0
  104. package/dist/utils/signature.d.ts.map +1 -0
  105. package/dist/utils/signature.js +77 -0
  106. package/dist/utils/signature.js.map +1 -0
  107. package/package.json +86 -0
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.configManager = exports.ConfigManager = void 0;
4
+ exports.loadConfig = loadConfig;
5
+ exports.getConfig = getConfig;
6
+ exports.reloadConfig = reloadConfig;
7
+ const errors_1 = require("../utils/errors");
8
+ const loader_1 = require("./loader");
9
+ const validator_1 = require("./validator");
10
+ const auth_1 = require("./auth");
11
+ class ConfigManager {
12
+ constructor() {
13
+ this.config = null;
14
+ this.sources = null;
15
+ this.loadedEnvFiles = [];
16
+ }
17
+ async load(options = {}) {
18
+ this.config = null;
19
+ this.sources = null;
20
+ this.loadedEnvFiles = [];
21
+ let { environment, source: environmentSource } = this.determineEnvironment(options);
22
+ const envFileOptions = {
23
+ baseDir: process.cwd(),
24
+ };
25
+ if (options.envFiles) {
26
+ envFileOptions.additionalFiles = options.envFiles;
27
+ }
28
+ if (options.skipEnvFile) {
29
+ envFileOptions.override = options.skipEnvFile;
30
+ }
31
+ const originalEnvVars = {};
32
+ const configEnvVars = [
33
+ 'POLYV_ENVIRONMENT', 'POLYV_DEBUG', 'POLYV_TIMEOUT', 'POLYV_BASE_URL',
34
+ 'POLYV_MAX_RETRIES', 'POLYV_CONFIG_PATH', 'POLYV_APP_ID', 'POLYV_APP_SECRET', 'POLYV_USER_ID'
35
+ ];
36
+ for (const varName of configEnvVars) {
37
+ originalEnvVars[varName] = process.env[varName];
38
+ }
39
+ if (environmentSource === 'default') {
40
+ (0, loader_1.loadEnvironmentConfig)('production', envFileOptions, true);
41
+ const newEnvResult = this.determineEnvironment(options);
42
+ environment = newEnvResult.environment;
43
+ environmentSource = newEnvResult.source;
44
+ }
45
+ const envFileResults = (0, loader_1.loadEnvironmentConfig)(environment, envFileOptions, true);
46
+ for (const varName of configEnvVars) {
47
+ if (originalEnvVars[varName] !== undefined) {
48
+ process.env[varName] = originalEnvVars[varName];
49
+ }
50
+ }
51
+ this.loadedEnvFiles = envFileResults
52
+ .filter(result => result.loaded)
53
+ .map(result => result.path);
54
+ const rawConfig = (0, loader_1.extractRawConfig)();
55
+ const parsedConfig = (0, validator_1.parseRawConfig)(rawConfig, environment);
56
+ const cliConfig = this.loadCliConfig(options.cliOptions || {});
57
+ if (cliConfig.errors.length > 0) {
58
+ const errorMessage = `CLI configuration errors:\n${cliConfig.errors.map(e => ` • ${e}`).join('\n')}`;
59
+ throw new errors_1.ConfigurationError(errorMessage);
60
+ }
61
+ const mergedConfig = this.mergeConfigurations(parsedConfig, cliConfig, environment, environmentSource, options.configPath);
62
+ const configWithDefaults = (0, validator_1.applyDefaults)(mergedConfig.config, environment);
63
+ const authConfig = this.createAuthConfig(configWithDefaults.auth);
64
+ const finalConfig = {
65
+ ...configWithDefaults,
66
+ auth: authConfig,
67
+ };
68
+ const validation = (0, validator_1.validateAppConfig)(finalConfig);
69
+ if (!validation.isValid) {
70
+ const errorMessage = (0, validator_1.createConfigErrorMessage)(validation);
71
+ throw new errors_1.ConfigurationError(errorMessage);
72
+ }
73
+ this.config = finalConfig;
74
+ this.sources = mergedConfig.sources;
75
+ return {
76
+ config: finalConfig,
77
+ sources: mergedConfig.sources,
78
+ validation,
79
+ loadedEnvFiles: this.loadedEnvFiles,
80
+ };
81
+ }
82
+ getConfig() {
83
+ return this.config;
84
+ }
85
+ getSources() {
86
+ return this.sources;
87
+ }
88
+ getLoadedEnvFiles() {
89
+ return [...this.loadedEnvFiles];
90
+ }
91
+ async reload(options = {}) {
92
+ return this.load(options);
93
+ }
94
+ determineEnvironment(options) {
95
+ if (options.environment) {
96
+ return { environment: options.environment, source: 'cli' };
97
+ }
98
+ if (options.cliOptions && typeof options.cliOptions['environment'] === 'string') {
99
+ const { validateEnvironment } = require('./loader');
100
+ const env = validateEnvironment(options.cliOptions['environment']);
101
+ if (env) {
102
+ return { environment: env, source: 'cli' };
103
+ }
104
+ }
105
+ const { validateEnvironment } = require('./loader');
106
+ const envFromVar = validateEnvironment(process.env['POLYV_ENVIRONMENT']);
107
+ if (envFromVar) {
108
+ return { environment: envFromVar, source: 'env' };
109
+ }
110
+ return { environment: 'production', source: 'default' };
111
+ }
112
+ loadCliConfig(cliOptions) {
113
+ const errors = [];
114
+ const config = {
115
+ auth: (0, auth_1.loadAuthFromCLI)(cliOptions),
116
+ errors,
117
+ };
118
+ if (typeof cliOptions['environment'] === 'string') {
119
+ const env = (0, loader_1.validateEnvironment)(cliOptions['environment']);
120
+ if (env)
121
+ config.environment = env;
122
+ }
123
+ if (typeof cliOptions['debug'] === 'boolean') {
124
+ config.debug = cliOptions['debug'];
125
+ }
126
+ if (typeof cliOptions['timeout'] === 'string') {
127
+ const timeout = (0, loader_1.parseInteger)(cliOptions['timeout'], 0, 1000, 300000);
128
+ if (timeout > 0) {
129
+ config.timeout = timeout;
130
+ }
131
+ else {
132
+ errors.push(`Invalid timeout value '${cliOptions['timeout']}'. Must be between 1000 and 300000 milliseconds.`);
133
+ }
134
+ }
135
+ if (typeof cliOptions['baseUrl'] === 'string') {
136
+ const baseUrl = (0, loader_1.parseUrl)(cliOptions['baseUrl'], '');
137
+ if (baseUrl)
138
+ config.baseUrl = baseUrl;
139
+ }
140
+ if (typeof cliOptions['maxRetries'] === 'string') {
141
+ const maxRetries = (0, loader_1.parseInteger)(cliOptions['maxRetries'], -1, 0, 10);
142
+ if (maxRetries >= 0) {
143
+ config.maxRetries = maxRetries;
144
+ }
145
+ else {
146
+ errors.push(`Invalid maxRetries value '${cliOptions['maxRetries']}'. Must be between 0 and 10.`);
147
+ }
148
+ }
149
+ if (typeof cliOptions['config'] === 'string') {
150
+ config.configPath = cliOptions['config'];
151
+ }
152
+ return config;
153
+ }
154
+ mergeConfigurations(parsedConfig, cliConfig, environment, environmentSource, configPath) {
155
+ const sources = {
156
+ environment: environmentSource,
157
+ debug: 'default',
158
+ timeout: 'default',
159
+ baseUrl: 'default',
160
+ maxRetries: 'default',
161
+ };
162
+ const config = {
163
+ environment: environment,
164
+ debug: parsedConfig.debug,
165
+ timeout: parsedConfig.timeout,
166
+ baseUrl: parsedConfig.baseUrl,
167
+ maxRetries: parsedConfig.maxRetries,
168
+ auth: { ...parsedConfig.auth },
169
+ };
170
+ if (parsedConfig.configPath) {
171
+ config.configPath = parsedConfig.configPath;
172
+ }
173
+ if (process.env['POLYV_DEBUG']) {
174
+ sources.debug = 'env';
175
+ }
176
+ if (process.env['POLYV_TIMEOUT']) {
177
+ sources.timeout = 'env';
178
+ }
179
+ if (process.env['POLYV_BASE_URL']) {
180
+ sources.baseUrl = 'env';
181
+ }
182
+ if (process.env['POLYV_MAX_RETRIES']) {
183
+ sources.maxRetries = 'env';
184
+ }
185
+ if (process.env['POLYV_CONFIG_PATH']) {
186
+ sources.configPath = 'env';
187
+ }
188
+ if (cliConfig.debug !== undefined) {
189
+ config.debug = cliConfig.debug;
190
+ sources.debug = 'cli';
191
+ }
192
+ if (cliConfig.timeout !== undefined) {
193
+ config.timeout = cliConfig.timeout;
194
+ sources.timeout = 'cli';
195
+ }
196
+ if (cliConfig.baseUrl !== undefined) {
197
+ config.baseUrl = cliConfig.baseUrl;
198
+ sources.baseUrl = 'cli';
199
+ }
200
+ if (cliConfig.maxRetries !== undefined) {
201
+ config.maxRetries = cliConfig.maxRetries;
202
+ sources.maxRetries = 'cli';
203
+ }
204
+ if (cliConfig.configPath !== undefined) {
205
+ config.configPath = cliConfig.configPath;
206
+ sources.configPath = 'cli';
207
+ }
208
+ const envAuth = (0, auth_1.loadAuthFromEnv)();
209
+ if (cliConfig.auth.appId) {
210
+ config.auth.appId = cliConfig.auth.appId;
211
+ }
212
+ else if (envAuth.appId) {
213
+ config.auth.appId = envAuth.appId;
214
+ }
215
+ if (cliConfig.auth.appSecret) {
216
+ config.auth.appSecret = cliConfig.auth.appSecret;
217
+ }
218
+ else if (envAuth.appSecret) {
219
+ config.auth.appSecret = envAuth.appSecret;
220
+ }
221
+ if (cliConfig.auth.userId) {
222
+ config.auth.userId = cliConfig.auth.userId;
223
+ }
224
+ else if (envAuth.userId) {
225
+ config.auth.userId = envAuth.userId;
226
+ }
227
+ if (configPath) {
228
+ const foundConfigFile = (0, loader_1.findConfigFile)(configPath);
229
+ if (foundConfigFile) {
230
+ config.configPath = foundConfigFile;
231
+ sources.configPath = 'cli';
232
+ }
233
+ }
234
+ return { config, sources };
235
+ }
236
+ createAuthConfig(authOptions) {
237
+ if (!authOptions.appId || !authOptions.appSecret) {
238
+ throw new errors_1.ConfigurationError('Auth configuration is incomplete');
239
+ }
240
+ return {
241
+ appId: authOptions.appId,
242
+ appSecret: authOptions.appSecret,
243
+ ...(authOptions.userId && { userId: authOptions.userId }),
244
+ };
245
+ }
246
+ }
247
+ exports.ConfigManager = ConfigManager;
248
+ exports.configManager = new ConfigManager();
249
+ async function loadConfig(options = {}) {
250
+ return exports.configManager.load(options);
251
+ }
252
+ function getConfig() {
253
+ return exports.configManager.getConfig();
254
+ }
255
+ async function reloadConfig(options = {}) {
256
+ return exports.configManager.reload(options);
257
+ }
258
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/config/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { ConfigValidationResult, AppConfig, Environment, RawConfig } from '../types/config';
2
+ import { AuthOptions } from '../types/auth';
3
+ export declare const REQUIRED_FIELDS: {
4
+ readonly AUTH: readonly ["appId", "appSecret"];
5
+ readonly CORE: readonly [];
6
+ };
7
+ export declare const FIELD_CONSTRAINTS: {
8
+ readonly timeout: {
9
+ readonly min: 1000;
10
+ readonly max: 300000;
11
+ };
12
+ readonly maxRetries: {
13
+ readonly min: 0;
14
+ readonly max: 10;
15
+ };
16
+ readonly baseUrl: {
17
+ readonly protocol: readonly ["http:", "https:"];
18
+ };
19
+ };
20
+ export declare function validateAuth(auth: AuthOptions): Pick<ConfigValidationResult, 'errors' | 'missingFields'>;
21
+ export declare function validateEnvironmentConfig(environment: Environment): string[];
22
+ export declare function validateTimeout(timeout: number): string[];
23
+ export declare function validateMaxRetries(maxRetries: number): string[];
24
+ export declare function validateBaseUrl(baseUrl: string): string[];
25
+ export declare function parseRawConfig(rawConfig: RawConfig, environment: Environment): {
26
+ environment: Environment;
27
+ debug: boolean;
28
+ timeout: number;
29
+ baseUrl: string;
30
+ maxRetries: number;
31
+ configPath?: string;
32
+ auth: AuthOptions;
33
+ errors: string[];
34
+ warnings: string[];
35
+ };
36
+ export declare function validateAppConfig(config: AppConfig): ConfigValidationResult;
37
+ export declare function createConfigErrorMessage(validation: ConfigValidationResult): string;
38
+ export declare function applyDefaults(partial: Partial<Omit<AppConfig, 'auth'>> & {
39
+ auth: AuthOptions;
40
+ }, environment: Environment): Omit<AppConfig, 'auth'> & {
41
+ auth: AuthOptions;
42
+ };
43
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/config/validator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAKX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;CAIpB,CAAC;AAOX,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE,QAAQ,GAAG,eAAe,CAAC,CAyCxG;AAOD,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,WAAW,GAAG,MAAM,EAAE,CAQ5E;AAOD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAazD;AAOD,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAa/D;AAOD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBzD;AAQD,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,GAAG;IAC9E,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAoFA;AAOD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,sBAAsB,CA6C3E;AAOD,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,sBAAsB,GAAG,MAAM,CAmCnF;AAQD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,EACjE,WAAW,EAAE,WAAW,GACvB,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAiBjD"}
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FIELD_CONSTRAINTS = exports.REQUIRED_FIELDS = void 0;
4
+ exports.validateAuth = validateAuth;
5
+ exports.validateEnvironmentConfig = validateEnvironmentConfig;
6
+ exports.validateTimeout = validateTimeout;
7
+ exports.validateMaxRetries = validateMaxRetries;
8
+ exports.validateBaseUrl = validateBaseUrl;
9
+ exports.parseRawConfig = parseRawConfig;
10
+ exports.validateAppConfig = validateAppConfig;
11
+ exports.createConfigErrorMessage = createConfigErrorMessage;
12
+ exports.applyDefaults = applyDefaults;
13
+ const config_1 = require("../types/config");
14
+ const loader_1 = require("./loader");
15
+ exports.REQUIRED_FIELDS = {
16
+ AUTH: ['appId', 'appSecret'],
17
+ CORE: [],
18
+ };
19
+ exports.FIELD_CONSTRAINTS = {
20
+ timeout: { min: 1000, max: 300000 },
21
+ maxRetries: { min: 0, max: 10 },
22
+ baseUrl: { protocol: ['http:', 'https:'] },
23
+ };
24
+ function validateAuth(auth) {
25
+ const errors = [];
26
+ const missingFields = [];
27
+ if (!auth.appId || !auth.appId.trim()) {
28
+ missingFields.push('appId');
29
+ errors.push('PolyV App ID is required. Set via --appId or POLYV_APP_ID environment variable.');
30
+ }
31
+ if (!auth.appSecret || !auth.appSecret.trim()) {
32
+ missingFields.push('appSecret');
33
+ errors.push('PolyV App Secret is required. Set via --appSecret or POLYV_APP_SECRET environment variable.');
34
+ }
35
+ if (auth.appId && auth.appId.trim()) {
36
+ const trimmedAppId = auth.appId.trim();
37
+ if (trimmedAppId.length < 10) {
38
+ errors.push('App ID appears to be invalid (too short). Please check your PolyV App ID.');
39
+ }
40
+ }
41
+ if (auth.appSecret && auth.appSecret.trim()) {
42
+ const trimmedAppSecret = auth.appSecret.trim();
43
+ if (trimmedAppSecret.length < 16) {
44
+ errors.push('App Secret appears to be invalid (too short). Please check your PolyV App Secret.');
45
+ }
46
+ }
47
+ if (auth.userId && auth.userId.trim()) {
48
+ const trimmedUserId = auth.userId.trim();
49
+ if (!/^[a-zA-Z0-9]+$/.test(trimmedUserId)) {
50
+ errors.push('User ID must be alphanumeric (letters and numbers only). Please provide a valid PolyV User ID.');
51
+ }
52
+ if (trimmedUserId.length < 3) {
53
+ errors.push('User ID appears to be invalid (too short). Please check your PolyV User ID.');
54
+ }
55
+ }
56
+ return { errors, missingFields };
57
+ }
58
+ function validateEnvironmentConfig(environment) {
59
+ const errors = [];
60
+ if (!config_1.ENVIRONMENT_CONFIGS[environment]) {
61
+ errors.push(`Invalid environment '${environment}'. Must be one of: development, production, test`);
62
+ }
63
+ return errors;
64
+ }
65
+ function validateTimeout(timeout) {
66
+ const errors = [];
67
+ const { min, max } = exports.FIELD_CONSTRAINTS.timeout;
68
+ if (timeout < min) {
69
+ errors.push(`Timeout must be at least ${min}ms (${min / 1000}s)`);
70
+ }
71
+ if (timeout > max) {
72
+ errors.push(`Timeout must not exceed ${max}ms (${max / 1000}s)`);
73
+ }
74
+ return errors;
75
+ }
76
+ function validateMaxRetries(maxRetries) {
77
+ const errors = [];
78
+ const { min, max } = exports.FIELD_CONSTRAINTS.maxRetries;
79
+ if (maxRetries < min) {
80
+ errors.push(`Max retries must be at least ${min}`);
81
+ }
82
+ if (maxRetries > max) {
83
+ errors.push(`Max retries must not exceed ${max}`);
84
+ }
85
+ return errors;
86
+ }
87
+ function validateBaseUrl(baseUrl) {
88
+ const errors = [];
89
+ try {
90
+ const url = new URL(baseUrl);
91
+ if (!exports.FIELD_CONSTRAINTS.baseUrl.protocol.includes(url.protocol)) {
92
+ errors.push(`Base URL must use HTTP or HTTPS protocol, got: ${url.protocol}`);
93
+ }
94
+ if (!url.hostname) {
95
+ errors.push('Base URL must have a valid hostname');
96
+ }
97
+ }
98
+ catch {
99
+ errors.push(`Invalid base URL format: ${baseUrl}`);
100
+ }
101
+ return errors;
102
+ }
103
+ function parseRawConfig(rawConfig, environment) {
104
+ const errors = [];
105
+ const warnings = [];
106
+ const envDefaults = config_1.ENVIRONMENT_CONFIGS[environment];
107
+ const debug = (0, loader_1.parseBoolean)(rawConfig.POLYV_DEBUG, envDefaults.debug);
108
+ const timeout = (0, loader_1.parseInteger)(rawConfig.POLYV_TIMEOUT, envDefaults.timeout, exports.FIELD_CONSTRAINTS.timeout.min, exports.FIELD_CONSTRAINTS.timeout.max);
109
+ if (rawConfig.POLYV_TIMEOUT && (0, loader_1.parseInteger)(rawConfig.POLYV_TIMEOUT, -1) === -1) {
110
+ warnings.push(`Invalid timeout value '${rawConfig.POLYV_TIMEOUT}', using default: ${envDefaults.timeout}ms`);
111
+ }
112
+ const baseUrl = (0, loader_1.parseUrl)(rawConfig.POLYV_BASE_URL, envDefaults.baseUrl);
113
+ if (rawConfig.POLYV_BASE_URL && baseUrl === envDefaults.baseUrl) {
114
+ warnings.push(`Invalid base URL '${rawConfig.POLYV_BASE_URL}', using default: ${envDefaults.baseUrl}`);
115
+ }
116
+ const maxRetries = (0, loader_1.parseInteger)(rawConfig.POLYV_MAX_RETRIES, envDefaults.maxRetries, exports.FIELD_CONSTRAINTS.maxRetries.min, exports.FIELD_CONSTRAINTS.maxRetries.max);
117
+ if (rawConfig.POLYV_MAX_RETRIES && (0, loader_1.parseInteger)(rawConfig.POLYV_MAX_RETRIES, -1) === -1) {
118
+ warnings.push(`Invalid max retries value '${rawConfig.POLYV_MAX_RETRIES}', using default: ${envDefaults.maxRetries}`);
119
+ }
120
+ const configPath = rawConfig.POLYV_CONFIG_PATH?.trim();
121
+ const auth = {};
122
+ if (rawConfig.POLYV_APP_ID?.trim()) {
123
+ auth.appId = rawConfig.POLYV_APP_ID.trim();
124
+ }
125
+ if (rawConfig.POLYV_APP_SECRET?.trim()) {
126
+ auth.appSecret = rawConfig.POLYV_APP_SECRET.trim();
127
+ }
128
+ if (rawConfig.POLYV_USER_ID?.trim()) {
129
+ auth.userId = rawConfig.POLYV_USER_ID.trim();
130
+ }
131
+ const result = {
132
+ environment,
133
+ debug,
134
+ timeout,
135
+ baseUrl,
136
+ maxRetries,
137
+ auth,
138
+ errors,
139
+ warnings,
140
+ };
141
+ if (configPath) {
142
+ result.configPath = configPath;
143
+ }
144
+ return result;
145
+ }
146
+ function validateAppConfig(config) {
147
+ const errors = [];
148
+ const warnings = [];
149
+ const missingFields = [];
150
+ const authValidation = validateAuth(config.auth);
151
+ errors.push(...authValidation.errors);
152
+ missingFields.push(...authValidation.missingFields);
153
+ const envErrors = validateEnvironmentConfig(config.environment);
154
+ errors.push(...envErrors);
155
+ const timeoutErrors = validateTimeout(config.timeout);
156
+ errors.push(...timeoutErrors);
157
+ const retriesErrors = validateMaxRetries(config.maxRetries);
158
+ errors.push(...retriesErrors);
159
+ const urlErrors = validateBaseUrl(config.baseUrl);
160
+ errors.push(...urlErrors);
161
+ if (config.environment === 'development' && !config.debug) {
162
+ warnings.push('Debug mode is disabled in development environment. Consider enabling it for better development experience.');
163
+ }
164
+ if (config.environment === 'production' && config.debug) {
165
+ warnings.push('Debug mode is enabled in production environment. Consider disabling it for better performance.');
166
+ }
167
+ if (config.timeout < 5000 && config.environment === 'production') {
168
+ warnings.push('Timeout is set to less than 5 seconds in production. This might cause issues with slower network connections.');
169
+ }
170
+ return {
171
+ isValid: errors.length === 0 && missingFields.length === 0,
172
+ errors,
173
+ warnings,
174
+ missingFields,
175
+ };
176
+ }
177
+ function createConfigErrorMessage(validation) {
178
+ if (validation.isValid) {
179
+ return 'Configuration is valid';
180
+ }
181
+ let message = 'Configuration validation failed:\n\n';
182
+ if (validation.missingFields.length > 0) {
183
+ message += '❌ Missing required fields:\n';
184
+ validation.missingFields.forEach(field => {
185
+ message += ` • ${field}\n`;
186
+ });
187
+ message += '\n';
188
+ }
189
+ if (validation.errors.length > 0) {
190
+ message += '❌ Configuration errors:\n';
191
+ validation.errors.forEach(error => {
192
+ message += ` • ${error}\n`;
193
+ });
194
+ message += '\n';
195
+ }
196
+ if (validation.warnings.length > 0) {
197
+ message += '⚠️ Configuration warnings:\n';
198
+ validation.warnings.forEach(warning => {
199
+ message += ` • ${warning}\n`;
200
+ });
201
+ message += '\n';
202
+ }
203
+ message += 'Please fix the above issues before proceeding.\n';
204
+ message += '\nFor help with configuration, run: polyv-cli --help';
205
+ return message.trim();
206
+ }
207
+ function applyDefaults(partial, environment) {
208
+ const envDefaults = config_1.ENVIRONMENT_CONFIGS[environment];
209
+ const result = {
210
+ environment: partial.environment || environment,
211
+ debug: partial.debug !== undefined ? partial.debug : envDefaults.debug,
212
+ timeout: partial.timeout || envDefaults.timeout,
213
+ baseUrl: partial.baseUrl || envDefaults.baseUrl,
214
+ maxRetries: partial.maxRetries !== undefined ? partial.maxRetries : envDefaults.maxRetries,
215
+ auth: partial.auth,
216
+ };
217
+ if (partial.configPath) {
218
+ result.configPath = partial.configPath;
219
+ }
220
+ return result;
221
+ }
222
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/config/validator.ts"],"names":[],"mappings":";;;AA8BA,oCAyCC;AAOD,8DAQC;AAOD,0CAaC;AAOD,gDAaC;AAOD,0CAkBC;AAQD,wCA8FC;AAOD,8CA6CC;AAOD,4DAmCC;AAQD,sCAoBC;AAnXD,4CAAiH;AAEjH,qCAAgE;AAKnD,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,CAAU;IACrC,IAAI,EAAE,EAAW;CACT,CAAC;AAKE,QAAA,iBAAiB,GAAG;IAC/B,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE;IACnC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;IAC/B,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;CAClC,CAAC;AAOX,SAAgB,YAAY,CAAC,IAAiB;IAC5C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,aAAa,GAAa,EAAE,CAAC;IAGnC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IACjG,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;IAC7G,CAAC;IAGD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,YAAY,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,gBAAgB,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;QACnG,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1C,MAAM,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AACnC,CAAC;AAOD,SAAgB,yBAAyB,CAAC,WAAwB;IAChE,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,4BAAmB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,wBAAwB,WAAW,kDAAkD,CAAC,CAAC;IACrG,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,yBAAiB,CAAC,OAAO,CAAC;IAE/C,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,4BAA4B,GAAG,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,2BAA2B,GAAG,OAAO,GAAG,GAAG,IAAI,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,yBAAiB,CAAC,UAAU,CAAC;IAElD,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAE7B,IAAI,CAAC,yBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAA8B,CAAC,EAAE,CAAC;YACrF,MAAM,CAAC,IAAI,CAAC,kDAAkD,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAQD,SAAgB,cAAc,CAAC,SAAoB,EAAE,WAAwB;IAW3E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAG9B,MAAM,WAAW,GAAG,4BAAmB,CAAC,WAAW,CAAC,CAAC;IAGrD,MAAM,KAAK,GAAG,IAAA,qBAAY,EAAC,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAGrE,MAAM,OAAO,GAAG,IAAA,qBAAY,EAC1B,SAAS,CAAC,aAAa,EACvB,WAAW,CAAC,OAAO,EACnB,yBAAiB,CAAC,OAAO,CAAC,GAAG,EAC7B,yBAAiB,CAAC,OAAO,CAAC,GAAG,CAC9B,CAAC;IAEF,IAAI,SAAS,CAAC,aAAa,IAAI,IAAA,qBAAY,EAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAChF,QAAQ,CAAC,IAAI,CAAC,0BAA0B,SAAS,CAAC,aAAa,qBAAqB,WAAW,CAAC,OAAO,IAAI,CAAC,CAAC;IAC/G,CAAC;IAGD,MAAM,OAAO,GAAG,IAAA,iBAAQ,EAAC,SAAS,CAAC,cAAc,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IACxE,IAAI,SAAS,CAAC,cAAc,IAAI,OAAO,KAAK,WAAW,CAAC,OAAO,EAAE,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,SAAS,CAAC,cAAc,qBAAqB,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACzG,CAAC;IAGD,MAAM,UAAU,GAAG,IAAA,qBAAY,EAC7B,SAAS,CAAC,iBAAiB,EAC3B,WAAW,CAAC,UAAU,EACtB,yBAAiB,CAAC,UAAU,CAAC,GAAG,EAChC,yBAAiB,CAAC,UAAU,CAAC,GAAG,CACjC,CAAC;IAEF,IAAI,SAAS,CAAC,iBAAiB,IAAI,IAAA,qBAAY,EAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxF,QAAQ,CAAC,IAAI,CAAC,8BAA8B,SAAS,CAAC,iBAAiB,qBAAqB,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;IACxH,CAAC;IAGD,MAAM,UAAU,GAAG,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAGvD,MAAM,IAAI,GAAgB,EAAE,CAAC;IAE7B,IAAI,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAUR;QACF,WAAW;QACX,KAAK;QACL,OAAO;QACP,OAAO;QACP,UAAU;QACV,IAAI;QACJ,MAAM;QACN,QAAQ;KACT,CAAC;IAEF,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,SAAgB,iBAAiB,CAAC,MAAiB;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAa,EAAE,CAAC;IAGnC,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,aAAa,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAGpD,MAAM,SAAS,GAAG,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAG1B,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAG9B,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAG9B,MAAM,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAG1B,IAAI,MAAM,CAAC,WAAW,KAAK,aAAa,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,4GAA4G,CAAC,CAAC;IAC9H,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACxD,QAAQ,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;IAClH,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,+GAA+G,CAAC,CAAC;IACjI,CAAC;IAED,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QAC1D,MAAM;QACN,QAAQ;QACR,aAAa;KACd,CAAC;AACJ,CAAC;AAOD,SAAgB,wBAAwB,CAAC,UAAkC;IACzE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAED,IAAI,OAAO,GAAG,sCAAsC,CAAC;IAErD,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,8BAA8B,CAAC;QAC1C,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACvC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,2BAA2B,CAAC;QACvC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,IAAI,OAAO,KAAK,IAAI,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,+BAA+B,CAAC;QAC3C,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACpC,OAAO,IAAI,OAAO,OAAO,IAAI,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;IAED,OAAO,IAAI,kDAAkD,CAAC;IAC9D,OAAO,IAAI,sDAAsD,CAAC;IAElE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC;AAQD,SAAgB,aAAa,CAC3B,OAAiE,EACjE,WAAwB;IAExB,MAAM,WAAW,GAAG,4BAAmB,CAAC,WAAW,CAAC,CAAC;IAErD,MAAM,MAAM,GAAoD;QAC9D,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,WAAW;QAC/C,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK;QACtE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO;QAC/C,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO;QAC/C,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU;QAC1F,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;IAEF,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACzC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,15 @@
1
+ export type OutputFormat = 'table' | 'json';
2
+ export declare abstract class BaseHandler {
3
+ protected executeWithErrorHandling<T>(operation: () => Promise<T>, operationName: string): Promise<T>;
4
+ protected displaySuccess(message: string, data?: any, format?: OutputFormat): void;
5
+ protected displayData(data: any, format?: OutputFormat): void;
6
+ protected displayAsTable(data: any): void;
7
+ private displayArrayAsTable;
8
+ private displayObjectAsTable;
9
+ private formatTableValue;
10
+ protected displayError(message: string, details?: any): void;
11
+ protected displayWarning(message: string): void;
12
+ protected displayInfo(message: string): void;
13
+ protected validateRequiredParams(params: Record<string, any>, requiredFields: string[]): void;
14
+ }
15
+ //# sourceMappingURL=base.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/base.handler.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,CAAC;AAK5C,8BAAsB,WAAW;cAOf,wBAAwB,CAAC,CAAC,EACxC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,CAAC;IA0Bb,SAAS,CAAC,cAAc,CACtB,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,GAAG,EACV,MAAM,GAAE,YAAsB,GAC7B,IAAI;IAaP,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,GAAE,YAAsB,GAAG,IAAI;IAYtE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAiBzC,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,gBAAgB;IAyBxB,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAY5D,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQ/C,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU5C,SAAS,CAAC,sBAAsB,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,cAAc,EAAE,MAAM,EAAE,GACvB,IAAI;CAcR"}