@optima-chat/commerce-cli 1.11.2 → 1.12.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.
Files changed (31) hide show
  1. package/dist/api/rest/commerce.d.ts +5 -1
  2. package/dist/api/rest/commerce.d.ts.map +1 -1
  3. package/dist/api/rest/commerce.js.map +1 -1
  4. package/dist/commands/collection/set-cover.js +1 -1
  5. package/dist/commands/collection/set-cover.js.map +1 -1
  6. package/dist/commands/collection/update.js +7 -15
  7. package/dist/commands/collection/update.js.map +1 -1
  8. package/dist/commands/homepage/create-banner.d.ts +3 -0
  9. package/dist/commands/homepage/create-banner.d.ts.map +1 -0
  10. package/dist/commands/homepage/create-banner.js +142 -0
  11. package/dist/commands/homepage/create-banner.js.map +1 -0
  12. package/dist/commands/homepage/create-collection-products.d.ts +3 -0
  13. package/dist/commands/homepage/create-collection-products.d.ts.map +1 -0
  14. package/dist/commands/homepage/create-collection-products.js +124 -0
  15. package/dist/commands/homepage/create-collection-products.js.map +1 -0
  16. package/dist/commands/homepage/create-collections.d.ts +3 -0
  17. package/dist/commands/homepage/create-collections.d.ts.map +1 -0
  18. package/dist/commands/homepage/create-collections.js +121 -0
  19. package/dist/commands/homepage/create-collections.js.map +1 -0
  20. package/dist/commands/homepage/create-featured.d.ts +3 -0
  21. package/dist/commands/homepage/create-featured.d.ts.map +1 -0
  22. package/dist/commands/homepage/create-featured.js +151 -0
  23. package/dist/commands/homepage/create-featured.js.map +1 -0
  24. package/dist/commands/homepage/index.d.ts.map +1 -1
  25. package/dist/commands/homepage/index.js +8 -2
  26. package/dist/commands/homepage/index.js.map +1 -1
  27. package/package.json +1 -1
  28. package/dist/commands/homepage/create.d.ts +0 -3
  29. package/dist/commands/homepage/create.d.ts.map +0 -1
  30. package/dist/commands/homepage/create.js +0 -174
  31. package/dist/commands/homepage/create.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-banner.js","sourceRoot":"","sources":["../../../src/commands/homepage/create-banner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const createCollectionProductsCommand: Command;
