polyv-live-cli 1.1.13 β†’ 1.2.7

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 (140) hide show
  1. package/README.md +1 -1
  2. package/dist/commands/account.commands.js +12 -12
  3. package/dist/commands/account.commands.js.map +1 -1
  4. package/dist/commands/channel.commands.js +31 -31
  5. package/dist/commands/coupon.commands.d.ts +8 -0
  6. package/dist/commands/coupon.commands.d.ts.map +1 -0
  7. package/dist/commands/coupon.commands.js +258 -0
  8. package/dist/commands/coupon.commands.js.map +1 -0
  9. package/dist/commands/index.d.ts +1 -0
  10. package/dist/commands/index.d.ts.map +1 -1
  11. package/dist/commands/index.js +3 -1
  12. package/dist/commands/index.js.map +1 -1
  13. package/dist/commands/product.commands.d.ts +10 -0
  14. package/dist/commands/product.commands.d.ts.map +1 -0
  15. package/dist/commands/product.commands.js +398 -0
  16. package/dist/commands/product.commands.js.map +1 -0
  17. package/dist/commands/setup.commands.d.ts +4 -0
  18. package/dist/commands/setup.commands.d.ts.map +1 -0
  19. package/dist/commands/setup.commands.js +132 -0
  20. package/dist/commands/setup.commands.js.map +1 -0
  21. package/dist/commands/stream.commands.d.ts.map +1 -1
  22. package/dist/commands/stream.commands.js +31 -39
  23. package/dist/commands/stream.commands.js.map +1 -1
  24. package/dist/commands/use.commands.js +7 -7
  25. package/dist/commands/use.commands.js.map +1 -1
  26. package/dist/config/account-config.js +1 -1
  27. package/dist/config/account-config.js.map +1 -1
  28. package/dist/config/account-encryption.js +2 -2
  29. package/dist/config/account-encryption.js.map +1 -1
  30. package/dist/config/auth-source-manager.js +2 -2
  31. package/dist/config/auth-source-manager.js.map +1 -1
  32. package/dist/config/config-io.js +4 -4
  33. package/dist/config/config-io.js.map +1 -1
  34. package/dist/config/config-manager.js +1 -1
  35. package/dist/config/config-manager.js.map +1 -1
  36. package/dist/config/config-recovery-manager.js +4 -4
  37. package/dist/config/config-recovery-manager.js.map +1 -1
  38. package/dist/config/config-version-manager.js +1 -1
  39. package/dist/config/config-version-manager.js.map +1 -1
  40. package/dist/config/file-permission-manager.js +2 -2
  41. package/dist/config/file-permission-manager.js.map +1 -1
  42. package/dist/config/layout-manager.js +1 -1
  43. package/dist/config/layout-manager.js.map +1 -1
  44. package/dist/config/secure-account-manager.js +1 -1
  45. package/dist/config/secure-account-manager.js.map +1 -1
  46. package/dist/config/session-state.js +5 -5
  47. package/dist/config/session-state.js.map +1 -1
  48. package/dist/config/theme-manager.js +1 -1
  49. package/dist/config/theme-manager.js.map +1 -1
  50. package/dist/config/validator.js +1 -1
  51. package/dist/config/validator.js.map +1 -1
  52. package/dist/handlers/channel.handler.d.ts.map +1 -1
  53. package/dist/handlers/channel.handler.js +2 -2
  54. package/dist/handlers/channel.handler.js.map +1 -1
  55. package/dist/handlers/coupon.handler.d.ts +54 -0
  56. package/dist/handlers/coupon.handler.d.ts.map +1 -0
  57. package/dist/handlers/coupon.handler.js +258 -0
  58. package/dist/handlers/coupon.handler.js.map +1 -0
  59. package/dist/handlers/product.handler.d.ts +28 -0
  60. package/dist/handlers/product.handler.d.ts.map +1 -0
  61. package/dist/handlers/product.handler.js +182 -0
  62. package/dist/handlers/product.handler.js.map +1 -0
  63. package/dist/handlers/setup.handler.d.ts +30 -0
  64. package/dist/handlers/setup.handler.d.ts.map +1 -0
  65. package/dist/handlers/setup.handler.js +160 -0
  66. package/dist/handlers/setup.handler.js.map +1 -0
  67. package/dist/handlers/stream.handler.d.ts +3 -2
  68. package/dist/handlers/stream.handler.d.ts.map +1 -1
  69. package/dist/handlers/stream.handler.js +3 -2
  70. package/dist/handlers/stream.handler.js.map +1 -1
  71. package/dist/handlers/use.handler.js +2 -2
  72. package/dist/handlers/use.handler.js.map +1 -1
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +17 -4
  75. package/dist/index.js.map +1 -1
  76. package/dist/sdk/client.d.ts +8 -0
  77. package/dist/sdk/client.d.ts.map +1 -0
  78. package/dist/sdk/client.js +37 -0
  79. package/dist/sdk/client.js.map +1 -0
  80. package/dist/sdk/index.d.ts +3 -0
  81. package/dist/sdk/index.d.ts.map +1 -0
  82. package/dist/sdk/index.js +12 -0
  83. package/dist/sdk/index.js.map +1 -0
  84. package/dist/services/{channel.service.d.ts β†’ channel.service.sdk.d.ts} +6 -8
  85. package/dist/services/channel.service.sdk.d.ts.map +1 -0
  86. package/dist/services/channel.service.sdk.js +265 -0
  87. package/dist/services/channel.service.sdk.js.map +1 -0
  88. package/dist/services/index.d.ts +4 -3
  89. package/dist/services/index.d.ts.map +1 -1
  90. package/dist/services/index.js +7 -5
  91. package/dist/services/index.js.map +1 -1
  92. package/dist/services/product.service.sdk.d.ts +22 -0
  93. package/dist/services/product.service.sdk.d.ts.map +1 -0
  94. package/dist/services/product.service.sdk.js +242 -0
  95. package/dist/services/product.service.sdk.js.map +1 -0
  96. package/dist/services/{stream.service.d.ts β†’ stream.service.sdk.d.ts} +4 -12
  97. package/dist/services/stream.service.sdk.d.ts.map +1 -0
  98. package/dist/services/stream.service.sdk.js +265 -0
  99. package/dist/services/stream.service.sdk.js.map +1 -0
  100. package/dist/setup/output-renderer.d.ts +39 -0
  101. package/dist/setup/output-renderer.d.ts.map +1 -0
  102. package/dist/setup/output-renderer.js +151 -0
  103. package/dist/setup/output-renderer.js.map +1 -0
  104. package/dist/setup/resource-handlers.d.ts +13 -0
  105. package/dist/setup/resource-handlers.d.ts.map +1 -0
  106. package/dist/setup/resource-handlers.js +136 -0
  107. package/dist/setup/resource-handlers.js.map +1 -0
  108. package/dist/setup/scene-config-loader.d.ts +52 -0
  109. package/dist/setup/scene-config-loader.d.ts.map +1 -0
  110. package/dist/setup/scene-config-loader.js +275 -0
  111. package/dist/setup/scene-config-loader.js.map +1 -0
  112. package/dist/setup/scene-executor.d.ts +44 -0
  113. package/dist/setup/scene-executor.d.ts.map +1 -0
  114. package/dist/setup/scene-executor.js +162 -0
  115. package/dist/setup/scene-executor.js.map +1 -0
  116. package/dist/setup/variable-resolver.d.ts +16 -0
  117. package/dist/setup/variable-resolver.d.ts.map +1 -0
  118. package/dist/setup/variable-resolver.js +176 -0
  119. package/dist/setup/variable-resolver.js.map +1 -0
  120. package/dist/setup-scenes/e-commerce.yaml +123 -0
  121. package/dist/types/index.d.ts +1 -0
  122. package/dist/types/index.d.ts.map +1 -1
  123. package/dist/types/index.js +1 -0
  124. package/dist/types/index.js.map +1 -1
  125. package/dist/types/product.d.ts +135 -0
  126. package/dist/types/product.d.ts.map +1 -0
  127. package/dist/types/product.js +3 -0
  128. package/dist/types/product.js.map +1 -0
  129. package/dist/utils/auth-diagnostics.js +2 -2
  130. package/dist/utils/auth-diagnostics.js.map +1 -1
  131. package/dist/utils/data-manager.d.ts +3 -3
  132. package/dist/utils/data-manager.d.ts.map +1 -1
  133. package/dist/utils/data-manager.js.map +1 -1
  134. package/package.json +33 -32
  135. package/dist/services/channel.service.d.ts.map +0 -1
  136. package/dist/services/channel.service.js +0 -672
  137. package/dist/services/channel.service.js.map +0 -1
  138. package/dist/services/stream.service.d.ts.map +0 -1
  139. package/dist/services/stream.service.js +0 -489
  140. 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-live-cli product list
