polyv-live-cli 1.1.13 → 1.2.6

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 (104) hide show
  1. package/dist/commands/coupon.commands.d.ts +8 -0
  2. package/dist/commands/coupon.commands.d.ts.map +1 -0
  3. package/dist/commands/coupon.commands.js +258 -0
  4. package/dist/commands/coupon.commands.js.map +1 -0
  5. package/dist/commands/index.d.ts +1 -0
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +3 -1
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/product.commands.d.ts +10 -0
  10. package/dist/commands/product.commands.d.ts.map +1 -0
  11. package/dist/commands/product.commands.js +398 -0
  12. package/dist/commands/product.commands.js.map +1 -0
  13. package/dist/commands/setup.commands.d.ts +4 -0
  14. package/dist/commands/setup.commands.d.ts.map +1 -0
  15. package/dist/commands/setup.commands.js +132 -0
  16. package/dist/commands/setup.commands.js.map +1 -0
  17. package/dist/commands/stream.commands.d.ts.map +1 -1
  18. package/dist/commands/stream.commands.js +7 -15
  19. package/dist/commands/stream.commands.js.map +1 -1
  20. package/dist/handlers/channel.handler.d.ts.map +1 -1
  21. package/dist/handlers/channel.handler.js +2 -2
  22. package/dist/handlers/channel.handler.js.map +1 -1
  23. package/dist/handlers/coupon.handler.d.ts +54 -0
  24. package/dist/handlers/coupon.handler.d.ts.map +1 -0
  25. package/dist/handlers/coupon.handler.js +258 -0
  26. package/dist/handlers/coupon.handler.js.map +1 -0
  27. package/dist/handlers/product.handler.d.ts +28 -0
  28. package/dist/handlers/product.handler.d.ts.map +1 -0
  29. package/dist/handlers/product.handler.js +182 -0
  30. package/dist/handlers/product.handler.js.map +1 -0
  31. package/dist/handlers/setup.handler.d.ts +30 -0
  32. package/dist/handlers/setup.handler.d.ts.map +1 -0
  33. package/dist/handlers/setup.handler.js +160 -0
  34. package/dist/handlers/setup.handler.js.map +1 -0
  35. package/dist/handlers/stream.handler.d.ts +3 -2
  36. package/dist/handlers/stream.handler.d.ts.map +1 -1
  37. package/dist/handlers/stream.handler.js +3 -2
  38. package/dist/handlers/stream.handler.js.map +1 -1
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +17 -4
  41. package/dist/index.js.map +1 -1
  42. package/dist/sdk/client.d.ts +8 -0
  43. package/dist/sdk/client.d.ts.map +1 -0
  44. package/dist/sdk/client.js +37 -0
  45. package/dist/sdk/client.js.map +1 -0
  46. package/dist/sdk/index.d.ts +3 -0
  47. package/dist/sdk/index.d.ts.map +1 -0
  48. package/dist/sdk/index.js +12 -0
  49. package/dist/sdk/index.js.map +1 -0
  50. package/dist/services/{channel.service.d.ts → channel.service.sdk.d.ts} +6 -8
  51. package/dist/services/channel.service.sdk.d.ts.map +1 -0
  52. package/dist/services/channel.service.sdk.js +265 -0
  53. package/dist/services/channel.service.sdk.js.map +1 -0
  54. package/dist/services/index.d.ts +4 -3
  55. package/dist/services/index.d.ts.map +1 -1
  56. package/dist/services/index.js +7 -5
  57. package/dist/services/index.js.map +1 -1
  58. package/dist/services/product.service.sdk.d.ts +22 -0
  59. package/dist/services/product.service.sdk.d.ts.map +1 -0
  60. package/dist/services/product.service.sdk.js +242 -0
  61. package/dist/services/product.service.sdk.js.map +1 -0
  62. package/dist/services/{stream.service.d.ts → stream.service.sdk.d.ts} +4 -12
  63. package/dist/services/stream.service.sdk.d.ts.map +1 -0
  64. package/dist/services/stream.service.sdk.js +265 -0
  65. package/dist/services/stream.service.sdk.js.map +1 -0
  66. package/dist/setup/output-renderer.d.ts +39 -0
  67. package/dist/setup/output-renderer.d.ts.map +1 -0
  68. package/dist/setup/output-renderer.js +151 -0
  69. package/dist/setup/output-renderer.js.map +1 -0
  70. package/dist/setup/resource-handlers.d.ts +13 -0
  71. package/dist/setup/resource-handlers.d.ts.map +1 -0
  72. package/dist/setup/resource-handlers.js +136 -0
  73. package/dist/setup/resource-handlers.js.map +1 -0
  74. package/dist/setup/scene-config-loader.d.ts +52 -0
  75. package/dist/setup/scene-config-loader.d.ts.map +1 -0
  76. package/dist/setup/scene-config-loader.js +275 -0
  77. package/dist/setup/scene-config-loader.js.map +1 -0
  78. package/dist/setup/scene-executor.d.ts +44 -0
  79. package/dist/setup/scene-executor.d.ts.map +1 -0
  80. package/dist/setup/scene-executor.js +162 -0
  81. package/dist/setup/scene-executor.js.map +1 -0
  82. package/dist/setup/variable-resolver.d.ts +16 -0
  83. package/dist/setup/variable-resolver.d.ts.map +1 -0
  84. package/dist/setup/variable-resolver.js +176 -0
  85. package/dist/setup/variable-resolver.js.map +1 -0
  86. package/dist/setup-scenes/e-commerce.yaml +123 -0
  87. package/dist/types/index.d.ts +1 -0
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/types/index.js +1 -0
  90. package/dist/types/index.js.map +1 -1
  91. package/dist/types/product.d.ts +135 -0
  92. package/dist/types/product.d.ts.map +1 -0
  93. package/dist/types/product.js +3 -0
  94. package/dist/types/product.js.map +1 -0
  95. package/dist/utils/data-manager.d.ts +3 -3
  96. package/dist/utils/data-manager.d.ts.map +1 -1
  97. package/dist/utils/data-manager.js.map +1 -1
  98. package/package.json +33 -32
  99. package/dist/services/channel.service.d.ts.map +0 -1
  100. package/dist/services/channel.service.js +0 -672
  101. package/dist/services/channel.service.js.map +0 -1
  102. package/dist/services/stream.service.d.ts.map +0 -1
  103. package/dist/services/stream.service.js +0 -489
  104. package/dist/services/stream.service.js.map +0 -1
