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.
Files changed (240) hide show
  1. package/dist/commands/ai.commands.d.ts +12 -0
  2. package/dist/commands/ai.commands.d.ts.map +1 -0
  3. package/dist/commands/ai.commands.js +126 -0
  4. package/dist/commands/ai.commands.js.map +1 -0
  5. package/dist/commands/card-push.commands.d.ts +15 -0
  6. package/dist/commands/card-push.commands.d.ts.map +1 -0
  7. package/dist/commands/card-push.commands.js +257 -0
  8. package/dist/commands/card-push.commands.js.map +1 -0
  9. package/dist/commands/chat.commands.d.ts.map +1 -1
  10. package/dist/commands/chat.commands.js +152 -0
  11. package/dist/commands/chat.commands.js.map +1 -1
  12. package/dist/commands/checkin.commands.d.ts +4 -0
  13. package/dist/commands/checkin.commands.d.ts.map +1 -0
  14. package/dist/commands/checkin.commands.js +228 -0
  15. package/dist/commands/checkin.commands.js.map +1 -0
  16. package/dist/commands/donate.commands.d.ts +5 -0
  17. package/dist/commands/donate.commands.d.ts.map +1 -0
  18. package/dist/commands/donate.commands.js +177 -0
  19. package/dist/commands/donate.commands.js.map +1 -0
  20. package/dist/commands/index.d.ts +1 -0
  21. package/dist/commands/index.d.ts.map +1 -1
  22. package/dist/commands/index.js +3 -1
  23. package/dist/commands/index.js.map +1 -1
  24. package/dist/commands/lottery.commands.d.ts +5 -0
  25. package/dist/commands/lottery.commands.d.ts.map +1 -0
  26. package/dist/commands/lottery.commands.js +330 -0
  27. package/dist/commands/lottery.commands.js.map +1 -0
  28. package/dist/commands/platform-label.commands.d.ts +11 -0
  29. package/dist/commands/platform-label.commands.d.ts.map +1 -0
  30. package/dist/commands/platform-label.commands.js +173 -0
  31. package/dist/commands/platform-label.commands.js.map +1 -0
  32. package/dist/commands/platform.commands.d.ts +13 -0
  33. package/dist/commands/platform.commands.d.ts.map +1 -0
  34. package/dist/commands/platform.commands.js +366 -0
  35. package/dist/commands/platform.commands.js.map +1 -0
  36. package/dist/commands/promotion.commands.d.ts +12 -0
  37. package/dist/commands/promotion.commands.d.ts.map +1 -0
  38. package/dist/commands/promotion.commands.js +98 -0
  39. package/dist/commands/promotion.commands.js.map +1 -0
  40. package/dist/commands/qa.commands.d.ts +4 -0
  41. package/dist/commands/qa.commands.d.ts.map +1 -0
  42. package/dist/commands/qa.commands.js +159 -0
  43. package/dist/commands/qa.commands.js.map +1 -0
  44. package/dist/commands/questionnaire.commands.d.ts +4 -0
  45. package/dist/commands/questionnaire.commands.d.ts.map +1 -0
  46. package/dist/commands/questionnaire.commands.js +187 -0
  47. package/dist/commands/questionnaire.commands.js.map +1 -0
  48. package/dist/commands/transmit.commands.d.ts +12 -0
  49. package/dist/commands/transmit.commands.d.ts.map +1 -0
  50. package/dist/commands/transmit.commands.js +98 -0
  51. package/dist/commands/transmit.commands.js.map +1 -0
  52. package/dist/commands/viewer.commands.d.ts +5 -0
  53. package/dist/commands/viewer.commands.d.ts.map +1 -0
  54. package/dist/commands/viewer.commands.js +257 -0
  55. package/dist/commands/viewer.commands.js.map +1 -0
  56. package/dist/commands/watch-condition.commands.d.ts +5 -0
  57. package/dist/commands/watch-condition.commands.d.ts.map +1 -0
  58. package/dist/commands/watch-condition.commands.js +158 -0
  59. package/dist/commands/watch-condition.commands.js.map +1 -0
  60. package/dist/commands/whitelist.commands.d.ts +5 -0
  61. package/dist/commands/whitelist.commands.d.ts.map +1 -0
  62. package/dist/commands/whitelist.commands.js +216 -0
  63. package/dist/commands/whitelist.commands.js.map +1 -0
  64. package/dist/handlers/ai-digital-human.handler.d.ts +18 -0
  65. package/dist/handlers/ai-digital-human.handler.d.ts.map +1 -0
  66. package/dist/handlers/ai-digital-human.handler.js +134 -0
  67. package/dist/handlers/ai-digital-human.handler.js.map +1 -0
  68. package/dist/handlers/card-push.handler.d.ts +25 -0
  69. package/dist/handlers/card-push.handler.d.ts.map +1 -0
  70. package/dist/handlers/card-push.handler.js +287 -0
  71. package/dist/handlers/card-push.handler.js.map +1 -0
  72. package/dist/handlers/chat.handler.d.ts +17 -1
  73. package/dist/handlers/chat.handler.d.ts.map +1 -1
  74. package/dist/handlers/chat.handler.js +272 -0
  75. package/dist/handlers/chat.handler.js.map +1 -1
  76. package/dist/handlers/checkin.handler.d.ts +22 -0
  77. package/dist/handlers/checkin.handler.d.ts.map +1 -0
  78. package/dist/handlers/checkin.handler.js +261 -0
  79. package/dist/handlers/checkin.handler.js.map +1 -0
  80. package/dist/handlers/donate.handler.d.ts +18 -0
  81. package/dist/handlers/donate.handler.d.ts.map +1 -0
  82. package/dist/handlers/donate.handler.js +221 -0
  83. package/dist/handlers/donate.handler.js.map +1 -0
  84. package/dist/handlers/lottery.handler.d.ts +29 -0
  85. package/dist/handlers/lottery.handler.d.ts.map +1 -0
  86. package/dist/handlers/lottery.handler.js +386 -0
  87. package/dist/handlers/lottery.handler.js.map +1 -0
  88. package/dist/handlers/platform-label.handler.d.ts +18 -0
  89. package/dist/handlers/platform-label.handler.d.ts.map +1 -0
  90. package/dist/handlers/platform-label.handler.js +113 -0
  91. package/dist/handlers/platform-label.handler.js.map +1 -0
  92. package/dist/handlers/platform.handler.d.ts +24 -0
  93. package/dist/handlers/platform.handler.d.ts.map +1 -0
  94. package/dist/handlers/platform.handler.js +302 -0
  95. package/dist/handlers/platform.handler.js.map +1 -0
  96. package/dist/handlers/promotion.handler.d.ts +16 -0
  97. package/dist/handlers/promotion.handler.d.ts.map +1 -0
  98. package/dist/handlers/promotion.handler.js +103 -0
  99. package/dist/handlers/promotion.handler.js.map +1 -0
  100. package/dist/handlers/qa-questionnaire.handler.d.ts +27 -0
  101. package/dist/handlers/qa-questionnaire.handler.d.ts.map +1 -0
  102. package/dist/handlers/qa-questionnaire.handler.js +386 -0
  103. package/dist/handlers/qa-questionnaire.handler.js.map +1 -0
  104. package/dist/handlers/transmit.handler.d.ts +15 -0
  105. package/dist/handlers/transmit.handler.d.ts.map +1 -0
  106. package/dist/handlers/transmit.handler.js +86 -0
  107. package/dist/handlers/transmit.handler.js.map +1 -0
  108. package/dist/handlers/viewer.handler.d.ts +23 -0
  109. package/dist/handlers/viewer.handler.d.ts.map +1 -0
  110. package/dist/handlers/viewer.handler.js +322 -0
  111. package/dist/handlers/viewer.handler.js.map +1 -0
  112. package/dist/handlers/watch-condition.handler.d.ts +18 -0
  113. package/dist/handlers/watch-condition.handler.d.ts.map +1 -0
  114. package/dist/handlers/watch-condition.handler.js +178 -0
  115. package/dist/handlers/watch-condition.handler.js.map +1 -0
  116. package/dist/handlers/whitelist.handler.d.ts +20 -0
  117. package/dist/handlers/whitelist.handler.d.ts.map +1 -0
  118. package/dist/handlers/whitelist.handler.js +241 -0
  119. package/dist/handlers/whitelist.handler.js.map +1 -0
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +30 -4
  122. package/dist/index.js.map +1 -1
  123. package/dist/services/ai-digital-human-service.d.ts +10 -0
  124. package/dist/services/ai-digital-human-service.d.ts.map +1 -0
  125. package/dist/services/ai-digital-human-service.js +64 -0
  126. package/dist/services/ai-digital-human-service.js.map +1 -0
  127. package/dist/services/card-push-service.d.ts +16 -0
  128. package/dist/services/card-push-service.d.ts.map +1 -0
  129. package/dist/services/card-push-service.js +153 -0
  130. package/dist/services/card-push-service.js.map +1 -0
  131. package/dist/services/chat.service.sdk.d.ts +39 -1
  132. package/dist/services/chat.service.sdk.d.ts.map +1 -1
  133. package/dist/services/chat.service.sdk.js +60 -0
  134. package/dist/services/chat.service.sdk.js.map +1 -1
  135. package/dist/services/checkin-service.d.ts +14 -0
  136. package/dist/services/checkin-service.d.ts.map +1 -0
  137. package/dist/services/checkin-service.js +89 -0
  138. package/dist/services/checkin-service.js.map +1 -0
  139. package/dist/services/donate-service.d.ts +12 -0
  140. package/dist/services/donate-service.d.ts.map +1 -0
  141. package/dist/services/donate-service.js +59 -0
  142. package/dist/services/donate-service.js.map +1 -0
  143. package/dist/services/lottery-service.d.ts +17 -0
  144. package/dist/services/lottery-service.d.ts.map +1 -0
  145. package/dist/services/lottery-service.js +84 -0
  146. package/dist/services/lottery-service.js.map +1 -0
  147. package/dist/services/platform-label-service.d.ts +21 -0
  148. package/dist/services/platform-label-service.d.ts.map +1 -0
  149. package/dist/services/platform-label-service.js +56 -0
  150. package/dist/services/platform-label-service.js.map +1 -0
  151. package/dist/services/platform-service.d.ts +47 -0
  152. package/dist/services/platform-service.d.ts.map +1 -0
  153. package/dist/services/platform-service.js +144 -0
  154. package/dist/services/platform-service.js.map +1 -0
  155. package/dist/services/promotion-service.d.ts +12 -0
  156. package/dist/services/promotion-service.d.ts.map +1 -0
  157. package/dist/services/promotion-service.js +54 -0
  158. package/dist/services/promotion-service.js.map +1 -0
  159. package/dist/services/qa-questionnaire-service.d.ts +15 -0
  160. package/dist/services/qa-questionnaire-service.d.ts.map +1 -0
  161. package/dist/services/qa-questionnaire-service.js +102 -0
  162. package/dist/services/qa-questionnaire-service.js.map +1 -0
  163. package/dist/services/stream.service.sdk.d.ts.map +1 -1
  164. package/dist/services/stream.service.sdk.js +8 -12
  165. package/dist/services/stream.service.sdk.js.map +1 -1
  166. package/dist/services/transmit-service.d.ts +9 -0
  167. package/dist/services/transmit-service.d.ts.map +1 -0
  168. package/dist/services/transmit-service.js +45 -0
  169. package/dist/services/transmit-service.js.map +1 -0
  170. package/dist/services/viewer-service.d.ts +29 -0
  171. package/dist/services/viewer-service.d.ts.map +1 -0
  172. package/dist/services/viewer-service.js +106 -0
  173. package/dist/services/viewer-service.js.map +1 -0
  174. package/dist/services/watch-condition-service.d.ts +16 -0
  175. package/dist/services/watch-condition-service.d.ts.map +1 -0
  176. package/dist/services/watch-condition-service.js +38 -0
  177. package/dist/services/watch-condition-service.js.map +1 -0
  178. package/dist/services/whitelist-service.d.ts +50 -0
  179. package/dist/services/whitelist-service.d.ts.map +1 -0
  180. package/dist/services/whitelist-service.js +56 -0
  181. package/dist/services/whitelist-service.js.map +1 -0
  182. package/dist/types/ai-digital-human.d.ts +49 -0
  183. package/dist/types/ai-digital-human.d.ts.map +1 -0
  184. package/dist/types/ai-digital-human.js +3 -0
  185. package/dist/types/ai-digital-human.js.map +1 -0
  186. package/dist/types/card-push.d.ts +151 -0
  187. package/dist/types/card-push.d.ts.map +1 -0
  188. package/dist/types/card-push.js +3 -0
  189. package/dist/types/card-push.js.map +1 -0
  190. package/dist/types/chat.d.ts +35 -0
  191. package/dist/types/chat.d.ts.map +1 -1
  192. package/dist/types/checkin.d.ts +57 -0
  193. package/dist/types/checkin.d.ts.map +1 -0
  194. package/dist/types/checkin.js +3 -0
  195. package/dist/types/checkin.js.map +1 -0
  196. package/dist/types/donate.d.ts +92 -0
  197. package/dist/types/donate.d.ts.map +1 -0
  198. package/dist/types/donate.js +3 -0
  199. package/dist/types/donate.js.map +1 -0
  200. package/dist/types/index.d.ts +2 -0
  201. package/dist/types/index.d.ts.map +1 -1
  202. package/dist/types/index.js +2 -0
  203. package/dist/types/index.js.map +1 -1
  204. package/dist/types/lottery.d.ts +110 -0
  205. package/dist/types/lottery.d.ts.map +1 -0
  206. package/dist/types/lottery.js +3 -0
  207. package/dist/types/lottery.js.map +1 -0
  208. package/dist/types/platform-label.d.ts +29 -0
  209. package/dist/types/platform-label.d.ts.map +1 -0
  210. package/dist/types/platform-label.js +3 -0
  211. package/dist/types/platform-label.js.map +1 -0
  212. package/dist/types/platform.d.ts +44 -0
  213. package/dist/types/platform.d.ts.map +1 -0
  214. package/dist/types/platform.js +11 -0
  215. package/dist/types/platform.js.map +1 -0
  216. package/dist/types/promotion.d.ts +31 -0
  217. package/dist/types/promotion.d.ts.map +1 -0
  218. package/dist/types/promotion.js +3 -0
  219. package/dist/types/promotion.js.map +1 -0
  220. package/dist/types/qa.d.ts +90 -0
  221. package/dist/types/qa.d.ts.map +1 -0
  222. package/dist/types/qa.js +3 -0
  223. package/dist/types/qa.js.map +1 -0
  224. package/dist/types/transmit.d.ts +40 -0
  225. package/dist/types/transmit.d.ts.map +1 -0
  226. package/dist/types/transmit.js +3 -0
  227. package/dist/types/transmit.js.map +1 -0
  228. package/dist/types/viewer.d.ts +36 -0
  229. package/dist/types/viewer.d.ts.map +1 -0
  230. package/dist/types/viewer.js +3 -0
  231. package/dist/types/viewer.js.map +1 -0
  232. package/dist/types/watch-condition.d.ts +49 -0
  233. package/dist/types/watch-condition.d.ts.map +1 -0
  234. package/dist/types/watch-condition.js +18 -0
  235. package/dist/types/watch-condition.js.map +1 -0
  236. package/dist/types/whitelist.d.ts +36 -0
  237. package/dist/types/whitelist.d.ts.map +1 -0
  238. package/dist/types/whitelist.js +3 -0
  239. package/dist/types/whitelist.js.map +1 -0
  240. 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,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function validateOutputFormat(value: string): 'table' | 'json';
3
+ export declare function registerQuestionnaireCommands(program: Command): void;
4
+ //# sourceMappingURL=questionnaire.commands.d.ts.map
@@ -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"}