160
+ $ polyv-live-cli product list -P 2 -s 10
161
+ $ polyv-live-cli product list -c "3151318"
162
+ $ polyv-live-cli product list -o json
163
+
164
+ Alternative (full parameter names):
165
+ $ polyv-live-cli product list --page 2 --size 10 --output json
166
+ $ polyv-live-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-live-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-live-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-live-cli product update -c "3151318" -p 12345 -n "新商品名" --status 1 --link-type 10
356
+
357
+ # Change product status to off-shelf
358
+ $ polyv-live-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-live-cli product delete -c "3151318" -p 12345
389
+
390
+ # Force delete without confirmation
391
+ $ polyv-live-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-live-cli setup <scene-name>');
92
+ console.error(' polyv-live-cli setup --list');
93
+ console.error('');
94
+ console.error('Example:');
95
+ console.error(' polyv-live-cli setup e-commerce');
96
+ console.error(' polyv-live-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-live-cli setup e-commerce
114
+
115
+ # List available scenes
116
+ $ polyv-live-cli setup --list
117
+
118
+ # Preview what would be created (dry run)
119
+ $ polyv-live-cli setup e-commerce --dry-run
120
+
121
+ # Get detailed scene information
122
+ $ polyv-live-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":";;AA6EA,oDAKC;AAMD,oDAqFC;AAxKD,6DAAyD;AACzD,+CAAkD;AAClD,yDAAqD;AACrD,4CAA2C;AAI3C,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAKjC,KAAK,UAAU,wBAAwB,CAAC,aAAsC;IAM5E,MAAM,UAAU,GAAG,0BAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,0BAAW,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/D,CAAC;IAGD,IAAI,YAAY,CAAC;IACjB,IAAI,CAAC;QACH,YAAY,GAAG,MAAM,uBAAa,CAAC,IAAI,CAAC;YACtC,UAAU,EAAE,aAAa;SAC1B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE,CAAC;YACzF,YAAY,GAAG;gBACb,MAAM,EAAE;oBACN,OAAO,EAAE,uBAAuB;oBAChC,OAAO,EAAE,kBAAkB;oBAC3B,KAAK,EAAE,KAAK;iBACb;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO;QACpC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,OAAO;QACpC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK;KACjC,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO;QACL,UAAU,EAAE,UAAU,CAAC,MAAM;QAC7B,aAAa;QACb,SAAS;KACV,CAAC;AACJ,CAAC;AAQD,SAAgB,oBAAoB,CAAC,KAAa;IAChD,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAyB,CAAC;AACnC,CAAC;AAMD,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,MAAM,QAAQ,GAAG,OAAO;SACrB,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,YAAY,EAAE,uBAAuB,CAAC;SAC7C,MAAM,CAAC,YAAY,EAAE,+CAA+C,CAAC;SACrE,MAAM,CAAC,WAAW,EAAE,sDAAsD,CAAC;SAC3E,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,OAAO,CAAC;SAC5F,MAAM,CAAC,KAAK,EAAE,KAAyB,EAAE,OAKzC,EAAE,EAAE;QACH,IAAI,CAAC;YAEH,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,wBAAwB,CAAC,aAAa,CAAC,CAAC;YAGpF,MAAM,YAAY,GAAG,IAAI,4BAAY,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;YAGjE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,MAAM,YAAY,CAAC,kBAAkB,CAAC;wBACpC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO;wBACjC,QAAQ,EAAE,IAAI;qBACf,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,MAAM,YAAY,CAAC,UAAU,CAAC;wBAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO;wBACjC,QAAQ,EAAE,KAAK;qBAChB,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO;YACT,CAAC;YAGD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC1D,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACpD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACnD,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAGD,MAAM,YAAY,CAAC,KAAK,CAAC;gBACvB,KAAK;gBACL,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO;gBACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;aAChC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,iBAAQ,EAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAGL,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;CAoB/B,CAAC,CAAC;AACH,CAAC"}
@@ -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"}