polyv-live-cli 1.0.8 → 1.1.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.
@@ -0,0 +1,33 @@
1
+ import { QualityMetrics, QualityIssue, VerificationPoint, VerificationSummary, StreamVerificationResult, VerificationReport, ViewerLink, StreamStatusInfo } from '../types/stream';
2
+ export declare const DEFAULT_QUALITY_THRESHOLDS: {
3
+ readonly FPS_MINIMUM: 15;
4
+ readonly BANDWIDTH_MINIMUM: 1000000;
5
+ readonly LATENCY_MAXIMUM: 5000;
6
+ readonly LFR_MAXIMUM: 5;
7
+ };
8
+ export declare const DEFAULT_VERIFICATION_SETTINGS: {
9
+ readonly DURATION: 60;
10
+ readonly INTERVAL: 10;
11
+ readonly QUALITY_THRESHOLD: 15;
12
+ readonly MONITOR_REFRESH: 5;
13
+ };
14
+ export declare function generateVerificationId(): string;
15
+ export declare function extractQualityMetrics(statusInfo: StreamStatusInfo): QualityMetrics;
16
+ export declare function analyzeQualityMetrics(metrics: QualityMetrics, thresholds?: {
17
+ readonly FPS_MINIMUM: 15;
18
+ readonly BANDWIDTH_MINIMUM: 1000000;
19
+ readonly LATENCY_MAXIMUM: 5000;
20
+ readonly LFR_MAXIMUM: 5;
21
+ }): QualityIssue[];
22
+ export declare function createVerificationPoint(checkNumber: number, statusInfo: StreamStatusInfo, qualityThreshold?: number): VerificationPoint;
23
+ export declare function calculateAverageMetrics(points: VerificationPoint[]): QualityMetrics;
24
+ export declare function generateVerificationSummary(points: VerificationPoint[], qualityThreshold?: number): VerificationSummary;
25
+ export declare function generateViewerLinks(channelId: string): ViewerLink[];
26
+ export declare function createVerificationResult(channelId: string, verificationId: string, startTime: Date, points: VerificationPoint[], qualityThreshold?: number): StreamVerificationResult;
27
+ export declare function createVerificationReport(result: StreamVerificationResult, testDuration: number, testInterval: number, version?: string): VerificationReport;
28
+ export declare function saveVerificationReport(report: VerificationReport, filePath: string): Promise<void>;
29
+ export declare function formatFPS(fps: number): string;
30
+ export declare function formatLatency(latency?: number): string;
31
+ export declare function getStatusEmoji(status: 'healthy' | 'warning' | 'error'): string;
32
+ export declare function getSeverityEmoji(severity: 'warning' | 'error' | 'critical'): string;
33
+ //# sourceMappingURL=stream-verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-verification.d.ts","sourceRoot":"","sources":["../../src/utils/stream-verification.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAKzB,eAAO,MAAM,0BAA0B;;;;;CAK7B,CAAC;AAKX,eAAO,MAAM,6BAA6B;;;;;CAKhC,CAAC;AAKX,wBAAgB,sBAAsB,IAAI,MAAM,CAI/C;AAKD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,gBAAgB,GAAG,cAAc,CAQlF;AAKD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EACvB,UAAU;;;;;CAA6B,GACtC,YAAY,EAAE,CAiDhB;AAKD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,gBAAgB,EAC5B,gBAAgB,GAAE,MAAyD,GAC1E,iBAAiB,CAwBnB;AAKD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAmBnF;AAKD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,gBAAgB,GAAE,MAA+C,GAChE,mBAAmB,CAwDrB;AAKD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAoBnE;AAKD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,IAAI,EACf,MAAM,EAAE,iBAAiB,EAAE,EAC3B,gBAAgB,GAAE,MAA+C,GAChE,wBAAwB,CAsB1B;AAKD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,wBAAwB,EAChC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,MAAgB,GACxB,kBAAkB,CAcpB;AAKD,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,kBAAkB,EAC1B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;AAuBD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAKD,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAKD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAO9E;AAKD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAOnF"}
@@ -0,0 +1,315 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DEFAULT_VERIFICATION_SETTINGS = exports.DEFAULT_QUALITY_THRESHOLDS = void 0;
37
+ exports.generateVerificationId = generateVerificationId;
38
+ exports.extractQualityMetrics = extractQualityMetrics;
39
+ exports.analyzeQualityMetrics = analyzeQualityMetrics;
40
+ exports.createVerificationPoint = createVerificationPoint;
41
+ exports.calculateAverageMetrics = calculateAverageMetrics;
42
+ exports.generateVerificationSummary = generateVerificationSummary;
43
+ exports.generateViewerLinks = generateViewerLinks;
44
+ exports.createVerificationResult = createVerificationResult;
45
+ exports.createVerificationReport = createVerificationReport;
46
+ exports.saveVerificationReport = saveVerificationReport;
47
+ exports.formatFPS = formatFPS;
48
+ exports.formatLatency = formatLatency;
49
+ exports.getStatusEmoji = getStatusEmoji;
50
+ exports.getSeverityEmoji = getSeverityEmoji;
51
+ const crypto = __importStar(require("crypto"));
52
+ const fs = __importStar(require("fs"));
53
+ exports.DEFAULT_QUALITY_THRESHOLDS = {
54
+ FPS_MINIMUM: 15,
55
+ BANDWIDTH_MINIMUM: 1000000,
56
+ LATENCY_MAXIMUM: 5000,
57
+ LFR_MAXIMUM: 5
58
+ };
59
+ exports.DEFAULT_VERIFICATION_SETTINGS = {
60
+ DURATION: 60,
61
+ INTERVAL: 10,
62
+ QUALITY_THRESHOLD: exports.DEFAULT_QUALITY_THRESHOLDS.FPS_MINIMUM,
63
+ MONITOR_REFRESH: 5
64
+ };
65
+ function generateVerificationId() {
66
+ const timestamp = Date.now().toString();
67
+ const random = crypto.randomBytes(4).toString('hex');
68
+ return `verify_${timestamp}_${random}`;
69
+ }
70
+ function extractQualityMetrics(statusInfo) {
71
+ const metrics = {
72
+ fps: statusInfo.metrics?.fps || 0,
73
+ bandwidth: statusInfo.metrics?.bandwidth || 0,
74
+ lfr: statusInfo.metrics?.lfr || 0
75
+ };
76
+ return metrics;
77
+ }
78
+ function analyzeQualityMetrics(metrics, thresholds = exports.DEFAULT_QUALITY_THRESHOLDS) {
79
+ const issues = [];
80
+ const timestamp = new Date();
81
+ if (metrics.fps < thresholds.FPS_MINIMUM) {
82
+ issues.push({
83
+ timestamp,
84
+ type: 'fps_low',
85
+ severity: metrics.fps < thresholds.FPS_MINIMUM / 2 ? 'critical' : 'warning',
86
+ message: `FPS is below threshold: ${metrics.fps.toFixed(1)} < ${thresholds.FPS_MINIMUM}`,
87
+ metrics: { fps: metrics.fps }
88
+ });
89
+ }
90
+ if (metrics.bandwidth < thresholds.BANDWIDTH_MINIMUM) {
91
+ issues.push({
92
+ timestamp,
93
+ type: 'bandwidth_low',
94
+ severity: metrics.bandwidth < thresholds.BANDWIDTH_MINIMUM / 2 ? 'critical' : 'warning',
95
+ message: `Bandwidth is below threshold: ${formatBandwidth(metrics.bandwidth)} < ${formatBandwidth(thresholds.BANDWIDTH_MINIMUM)}`,
96
+ metrics: { bandwidth: metrics.bandwidth }
97
+ });
98
+ }
99
+ if (metrics.latency && metrics.latency > thresholds.LATENCY_MAXIMUM) {
100
+ issues.push({
101
+ timestamp,
102
+ type: 'other',
103
+ severity: metrics.latency > thresholds.LATENCY_MAXIMUM * 2 ? 'critical' : 'warning',
104
+ message: `Latency is above threshold: ${metrics.latency}ms > ${thresholds.LATENCY_MAXIMUM}ms`,
105
+ metrics: { latency: metrics.latency }
106
+ });
107
+ }
108
+ if (metrics.lfr && metrics.lfr > thresholds.LFR_MAXIMUM) {
109
+ issues.push({
110
+ timestamp,
111
+ type: 'other',
112
+ severity: metrics.lfr > thresholds.LFR_MAXIMUM * 2 ? 'critical' : 'warning',
113
+ message: `Frame loss rate is above threshold: ${metrics.lfr.toFixed(1)}% > ${thresholds.LFR_MAXIMUM}%`,
114
+ metrics: { lfr: metrics.lfr }
115
+ });
116
+ }
117
+ return issues;
118
+ }
119
+ function createVerificationPoint(checkNumber, statusInfo, qualityThreshold = exports.DEFAULT_QUALITY_THRESHOLDS.FPS_MINIMUM) {
120
+ const metrics = extractQualityMetrics(statusInfo);
121
+ const issues = analyzeQualityMetrics(metrics, {
122
+ ...exports.DEFAULT_QUALITY_THRESHOLDS,
123
+ FPS_MINIMUM: qualityThreshold
124
+ });
125
+ let status;
126
+ if (issues.length === 0) {
127
+ status = 'healthy';
128
+ }
129
+ else if (issues.some(issue => issue.severity === 'critical')) {
130
+ status = 'error';
131
+ }
132
+ else {
133
+ status = 'warning';
134
+ }
135
+ return {
136
+ checkNumber,
137
+ timestamp: new Date(),
138
+ status,
139
+ metrics,
140
+ issues
141
+ };
142
+ }
143
+ function calculateAverageMetrics(points) {
144
+ if (points.length === 0) {
145
+ return { fps: 0, bandwidth: 0, lfr: 0 };
146
+ }
147
+ const totals = points.reduce((acc, point) => ({
148
+ fps: acc.fps + point.metrics.fps,
149
+ bandwidth: acc.bandwidth + point.metrics.bandwidth,
150
+ lfr: acc.lfr + (point.metrics.lfr || 0),
151
+ latency: acc.latency + (point.metrics.latency || 0)
152
+ }), { fps: 0, bandwidth: 0, lfr: 0, latency: 0 });
153
+ const count = points.length;
154
+ return {
155
+ fps: totals.fps / count,
156
+ bandwidth: totals.bandwidth / count,
157
+ lfr: totals.lfr / count,
158
+ latency: totals.latency / count
159
+ };
160
+ }
161
+ function generateVerificationSummary(points, qualityThreshold = exports.DEFAULT_QUALITY_THRESHOLDS.FPS_MINIMUM) {
162
+ if (points.length === 0) {
163
+ return {
164
+ overallStatus: 'poor',
165
+ reliability: 0,
166
+ averageQuality: { fps: 0, bandwidth: 0 },
167
+ totalIssues: 0,
168
+ recommendations: ['No data available for analysis']
169
+ };
170
+ }
171
+ const healthyChecks = points.filter(p => p.status === 'healthy').length;
172
+ const reliability = (healthyChecks / points.length) * 100;
173
+ const allIssues = points.flatMap(p => p.issues);
174
+ const criticalIssues = allIssues.filter(i => i.severity === 'critical').length;
175
+ let overallStatus;
176
+ if (reliability >= 95 && criticalIssues === 0) {
177
+ overallStatus = 'excellent';
178
+ }
179
+ else if (reliability >= 80 && criticalIssues <= 1) {
180
+ overallStatus = 'good';
181
+ }
182
+ else if (reliability >= 60 && criticalIssues <= 3) {
183
+ overallStatus = 'fair';
184
+ }
185
+ else {
186
+ overallStatus = 'poor';
187
+ }
188
+ const averageQuality = calculateAverageMetrics(points);
189
+ const recommendations = [];
190
+ if (averageQuality.fps < qualityThreshold) {
191
+ recommendations.push('Consider increasing source video quality or encoding settings');
192
+ }
193
+ if (averageQuality.bandwidth < exports.DEFAULT_QUALITY_THRESHOLDS.BANDWIDTH_MINIMUM) {
194
+ recommendations.push('Check network connection and increase bitrate');
195
+ }
196
+ if (reliability < 90) {
197
+ recommendations.push('Monitor network stability and FFmpeg configuration');
198
+ }
199
+ if (criticalIssues > 0) {
200
+ recommendations.push('Address critical quality issues immediately');
201
+ }
202
+ if (recommendations.length === 0) {
203
+ recommendations.push('Stream quality is performing well');
204
+ }
205
+ return {
206
+ overallStatus,
207
+ reliability,
208
+ averageQuality,
209
+ totalIssues: allIssues.length,
210
+ recommendations
211
+ };
212
+ }
213
+ function generateViewerLinks(channelId) {
214
+ const links = [
215
+ {
216
+ protocol: 'HLS',
217
+ url: `https://player.polyv.net/live/${channelId}`,
218
+ description: 'Web player (recommended for browsers)'
219
+ },
220
+ {
221
+ protocol: 'RTMP',
222
+ url: `rtmp://live.polyv.net/live/${channelId}`,
223
+ description: 'RTMP stream (for media players)'
224
+ },
225
+ {
226
+ protocol: 'HTTP-FLV',
227
+ url: `https://live.polyv.net/live/${channelId}.flv`,
228
+ description: 'HTTP-FLV stream (low latency)'
229
+ }
230
+ ];
231
+ return links;
232
+ }
233
+ function createVerificationResult(channelId, verificationId, startTime, points, qualityThreshold = exports.DEFAULT_QUALITY_THRESHOLDS.FPS_MINIMUM) {
234
+ const endTime = new Date();
235
+ const successfulChecks = points.filter(p => p.status === 'healthy').length;
236
+ const failedChecks = points.length - successfulChecks;
237
+ const averageMetrics = calculateAverageMetrics(points);
238
+ const qualityIssues = points.flatMap(p => p.issues);
239
+ const viewerLinks = generateViewerLinks(channelId);
240
+ const summary = generateVerificationSummary(points, qualityThreshold);
241
+ return {
242
+ channelId,
243
+ verificationId,
244
+ startTime,
245
+ endTime,
246
+ totalChecks: points.length,
247
+ successfulChecks,
248
+ failedChecks,
249
+ averageMetrics,
250
+ qualityIssues,
251
+ viewerLinks,
252
+ summary
253
+ };
254
+ }
255
+ function createVerificationReport(result, testDuration, testInterval, version = '1.0.0') {
256
+ return {
257
+ metadata: {
258
+ channelId: result.channelId,
259
+ testDuration,
260
+ testInterval,
261
+ timestamp: new Date(),
262
+ version
263
+ },
264
+ summary: result.summary,
265
+ timeline: [],
266
+ issues: result.qualityIssues,
267
+ viewerLinks: result.viewerLinks
268
+ };
269
+ }
270
+ async function saveVerificationReport(report, filePath) {
271
+ try {
272
+ const jsonContent = JSON.stringify(report, null, 2);
273
+ await fs.promises.writeFile(filePath, jsonContent, 'utf8');
274
+ }
275
+ catch (error) {
276
+ throw new Error(`Failed to save verification report: ${error instanceof Error ? error.message : String(error)}`);
277
+ }
278
+ }
279
+ function formatBandwidth(bandwidth) {
280
+ if (bandwidth === 0)
281
+ return '0 bps';
282
+ const units = ['bps', 'Kbps', 'Mbps', 'Gbps'];
283
+ let unitIndex = 0;
284
+ let value = bandwidth;
285
+ while (value >= 1000 && unitIndex < units.length - 1) {
286
+ value /= 1000;
287
+ unitIndex++;
288
+ }
289
+ return `${value.toFixed(1)} ${units[unitIndex]}`;
290
+ }
291
+ function formatFPS(fps) {
292
+ return `${fps.toFixed(1)} FPS`;
293
+ }
294
+ function formatLatency(latency) {
295
+ if (!latency)
296
+ return 'N/A';
297
+ return `${latency.toFixed(0)}ms`;
298
+ }
299
+ function getStatusEmoji(status) {
300
+ switch (status) {
301
+ case 'healthy': return '✅';
302
+ case 'warning': return '⚠️';
303
+ case 'error': return '❌';
304
+ default: return '❓';
305
+ }
306
+ }
307
+ function getSeverityEmoji(severity) {
308
+ switch (severity) {
309
+ case 'warning': return '⚠️';
310
+ case 'error': return '❌';
311
+ case 'critical': return '🚨';
312
+ default: return '❓';
313
+ }
314
+ }
315
+ //# sourceMappingURL=stream-verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-verification.js","sourceRoot":"","sources":["../../src/utils/stream-verification.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polyv-live-cli",
3
- "version": "1.0.8",
3
+ "version": "1.1.2",
4
4
  "description": "CLI tool for managing PolyV live streaming services.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -16,7 +16,9 @@
16
16
  "test": "jest",
17
17
  "test:watch": "jest --watch",
18
18
  "test:coverage": "jest --coverage",
19
- "test:integration": "RUN_INTEGRATION_TESTS=true jest --testPathPattern=integration; npm run cleanup:test-channels",
19
+ "test:debug": "JEST_VERBOSE=true jest",
20
+ "test:coverage:debug": "JEST_VERBOSE=true jest --coverage",
21
+ "test:integration": "RUN_INTEGRATION_TESTS=true POLYV_INTEGRATION_TESTS=true jest --testPathPattern=integration; npm run cleanup:test-channels",
20
22
  "cleanup:test-channels": "node cleanup-test-channels.js",
21
23
  "lint": "eslint src/**/*.ts",
22
24
  "lint:fix": "eslint src/**/*.ts --fix",
@@ -70,6 +72,9 @@
70
72
  "jest": {
71
73
  "preset": "ts-jest",
72
74
  "testEnvironment": "node",
75
+ "setupFiles": [
76
+ "<rootDir>/jest.setup.js"
77
+ ],
73
78
  "collectCoverageFrom": [
74
79
  "src/**/*.ts",
75
80
  "!src/**/*.d.ts"