@optima-chat/commerce-cli 1.15.1 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/rest/commerce.d.ts +29 -0
- package/dist/api/rest/commerce.d.ts.map +1 -1
- package/dist/api/rest/commerce.js +29 -0
- package/dist/api/rest/commerce.js.map +1 -1
- package/dist/commands/product/create.d.ts.map +1 -1
- package/dist/commands/product/create.js +10 -0
- package/dist/commands/product/create.js.map +1 -1
- package/dist/commands/product/custom-fields/add.d.ts +3 -0
- package/dist/commands/product/custom-fields/add.d.ts.map +1 -0
- package/dist/commands/product/custom-fields/add.js +117 -0
- package/dist/commands/product/custom-fields/add.js.map +1 -0
- package/dist/commands/product/custom-fields/index.d.ts +3 -0
- package/dist/commands/product/custom-fields/index.d.ts.map +1 -0
- package/dist/commands/product/custom-fields/index.js +12 -0
- package/dist/commands/product/custom-fields/index.js.map +1 -0
- package/dist/commands/product/custom-fields/list.d.ts +3 -0
- package/dist/commands/product/custom-fields/list.d.ts.map +1 -0
- package/dist/commands/product/custom-fields/list.js +57 -0
- package/dist/commands/product/custom-fields/list.js.map +1 -0
- package/dist/commands/product/custom-fields/remove.d.ts +3 -0
- package/dist/commands/product/custom-fields/remove.d.ts.map +1 -0
- package/dist/commands/product/custom-fields/remove.js +36 -0
- package/dist/commands/product/custom-fields/remove.js.map +1 -0
- package/dist/commands/product/custom-fields/update.d.ts +3 -0
- package/dist/commands/product/custom-fields/update.d.ts.map +1 -0
- package/dist/commands/product/custom-fields/update.js +90 -0
- package/dist/commands/product/custom-fields/update.js.map +1 -0
- package/dist/commands/product/index.d.ts.map +1 -1
- package/dist/commands/product/index.js +3 -1
- package/dist/commands/product/index.js.map +1 -1
- package/dist/commands/product/update.d.ts.map +1 -1
- package/dist/commands/product/update.js +20 -1
- package/dist/commands/product/update.js.map +1 -1
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/format.js +3 -0
- package/dist/utils/format.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { commerceApi } from '../../../api/rest/commerce.js';
|
|
4
|
+
import { handleError, ValidationError, createApiError } from '../../../utils/error.js';
|
|
5
|
+
import { output } from '../../../utils/output.js';
|
|
6
|
+
import { addEnhancedHelp } from '../../../utils/helpText.js';
|
|
7
|
+
const cmd = new Command('add')
|
|
8
|
+
.description('Add a custom field to a product')
|
|
9
|
+
.requiredOption('--product-id <uuid>', 'Product ID')
|
|
10
|
+
.requiredOption('--name <string>', 'Field internal name (e.g., "birthday")')
|
|
11
|
+
.option('--label <string>', 'Display label (defaults to name)')
|
|
12
|
+
.requiredOption('--type <string>', 'Field type: text, textarea, or file')
|
|
13
|
+
.option('--required', 'Mark field as required')
|
|
14
|
+
.option('--placeholder <string>', 'Placeholder text')
|
|
15
|
+
.option('--max-length <number>', 'Max length for text/textarea fields')
|
|
16
|
+
.option('--allowed-file-types <types>', 'Allowed MIME types for file fields (comma-separated, e.g., "image/jpeg,image/png")')
|
|
17
|
+
.option('--max-file-size-mb <number>', 'Max file size in MB for file fields')
|
|
18
|
+
.option('--position <number>', 'Display order position (default: 1)')
|
|
19
|
+
.action(async (options) => {
|
|
20
|
+
try {
|
|
21
|
+
// Validate field type
|
|
22
|
+
if (!['text', 'textarea', 'file'].includes(options.type)) {
|
|
23
|
+
throw new ValidationError('Field type must be text, textarea, or file', 'type');
|
|
24
|
+
}
|
|
25
|
+
const data = {
|
|
26
|
+
name: options.name,
|
|
27
|
+
label: options.label || options.name,
|
|
28
|
+
field_type: options.type,
|
|
29
|
+
required: options.required || false,
|
|
30
|
+
};
|
|
31
|
+
if (options.placeholder)
|
|
32
|
+
data.placeholder = options.placeholder;
|
|
33
|
+
if (options.maxLength) {
|
|
34
|
+
const maxLength = parseInt(options.maxLength, 10);
|
|
35
|
+
if (isNaN(maxLength) || maxLength <= 0) {
|
|
36
|
+
throw new ValidationError('max-length must be a positive number', 'max-length');
|
|
37
|
+
}
|
|
38
|
+
data.max_length = maxLength;
|
|
39
|
+
}
|
|
40
|
+
if (options.allowedFileTypes) {
|
|
41
|
+
data.allowed_file_types = options.allowedFileTypes.split(',').map((t) => t.trim());
|
|
42
|
+
}
|
|
43
|
+
if (options.maxFileSizeMb) {
|
|
44
|
+
const maxSize = parseInt(options.maxFileSizeMb, 10);
|
|
45
|
+
if (isNaN(maxSize) || maxSize <= 0) {
|
|
46
|
+
throw new ValidationError('max-file-size-mb must be a positive number', 'max-file-size-mb');
|
|
47
|
+
}
|
|
48
|
+
data.max_file_size_mb = maxSize;
|
|
49
|
+
}
|
|
50
|
+
if (options.position) {
|
|
51
|
+
data.position = parseInt(options.position, 10);
|
|
52
|
+
}
|
|
53
|
+
const spinner = output.spinner('正在添加自定义字段...');
|
|
54
|
+
try {
|
|
55
|
+
const field = await commerceApi.customFields.create(options.productId, data);
|
|
56
|
+
spinner.succeed('自定义字段添加成功!');
|
|
57
|
+
if (output.isJson()) {
|
|
58
|
+
output.success(field);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(chalk.gray('ID:') + ' ' + field.id);
|
|
63
|
+
console.log(chalk.gray('Name:') + ' ' + field.name);
|
|
64
|
+
console.log(chalk.gray('Label:') + ' ' + (field.label || field.name));
|
|
65
|
+
console.log(chalk.gray('Type:') + ' ' + field.field_type);
|
|
66
|
+
console.log(chalk.gray('Required:') + ' ' + (field.required ? chalk.red('Yes') : chalk.gray('No')));
|
|
67
|
+
if (field.placeholder)
|
|
68
|
+
console.log(chalk.gray('Placeholder:') + ' ' + field.placeholder);
|
|
69
|
+
if (field.max_length)
|
|
70
|
+
console.log(chalk.gray('Max Length:') + ' ' + field.max_length);
|
|
71
|
+
if (field.allowed_file_types)
|
|
72
|
+
console.log(chalk.gray('File Types:') + ' ' + field.allowed_file_types.join(', '));
|
|
73
|
+
if (field.max_file_size_mb)
|
|
74
|
+
console.log(chalk.gray('Max Size:') + ' ' + field.max_file_size_mb + 'MB');
|
|
75
|
+
console.log();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
spinner.fail('自定义字段添加失败');
|
|
80
|
+
throw createApiError(error);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
handleError(error);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
addEnhancedHelp(cmd, {
|
|
88
|
+
examples: [
|
|
89
|
+
'# Add a text field',
|
|
90
|
+
'$ commerce product custom-fields add \\',
|
|
91
|
+
' --product-id abc-123 \\',
|
|
92
|
+
' --name "engraving" --label "Engraving Text" \\',
|
|
93
|
+
' --type text --required --max-length 50',
|
|
94
|
+
'',
|
|
95
|
+
'# Add a file upload field',
|
|
96
|
+
'$ commerce product custom-fields add \\',
|
|
97
|
+
' --product-id abc-123 \\',
|
|
98
|
+
' --name "reference_photo" --label "Reference Photo" \\',
|
|
99
|
+
' --type file \\',
|
|
100
|
+
' --allowed-file-types "image/jpeg,image/png" \\',
|
|
101
|
+
' --max-file-size-mb 10',
|
|
102
|
+
'',
|
|
103
|
+
'# Add an optional textarea field',
|
|
104
|
+
'$ commerce product custom-fields add \\',
|
|
105
|
+
' --product-id abc-123 \\',
|
|
106
|
+
' --name "special_instructions" --label "Special Instructions" \\',
|
|
107
|
+
' --type textarea --max-length 500',
|
|
108
|
+
],
|
|
109
|
+
notes: [
|
|
110
|
+
'Field types: text (single line), textarea (multi-line), file (file upload)',
|
|
111
|
+
'--required flag makes the field mandatory for buyers at checkout',
|
|
112
|
+
'For file fields, use --allowed-file-types to restrict MIME types',
|
|
113
|
+
'Position determines display order (lower = higher priority)',
|
|
114
|
+
],
|
|
115
|
+
});
|
|
116
|
+
export const addCustomFieldCommand = cmd;
|
|
117
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/add.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,mBAAmB,SAKO,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { listCustomFieldsCommand } from './list.js';
|
|
3
|
+
import { addCustomFieldCommand } from './add.js';
|
|
4
|
+
import { updateCustomFieldCommand } from './update.js';
|
|
5
|
+
import { removeCustomFieldCommand } from './remove.js';
|
|
6
|
+
export const customFieldsCommand = new Command('custom-fields')
|
|
7
|
+
.description('Manage custom fields for products (buyer input fields)')
|
|
8
|
+
.addCommand(listCustomFieldsCommand)
|
|
9
|
+
.addCommand(addCustomFieldCommand)
|
|
10
|
+
.addCommand(updateCustomFieldCommand)
|
|
11
|
+
.addCommand(removeCustomFieldCommand);
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC;KAC5D,WAAW,CAAC,wDAAwD,CAAC;KACrE,UAAU,CAAC,uBAAuB,CAAC;KACnC,UAAU,CAAC,qBAAqB,CAAC;KACjC,UAAU,CAAC,wBAAwB,CAAC;KACpC,UAAU,CAAC,wBAAwB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkEpC,eAAO,MAAM,uBAAuB,SAAM,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { commerceApi } from '../../../api/rest/commerce.js';
|
|
4
|
+
import { handleError } from '../../../utils/error.js';
|
|
5
|
+
import { output } from '../../../utils/output.js';
|
|
6
|
+
import { addEnhancedHelp } from '../../../utils/helpText.js';
|
|
7
|
+
import Table from 'cli-table3';
|
|
8
|
+
const cmd = new Command('list')
|
|
9
|
+
.description('List custom fields for a product')
|
|
10
|
+
.requiredOption('--product-id <uuid>', 'Product ID')
|
|
11
|
+
.action(async (options) => {
|
|
12
|
+
try {
|
|
13
|
+
const fields = await commerceApi.customFields.list(options.productId);
|
|
14
|
+
if (output.isJson()) {
|
|
15
|
+
output.success({ fields, total: fields.length });
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!fields || fields.length === 0) {
|
|
19
|
+
console.log(chalk.yellow('\n暂无自定义字段'));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const table = new Table({
|
|
23
|
+
head: [
|
|
24
|
+
chalk.cyan('ID'),
|
|
25
|
+
chalk.cyan('Name'),
|
|
26
|
+
chalk.cyan('Label'),
|
|
27
|
+
chalk.cyan('Type'),
|
|
28
|
+
chalk.cyan('Required'),
|
|
29
|
+
chalk.cyan('Position'),
|
|
30
|
+
],
|
|
31
|
+
colWidths: [38, 20, 20, 10, 10, 10],
|
|
32
|
+
});
|
|
33
|
+
for (const field of fields) {
|
|
34
|
+
table.push([
|
|
35
|
+
field.id,
|
|
36
|
+
field.name,
|
|
37
|
+
field.label || field.name,
|
|
38
|
+
field.field_type,
|
|
39
|
+
field.required ? chalk.red('Yes') : chalk.gray('No'),
|
|
40
|
+
String(field.position || 0),
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
console.log(`\n${chalk.cyan.bold('自定义字段')} (${fields.length})`);
|
|
44
|
+
console.log(table.toString());
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
handleError(error);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
addEnhancedHelp(cmd, {
|
|
51
|
+
examples: [
|
|
52
|
+
'# List custom fields for a product',
|
|
53
|
+
'$ commerce product custom-fields list --product-id abc-123',
|
|
54
|
+
],
|
|
55
|
+
});
|
|
56
|
+
export const listCustomFieldsCommand = cmd;
|
|
57
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,MAAM,YAAY,CAAC;AAM/B,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC5B,WAAW,CAAC,kCAAkC,CAAC;KAC/C,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;KACnD,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEtE,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,IAAI,EAAE;gBACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;aACvB;YACD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK,CAAC,EAAE;gBACR,KAAK,CAAC,IAAI;gBACV,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI;gBACzB,KAAK,CAAC,UAAU;gBAChB,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBACpD,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe,CAAC,GAAG,EAAE;IACnB,QAAQ,EAAE;QACR,oCAAoC;QACpC,4DAA4D;KAC7D;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CpC,eAAO,MAAM,wBAAwB,SAAM,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { commerceApi } from '../../../api/rest/commerce.js';
|
|
3
|
+
import { handleError, createApiError } from '../../../utils/error.js';
|
|
4
|
+
import { output } from '../../../utils/output.js';
|
|
5
|
+
import { addEnhancedHelp } from '../../../utils/helpText.js';
|
|
6
|
+
const cmd = new Command('remove')
|
|
7
|
+
.description('Remove a custom field from a product')
|
|
8
|
+
.requiredOption('--product-id <uuid>', 'Product ID')
|
|
9
|
+
.requiredOption('--field-id <uuid>', 'Custom field ID')
|
|
10
|
+
.action(async (options) => {
|
|
11
|
+
try {
|
|
12
|
+
const spinner = output.spinner('正在删除自定义字段...');
|
|
13
|
+
try {
|
|
14
|
+
await commerceApi.customFields.delete(options.productId, options.fieldId);
|
|
15
|
+
spinner.succeed('自定义字段已删除');
|
|
16
|
+
if (output.isJson()) {
|
|
17
|
+
output.success({ deleted: true, field_id: options.fieldId });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
spinner.fail('自定义字段删除失败');
|
|
22
|
+
throw createApiError(error);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
handleError(error);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
addEnhancedHelp(cmd, {
|
|
30
|
+
examples: [
|
|
31
|
+
'# Remove a custom field',
|
|
32
|
+
'$ commerce product custom-fields remove --product-id abc-123 --field-id def-456',
|
|
33
|
+
],
|
|
34
|
+
});
|
|
35
|
+
export const removeCustomFieldCommand = cmd;
|
|
36
|
+
//# sourceMappingURL=remove.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/remove.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAO7D,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC9B,WAAW,CAAC,sCAAsC,CAAC;KACnD,cAAc,CAAC,qBAAqB,EAAE,YAAY,CAAC;KACnD,cAAc,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,OAAsB,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE/C,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1E,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAE5B,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;gBACpB,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1B,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,eAAe,CAAC,GAAG,EAAE;IACnB,QAAQ,EAAE;QACR,yBAAyB;QACzB,iFAAiF;KAClF;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0GpC,eAAO,MAAM,wBAAwB,SAAM,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { commerceApi } from '../../../api/rest/commerce.js';
|
|
4
|
+
import { handleError, ValidationError, createApiError } from '../../../utils/error.js';
|
|
5
|
+
import { output } from '../../../utils/output.js';
|
|
6
|
+
import { addEnhancedHelp } from '../../../utils/helpText.js';
|
|
7
|
+
const cmd = new Command('update')
|
|
8
|
+
.description('Update a custom field')
|
|
9
|
+
.requiredOption('--product-id <uuid>', 'Product ID')
|
|
10
|
+
.requiredOption('--field-id <uuid>', 'Custom field ID')
|
|
11
|
+
.option('--label <string>', 'Display label')
|
|
12
|
+
.option('--required', 'Mark as required')
|
|
13
|
+
.option('--no-required', 'Mark as optional')
|
|
14
|
+
.option('--placeholder <string>', 'Placeholder text')
|
|
15
|
+
.option('--max-length <number>', 'Max length for text fields')
|
|
16
|
+
.option('--allowed-file-types <types>', 'Allowed MIME types (comma-separated)')
|
|
17
|
+
.option('--max-file-size-mb <number>', 'Max file size in MB')
|
|
18
|
+
.option('--position <number>', 'Display order position')
|
|
19
|
+
.action(async (options) => {
|
|
20
|
+
try {
|
|
21
|
+
const data = {};
|
|
22
|
+
if (options.label)
|
|
23
|
+
data.label = options.label;
|
|
24
|
+
if (options.required === true)
|
|
25
|
+
data.required = true;
|
|
26
|
+
if (options.noRequired === true)
|
|
27
|
+
data.required = false;
|
|
28
|
+
if (options.placeholder)
|
|
29
|
+
data.placeholder = options.placeholder;
|
|
30
|
+
if (options.maxLength) {
|
|
31
|
+
const maxLength = parseInt(options.maxLength, 10);
|
|
32
|
+
if (isNaN(maxLength) || maxLength <= 0) {
|
|
33
|
+
throw new ValidationError('max-length must be a positive number', 'max-length');
|
|
34
|
+
}
|
|
35
|
+
data.max_length = maxLength;
|
|
36
|
+
}
|
|
37
|
+
if (options.allowedFileTypes) {
|
|
38
|
+
data.allowed_file_types = options.allowedFileTypes.split(',').map((t) => t.trim());
|
|
39
|
+
}
|
|
40
|
+
if (options.maxFileSizeMb) {
|
|
41
|
+
const maxSize = parseInt(options.maxFileSizeMb, 10);
|
|
42
|
+
if (isNaN(maxSize) || maxSize <= 0) {
|
|
43
|
+
throw new ValidationError('max-file-size-mb must be a positive number', 'max-file-size-mb');
|
|
44
|
+
}
|
|
45
|
+
data.max_file_size_mb = maxSize;
|
|
46
|
+
}
|
|
47
|
+
if (options.position) {
|
|
48
|
+
data.position = parseInt(options.position, 10);
|
|
49
|
+
}
|
|
50
|
+
if (Object.keys(data).length === 0) {
|
|
51
|
+
throw new ValidationError('请至少提供一个要更新的字段');
|
|
52
|
+
}
|
|
53
|
+
const spinner = output.spinner('正在更新自定义字段...');
|
|
54
|
+
try {
|
|
55
|
+
const field = await commerceApi.customFields.update(options.productId, options.fieldId, data);
|
|
56
|
+
spinner.succeed('自定义字段更新成功!');
|
|
57
|
+
if (output.isJson()) {
|
|
58
|
+
output.success(field);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.log();
|
|
62
|
+
console.log(chalk.gray('ID:') + ' ' + field.id);
|
|
63
|
+
console.log(chalk.gray('Name:') + ' ' + field.name);
|
|
64
|
+
console.log(chalk.gray('Label:') + ' ' + (field.label || field.name));
|
|
65
|
+
console.log(chalk.gray('Required:') + ' ' + (field.required ? chalk.red('Yes') : chalk.gray('No')));
|
|
66
|
+
console.log();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
spinner.fail('自定义字段更新失败');
|
|
71
|
+
throw createApiError(error);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
handleError(error);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
addEnhancedHelp(cmd, {
|
|
79
|
+
examples: [
|
|
80
|
+
'# Make a field required',
|
|
81
|
+
'$ commerce product custom-fields update --product-id abc-123 --field-id def-456 --required',
|
|
82
|
+
'',
|
|
83
|
+
'# Update label and placeholder',
|
|
84
|
+
'$ commerce product custom-fields update \\',
|
|
85
|
+
' --product-id abc-123 --field-id def-456 \\',
|
|
86
|
+
' --label "Your Message" --placeholder "Enter your message here"',
|
|
87
|
+
],
|
|
88
|
+
});
|
|
89
|
+
export const updateCustomFieldCommand = cmd;
|
|
90
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/commands/product/custom-fields/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,cAAc,SAeO,CAAC"}
|
|
@@ -12,6 +12,7 @@ import { removeVideosCommand } from './remove-videos.js';
|
|
|
12
12
|
import { reorderVideosCommand } from './reorder-videos.js';
|
|
13
13
|
import { videoStatusCommand } from './video-status.js';
|
|
14
14
|
import { urlCommand } from './url.js';
|
|
15
|
+
import { customFieldsCommand } from './custom-fields/index.js';
|
|
15
16
|
export const productCommand = new Command('product')
|
|
16
17
|
.description('商品管理')
|
|
17
18
|
.addCommand(createProductCommand)
|
|
@@ -26,5 +27,6 @@ export const productCommand = new Command('product')
|
|
|
26
27
|
.addCommand(removeVideosCommand)
|
|
27
28
|
.addCommand(reorderVideosCommand)
|
|
28
29
|
.addCommand(videoStatusCommand)
|
|
29
|
-
.addCommand(urlCommand)
|
|
30
|
+
.addCommand(urlCommand)
|
|
31
|
+
.addCommand(customFieldsCommand);
|
|
30
32
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,MAAM,CAAC;KACnB,UAAU,CAAC,oBAAoB,CAAC;KAChC,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,iBAAiB,CAAC;KAC7B,UAAU,CAAC,oBAAoB,CAAC;KAChC,UAAU,CAAC,oBAAoB,CAAC;KAChC,UAAU,CAAC,gBAAgB,CAAC;KAC5B,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,oBAAoB,CAAC;KAChC,UAAU,CAAC,gBAAgB,CAAC;KAC5B,UAAU,CAAC,mBAAmB,CAAC;KAC/B,UAAU,CAAC,oBAAoB,CAAC;KAChC,UAAU,CAAC,kBAAkB,CAAC;KAC9B,UAAU,CAAC,UAAU,CAAC;KACtB,UAAU,CAAC,mBAAmB,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/product/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/product/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+IpC,eAAO,MAAM,oBAAoB,SAAM,CAAC"}
|
|
@@ -26,6 +26,8 @@ const cmd = new Command('update')
|
|
|
26
26
|
.option('--hs-code <string>', 'Harmonized System code for customs')
|
|
27
27
|
.option('--country-of-origin <string>', 'Country of origin (ISO 2-letter code, e.g., CN, US)')
|
|
28
28
|
.option('--customs-description <string>', 'Customs description for international shipping')
|
|
29
|
+
.option('--digital', 'Mark as digital product (no shipping required)')
|
|
30
|
+
.option('--requires-shipping', 'Mark as physical product (requires shipping)')
|
|
29
31
|
.action(async (options) => {
|
|
30
32
|
try {
|
|
31
33
|
if (!options.id) {
|
|
@@ -60,6 +62,13 @@ addEnhancedHelp(cmd, {
|
|
|
60
62
|
' --country-of-origin CN \\',
|
|
61
63
|
' --customs-description "Ceramic mug for beverages"',
|
|
62
64
|
'',
|
|
65
|
+
'',
|
|
66
|
+
'# Mark product as digital (no shipping)',
|
|
67
|
+
'$ commerce product update --id abc-123-def --digital',
|
|
68
|
+
'',
|
|
69
|
+
'# Revert to physical product',
|
|
70
|
+
'$ commerce product update --id abc-123-def --requires-shipping',
|
|
71
|
+
'',
|
|
63
72
|
'# Change product status',
|
|
64
73
|
'$ commerce product update --id abc-123-def --status inactive',
|
|
65
74
|
'',
|
|
@@ -95,6 +104,7 @@ addEnhancedHelp(cmd, {
|
|
|
95
104
|
'Weight is in kg, dimensions (length/width/height) are in cm',
|
|
96
105
|
'HS code format: "6912.00" (for ceramics), country code: ISO 2-letter (CN, US, etc.)',
|
|
97
106
|
'Customs description is used for international shipping declarations',
|
|
107
|
+
'--digital and --requires-shipping toggle the shipping requirement for the product',
|
|
98
108
|
],
|
|
99
109
|
});
|
|
100
110
|
export const updateProductCommand = cmd;
|
|
@@ -121,7 +131,9 @@ async function updateProduct(productId, options) {
|
|
|
121
131
|
options.height ||
|
|
122
132
|
options.hsCode ||
|
|
123
133
|
options.countryOfOrigin ||
|
|
124
|
-
options.customsDescription
|
|
134
|
+
options.customsDescription ||
|
|
135
|
+
options.digital ||
|
|
136
|
+
options.requiresShipping);
|
|
125
137
|
if (!hasUpdates) {
|
|
126
138
|
throw new ValidationError('请至少提供一个要更新的字段');
|
|
127
139
|
}
|
|
@@ -207,6 +219,13 @@ async function updateProduct(productId, options) {
|
|
|
207
219
|
if (options.customsDescription) {
|
|
208
220
|
updateData.customs_description = options.customsDescription;
|
|
209
221
|
}
|
|
222
|
+
// Digital product flag (Issue #98)
|
|
223
|
+
if (options.digital) {
|
|
224
|
+
updateData.requires_shipping = false;
|
|
225
|
+
}
|
|
226
|
+
else if (options.requiresShipping) {
|
|
227
|
+
updateData.requires_shipping = true;
|
|
228
|
+
}
|
|
210
229
|
// 添加 tags(如果提供)
|
|
211
230
|
if (options.tags) {
|
|
212
231
|
const tags = options.tags.split(',').map((tag) => tag.trim()).filter((tag) => tag.length > 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/product/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/product/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,MAAc,GAAG,MAAM,CAGpF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAGlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAetD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAAU,GAAG,MAAM,CAQtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CA8BzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAGzE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAE,MAAc,GAAG,MAAM,CAGpF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAGlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAaxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAetD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAAU,GAAG,MAAM,CAQtF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CA8BzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CA6ClD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CA8BrD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CA8G9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,CA6BxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,GAAG,EAAE,GAAG,MAAM,CA4B5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAyBpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,CAoCzD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CA2ClD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CAgCvD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,GAAG,MAAM,CAqEhD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAkCpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM,CA4BvD"}
|
package/dist/utils/format.js
CHANGED
|
@@ -146,6 +146,9 @@ export function formatProduct(product) {
|
|
|
146
146
|
lines.push(`${chalk.gray('价格:')} ${chalk.green(formatPrice(product.price || 0, product.currency || 'USD'))}`);
|
|
147
147
|
lines.push(`${chalk.gray('库存:')} ${formatStockStatus(product.stock_quantity || product.stock || product.quantity || 0)}`);
|
|
148
148
|
lines.push(`${chalk.gray('状态:')} ${formatProductStatus(product.status || 'active')}`);
|
|
149
|
+
if (product.requires_shipping === false) {
|
|
150
|
+
lines.push(`${chalk.gray('类型:')} ${chalk.blue('数字产品 (Digital)')}`);
|
|
151
|
+
}
|
|
149
152
|
if (product.description) {
|
|
150
153
|
lines.push(`${chalk.gray('描述:')} ${product.description}`);
|
|
151
154
|
}
|