@@ -0,0 +1,398 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseInteger = parseInteger;
4
+ exports.validateSize = validateSize;
5
+ exports.validateOutputFormat = validateOutputFormat;
6
+ exports.validateProductType = validateProductType;
7
+ exports.validateProductStatus = validateProductStatus;
8
+ exports.validateLinkType = validateLinkType;
9
+ exports.validatePrice = validatePrice;
10
+ exports.registerProductCommands = registerProductCommands;
11
+ const product_handler_1 = require("../handlers/product.handler");
12
+ const manager_1 = require("../config/manager");
13
+ const auth_adapter_1 = require("../config/auth-adapter");
14
+ const errors_1 = require("../utils/errors");
15
+ async function loadAuthAndServiceConfig(parentOptions) {
16
+ const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
17
+ if (!authResult) {
18
+ throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
19
+ }
20
+ let configResult;
21
+ try {
22
+ configResult = await manager_1.configManager.load({
23
+ cliOptions: parentOptions,
24
+ });
25
+ }
26
+ catch (error) {
27
+ if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
28
+ configResult = {
29
+ config: {
30
+ baseUrl: 'https://api.polyv.net',
31
+ timeout: 30000,
32
+ debug: false
33
+ }
34
+ };
35
+ }
36
+ else {
37
+ throw error;
38
+ }
39
+ }
40
+ const serviceConfig = {
41
+ baseUrl: configResult.config.baseUrl,
42
+ timeout: configResult.config.timeout,
43
+ debug: configResult.config.debug
44
+ };
45
+ const isVerbose = !!parentOptions.verbose;
46
+ if (isVerbose) {
47
+ console.log(`🔐 Authentication Source: ${authResult.source}`);
48
+ if (authResult.accountName) {
49
+ console.log(`👤 Account: ${authResult.accountName}`);
50
+ }
51
+ console.log('');
52
+ }
53
+ const result = {
54
+ authConfig: authResult.config,
55
+ serviceConfig,
56
+ isVerbose,
57
+ };
58
+ if (authResult.source) {
59
+ result.authSource = authResult.source;
60
+ }
61
+ if (authResult.accountName) {
62
+ result.accountName = authResult.accountName;
63
+ }
64
+ return result;
65
+ }
66
+ function parseInteger(value) {
67
+ const parsed = parseInt(value, 10);
68
+ if (isNaN(parsed)) {
69
+ throw new Error(`"${value}" is not a valid integer`);
70
+ }
71
+ return parsed;
72
+ }
73
+ function validateSize(value) {
74
+ const parsed = parseInteger(value);
75
+ if (parsed < 1 || parsed > 100) {
76
+ throw new Error('Size must be between 1 and 100');
77
+ }
78
+ return parsed;
79
+ }
80
+ function validateOutputFormat(value) {
81
+ if (!['table', 'json'].includes(value)) {
82
+ throw new Error('Output format must be either "table" or "json"');
83
+ }
84
+ return value;
85
+ }
86
+ function validateProductType(value) {
87
+ const validTypes = ['normal', 'finance', 'position'];
88
+ if (!validTypes.includes(value)) {
89
+ throw new Error('Product type must be one of: normal, finance, position');
90
+ }
91
+ return value;
92
+ }
93
+ function validateProductStatus(value) {
94
+ const parsed = parseInt(value, 10);
95
+ if (parsed !== 1 && parsed !== 2) {
96
+ throw new Error('Product status must be 1 (上架) or 2 (下架)');
97
+ }
98
+ return parsed;
99
+ }
100
+ function validateLinkType(value) {
101
+ const parsed = parseInt(value, 10);
102
+ if (parsed !== 10 && parsed !== 11) {
103
+ throw new Error('Link type must be 10 (通用链接) or 11 (多平台链接)');
104
+ }
105
+ return parsed;
106
+ }
107
+ function validatePrice(value) {
108
+ const parsed = parseFloat(value);
109
+ if (isNaN(parsed)) {
110
+ throw new Error(`"${value}" is not a valid price`);
111
+ }
112
+ if (parsed < 0) {
113
+ throw new Error('Price cannot be negative');
114
+ }
115
+ return parsed;
116
+ }
117
+ function registerProductCommands(program) {
118
+ const productCmd = program.command('product');
119
+ productCmd.description('Manage live streaming channel products');
120
+ const listCmd = productCmd
121
+ .command('list')
122
+ .description('List channel products with pagination')
123
+ .option('-P, --page <number>', 'page number (optional, minimum 1, default 1)', parseInteger, 1)
124
+ .option('-s, --size <number>', 'items per page (optional, 1-100, default 20)', validateSize, 20)
125
+ .option('-c, --channel-id <channelId>', 'filter by specific channel ID (optional)')
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 productHandler = new product_handler_1.ProductHandler(authConfig, serviceConfig);
132
+ const listOptions = {
133
+ page: options.page,
134
+ size: options.size,
135
+ channelId: options.channelId,
136
+ output: options.output
137
+ };
138
+ await productHandler.listProducts(listOptions);
139
+ }
140
+ catch (error) {
141
+ if (error instanceof Error && error.message.includes('Authentication')) {
142
+ const diagnostics = auth_adapter_1.authAdapter.getDiagnostics(program.opts());
143
+ console.error('\n🔍 Authentication Diagnostics:');
144
+ diagnostics.availableSources.forEach(source => {
145
+ const status = source.appId && source.appSecret ? '✅' : '❌';
146
+ console.error(` ${status} ${source.metadata.source}: ${source.type}`);
147
+ });
148
+ if (diagnostics.errors.length > 0) {
149
+ console.error('\n❌ Errors:');
150
+ diagnostics.errors.forEach(error => console.error(` - ${error}`));
151
+ }
152
+ }
153
+ (0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
154
+ process.exit(1);
155
+ }
156
+ });
157
+ listCmd.addHelpText('after', `
158
+ Examples:
159
+ $ polyv-cli product list
160
+ $ polyv-cli product list -P 2 -s 10
161
+ $ polyv-cli product list -c "3151318"
162
+ $ polyv-cli product list -o json
163
+
164
+ Alternative (full parameter names):
165
+ $ polyv-cli product list --page 2 --size 10 --output json
166
+ $ polyv-cli product list --channel-id "3151318"
167
+
168
+ Pagination:
169
+ --page, -P Page number (minimum 1, default 1)
170
+ --size, -s Items per page (1-100, default 20)
171
+
172
+ Filtering:
173
+ --channel-id, -c Show products only from specific channel
174
+
175
+ Output Formats:
176
+ table - Formatted table output (default)
177
+ json - JSON format for programmatic use
178
+
179
+ Notes:
180
+ - Products are displayed with ID, channel, name, type, status, price and dates
181
+ - Use --channel-id to filter products for a specific channel
182
+ - All product prices are shown in Chinese Yuan (¥)
183
+ - If both original price and real price exist, both are displayed
184
+ `);
185
+ const addCmd = productCmd
186
+ .command('add')
187
+ .description('Add a new product to channel')
188
+ .requiredOption('-c, --channel-id <channelId>', 'channel ID')
189
+ .requiredOption('-n, --name <name>', 'product name')
190
+ .requiredOption('--status <status>', 'product status: 1 (on-shelf) | 2 (off-shelf)', validateProductStatus)
191
+ .requiredOption('--link-type <type>', 'link type: 10 (universal) | 11 (multi-platform)', validateLinkType)
192
+ .option('-t, --product-type <type>', 'product type: normal | finance | position (default: normal)', validateProductType, 'normal')
193
+ .option('--cover <url>', 'product cover URL')
194
+ .option('-l, --link <url>', 'universal link (required when link-type=10)')
195
+ .option('--pc-link <url>', 'PC link')
196
+ .option('--mobile-link <url>', 'mobile web link')
197
+ .option('--wx-miniprogram-link <url>', 'WeChat miniprogram link')
198
+ .option('--wx-miniprogram-original-id <id>', 'WeChat miniprogram original ID')
199
+ .option('--mobile-app-link <url>', 'mobile app link')
200
+ .option('--android-link <url>', 'Android native link')
201
+ .option('--ios-link <url>', 'iOS native link')
202
+ .option('--params <json>', 'custom params as JSON string')
203
+ .option('--product-desc <desc>', 'product description')
204
+ .option('--features <json>', 'features/tags as JSON array string')
205
+ .option('--btn-show <text>', 'button text')
206
+ .option('--yield <value>', 'yield/rate for finance products')
207
+ .option('--price-type <type>', 'price type: AMOUNT | CUSTOM')
208
+ .option('--real-price <amount>', 'real price amount', validatePrice)
209
+ .option('--custom-price <text>', 'custom price text')
210
+ .option('--original-price-type <type>', 'original price type: AMOUNT | CUSTOM')
211
+ .option('--price <amount>', 'original price amount', validatePrice)
212
+ .option('--custom-original-price <text>', 'custom original price text')
213
+ .option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
214
+ .action(async (options) => {
215
+ try {
216
+ const parentOptions = program.opts();
217
+ const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
218
+ const productHandler = new product_handler_1.ProductHandler(authConfig, serviceConfig);
219
+ const addOptions = {
220
+ channelId: options.channelId,
221
+ name: options.name,
222
+ status: options.status,
223
+ linkType: options.linkType,
224
+ productType: options.productType,
225
+ cover: options.cover,
226
+ link: options.link,
227
+ pcLink: options.pcLink,
228
+ mobileLink: options.mobileLink,
229
+ wxMiniprogramLink: options.wxMiniprogramLink,
230
+ wxMiniprogramOriginalId: options.wxMiniprogramOriginalId,
231
+ mobileAppLink: options.mobileAppLink,
232
+ androidLink: options.androidLink,
233
+ iosLink: options.iosLink,
234
+ params: options.params,
235
+ productDesc: options.productDesc,
236
+ features: options.features,
237
+ btnShow: options.btnShow,
238
+ yield: options.yield,
239
+ priceType: options.priceType,
240
+ realPrice: options.realPrice,
241
+ customPrice: options.customPrice,
242
+ originalPriceType: options.originalPriceType,
243
+ price: options.price,
244
+ customOrignalPrice: options.customOriginalPrice,
245
+ output: options.output
246
+ };
247
+ await productHandler.addProduct(addOptions);
248
+ }
249
+ catch (error) {
250
+ (0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
251
+ process.exit(1);
252
+ }
253
+ });
254
+ addCmd.addHelpText('after', `
255
+ Examples:
256
+ # Add a normal product
257
+ $ polyv-cli product add -c "3151318" -n "测试商品" --status 1 --link-type 10 \\
258
+ -l "https://example.com/product" --cover "https://example.com/cover.jpg" \\
259
+ --real-price 99.9 --price 199.9
260
+
261
+ # Add a finance product
262
+ $ polyv-cli product add -c "3151318" -n "理财产品" --status 1 --link-type 10 \\
263
+ -l "https://example.com/finance" --yield "5.5%" -t finance
264
+
265
+ Product Types:
266
+ normal - Regular product (default)
267
+ finance - Financial product
268
+ position - Job position
269
+
270
+ Status Values:
271
+ 1 - On shelf (上架)
272
+ 2 - Off shelf (下架)
273
+
274
+ Link Types:
275
+ 10 - Universal link (requires --link)
276
+ 11 - Multi-platform link (use --pc-link, --mobile-link, etc.)
277
+
278
+ Price Types:
279
+ AMOUNT - Numeric price (use --real-price, --price)
280
+ CUSTOM - Custom text price (use --custom-price)
281
+ `);
282
+ const updateCmd = productCmd
283
+ .command('update')
284
+ .description('Update an existing product')
285
+ .requiredOption('-c, --channel-id <channelId>', 'channel ID')
286
+ .requiredOption('-p, --product-id <productId>', 'product ID', parseInteger)
287
+ .option('-n, --name <name>', 'product name')
288
+ .option('--status <status>', 'product status: 1 | 2', validateProductStatus)
289
+ .option('--link-type <type>', 'link type: 10 | 11', validateLinkType)
290
+ .option('-t, --product-type <type>', 'product type: normal | finance | position', validateProductType)
291
+ .option('--cover <url>', 'product cover URL')
292
+ .option('-l, --link <url>', 'universal link')
293
+ .option('--pc-link <url>', 'PC link')
294
+ .option('--mobile-link <url>', 'mobile web link')
295
+ .option('--wx-miniprogram-link <url>', 'WeChat miniprogram link')
296
+ .option('--wx-miniprogram-original-id <id>', 'WeChat miniprogram original ID')
297
+ .option('--mobile-app-link <url>', 'mobile app link')
298
+ .option('--android-link <url>', 'Android native link')
299
+ .option('--ios-link <url>', 'iOS native link')
300
+ .option('--params <json>', 'custom params as JSON string')
301
+ .option('--product-desc <desc>', 'product description')
302
+ .option('--features <json>', 'features/tags as JSON array string')
303
+ .option('--btn-show <text>', 'button text')
304
+ .option('--yield <value>', 'yield/rate for finance products')
305
+ .option('--price-type <type>', 'price type: AMOUNT | CUSTOM')
306
+ .option('--real-price <amount>', 'real price amount', validatePrice)
307
+ .option('--custom-price <text>', 'custom price text')
308
+ .option('--original-price-type <type>', 'original price type: AMOUNT | CUSTOM')
309
+ .option('--price <amount>', 'original price amount', validatePrice)
310
+ .option('--custom-original-price <text>', 'custom original price text')
311
+ .option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
312
+ .action(async (options) => {
313
+ try {
314
+ const parentOptions = program.opts();
315
+ const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
316
+ const productHandler = new product_handler_1.ProductHandler(authConfig, serviceConfig);
317
+ const updateOptions = {
318
+ channelId: options.channelId,
319
+ productId: options.productId,
320
+ name: options.name,
321
+ status: options.status,
322
+ linkType: options.linkType,
323
+ cover: options.cover,
324
+ link: options.link,
325
+ pcLink: options.pcLink,
326
+ mobileLink: options.mobileLink,
327
+ wxMiniprogramLink: options.wxMiniprogramLink,
328
+ wxMiniprogramOriginalId: options.wxMiniprogramOriginalId,
329
+ mobileAppLink: options.mobileAppLink,
330
+ androidLink: options.androidLink,
331
+ iosLink: options.iosLink,
332
+ params: options.params,
333
+ productDesc: options.productDesc,
334
+ features: options.features,
335
+ btnShow: options.btnShow,
336
+ yield: options.yield,
337
+ priceType: options.priceType,
338
+ realPrice: options.realPrice,
339
+ customPrice: options.customPrice,
340
+ originalPriceType: options.originalPriceType,
341
+ price: options.price,
342
+ customOrignalPrice: options.customOriginalPrice,
343
+ output: options.output
344
+ };
345
+ await productHandler.updateProduct(updateOptions);
346
+ }
347
+ catch (error) {
348
+ (0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
349
+ process.exit(1);
350
+ }
351
+ });
352
+ updateCmd.addHelpText('after', `
353
+ Examples:
354
+ # Update product name
355
+ $ polyv-cli product update -c "3151318" -p 12345 -n "新商品名" --status 1 --link-type 10
356
+
357
+ # Change product status to off-shelf
358
+ $ polyv-cli product update -c "3151318" -p 12345 -n "商品名" --status 2 --link-type 10
359
+ `);
360
+ const deleteCmd = productCmd
361
+ .command('delete')
362
+ .description('Delete a product from channel')
363
+ .requiredOption('-c, --channel-id <channelId>', 'channel ID')
364
+ .requiredOption('-p, --product-id <productId>', 'product ID', parseInteger)
365
+ .option('-f, --force', 'force delete without confirmation')
366
+ .option('-o, --output <format>', 'output format (table|json)', validateOutputFormat, 'table')
367
+ .action(async (options) => {
368
+ try {
369
+ const parentOptions = program.opts();
370
+ const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
371
+ const productHandler = new product_handler_1.ProductHandler(authConfig, serviceConfig);
372
+ const deleteOptions = {
373
+ channelId: options.channelId,
374
+ productId: options.productId,
375
+ force: options.force || false,
376
+ output: options.output
377
+ };
378
+ await productHandler.deleteProduct(deleteOptions);
379
+ }
380
+ catch (error) {
381
+ (0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
382
+ process.exit(1);
383
+ }
384
+ });
385
+ deleteCmd.addHelpText('after', `
386
+ Examples:
387
+ # Delete with confirmation
388
+ $ polyv-cli product delete -c "3151318" -p 12345
389
+
390
+ # Force delete without confirmation
391
+ $ polyv-cli product delete -c "3151318" -p 12345 --force
392
+
393
+ Note:
394
+ Deletion is permanent and cannot be undone.
395
+ Use --force to skip the confirmation prompt.
396
+ `);
397
+ }
398
+ //# sourceMappingURL=product.commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"product.commands.js","sourceRoot":"","sources":["../../src/commands/product.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 registerSetupCommand(program: Command): void;
4
+ //# sourceMappingURL=setup.commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.commands.d.ts","sourceRoot":"","sources":["../../src/commands/setup.commands.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyEpC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAKpE;AAMD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqF3D"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateOutputFormat = validateOutputFormat;
4
+ exports.registerSetupCommand = registerSetupCommand;
5
+ const setup_handler_1 = require("../handlers/setup.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
+ const DEFAULT_TIMEOUT_MS = 30000;
10
+ async function loadAuthAndServiceConfig(parentOptions) {
11
+ const authResult = auth_adapter_1.authAdapter.tryGetAuthConfig(parentOptions);
12
+ if (!authResult) {
13
+ throw new Error(auth_adapter_1.authAdapter.getStatusMessage(parentOptions));
14
+ }
15
+ let configResult;
16
+ try {
17
+ configResult = await manager_1.configManager.load({
18
+ cliOptions: parentOptions,
19
+ });
20
+ }
21
+ catch (error) {
22
+ if (error instanceof Error && error.message.includes('Auth configuration is incomplete')) {
23
+ configResult = {
24
+ config: {
25
+ baseUrl: 'https://api.polyv.net',
26
+ timeout: DEFAULT_TIMEOUT_MS,
27
+ debug: false,
28
+ },
29
+ };
30
+ }
31
+ else {
32
+ throw error;
33
+ }
34
+ }
35
+ const serviceConfig = {
36
+ baseUrl: configResult.config.baseUrl,
37
+ timeout: configResult.config.timeout,
38
+ debug: configResult.config.debug,
39
+ };
40
+ const isVerbose = !!parentOptions['verbose'];
41
+ if (isVerbose) {
42
+ console.log(`🔐 Authentication Source: ${authResult.source}`);
43
+ if (authResult.accountName) {
44
+ console.log(`👤 Account: ${authResult.accountName}`);
45
+ }
46
+ console.log('');
47
+ }
48
+ return {
49
+ authConfig: authResult.config,
50
+ serviceConfig,
51
+ isVerbose,
52
+ };
53
+ }
54
+ function validateOutputFormat(value) {
55
+ if (!['table', 'json'].includes(value)) {
56
+ throw new Error('Invalid output format. Must be "table" or "json"');
57
+ }
58
+ return value;
59
+ }
60
+ function registerSetupCommand(program) {
61
+ const setupCmd = program
62
+ .command('setup [scene]')
63
+ .description('Initialize a scene with predefined resources')
64
+ .option('-l, --list', 'List available scenes')
65
+ .option('--detailed', 'Show detailed scene information (with --list)')
66
+ .option('--dry-run', 'Preview what would be created without making changes')
67
+ .option('-o, --output <format>', 'Output format (table|json)', validateOutputFormat, 'table')
68
+ .action(async (scene, options) => {
69
+ try {
70
+ const parentOptions = program.opts();
71
+ const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(parentOptions);
72
+ const setupHandler = new setup_handler_1.SetupHandler(authConfig, serviceConfig);
73
+ if (options.list) {
74
+ if (options.detailed) {
75
+ await setupHandler.listScenesDetailed({
76
+ output: options.output ?? 'table',
77
+ detailed: true,
78
+ });
79
+ }
80
+ else {
81
+ await setupHandler.listScenes({
82
+ output: options.output ?? 'table',
83
+ detailed: false,
84
+ });
85
+ }
86
+ return;
87
+ }
88
+ if (!scene) {
89
+ console.error('Error: Scene name is required.');
90
+ console.error('');
91
+ console.error('Usage: polyv-cli setup <scene-name>');
92
+ console.error(' polyv-cli setup --list');
93
+ console.error('');
94
+ console.error('Example:');
95
+ console.error(' polyv-cli setup e-commerce');
96
+ console.error(' polyv-cli setup --list');
97
+ process.exit(1);
98
+ }
99
+ await setupHandler.setup({
100
+ scene,
101
+ output: options.output ?? 'table',
102
+ dryRun: options.dryRun ?? false,
103
+ });
104
+ }
105
+ catch (error) {
106
+ (0, errors_1.logError)(error instanceof Error ? error : new Error(String(error)));
107
+ process.exit(1);
108
+ }
109
+ });
110
+ setupCmd.addHelpText('after', `
111
+ Examples:
112
+ # Initialize e-commerce scene
113
+ $ polyv-cli setup e-commerce
114
+
115
+ # List available scenes
116
+ $ polyv-cli setup --list
117
+
118
+ # Preview what would be created (dry run)
119
+ $ polyv-cli setup e-commerce --dry-run
120
+
121
+ # Get detailed scene information
122
+ $ polyv-cli setup --list --detailed
123
+
124
+ Available Scenes:
125
+ e-commerce - 电商直播场景 (频道、商品、优惠券)
126
+
127
+ Custom Scenes:
128
+ You can create custom scenes in ~/.polyv/scenes/ directory.
129
+ See documentation for scene configuration format.
130
+ `);
131
+ }
132
+ //# sourceMappingURL=setup.commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.commands.js","sourceRoot":"","sources":["../../src/commands/setup.commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.commands.d.ts","sourceRoot":"","sources":["../../src/commands/stream.commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2EpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6lB7D"}
1
+ {"version":3,"file":"stream.commands.d.ts","sourceRoot":"","sources":["../../src/commands/stream.commands.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2EpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAslB7D"}
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerStreamCommands = registerStreamCommands;
4
4
  const stream_handler_1 = require("../handlers/stream.handler");
5
- const stream_service_1 = require("../services/stream.service");
6
5
  const manager_1 = require("../config/manager");
7
6
  const auth_adapter_1 = require("../config/auth-adapter");
8
7
  const errors_1 = require("../utils/errors");
@@ -54,8 +53,7 @@ function registerStreamCommands(program) {
54
53
  const parentOptions = program.opts();
55
54
  const combinedOptions = { ...parentOptions, ...options };
56
55
  const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(combinedOptions);
57
- const streamService = new stream_service_1.StreamService(authConfig, serviceConfig);
58
- const streamHandler = new stream_handler_1.StreamHandler(streamService);
56
+ const streamHandler = new stream_handler_1.StreamHandler(authConfig, serviceConfig);
59
57
  const streamOptions = {
60
58
  channelId: options.channelId,
61
59
  output: options.output
@@ -117,8 +115,7 @@ Usage in OBS/Streaming Software:
117
115
  const parentOptions = program.opts();
118
116
  const combinedOptions = { ...parentOptions, ...options };
119
117
  const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(combinedOptions);
120
- const streamService = new stream_service_1.StreamService(authConfig, serviceConfig);
121
- const streamHandler = new stream_handler_1.StreamHandler(streamService);
118
+ const streamHandler = new stream_handler_1.StreamHandler(authConfig, serviceConfig);
122
119
  const streamOptions = {
123
120
  channelId: options.channelId
124
121
  };
@@ -172,8 +169,7 @@ Expected Behavior:
172
169
  const parentOptions = program.opts();
173
170
  const combinedOptions = { ...parentOptions, ...options };
174
171
  const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(combinedOptions);
175
- const streamService = new stream_service_1.StreamService(authConfig, serviceConfig);
176
- const streamHandler = new stream_handler_1.StreamHandler(streamService);
172
+ const streamHandler = new stream_handler_1.StreamHandler(authConfig, serviceConfig);
177
173
  const streamOptions = {
178
174
  channelId: options.channelId
179
175
  };
@@ -230,8 +226,7 @@ Expected Behavior:
230
226
  const parentOptions = program.opts();
231
227
  const combinedOptions = { ...parentOptions, ...options };
232
228
  const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(combinedOptions);
233
- const streamService = new stream_service_1.StreamService(authConfig, serviceConfig);
234
- const streamHandler = new stream_handler_1.StreamHandler(streamService);
229
+ const streamHandler = new stream_handler_1.StreamHandler(authConfig, serviceConfig);
235
230
  const streamOptions = {
236
231
  channelId: options.channelId,
237
232
  output: options.output,
@@ -336,8 +331,7 @@ Watch Mode:
336
331
  const parentOptions = program.opts();
337
332
  const combinedOptions = { ...parentOptions, ...options };
338
333
  const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(combinedOptions);
339
- const streamService = new stream_service_1.StreamService(authConfig, serviceConfig);
340
- const streamHandler = new stream_handler_1.StreamHandler(streamService);
334
+ const streamHandler = new stream_handler_1.StreamHandler(authConfig, serviceConfig);
341
335
  const streamOptions = {
342
336
  channelId: options.channelId,
343
337
  file: options.file,
@@ -405,8 +399,7 @@ Verification Options:
405
399
  const parentOptions = program.opts();
406
400
  const combinedOptions = { ...parentOptions, ...options };
407
401
  const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(combinedOptions);
408
- const streamService = new stream_service_1.StreamService(authConfig, serviceConfig);
409
- const streamHandler = new stream_handler_1.StreamHandler(streamService);
402
+ const streamHandler = new stream_handler_1.StreamHandler(authConfig, serviceConfig);
410
403
  const verifyOptions = {
411
404
  channelId: options.channelId,
412
405
  duration: options.duration,
@@ -481,8 +474,7 @@ Report Contents:
481
474
  const parentOptions = program.opts();
482
475
  const combinedOptions = { ...parentOptions, ...options };
483
476
  const { authConfig, serviceConfig } = await loadAuthAndServiceConfig(combinedOptions);
484
- const streamService = new stream_service_1.StreamService(authConfig, serviceConfig);
485
- const streamHandler = new stream_handler_1.StreamHandler(streamService);
477
+ const streamHandler = new stream_handler_1.StreamHandler(authConfig, serviceConfig);
486
478
  const monitorOptions = {
487
479
  channelId: options.channelId,
488
480
  refresh: options.refresh,