polyv-live-cli 1.2.17 → 1.2.21
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/commands/ai.commands.d.ts +12 -0
- package/dist/commands/ai.commands.d.ts.map +1 -0
- package/dist/commands/ai.commands.js +126 -0
- package/dist/commands/ai.commands.js.map +1 -0
- package/dist/commands/card-push.commands.d.ts +15 -0
- package/dist/commands/card-push.commands.d.ts.map +1 -0
- package/dist/commands/card-push.commands.js +257 -0
- package/dist/commands/card-push.commands.js.map +1 -0
- package/dist/commands/chat.commands.d.ts.map +1 -1
- package/dist/commands/chat.commands.js +152 -0
- package/dist/commands/chat.commands.js.map +1 -1
- package/dist/commands/checkin.commands.d.ts +4 -0
- package/dist/commands/checkin.commands.d.ts.map +1 -0
- package/dist/commands/checkin.commands.js +228 -0
- package/dist/commands/checkin.commands.js.map +1 -0
- package/dist/commands/donate.commands.d.ts +5 -0
- package/dist/commands/donate.commands.d.ts.map +1 -0
- package/dist/commands/donate.commands.js +177 -0
- package/dist/commands/donate.commands.js.map +1 -0
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +3 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/lottery.commands.d.ts +5 -0
- package/dist/commands/lottery.commands.d.ts.map +1 -0
- package/dist/commands/lottery.commands.js +330 -0
- package/dist/commands/lottery.commands.js.map +1 -0
- package/dist/commands/platform-label.commands.d.ts +11 -0
- package/dist/commands/platform-label.commands.d.ts.map +1 -0
- package/dist/commands/platform-label.commands.js +173 -0
- package/dist/commands/platform-label.commands.js.map +1 -0
- package/dist/commands/platform.commands.d.ts +13 -0
- package/dist/commands/platform.commands.d.ts.map +1 -0
- package/dist/commands/platform.commands.js +366 -0
- package/dist/commands/platform.commands.js.map +1 -0
- package/dist/commands/promotion.commands.d.ts +12 -0
- package/dist/commands/promotion.commands.d.ts.map +1 -0
- package/dist/commands/promotion.commands.js +98 -0
- package/dist/commands/promotion.commands.js.map +1 -0
- package/dist/commands/qa.commands.d.ts +4 -0
- package/dist/commands/qa.commands.d.ts.map +1 -0
- package/dist/commands/qa.commands.js +159 -0
- package/dist/commands/qa.commands.js.map +1 -0
- package/dist/commands/questionnaire.commands.d.ts +4 -0
- package/dist/commands/questionnaire.commands.d.ts.map +1 -0
- package/dist/commands/questionnaire.commands.js +187 -0
- package/dist/commands/questionnaire.commands.js.map +1 -0
- package/dist/commands/transmit.commands.d.ts +12 -0
- package/dist/commands/transmit.commands.d.ts.map +1 -0
- package/dist/commands/transmit.commands.js +98 -0
- package/dist/commands/transmit.commands.js.map +1 -0
- package/dist/commands/viewer.commands.d.ts +5 -0
- package/dist/commands/viewer.commands.d.ts.map +1 -0
- package/dist/commands/viewer.commands.js +257 -0
- package/dist/commands/viewer.commands.js.map +1 -0
- package/dist/commands/watch-condition.commands.d.ts +5 -0
- package/dist/commands/watch-condition.commands.d.ts.map +1 -0
- package/dist/commands/watch-condition.commands.js +158 -0
- package/dist/commands/watch-condition.commands.js.map +1 -0
- package/dist/commands/whitelist.commands.d.ts +5 -0
- package/dist/commands/whitelist.commands.d.ts.map +1 -0
- package/dist/commands/whitelist.commands.js +216 -0
- package/dist/commands/whitelist.commands.js.map +1 -0
- package/dist/handlers/ai-digital-human.handler.d.ts +18 -0
- package/dist/handlers/ai-digital-human.handler.d.ts.map +1 -0
- package/dist/handlers/ai-digital-human.handler.js +134 -0
- package/dist/handlers/ai-digital-human.handler.js.map +1 -0
- package/dist/handlers/card-push.handler.d.ts +25 -0
- package/dist/handlers/card-push.handler.d.ts.map +1 -0
- package/dist/handlers/card-push.handler.js +287 -0
- package/dist/handlers/card-push.handler.js.map +1 -0
- package/dist/handlers/chat.handler.d.ts +17 -1
- package/dist/handlers/chat.handler.d.ts.map +1 -1
- package/dist/handlers/chat.handler.js +272 -0
- package/dist/handlers/chat.handler.js.map +1 -1
- package/dist/handlers/checkin.handler.d.ts +22 -0
- package/dist/handlers/checkin.handler.d.ts.map +1 -0
- package/dist/handlers/checkin.handler.js +261 -0
- package/dist/handlers/checkin.handler.js.map +1 -0
- package/dist/handlers/donate.handler.d.ts +18 -0
- package/dist/handlers/donate.handler.d.ts.map +1 -0
- package/dist/handlers/donate.handler.js +221 -0
- package/dist/handlers/donate.handler.js.map +1 -0
- package/dist/handlers/lottery.handler.d.ts +29 -0
- package/dist/handlers/lottery.handler.d.ts.map +1 -0
- package/dist/handlers/lottery.handler.js +386 -0
- package/dist/handlers/lottery.handler.js.map +1 -0
- package/dist/handlers/platform-label.handler.d.ts +18 -0
- package/dist/handlers/platform-label.handler.d.ts.map +1 -0
- package/dist/handlers/platform-label.handler.js +113 -0
- package/dist/handlers/platform-label.handler.js.map +1 -0
- package/dist/handlers/platform.handler.d.ts +24 -0
- package/dist/handlers/platform.handler.d.ts.map +1 -0
- package/dist/handlers/platform.handler.js +302 -0
- package/dist/handlers/platform.handler.js.map +1 -0
- package/dist/handlers/promotion.handler.d.ts +16 -0
- package/dist/handlers/promotion.handler.d.ts.map +1 -0
- package/dist/handlers/promotion.handler.js +103 -0
- package/dist/handlers/promotion.handler.js.map +1 -0
- package/dist/handlers/qa-questionnaire.handler.d.ts +27 -0
- package/dist/handlers/qa-questionnaire.handler.d.ts.map +1 -0
- package/dist/handlers/qa-questionnaire.handler.js +386 -0
- package/dist/handlers/qa-questionnaire.handler.js.map +1 -0
- package/dist/handlers/transmit.handler.d.ts +15 -0
- package/dist/handlers/transmit.handler.d.ts.map +1 -0
- package/dist/handlers/transmit.handler.js +86 -0
- package/dist/handlers/transmit.handler.js.map +1 -0
- package/dist/handlers/viewer.handler.d.ts +23 -0
- package/dist/handlers/viewer.handler.d.ts.map +1 -0
- package/dist/handlers/viewer.handler.js +322 -0
- package/dist/handlers/viewer.handler.js.map +1 -0
- package/dist/handlers/watch-condition.handler.d.ts +18 -0
- package/dist/handlers/watch-condition.handler.d.ts.map +1 -0
- package/dist/handlers/watch-condition.handler.js +178 -0
- package/dist/handlers/watch-condition.handler.js.map +1 -0
- package/dist/handlers/whitelist.handler.d.ts +20 -0
- package/dist/handlers/whitelist.handler.d.ts.map +1 -0
- package/dist/handlers/whitelist.handler.js +241 -0
- package/dist/handlers/whitelist.handler.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -4
- package/dist/index.js.map +1 -1
- package/dist/services/ai-digital-human-service.d.ts +10 -0
- package/dist/services/ai-digital-human-service.d.ts.map +1 -0
- package/dist/services/ai-digital-human-service.js +64 -0
- package/dist/services/ai-digital-human-service.js.map +1 -0
- package/dist/services/card-push-service.d.ts +16 -0
- package/dist/services/card-push-service.d.ts.map +1 -0
- package/dist/services/card-push-service.js +153 -0
- package/dist/services/card-push-service.js.map +1 -0
- package/dist/services/chat.service.sdk.d.ts +39 -1
- package/dist/services/chat.service.sdk.d.ts.map +1 -1
- package/dist/services/chat.service.sdk.js +60 -0
- package/dist/services/chat.service.sdk.js.map +1 -1
- package/dist/services/checkin-service.d.ts +14 -0
- package/dist/services/checkin-service.d.ts.map +1 -0
- package/dist/services/checkin-service.js +89 -0
- package/dist/services/checkin-service.js.map +1 -0
- package/dist/services/donate-service.d.ts +12 -0
- package/dist/services/donate-service.d.ts.map +1 -0
- package/dist/services/donate-service.js +59 -0
- package/dist/services/donate-service.js.map +1 -0
- package/dist/services/lottery-service.d.ts +17 -0
- package/dist/services/lottery-service.d.ts.map +1 -0
- package/dist/services/lottery-service.js +84 -0
- package/dist/services/lottery-service.js.map +1 -0
- package/dist/services/platform-label-service.d.ts +21 -0
- package/dist/services/platform-label-service.d.ts.map +1 -0
- package/dist/services/platform-label-service.js +56 -0
- package/dist/services/platform-label-service.js.map +1 -0
- package/dist/services/platform-service.d.ts +47 -0
- package/dist/services/platform-service.d.ts.map +1 -0
- package/dist/services/platform-service.js +144 -0
- package/dist/services/platform-service.js.map +1 -0
- package/dist/services/promotion-service.d.ts +12 -0
- package/dist/services/promotion-service.d.ts.map +1 -0
- package/dist/services/promotion-service.js +54 -0
- package/dist/services/promotion-service.js.map +1 -0
- package/dist/services/qa-questionnaire-service.d.ts +15 -0
- package/dist/services/qa-questionnaire-service.d.ts.map +1 -0
- package/dist/services/qa-questionnaire-service.js +102 -0
- package/dist/services/qa-questionnaire-service.js.map +1 -0
- package/dist/services/stream.service.sdk.d.ts.map +1 -1
- package/dist/services/stream.service.sdk.js +8 -12
- package/dist/services/stream.service.sdk.js.map +1 -1
- package/dist/services/transmit-service.d.ts +9 -0
- package/dist/services/transmit-service.d.ts.map +1 -0
- package/dist/services/transmit-service.js +45 -0
- package/dist/services/transmit-service.js.map +1 -0
- package/dist/services/viewer-service.d.ts +29 -0
- package/dist/services/viewer-service.d.ts.map +1 -0
- package/dist/services/viewer-service.js +106 -0
- package/dist/services/viewer-service.js.map +1 -0
- package/dist/services/watch-condition-service.d.ts +16 -0
- package/dist/services/watch-condition-service.d.ts.map +1 -0
- package/dist/services/watch-condition-service.js +38 -0
- package/dist/services/watch-condition-service.js.map +1 -0
- package/dist/services/whitelist-service.d.ts +50 -0
- package/dist/services/whitelist-service.d.ts.map +1 -0
- package/dist/services/whitelist-service.js +56 -0
- package/dist/services/whitelist-service.js.map +1 -0
- package/dist/types/ai-digital-human.d.ts +49 -0
- package/dist/types/ai-digital-human.d.ts.map +1 -0
- package/dist/types/ai-digital-human.js +3 -0
- package/dist/types/ai-digital-human.js.map +1 -0
- package/dist/types/card-push.d.ts +151 -0
- package/dist/types/card-push.d.ts.map +1 -0
- package/dist/types/card-push.js +3 -0
- package/dist/types/card-push.js.map +1 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/types/checkin.d.ts +57 -0
- package/dist/types/checkin.d.ts.map +1 -0
- package/dist/types/checkin.js +3 -0
- package/dist/types/checkin.js.map +1 -0
- package/dist/types/donate.d.ts +92 -0
- package/dist/types/donate.d.ts.map +1 -0
- package/dist/types/donate.js +3 -0
- package/dist/types/donate.js.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/lottery.d.ts +110 -0
- package/dist/types/lottery.d.ts.map +1 -0
- package/dist/types/lottery.js +3 -0
- package/dist/types/lottery.js.map +1 -0
- package/dist/types/platform-label.d.ts +29 -0
- package/dist/types/platform-label.d.ts.map +1 -0
- package/dist/types/platform-label.js +3 -0
- package/dist/types/platform-label.js.map +1 -0
- package/dist/types/platform.d.ts +44 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +11 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/promotion.d.ts +31 -0
- package/dist/types/promotion.d.ts.map +1 -0
- package/dist/types/promotion.js +3 -0
- package/dist/types/promotion.js.map +1 -0
- package/dist/types/qa.d.ts +90 -0
- package/dist/types/qa.d.ts.map +1 -0
- package/dist/types/qa.js +3 -0
- package/dist/types/qa.js.map +1 -0
- package/dist/types/transmit.d.ts +40 -0
- package/dist/types/transmit.d.ts.map +1 -0
- package/dist/types/transmit.js +3 -0
- package/dist/types/transmit.js.map +1 -0
- package/dist/types/viewer.d.ts +36 -0
- package/dist/types/viewer.d.ts.map +1 -0
- package/dist/types/viewer.js +3 -0
- package/dist/types/viewer.js.map +1 -0
- package/dist/types/watch-condition.d.ts +49 -0
- package/dist/types/watch-condition.d.ts.map +1 -0
- package/dist/types/watch-condition.js +18 -0
- package/dist/types/watch-condition.js.map +1 -0
- package/dist/types/whitelist.d.ts +36 -0
- package/dist/types/whitelist.d.ts.map +1 -0
- package/dist/types/whitelist.js +3 -0
- package/dist/types/whitelist.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOutputFormat = validateOutputFormat;
|
|
4
|
+
exports.registerQaCommands = registerQaCommands;
|
|
5
|
+
const qa_questionnaire_handler_1 = require("../handlers/qa-questionnaire.handler");
|
|
6
|
+
const manager_1 = require("../config/manager");
|
|
7
|
+
const auth_adapter_1 = require("../config/auth-adapter");
|
|
8
|
+
const errors_1 = require("../utils/errors");
|
|
9
|
+
function validateOutputFormat(value) {
|
|
10
|
+
if (!['table', 'json'].includes(value)) {
|
|
11
|
+
throw new Error('Output format must be either "table" or "json"');
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
function registerQaCommands(program) {
|
|
16
|
+
const qaCmd = program.command('qa');
|
|
17
|
+
qaCmd.description('Manage live streaming QA question cards');
|
|
18
|
+
const sendCmd = qaCmd
|
|
19
|
+
.command('send')
|
|
20
|
+
.description('Send a QA question card to the channel')
|
|
21
|
+
.requiredOption('-c, --channel-id <id>', 'channel ID')
|
|
22
|
+
.requiredOption('--question-id <id>', 'question ID')
|
|
23
|
+
.option('--duration <seconds>', 'answer duration in seconds (1-99)', parseInt)
|
|
24
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
25
|
+
.action(async (options) => {
|
|
26
|
+
try {
|
|
27
|
+
const parentOptions = program.opts();
|
|
28
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
29
|
+
const handler = new qa_questionnaire_handler_1.QaQuestionnaireHandler(authConfig, serviceConfig);
|
|
30
|
+
await handler.sendQa({
|
|
31
|
+
channelId: options.channelId,
|
|
32
|
+
questionId: options.questionId,
|
|
33
|
+
duration: options.duration,
|
|
34
|
+
output: options.output,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
sendCmd.addHelpText('after', `
|
|
43
|
+
Examples:
|
|
44
|
+
# Send a QA question card
|
|
45
|
+
$ polyv-live-cli qa send -c "3151318" --question-id "gv0uf9s5v7"
|
|
46
|
+
|
|
47
|
+
# Send with time limit (30 seconds)
|
|
48
|
+
$ polyv-live-cli qa send -c "3151318" --question-id "gv0uf9s5v7" --duration 30
|
|
49
|
+
|
|
50
|
+
# JSON output
|
|
51
|
+
$ polyv-live-cli qa send -c "3151318" --question-id "gv0uf9s5v7" -o json
|
|
52
|
+
|
|
53
|
+
Output Formats:
|
|
54
|
+
table - Formatted table output (default)
|
|
55
|
+
json - JSON format for programmatic use
|
|
56
|
+
`);
|
|
57
|
+
const listCmd = qaCmd
|
|
58
|
+
.command('list')
|
|
59
|
+
.description('List QA question cards for the channel')
|
|
60
|
+
.requiredOption('-c, --channel-id <id>', 'channel ID')
|
|
61
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
62
|
+
.action(async (options) => {
|
|
63
|
+
try {
|
|
64
|
+
const parentOptions = program.opts();
|
|
65
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
66
|
+
const handler = new qa_questionnaire_handler_1.QaQuestionnaireHandler(authConfig, serviceConfig);
|
|
67
|
+
await handler.listQa({
|
|
68
|
+
channelId: options.channelId,
|
|
69
|
+
output: options.output,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
listCmd.addHelpText('after', `
|
|
78
|
+
Examples:
|
|
79
|
+
# List all QA question cards
|
|
80
|
+
$ polyv-live-cli qa list -c "3151318"
|
|
81
|
+
|
|
82
|
+
# JSON output
|
|
83
|
+
$ polyv-live-cli qa list -c "3151318" -o json
|
|
84
|
+
|
|
85
|
+
Output Formats:
|
|
86
|
+
table - Formatted table output (default)
|
|
87
|
+
json - JSON format for programmatic use
|
|
88
|
+
`);
|
|
89
|
+
const stopCmd = qaCmd
|
|
90
|
+
.command('stop')
|
|
91
|
+
.description('Stop a QA question card and get answer statistics')
|
|
92
|
+
.requiredOption('-c, --channel-id <id>', 'channel ID')
|
|
93
|
+
.requiredOption('--question-id <id>', 'question ID')
|
|
94
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
95
|
+
.action(async (options) => {
|
|
96
|
+
try {
|
|
97
|
+
const parentOptions = program.opts();
|
|
98
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
99
|
+
const handler = new qa_questionnaire_handler_1.QaQuestionnaireHandler(authConfig, serviceConfig);
|
|
100
|
+
await handler.stopQa({
|
|
101
|
+
channelId: options.channelId,
|
|
102
|
+
questionId: options.questionId,
|
|
103
|
+
output: options.output,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
stopCmd.addHelpText('after', `
|
|
112
|
+
Examples:
|
|
113
|
+
# Stop a QA question card
|
|
114
|
+
$ polyv-live-cli qa stop -c "3151318" --question-id "gv0uf9s5v7"
|
|
115
|
+
|
|
116
|
+
# JSON output
|
|
117
|
+
$ polyv-live-cli qa stop -c "3151318" --question-id "gv0uf9s5v7" -o json
|
|
118
|
+
|
|
119
|
+
Output Formats:
|
|
120
|
+
table - Formatted table output (default)
|
|
121
|
+
json - JSON format for programmatic use
|
|
122
|
+
`);
|
|
123
|
+
}
|
|
124
|
+
async function loadAuthAndServiceConfig(parentOptions) {
|
|
125
|
+
const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
|
|
126
|
+
if (!authResult) {
|
|
127
|
+
throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
|
|
128
|
+
}
|
|
129
|
+
let configResult;
|
|
130
|
+
try {
|
|
131
|
+
configResult = await manager_1.configManager.load({
|
|
132
|
+
cliOptions: parentOptions,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
|
|
137
|
+
configResult = {
|
|
138
|
+
config: {
|
|
139
|
+
baseUrl: 'https://api.polyv.net',
|
|
140
|
+
timeout: 30000,
|
|
141
|
+
debug: false
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const serviceConfig = {
|
|
150
|
+
baseUrl: configResult.config.baseUrl,
|
|
151
|
+
timeout: configResult.config.timeout,
|
|
152
|
+
debug: configResult.config.debug,
|
|
153
|
+
};
|
|
154
|
+
return {
|
|
155
|
+
authConfig: authResult.config,
|
|
156
|
+
serviceConfig,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=qa.commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa.commands.js","sourceRoot":"","sources":["../../src/commands/qa.commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questionnaire.commands.d.ts","sourceRoot":"","sources":["../../src/commands/questionnaire.commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAKpE;AAMD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2JpE"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOutputFormat = validateOutputFormat;
|
|
4
|
+
exports.registerQuestionnaireCommands = registerQuestionnaireCommands;
|
|
5
|
+
const qa_questionnaire_handler_1 = require("../handlers/qa-questionnaire.handler");
|
|
6
|
+
const manager_1 = require("../config/manager");
|
|
7
|
+
const auth_adapter_1 = require("../config/auth-adapter");
|
|
8
|
+
const errors_1 = require("../utils/errors");
|
|
9
|
+
function validateOutputFormat(value) {
|
|
10
|
+
if (!['table', 'json'].includes(value)) {
|
|
11
|
+
throw new Error('Output format must be either "table" or "json"');
|
|
12
|
+
}
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
function registerQuestionnaireCommands(program) {
|
|
16
|
+
const questionnaireCmd = program.command('questionnaire');
|
|
17
|
+
questionnaireCmd.description('Manage live streaming questionnaires');
|
|
18
|
+
const createCmd = questionnaireCmd
|
|
19
|
+
.command('create')
|
|
20
|
+
.description('Create a new questionnaire')
|
|
21
|
+
.requiredOption('-c, --channel-id <id>', 'channel ID')
|
|
22
|
+
.requiredOption('--title <title>', 'questionnaire title')
|
|
23
|
+
.requiredOption('--questions <json>', 'questions array as JSON string')
|
|
24
|
+
.option('--custom-questionnaire-id <id>', 'custom questionnaire ID')
|
|
25
|
+
.option('--auto-publish-time <timestamp>', 'auto publish time (timestamp)', parseInt)
|
|
26
|
+
.option('--auto-end-time <timestamp>', 'auto end time (timestamp)', parseInt)
|
|
27
|
+
.option('--privacy-enabled', 'enable privacy mode (Y/N)')
|
|
28
|
+
.option('--privacy-content <text>', 'privacy content')
|
|
29
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
30
|
+
.action(async (options) => {
|
|
31
|
+
try {
|
|
32
|
+
const parentOptions = program.opts();
|
|
33
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
34
|
+
const handler = new qa_questionnaire_handler_1.QaQuestionnaireHandler(authConfig, serviceConfig);
|
|
35
|
+
let questions;
|
|
36
|
+
try {
|
|
37
|
+
questions = JSON.parse(options.questions);
|
|
38
|
+
}
|
|
39
|
+
catch (parseError) {
|
|
40
|
+
(0, errors_1.logError)(new Error('Invalid JSON format for --questions parameter'));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
await handler.createQuestionnaire({
|
|
44
|
+
channelId: options.channelId,
|
|
45
|
+
title: options.title,
|
|
46
|
+
questions,
|
|
47
|
+
customQuestionnaireId: options.customQuestionnaireId,
|
|
48
|
+
autoPublishTime: options.autoPublishTime,
|
|
49
|
+
autoEndTime: options.autoEndTime,
|
|
50
|
+
...(options.privacyEnabled ? { privacyEnabled: 'Y' } : {}),
|
|
51
|
+
privacyContent: options.privacyContent,
|
|
52
|
+
output: options.output,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
createCmd.addHelpText('after', `
|
|
61
|
+
Examples:
|
|
62
|
+
# Create questionnaire with required fields
|
|
63
|
+
$ polyv-live-cli questionnaire create -c "3151318" --title "Survey" \\
|
|
64
|
+
--questions '[{"name":"Your gender?","type":"R","options":["Male","Female"],"required":"Y"}]'
|
|
65
|
+
|
|
66
|
+
# Create questionnaire with optional fields
|
|
67
|
+
$ polyv-live-cli questionnaire create -c "3151318" --title "Feedback" \\
|
|
68
|
+
--questions '[{"name":"How would you rate our service?","type":"X","required":"Y"}]' \\
|
|
69
|
+
--custom-questionnaire-id "custom-001"
|
|
70
|
+
|
|
71
|
+
# JSON output
|
|
72
|
+
$ polyv-live-cli questionnaire create -c "3151318" --title "Survey" -o json
|
|
73
|
+
`);
|
|
74
|
+
const listCmd = questionnaireCmd
|
|
75
|
+
.command('list')
|
|
76
|
+
.description('List questionnaires with pagination')
|
|
77
|
+
.requiredOption('-c, --channel-id <id>', 'channel ID')
|
|
78
|
+
.option('--page <number>', 'page number', parseInt)
|
|
79
|
+
.option('--size <number>', 'page size', parseInt)
|
|
80
|
+
.option('--session-id <id>', 'filter by session ID')
|
|
81
|
+
.option('--start-date <date>', 'start date filter (yyyy-MM-dd)')
|
|
82
|
+
.option('--end-date <date>', 'end date filter (yyyy-MM-dd)')
|
|
83
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
84
|
+
.action(async (options) => {
|
|
85
|
+
try {
|
|
86
|
+
const parentOptions = program.opts();
|
|
87
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
88
|
+
const handler = new qa_questionnaire_handler_1.QaQuestionnaireHandler(authConfig, serviceConfig);
|
|
89
|
+
await handler.listQuestionnaires({
|
|
90
|
+
channelId: options.channelId,
|
|
91
|
+
page: options.page,
|
|
92
|
+
size: options.size,
|
|
93
|
+
sessionId: options.sessionId,
|
|
94
|
+
startDate: options.startDate,
|
|
95
|
+
endDate: options.endDate,
|
|
96
|
+
output: options.output,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
listCmd.addHelpText('after', `
|
|
105
|
+
Examples:
|
|
106
|
+
# List all questionnaires
|
|
107
|
+
$ polyv-live-cli questionnaire list -c "3151318"
|
|
108
|
+
|
|
109
|
+
# List with pagination
|
|
110
|
+
$ polyv-live-cli questionnaire list -c "3151318" --page 1 --size 20
|
|
111
|
+
|
|
112
|
+
# Filter by session ID
|
|
113
|
+
$ polyv-live-cli questionnaire list -c "3151318" --session-id "fwly13xczv"
|
|
114
|
+
|
|
115
|
+
# Filter by date range
|
|
116
|
+
$ polyv-live-cli questionnaire list -c "3151318" --start-date "2024-01-01" --end-date "2024-01-31"
|
|
117
|
+
|
|
118
|
+
# JSON output
|
|
119
|
+
$ polyv-live-cli questionnaire list -c "3151318" -o json
|
|
120
|
+
`);
|
|
121
|
+
const detailCmd = questionnaireCmd
|
|
122
|
+
.command('detail')
|
|
123
|
+
.description('Get questionnaire detail with questions')
|
|
124
|
+
.requiredOption('-c, --channel-id <id>', 'channel ID')
|
|
125
|
+
.requiredOption('--questionnaire-id <id>', 'questionnaire ID')
|
|
126
|
+
.option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
|
|
127
|
+
.action(async (options) => {
|
|
128
|
+
try {
|
|
129
|
+
const parentOptions = program.opts();
|
|
130
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
|
|
131
|
+
const handler = new qa_questionnaire_handler_1.QaQuestionnaireHandler(authConfig, serviceConfig);
|
|
132
|
+
await handler.getQuestionnaireDetail({
|
|
133
|
+
channelId: options.channelId,
|
|
134
|
+
questionnaireId: options.questionnaireId,
|
|
135
|
+
output: options.output,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
detailCmd.addHelpText('after', `
|
|
144
|
+
Examples:
|
|
145
|
+
# Get questionnaire detail
|
|
146
|
+
$ polyv-live-cli questionnaire detail -c "3151318" --questionnaire-id "fs9v59nq4u"
|
|
147
|
+
|
|
148
|
+
# JSON output
|
|
149
|
+
$ polyv-live-cli questionnaire detail -c "3151318" --questionnaire-id "fs9v59nq4u" -o json
|
|
150
|
+
`);
|
|
151
|
+
}
|
|
152
|
+
async function loadAuthAndServiceConfig(parentOptions) {
|
|
153
|
+
const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
|
|
154
|
+
if (!authResult) {
|
|
155
|
+
throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
|
|
156
|
+
}
|
|
157
|
+
let configResult;
|
|
158
|
+
try {
|
|
159
|
+
configResult = await manager_1.configManager.load({
|
|
160
|
+
cliOptions: parentOptions,
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
|
|
165
|
+
configResult = {
|
|
166
|
+
config: {
|
|
167
|
+
baseUrl: 'https://api.polyv.net',
|
|
168
|
+
timeout: 30000,
|
|
169
|
+
debug: false,
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const serviceConfig = {
|
|
178
|
+
baseUrl: configResult.config.baseUrl,
|
|
179
|
+
timeout: configResult.config.timeout,
|
|
180
|
+
debug: configResult.config.debug,
|
|
181
|
+
};
|
|
182
|
+
return {
|
|
183
|
+
authConfig: authResult.config,
|
|
184
|
+
serviceConfig,
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=questionnaire.commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questionnaire.commands.js","sourceRoot":"","sources":["../../src/commands/questionnaire.commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { AuthConfig } from '../types/auth';
|
|
3
|
+
import { OutputFormat } from '../types/platform';
|
|
4
|
+
import { TransmitServiceConfig } from '../types/transmit';
|
|
5
|
+
export declare function loadAuthAndServiceConfig(parentOptions: Record<string, unknown>): Promise<{
|
|
6
|
+
authConfig: AuthConfig;
|
|
7
|
+
serviceConfig: TransmitServiceConfig;
|
|
8
|
+
isVerbose: boolean;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function validateOutputFormat(format: string): OutputFormat;
|
|
11
|
+
export declare function registerTransmitCommands(program: Command): void;
|
|
12
|
+
//# sourceMappingURL=transmit.commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transmit.commands.d.ts","sourceRoot":"","sources":["../../src/commands/transmit.commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAS1D,wBAAsB,wBAAwB,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;IAC9F,UAAU,EAAE,UAAU,CAAC;IACvB,aAAa,EAAE,qBAAqB,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC,CAwCD;AAQD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAKjE;AAKD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8C/D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.loadAuthAndServiceConfig = loadAuthAndServiceConfig;
|
|
4
|
+
exports.validateOutputFormat = validateOutputFormat;
|
|
5
|
+
exports.registerTransmitCommands = registerTransmitCommands;
|
|
6
|
+
const transmit_handler_1 = require("../handlers/transmit.handler");
|
|
7
|
+
const auth_adapter_1 = require("../config/auth-adapter");
|
|
8
|
+
const manager_1 = require("../config/manager");
|
|
9
|
+
const errors_1 = require("../utils/errors");
|
|
10
|
+
const DEFAULT_TIMEOUT_MS = 30000;
|
|
11
|
+
async function loadAuthAndServiceConfig(parentOptions) {
|
|
12
|
+
const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
|
|
13
|
+
if (!authResult) {
|
|
14
|
+
throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
|
|
15
|
+
}
|
|
16
|
+
let configResult;
|
|
17
|
+
try {
|
|
18
|
+
configResult = await manager_1.configManager.load({
|
|
19
|
+
cliOptions: parentOptions,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
|
|
24
|
+
configResult = {
|
|
25
|
+
config: {
|
|
26
|
+
baseUrl: 'https://api.polyv.net',
|
|
27
|
+
timeout: DEFAULT_TIMEOUT_MS,
|
|
28
|
+
debug: false,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const serviceConfig = {
|
|
37
|
+
baseUrl: configResult.config.baseUrl,
|
|
38
|
+
timeout: configResult.config.timeout,
|
|
39
|
+
debug: configResult.config.debug,
|
|
40
|
+
};
|
|
41
|
+
const isVerbose = !!parentOptions['verbose'];
|
|
42
|
+
if (isVerbose) {
|
|
43
|
+
console.log('Using authentication from:', authResult.source);
|
|
44
|
+
}
|
|
45
|
+
return { authConfig: authResult.config, serviceConfig, isVerbose };
|
|
46
|
+
}
|
|
47
|
+
function validateOutputFormat(format) {
|
|
48
|
+
if (format !== 'table' && format !== 'json') {
|
|
49
|
+
throw new Error('Invalid output format. Must be table or json');
|
|
50
|
+
}
|
|
51
|
+
return format;
|
|
52
|
+
}
|
|
53
|
+
function registerTransmitCommands(program) {
|
|
54
|
+
const transmitCmd = program
|
|
55
|
+
.command('transmit')
|
|
56
|
+
.description('Manage transmit channels for live streaming (管理直播转播频道)');
|
|
57
|
+
transmitCmd
|
|
58
|
+
.command('create')
|
|
59
|
+
.description('Batch create transmit channels (批量创建转播频道)')
|
|
60
|
+
.requiredOption('--channelId <id>', 'Source channel ID (发起转播的频道号)')
|
|
61
|
+
.requiredOption('--names <names>', 'Channel names comma-separated (频道名称,逗号分隔)')
|
|
62
|
+
.option('-o, --output <format>', 'Output format (table|json)', validateOutputFormat, 'table')
|
|
63
|
+
.action(async (options) => {
|
|
64
|
+
try {
|
|
65
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(options);
|
|
66
|
+
const handler = new transmit_handler_1.TransmitHandler(authConfig, serviceConfig);
|
|
67
|
+
await handler.batchCreateTransmitChannels({
|
|
68
|
+
channelId: options.channelId,
|
|
69
|
+
names: options.names,
|
|
70
|
+
output: options.output,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
transmitCmd
|
|
79
|
+
.command('list')
|
|
80
|
+
.description('Get transmit associations (获取转播关联列表)')
|
|
81
|
+
.requiredOption('--channelId <id>', 'Channel ID (频道号)')
|
|
82
|
+
.option('-o, --output <format>', 'Output format (table|json)', validateOutputFormat, 'table')
|
|
83
|
+
.action(async (options) => {
|
|
84
|
+
try {
|
|
85
|
+
const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(options);
|
|
86
|
+
const handler = new transmit_handler_1.TransmitHandler(authConfig, serviceConfig);
|
|
87
|
+
await handler.getTransmitAssociations({
|
|
88
|
+
channelId: options.channelId,
|
|
89
|
+
output: options.output,
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
(0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=transmit.commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transmit.commands.js","sourceRoot":"","sources":["../../src/commands/transmit.commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { OutputFormat } from '../handlers/base.handler';
|
|
3
|
+
export declare function validateOutputFormat(value: string): OutputFormat;
|
|
4
|
+
export declare function registerViewerCommands(program: Command): void;
|
|
5
|
+
//# sourceMappingURL=viewer.commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer.commands.d.ts","sourceRoot":"","sources":["../../src/commands/viewer.commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAOxD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAKhE;AAMD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgP7D"}
|