3
+ //# sourceMappingURL=create-collection-products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-collection-products.d.ts","sourceRoot":"","sources":["../../../src/commands/homepage/create-collection-products.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4EpC,eAAO,MAAM,+BAA+B,SAAM,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { commerceApi } from '../../api/rest/commerce.js';
4
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
5
+ import { output } from '../../utils/output.js';
6
+ import { addEnhancedHelp } from '../../utils/helpText.js';
7
+ import { isInteractiveEnvironment } from '../../utils/interactive.js';
8
+ const cmd = new Command('create-collection-products')
9
+ .description('Create a section showing products from a collection')
10
+ .option('--title <title>', 'Section title (required)')
11
+ .option('--description <text>', 'Section description (optional)')
12
+ .option('--lang <code>', 'Language code (default: en-US)', 'en-US')
13
+ .option('--slug <slug>', 'Collection slug (required)')
14
+ .option('--limit <number>', 'Max products to show (default: 8)', '8')
15
+ .action(async (options) => {
16
+ try {
17
+ await createCollectionProducts(options);
18
+ }
19
+ catch (error) {
20
+ handleError(error);
21
+ }
22
+ });
23
+ addEnhancedHelp(cmd, {
24
+ examples: [
25
+ '# Show products from a collection',
26
+ '$ commerce homepage create-collection-products --title "New Arrivals" --slug new-arrivals',
27
+ '',
28
+ '# Limit number of products shown',
29
+ '$ commerce homepage create-collection-products --title "Best Sellers" \\',
30
+ ' --slug best-sellers --limit 4',
31
+ '',
32
+ '# With Chinese title',
33
+ '$ commerce homepage create-collection-products --title "热销商品" \\',
34
+ ' --slug best-sellers --lang zh-CN',
35
+ ],
36
+ output: {
37
+ example: JSON.stringify({
38
+ success: true,
39
+ data: {
40
+ id: 'section-123',
41
+ type: 'collection_products',
42
+ position: 4,
43
+ handle: 'collection_products-0',
44
+ settings: {
45
+ collection_slug: 'new-arrivals',
46
+ limit: 8,
47
+ },
48
+ },
49
+ message: '首页区块创建成功',
50
+ }, null, 2),
51
+ },
52
+ relatedCommands: [
53
+ { command: 'collection list', description: 'List available collections' },
54
+ { command: 'homepage list', description: 'List all sections' },
55
+ { command: 'homepage delete', description: 'Delete section' },
56
+ ],
57
+ notes: [
58
+ '--slug is required, must be an existing collection slug',
59
+ '--limit controls max number of products displayed (default: 8)',
60
+ 'Products are shown in collection order',
61
+ ],
62
+ });
63
+ export const createCollectionProductsCommand = cmd;
64
+ async function createCollectionProducts(options) {
65
+ const { title, description, lang = 'en-US', slug, limit = '8' } = options;
66
+ // Validate required params
67
+ if (!isInteractiveEnvironment()) {
68
+ if (!title || title.trim().length === 0) {
69
+ throw new ValidationError('缺少必需参数: --title (区块标题)', 'title');
70
+ }
71
+ if (!slug || slug.trim().length === 0) {
72
+ throw new ValidationError('缺少必需参数: --slug (集合标识)', 'slug');
73
+ }
74
+ }
75
+ else {
76
+ if (!title)
77
+ throw new ValidationError('缺少必需参数: --title', 'title');
78
+ if (!slug)
79
+ throw new ValidationError('缺少必需参数: --slug', 'slug');
80
+ }
81
+ // Parse limit
82
+ const parsedLimit = parseInt(limit, 10);
83
+ if (isNaN(parsedLimit) || parsedLimit < 1) {
84
+ throw new ValidationError('--limit 必须是正整数', 'limit');
85
+ }
86
+ const spinner = output.spinner('正在创建 Collection Products 区块...');
87
+ try {
88
+ const translationContent = { title: title };
89
+ if (description) {
90
+ translationContent.description = description;
91
+ }
92
+ const data = {
93
+ type: 'collection_products',
94
+ translations: {
95
+ [lang]: translationContent,
96
+ },
97
+ settings: {
98
+ collection_slug: slug,
99
+ limit: parsedLimit,
100
+ },
101
+ };
102
+ const result = await commerceApi.homepage.sections.create(data);
103
+ spinner.succeed('Collection Products 区块创建成功!');
104
+ if (output.isJson()) {
105
+ output.success(result, '首页区块创建成功');
106
+ }
107
+ else {
108
+ console.log();
109
+ console.log(chalk.green('✓ Collection Products 区块创建成功!'));
110
+ console.log();
111
+ console.log(chalk.gray('区块ID: ') + chalk.cyan(result.id));
112
+ console.log(chalk.gray('类型: ') + chalk.white('collection_products'));
113
+ console.log(chalk.gray('位置: ') + chalk.white(result.position?.toString() || 'N/A'));
114
+ console.log(chalk.gray('集合: ') + chalk.white(slug));
115
+ console.log(chalk.gray('数量限制: ') + chalk.white(parsedLimit.toString()));
116
+ console.log();
117
+ }
118
+ }
119
+ catch (error) {
120
+ spinner.fail('创建 Collection Products 区块失败');
121
+ throw createApiError(error);
122
+ }
123
+ }
124
+ //# sourceMappingURL=create-collection-products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-collection-products.js","sourceRoot":"","sources":["../../../src/commands/homepage/create-collection-products.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const createCollectionsCommand: Command;
3
+ //# sourceMappingURL=create-collections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-collections.d.ts","sourceRoot":"","sources":["../../../src/commands/homepage/create-collections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwEpC,eAAO,MAAM,wBAAwB,SAAM,CAAC"}
@@ -0,0 +1,121 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { commerceApi } from '../../api/rest/commerce.js';
4
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
5
+ import { output } from '../../utils/output.js';
6
+ import { addEnhancedHelp } from '../../utils/helpText.js';
7
+ import { isInteractiveEnvironment } from '../../utils/interactive.js';
8
+ const cmd = new Command('create-collections')
9
+ .description('Create a collections showcase section')
10
+ .option('--title <title>', 'Section title (required)')
11
+ .option('--description <text>', 'Section description (optional)')
12
+ .option('--lang <code>', 'Language code (default: en-US)', 'en-US')
13
+ .option('--slugs <slugs>', 'Collection slugs, comma-separated (required)')
14
+ .action(async (options) => {
15
+ try {
16
+ await createCollections(options);
17
+ }
18
+ catch (error) {
19
+ handleError(error);
20
+ }
21
+ });
22
+ addEnhancedHelp(cmd, {
23
+ examples: [
24
+ '# Create collections section with one collection',
25
+ '$ commerce homepage create-collections --title "Shop by Category" --slugs new-arrivals',
26
+ '',
27
+ '# Create with multiple collections',
28
+ '$ commerce homepage create-collections --title "Featured Collections" \\',
29
+ ' --slugs "new-arrivals,best-sellers,on-sale"',
30
+ '',
31
+ '# Create with Chinese title',
32
+ '$ commerce homepage create-collections --title "精选系列" --slugs "new-arrivals" --lang zh-CN',
33
+ ],
34
+ output: {
35
+ example: JSON.stringify({
36
+ success: true,
37
+ data: {
38
+ id: 'section-123',
39
+ type: 'collections',
40
+ position: 2,
41
+ handle: 'collections-0',
42
+ settings: {
43
+ collection_slugs: ['new-arrivals', 'best-sellers'],
44
+ },
45
+ },
46
+ message: '首页区块创建成功',
47
+ }, null, 2),
48
+ },
49
+ relatedCommands: [
50
+ { command: 'homepage update-collections', description: 'Update collection slugs' },
51
+ { command: 'collection list', description: 'List available collections' },
52
+ { command: 'homepage list', description: 'List all sections' },
53
+ ],
54
+ notes: [
55
+ '--slugs is required, use comma to separate multiple slugs',
56
+ 'Collections will be displayed in the order specified',
57
+ 'Make sure collection slugs exist before using them',
58
+ ],
59
+ });
60
+ export const createCollectionsCommand = cmd;
61
+ async function createCollections(options) {
62
+ const { title, description, lang = 'en-US', slugs } = options;
63
+ // Validate required params
64
+ if (!isInteractiveEnvironment()) {
65
+ if (!title || title.trim().length === 0) {
66
+ throw new ValidationError('缺少必需参数: --title (区块标题)', 'title');
67
+ }
68
+ if (!slugs || slugs.trim().length === 0) {
69
+ throw new ValidationError('缺少必需参数: --slugs (集合标识)', 'slugs');
70
+ }
71
+ }
72
+ else {
73
+ if (!title) {
74
+ throw new ValidationError('缺少必需参数: --title', 'title');
75
+ }
76
+ if (!slugs) {
77
+ throw new ValidationError('缺少必需参数: --slugs', 'slugs');
78
+ }
79
+ }
80
+ // Parse slugs
81
+ const collectionSlugs = slugs.split(',').map((s) => s.trim()).filter((s) => s.length > 0);
82
+ if (collectionSlugs.length === 0) {
83
+ throw new ValidationError('至少需要提供一个集合标识', 'slugs');
84
+ }
85
+ const spinner = output.spinner('正在创建 Collections 区块...');
86
+ try {
87
+ const translationContent = { title: title };
88
+ if (description) {
89
+ translationContent.description = description;
90
+ }
91
+ const data = {
92
+ type: 'collections',
93
+ translations: {
94
+ [lang]: translationContent,
95
+ },
96
+ settings: {
97
+ collection_slugs: collectionSlugs,
98
+ },
99
+ };
100
+ const result = await commerceApi.homepage.sections.create(data);
101
+ spinner.succeed('Collections 区块创建成功!');
102
+ if (output.isJson()) {
103
+ output.success(result, '首页区块创建成功');
104
+ }
105
+ else {
106
+ console.log();
107
+ console.log(chalk.green('✓ Collections 区块创建成功!'));
108
+ console.log();
109
+ console.log(chalk.gray('区块ID: ') + chalk.cyan(result.id));
110
+ console.log(chalk.gray('类型: ') + chalk.white('collections'));
111
+ console.log(chalk.gray('位置: ') + chalk.white(result.position?.toString() || 'N/A'));
112
+ console.log(chalk.gray('集合: ') + chalk.white(collectionSlugs.join(', ')));
113
+ console.log();
114
+ }
115
+ }
116
+ catch (error) {
117
+ spinner.fail('创建 Collections 区块失败');
118
+ throw createApiError(error);
119
+ }
120
+ }
121
+ //# sourceMappingURL=create-collections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-collections.js","sourceRoot":"","sources":["../../../src/commands/homepage/create-collections.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const createFeaturedCommand: Command;
3
+ //# sourceMappingURL=create-featured.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-featured.d.ts","sourceRoot":"","sources":["../../../src/commands/homepage/create-featured.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuFpC,eAAO,MAAM,qBAAqB,SAAM,CAAC"}
@@ -0,0 +1,151 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { commerceApi } from '../../api/rest/commerce.js';
4
+ import { handleError, createApiError, ValidationError } from '../../utils/error.js';
5
+ import { output } from '../../utils/output.js';
6
+ import { addEnhancedHelp } from '../../utils/helpText.js';
7
+ import { isInteractiveEnvironment } from '../../utils/interactive.js';
8
+ const cmd = new Command('create-featured')
9
+ .description('Create a featured promotion section')
10
+ .option('--title <title>', 'Section title (required)')
11
+ .option('--description <text>', 'Section description (optional)')
12
+ .option('--lang <code>', 'Language code (default: en-US)', 'en-US')
13
+ .option('--target-type <type>', 'Target type: collection|product|url (required)')
14
+ .option('--target-handle <handle>', 'Target handle/slug or URL (required)')
15
+ .option('--cta <text>', 'Call-to-action button text (required)')
16
+ .option('--image-url <url>', 'Featured image URL (required)')
17
+ .action(async (options) => {
18
+ try {
19
+ await createFeatured(options);
20
+ }
21
+ catch (error) {
22
+ handleError(error);
23
+ }
24
+ });
25
+ addEnhancedHelp(cmd, {
26
+ examples: [
27
+ '# Create featured section linking to a collection',
28
+ '$ commerce homepage create-featured --title "Summer Sale" \\',
29
+ ' --target-type collection --target-handle summer-sale --cta "Shop Now" \\',
30
+ ' --image-url "https://example.com/promo.jpg"',
31
+ '',
32
+ '# Create featured section linking to a product',
33
+ '$ commerce homepage create-featured --title "New Arrival" \\',
34
+ ' --target-type product --target-handle awesome-product --cta "Buy Now" \\',
35
+ ' --image-url "https://example.com/product.jpg"',
36
+ '',
37
+ '# Create featured section linking to external URL',
38
+ '$ commerce homepage create-featured --title "Special Offer" \\',
39
+ ' --target-type url --target-handle "https://example.com/sale" \\',
40
+ ' --cta "Learn More" --image-url "https://example.com/banner.jpg"',
41
+ ],
42
+ output: {
43
+ example: JSON.stringify({
44
+ success: true,
45
+ data: {
46
+ id: 'section-123',
47
+ type: 'featured',
48
+ position: 3,
49
+ handle: 'featured-0',
50
+ settings: {
51
+ target_type: 'collection',
52
+ target_handle: 'summer-sale',
53
+ cta_text: 'Shop Now',
54
+ url: 'https://example.com/promo.jpg',
55
+ },
56
+ },
57
+ message: '首页区块创建成功',
58
+ }, null, 2),
59
+ },
60
+ relatedCommands: [
61
+ { command: 'homepage update-target', description: 'Update target settings' },
62
+ { command: 'collection list', description: 'List available collections' },
63
+ { command: 'homepage list', description: 'List all sections' },
64
+ ],
65
+ notes: [
66
+ '--image-url is required, the featured image to display',
67
+ '--target-type must be: collection, product, or url',
68
+ '--target-handle is the slug for collection/product, or full URL for url type',
69
+ '--cta is the button text shown to users',
70
+ ],
71
+ });
72
+ export const createFeaturedCommand = cmd;
73
+ async function createFeatured(options) {
74
+ const { title, description, lang = 'en-US', targetType, targetHandle, cta, imageUrl } = options;
75
+ // Validate required params
76
+ if (!isInteractiveEnvironment()) {
77
+ if (!title || title.trim().length === 0) {
78
+ throw new ValidationError('缺少必需参数: --title (区块标题)', 'title');
79
+ }
80
+ if (!targetType || targetType.trim().length === 0) {
81
+ throw new ValidationError('缺少必需参数: --target-type (目标类型)', 'target-type');
82
+ }
83
+ if (!targetHandle || targetHandle.trim().length === 0) {
84
+ throw new ValidationError('缺少必需参数: --target-handle (目标标识)', 'target-handle');
85
+ }
86
+ if (!cta || cta.trim().length === 0) {
87
+ throw new ValidationError('缺少必需参数: --cta (按钮文字)', 'cta');
88
+ }
89
+ if (!imageUrl || imageUrl.trim().length === 0) {
90
+ throw new ValidationError('缺少必需参数: --image-url (展示图片)', 'image-url');
91
+ }
92
+ }
93
+ else {
94
+ if (!title)
95
+ throw new ValidationError('缺少必需参数: --title', 'title');
96
+ if (!targetType)
97
+ throw new ValidationError('缺少必需参数: --target-type', 'target-type');
98
+ if (!targetHandle)
99
+ throw new ValidationError('缺少必需参数: --target-handle', 'target-handle');
100
+ if (!cta)
101
+ throw new ValidationError('缺少必需参数: --cta', 'cta');
102
+ if (!imageUrl)
103
+ throw new ValidationError('缺少必需参数: --image-url', 'image-url');
104
+ }
105
+ // Validate target type
106
+ const validTargetTypes = ['collection', 'product', 'url'];
107
+ if (!validTargetTypes.includes(targetType)) {
108
+ throw new ValidationError(`无效的目标类型: ${targetType}。有效值: ${validTargetTypes.join(', ')}`, 'target-type');
109
+ }
110
+ const spinner = output.spinner('正在创建 Featured 区块...');
111
+ try {
112
+ const translationContent = { title: title };
113
+ if (description) {
114
+ translationContent.description = description;
115
+ }
116
+ const settings = {
117
+ target_type: targetType,
118
+ target_handle: targetHandle,
119
+ cta_text: cta,
120
+ url: imageUrl,
121
+ };
122
+ const data = {
123
+ type: 'featured',
124
+ translations: {
125
+ [lang]: translationContent,
126
+ },
127
+ settings,
128
+ };
129
+ const result = await commerceApi.homepage.sections.create(data);
130
+ spinner.succeed('Featured 区块创建成功!');
131
+ if (output.isJson()) {
132
+ output.success(result, '首页区块创建成功');
133
+ }
134
+ else {
135
+ console.log();
136
+ console.log(chalk.green('✓ Featured 区块创建成功!'));
137
+ console.log();
138
+ console.log(chalk.gray('区块ID: ') + chalk.cyan(result.id));
139
+ console.log(chalk.gray('类型: ') + chalk.white('featured'));
140
+ console.log(chalk.gray('位置: ') + chalk.white(result.position?.toString() || 'N/A'));
141
+ console.log(chalk.gray('目标: ') + chalk.white(`${targetType}:${targetHandle}`));
142
+ console.log(chalk.gray('按钮: ') + chalk.white(cta));
143
+ console.log();
144
+ }
145
+ }
146
+ catch (error) {
147
+ spinner.fail('创建 Featured 区块失败');
148
+ throw createApiError(error);
149
+ }
150
+ }
151
+ //# sourceMappingURL=create-featured.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-featured.js","sourceRoot":"","sources":["../../../src/commands/homepage/create-featured.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/homepage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,QAAA,MAAM,QAAQ,SAAgF,CAAC;AAsB/F,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/homepage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,QAAA,MAAM,QAAQ,SAAgF,CAAC;AAyB/F,eAAe,QAAQ,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import { Command } from 'commander';
2
2
  import { listSectionsCommand } from './list.js';
3
- import { createSectionCommand } from './create.js';
3
+ import { createBannerCommand } from './create-banner.js';
4
+ import { createCollectionsCommand } from './create-collections.js';
5
+ import { createFeaturedCommand } from './create-featured.js';
6
+ import { createCollectionProductsCommand } from './create-collection-products.js';
4
7
  import { getSectionCommand } from './get.js';
5
8
  import { updateSectionCommand } from './update.js';
6
9
  import { deleteSectionCommand } from './delete.js';
@@ -21,7 +24,10 @@ homepage.addCommand(switchTemplateCommand);
21
24
  homepage.addCommand(deleteConfigCommand);
22
25
  // 基础 CRUD 命令
23
26
  homepage.addCommand(listSectionsCommand);
24
- homepage.addCommand(createSectionCommand);
27
+ homepage.addCommand(createBannerCommand);
28
+ homepage.addCommand(createCollectionsCommand);
29
+ homepage.addCommand(createFeaturedCommand);
30
+ homepage.addCommand(createCollectionProductsCommand);
25
31
  homepage.addCommand(getSectionCommand);
26
32
  homepage.addCommand(updateSectionCommand);
27
33
  homepage.addCommand(deleteSectionCommand);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/homepage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,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,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,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,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC;AAE/F,UAAU;AACV,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC3C,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAEzC,aAAa;AACb,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAE5C,iBAAiB;AACjB,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;AAC9C,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAE1C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/homepage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,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,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,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,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC;AAE/F,UAAU;AACV,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACtC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC3C,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAEzC,aAAa;AACb,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;AAC9C,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;AAC3C,QAAQ,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;AACrD,QAAQ,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACvC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,QAAQ,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC;AAE5C,iBAAiB;AACjB,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,QAAQ,CAAC,UAAU,CAAC,wBAAwB,CAAC,CAAC;AAC9C,QAAQ,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AACzC,QAAQ,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAE1C,eAAe,QAAQ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/commerce-cli",
3
- "version": "1.11.2",
3
+ "version": "1.12.0",
4
4
  "description": "用自然语言管理电商店铺 - 专为 Claude Code 设计的对话式 CLI 工具,支持多环境和功能测试",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const createSectionCommand: Command;
3
- //# sourceMappingURL=create.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/homepage/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8EpC,eAAO,MAAM,oBAAoB,SAAM,CAAC"}