ecomcoder-cli 1.3.9 → 1.3.11

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 (55) hide show
  1. package/dist/cli.js +2 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/asset/delete.d.ts +5 -0
  4. package/dist/commands/asset/delete.d.ts.map +1 -0
  5. package/dist/commands/asset/delete.js +54 -0
  6. package/dist/commands/asset/delete.js.map +1 -0
  7. package/dist/commands/asset/external-apis.d.ts +13 -0
  8. package/dist/commands/asset/external-apis.d.ts.map +1 -0
  9. package/dist/commands/asset/external-apis.js +99 -0
  10. package/dist/commands/asset/external-apis.js.map +1 -0
  11. package/dist/commands/asset/get.d.ts +5 -0
  12. package/dist/commands/asset/get.d.ts.map +1 -0
  13. package/dist/commands/asset/get.js +54 -0
  14. package/dist/commands/asset/get.js.map +1 -0
  15. package/dist/commands/asset/import.d.ts +5 -0
  16. package/dist/commands/asset/import.d.ts.map +1 -0
  17. package/dist/commands/asset/import.js +57 -0
  18. package/dist/commands/asset/import.js.map +1 -0
  19. package/dist/commands/asset/index.d.ts +5 -0
  20. package/dist/commands/asset/index.d.ts.map +1 -0
  21. package/dist/commands/asset/index.js +75 -0
  22. package/dist/commands/asset/index.js.map +1 -0
  23. package/dist/commands/asset/list.d.ts +5 -0
  24. package/dist/commands/asset/list.d.ts.map +1 -0
  25. package/dist/commands/asset/list.js +53 -0
  26. package/dist/commands/asset/list.js.map +1 -0
  27. package/dist/commands/asset/queries.d.ts +12 -0
  28. package/dist/commands/asset/queries.d.ts.map +1 -0
  29. package/dist/commands/asset/queries.js +135 -0
  30. package/dist/commands/asset/queries.js.map +1 -0
  31. package/dist/commands/asset/search-icons.d.ts +6 -0
  32. package/dist/commands/asset/search-icons.d.ts.map +1 -0
  33. package/dist/commands/asset/search-icons.js +84 -0
  34. package/dist/commands/asset/search-icons.js.map +1 -0
  35. package/dist/commands/asset/search-stock.d.ts +6 -0
  36. package/dist/commands/asset/search-stock.d.ts.map +1 -0
  37. package/dist/commands/asset/search-stock.js +79 -0
  38. package/dist/commands/asset/search-stock.js.map +1 -0
  39. package/dist/commands/asset/service.d.ts +62 -0
  40. package/dist/commands/asset/service.d.ts.map +1 -0
  41. package/dist/commands/asset/service.js +417 -0
  42. package/dist/commands/asset/service.js.map +1 -0
  43. package/dist/commands/asset/types.d.ts +166 -0
  44. package/dist/commands/asset/types.d.ts.map +1 -0
  45. package/dist/commands/asset/types.js +5 -0
  46. package/dist/commands/asset/types.js.map +1 -0
  47. package/dist/commands/asset/upload.d.ts +5 -0
  48. package/dist/commands/asset/upload.d.ts.map +1 -0
  49. package/dist/commands/asset/upload.js +75 -0
  50. package/dist/commands/asset/upload.js.map +1 -0
  51. package/dist/commands/asset/utils.d.ts +13 -0
  52. package/dist/commands/asset/utils.d.ts.map +1 -0
  53. package/dist/commands/asset/utils.js +68 -0
  54. package/dist/commands/asset/utils.js.map +1 -0
  55. package/package.json +4 -2
package/dist/cli.js CHANGED
@@ -23,6 +23,7 @@ import { registerMetafieldCommands } from './commands/metafield/index.js';
23
23
  import { registerProductsCommands } from './commands/products/index.js';
24
24
  import { registerDocsCommands } from './commands/docs/index.js';
25
25
  import { registerDiscountCommands } from './commands/discount/index.js';
26
+ import { registerAssetCommands } from './commands/asset/index.js';
26
27
  // Initialize registry
27
28
  registerProductCommands();
28
29
  registerShopCommands();
@@ -30,6 +31,7 @@ registerMetafieldCommands();
30
31
  registerProductsCommands();
31
32
  registerDocsCommands();
32
33
  registerDiscountCommands();
34
+ registerAssetCommands();
33
35
  function showMainHelp() {
34
36
  console.log(HelpGenerator.generateMainHelp());
35
37
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Delete Asset Command
3
+ */
4
+ export declare function run(argv?: string[]): Promise<void>;
5
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBAmC/D"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Delete Asset Command
3
+ */
4
+ import { getCredentials, getSessionId } from '../../lib/api-client.js';
5
+ import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
6
+ import { AssetService } from './service.js';
7
+ function showHelp() {
8
+ console.log(`
9
+ Delete Asset
10
+
11
+ USAGE:
12
+ ecomcoder asset delete [OPTIONS]
13
+
14
+ OPTIONS:
15
+ --id <id> Asset ID (required)
16
+ --help, -h Show this help message
17
+
18
+ EXAMPLES:
19
+ ecomcoder asset delete --id=gid://shopify/MediaImage/123456789
20
+ `);
21
+ process.exit(0);
22
+ }
23
+ export async function run(argv = process.argv.slice(2)) {
24
+ if (hasHelpFlag(argv)) {
25
+ showHelp();
26
+ }
27
+ const args = parseArgs(argv);
28
+ if (!args.id) {
29
+ console.error(JSON.stringify({
30
+ success: false,
31
+ error: 'Missing required argument: --id'
32
+ }));
33
+ process.exit(1);
34
+ }
35
+ try {
36
+ const sessionId = getSessionId(args.sessionId);
37
+ const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
38
+ const result = await AssetService.delete(credentials, {
39
+ id: args.id
40
+ });
41
+ console.log(JSON.stringify(result, null, 2));
42
+ if (!result.success) {
43
+ process.exit(1);
44
+ }
45
+ }
46
+ catch (error) {
47
+ console.error(JSON.stringify({
48
+ success: false,
49
+ error: error.message || 'Unknown error occurred'
50
+ }));
51
+ process.exit(1);
52
+ }
53
+ }
54
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/asset/delete.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;CAYb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iCAAiC;SACzC,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE;YACpD,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,wBAAwB;SACjD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * External API Integrations
3
+ * Handles stock images (Pexels) and icons (Lucide)
4
+ */
5
+ import { StockImage, SearchStockInput, Icon, SearchIconsInput } from './types.js';
6
+ /**
7
+ * Pexels API Client
8
+ * Free stock photos API
9
+ * Rate limit: 200/hour, 20,000/month (free tier)
10
+ */
11
+ export declare function searchPexelsImages(input: SearchStockInput): Promise<StockImage[]>;
12
+ export declare function searchLucideIcons(input: SearchIconsInput): Promise<Icon[]>;
13
+ //# sourceMappingURL=external-apis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-apis.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/external-apis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAElF;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAkDvF;AAkCD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAkBhF"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * External API Integrations
3
+ * Handles stock images (Pexels) and icons (Lucide)
4
+ */
5
+ /**
6
+ * Pexels API Client
7
+ * Free stock photos API
8
+ * Rate limit: 200/hour, 20,000/month (free tier)
9
+ */
10
+ export async function searchPexelsImages(input) {
11
+ const apiKey = process.env.PEXELS_API_KEY;
12
+ if (!apiKey) {
13
+ throw new Error('PEXELS_API_KEY environment variable not set. Get your free API key at https://www.pexels.com/api/');
14
+ }
15
+ const limit = Math.min(input.limit || 10, 80); // Max 80 per request
16
+ const params = new URLSearchParams({
17
+ query: input.query,
18
+ per_page: limit.toString(),
19
+ });
20
+ if (input.orientation) {
21
+ params.append('orientation', input.orientation);
22
+ }
23
+ if (input.size) {
24
+ params.append('size', input.size);
25
+ }
26
+ if (input.color) {
27
+ params.append('color', input.color);
28
+ }
29
+ const response = await fetch(`https://api.pexels.com/v1/search?${params}`, {
30
+ headers: {
31
+ 'Authorization': apiKey
32
+ }
33
+ });
34
+ if (!response.ok) {
35
+ if (response.status === 429) {
36
+ throw new Error('Pexels rate limit exceeded. Free tier: 200/hour, 20,000/month.');
37
+ }
38
+ throw new Error(`Pexels API error: ${response.status} ${response.statusText}`);
39
+ }
40
+ const data = await response.json();
41
+ return data.photos.map((photo) => ({
42
+ id: photo.id,
43
+ url: photo.src.large2x || photo.src.large, // High quality image
44
+ photographer: photo.photographer,
45
+ photographerUrl: photo.photographer_url,
46
+ width: photo.width,
47
+ height: photo.height,
48
+ alt: photo.alt || input.query,
49
+ avgColor: photo.avg_color
50
+ }));
51
+ }
52
+ /**
53
+ * Lucide Icons Search
54
+ * Open-source icon library with 1,667+ icons
55
+ * No API key required - uses CDN
56
+ */
57
+ // Embedded icon metadata for fast search
58
+ // This is a curated subset - full list at https://lucide.dev/icons/
59
+ const LUCIDE_ICONS = [
60
+ { name: 'shopping-cart', tags: ['cart', 'shop', 'buy', 'purchase', 'ecommerce'], category: 'ecommerce' },
61
+ { name: 'shopping-bag', tags: ['bag', 'shop', 'buy', 'purchase', 'ecommerce'], category: 'ecommerce' },
62
+ { name: 'credit-card', tags: ['payment', 'card', 'pay', 'money'], category: 'payment' },
63
+ { name: 'heart', tags: ['like', 'favorite', 'love', 'wishlist'], category: 'social' },
64
+ { name: 'star', tags: ['favorite', 'rating', 'review'], category: 'social' },
65
+ { name: 'user', tags: ['account', 'profile', 'person'], category: 'user' },
66
+ { name: 'search', tags: ['find', 'magnifier', 'look'], category: 'ui' },
67
+ { name: 'menu', tags: ['hamburger', 'navigation', 'nav'], category: 'ui' },
68
+ { name: 'x', tags: ['close', 'cancel', 'dismiss'], category: 'ui' },
69
+ { name: 'check', tags: ['success', 'done', 'complete'], category: 'ui' },
70
+ { name: 'arrow-right', tags: ['next', 'forward', 'direction'], category: 'arrows' },
71
+ { name: 'arrow-left', tags: ['back', 'previous', 'direction'], category: 'arrows' },
72
+ { name: 'home', tags: ['house', 'main', 'start'], category: 'ui' },
73
+ { name: 'mail', tags: ['email', 'message', 'envelope'], category: 'communication' },
74
+ { name: 'phone', tags: ['call', 'contact', 'telephone'], category: 'communication' },
75
+ { name: 'truck', tags: ['delivery', 'shipping', 'transport'], category: 'ecommerce' },
76
+ { name: 'package', tags: ['box', 'product', 'shipping'], category: 'ecommerce' },
77
+ { name: 'gift', tags: ['present', 'box', 'surprise'], category: 'ecommerce' },
78
+ { name: 'tag', tags: ['price', 'label', 'discount'], category: 'ecommerce' },
79
+ { name: 'percent', tags: ['discount', 'sale', 'offer'], category: 'ecommerce' },
80
+ // Add more as needed - this is just a starter set
81
+ ];
82
+ export async function searchLucideIcons(input) {
83
+ const query = input.query.toLowerCase();
84
+ const limit = input.limit || 10;
85
+ // Search in name and tags
86
+ const results = LUCIDE_ICONS.filter(icon => {
87
+ return icon.name.includes(query) ||
88
+ icon.tags.some(tag => tag.includes(query)) ||
89
+ icon.category?.includes(query);
90
+ });
91
+ // Return top matches with CDN URLs
92
+ return results.slice(0, limit).map(icon => ({
93
+ name: icon.name,
94
+ url: `https://cdn.jsdelivr.net/npm/lucide-static@latest/icons/${icon.name}.svg`,
95
+ tags: icon.tags,
96
+ category: icon.category
97
+ }));
98
+ }
99
+ //# sourceMappingURL=external-apis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-apis.js","sourceRoot":"","sources":["../../../src/commands/asset/external-apis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Get Asset Command
3
+ */
4
+ export declare function run(argv?: string[]): Promise<void>;
5
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuBH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBAmC/D"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Get Asset Command
3
+ */
4
+ import { getCredentials, getSessionId } from '../../lib/api-client.js';
5
+ import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
6
+ import { AssetService } from './service.js';
7
+ function showHelp() {
8
+ console.log(`
9
+ Get Asset Details
10
+
11
+ USAGE:
12
+ ecomcoder asset get [OPTIONS]
13
+
14
+ OPTIONS:
15
+ --id <id> Asset ID (required)
16
+ --help, -h Show this help message
17
+
18
+ EXAMPLES:
19
+ ecomcoder asset get --id=gid://shopify/MediaImage/123456789
20
+ `);
21
+ process.exit(0);
22
+ }
23
+ export async function run(argv = process.argv.slice(2)) {
24
+ if (hasHelpFlag(argv)) {
25
+ showHelp();
26
+ }
27
+ const args = parseArgs(argv);
28
+ if (!args.id) {
29
+ console.error(JSON.stringify({
30
+ success: false,
31
+ error: 'Missing required argument: --id'
32
+ }));
33
+ process.exit(1);
34
+ }
35
+ try {
36
+ const sessionId = getSessionId(args.sessionId);
37
+ const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
38
+ const result = await AssetService.get(credentials, {
39
+ id: args.id
40
+ });
41
+ console.log(JSON.stringify(result, null, 2));
42
+ if (!result.success) {
43
+ process.exit(1);
44
+ }
45
+ }
46
+ catch (error) {
47
+ console.error(JSON.stringify({
48
+ success: false,
49
+ error: error.message || 'Unknown error occurred'
50
+ }));
51
+ process.exit(1);
52
+ }
53
+ }
54
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/asset/get.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;CAYb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,iCAAiC;SACzC,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE;YACjD,EAAE,EAAE,IAAI,CAAC,EAAE;SACZ,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,wBAAwB;SACjD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Import Assets Command (Bulk Upload)
3
+ */
4
+ export declare function run(argv?: string[]): Promise<void>;
5
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBAoC/D"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Import Assets Command (Bulk Upload)
3
+ */
4
+ import { getCredentials, getSessionId } from '../../lib/api-client.js';
5
+ import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
6
+ import { AssetService } from './service.js';
7
+ function showHelp() {
8
+ console.log(`
9
+ Bulk Import Assets
10
+
11
+ USAGE:
12
+ ecomcoder asset import [OPTIONS]
13
+
14
+ OPTIONS:
15
+ --directory <path> Directory path (required)
16
+ --pattern <pattern> File pattern (optional, e.g., "*.png")
17
+ --help, -h Show this help message
18
+
19
+ EXAMPLES:
20
+ ecomcoder asset import --directory=./images
21
+ ecomcoder asset import --directory=./assets --pattern="*.jpg"
22
+ `);
23
+ process.exit(0);
24
+ }
25
+ export async function run(argv = process.argv.slice(2)) {
26
+ if (hasHelpFlag(argv)) {
27
+ showHelp();
28
+ }
29
+ const args = parseArgs(argv);
30
+ if (!args.directory) {
31
+ console.error(JSON.stringify({
32
+ success: false,
33
+ error: 'Missing required argument: --directory'
34
+ }));
35
+ process.exit(1);
36
+ }
37
+ try {
38
+ const sessionId = getSessionId(args.sessionId);
39
+ const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
40
+ const result = await AssetService.import(credentials, {
41
+ directory: args.directory,
42
+ pattern: args.pattern
43
+ });
44
+ console.log(JSON.stringify(result, null, 2));
45
+ if (!result.success) {
46
+ process.exit(1);
47
+ }
48
+ }
49
+ catch (error) {
50
+ console.error(JSON.stringify({
51
+ success: false,
52
+ error: error.message || 'Unknown error occurred'
53
+ }));
54
+ process.exit(1);
55
+ }
56
+ }
57
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/commands/asset/import.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;CAcb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,wCAAwC;SAChD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,WAAW,EAAE;YACpD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,wBAAwB;SACjD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Asset Command Registration
3
+ */
4
+ export declare function registerAssetCommands(): void;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,wBAAgB,qBAAqB,IAAI,IAAI,CA2E5C"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Asset Command Registration
3
+ */
4
+ import { registry } from '../../lib/command-registry.js';
5
+ import { HelpGenerator } from '../../lib/help-generator.js';
6
+ export function registerAssetCommands() {
7
+ // Register group
8
+ registry.registerGroup({
9
+ command: 'asset',
10
+ description: 'Manage store assets (images, videos, files)',
11
+ showHelp: () => {
12
+ console.log(HelpGenerator.generateGroupHelp('asset'));
13
+ }
14
+ });
15
+ // CRUD operations
16
+ registry.register({
17
+ command: 'asset',
18
+ subcommand: 'upload',
19
+ description: 'Upload asset to Shopify',
20
+ category: 'CRUD',
21
+ quickExample: 'ecomcoder asset upload --file=logo.png --alt="Logo"',
22
+ handler: async () => await import('./upload.js')
23
+ });
24
+ registry.register({
25
+ command: 'asset',
26
+ subcommand: 'get',
27
+ description: 'Get asset details by ID',
28
+ category: 'CRUD',
29
+ quickExample: 'ecomcoder asset get --id=gid://shopify/MediaImage/123',
30
+ handler: async () => await import('./get.js')
31
+ });
32
+ registry.register({
33
+ command: 'asset',
34
+ subcommand: 'delete',
35
+ description: 'Delete asset from Shopify',
36
+ category: 'CRUD',
37
+ quickExample: 'ecomcoder asset delete --id=gid://shopify/MediaImage/123',
38
+ handler: async () => await import('./delete.js')
39
+ });
40
+ // Manage operations
41
+ registry.register({
42
+ command: 'asset',
43
+ subcommand: 'list',
44
+ description: 'List all assets',
45
+ category: 'Manage',
46
+ quickExample: 'ecomcoder asset list --type=IMAGE --limit=50',
47
+ handler: async () => await import('./list.js')
48
+ });
49
+ registry.register({
50
+ command: 'asset',
51
+ subcommand: 'import',
52
+ description: 'Bulk import assets from directory',
53
+ category: 'Manage',
54
+ quickExample: 'ecomcoder asset import --directory=./images --pattern="*.png"',
55
+ handler: async () => await import('./import.js')
56
+ });
57
+ // External resources
58
+ registry.register({
59
+ command: 'asset',
60
+ subcommand: 'search-stock',
61
+ description: 'Search free stock photos (Pexels)',
62
+ category: 'Search',
63
+ quickExample: 'ecomcoder asset search-stock --query="mountains" --limit=5',
64
+ handler: async () => await import('./search-stock.js')
65
+ });
66
+ registry.register({
67
+ command: 'asset',
68
+ subcommand: 'search-icons',
69
+ description: 'Search open-source icons (Lucide)',
70
+ category: 'Search',
71
+ quickExample: 'ecomcoder asset search-icons --query="cart"',
72
+ handler: async () => await import('./search-icons.js')
73
+ });
74
+ }
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/asset/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,UAAU,qBAAqB;IACnC,iBAAiB;IACjB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,6CAA6C;QAC1D,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC;KACF,CAAC,CAAC;IAEH,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,qDAAqD;QACnE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC;KACjD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,uDAAuD;QACrE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC;KAC9C,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,2BAA2B;QACxC,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,0DAA0D;QACxE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC;KACjD,CAAC,CAAC;IAEH,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,MAAM;QAClB,WAAW,EAAE,iBAAiB;QAC9B,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,8CAA8C;QAC5D,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC;KAC/C,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,+DAA+D;QAC7E,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC;KACjD,CAAC,CAAC;IAEH,qBAAqB;IACrB,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,4DAA4D;QAC1E,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,OAAO;QAChB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,QAAQ;QAClB,YAAY,EAAE,6CAA6C;QAC3D,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * List Assets Command
3
+ */
4
+ export declare function run(argv?: string[]): Promise<void>;
5
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBA6B/D"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * List Assets Command
3
+ */
4
+ import { getCredentials, getSessionId } from '../../lib/api-client.js';
5
+ import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
6
+ import { AssetService } from './service.js';
7
+ function showHelp() {
8
+ console.log(`
9
+ List All Assets
10
+
11
+ USAGE:
12
+ ecomcoder asset list [OPTIONS]
13
+
14
+ OPTIONS:
15
+ --type <IMAGE|VIDEO> Filter by asset type (optional)
16
+ --limit <number> Maximum number of results (default: 50)
17
+ --cursor <string> Pagination cursor for next page (optional)
18
+ --help, -h Show this help message
19
+
20
+ EXAMPLES:
21
+ ecomcoder asset list
22
+ ecomcoder asset list --type=IMAGE --limit=10
23
+ ecomcoder asset list --cursor=eyJsYXN0X2lkIjo...
24
+ `);
25
+ process.exit(0);
26
+ }
27
+ export async function run(argv = process.argv.slice(2)) {
28
+ if (hasHelpFlag(argv)) {
29
+ showHelp();
30
+ }
31
+ const args = parseArgs(argv);
32
+ try {
33
+ const sessionId = getSessionId(args.sessionId);
34
+ const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
35
+ const result = await AssetService.list(credentials, {
36
+ type: args.type,
37
+ limit: args.limit ? parseInt(args.limit) : undefined,
38
+ cursor: args.cursor
39
+ });
40
+ console.log(JSON.stringify(result, null, 2));
41
+ if (!result.success) {
42
+ process.exit(1);
43
+ }
44
+ }
45
+ catch (error) {
46
+ console.error(JSON.stringify({
47
+ success: false,
48
+ error: error.message || 'Unknown error occurred'
49
+ }));
50
+ process.exit(1);
51
+ }
52
+ }
53
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/asset/list.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;CAgBb,CAAC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,QAAQ,EAAE,CAAC;IACb,CAAC;IAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAE/E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE;YAClD,IAAI,EAAE,IAAI,CAAC,IAAqC;YAChD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YACpD,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,wBAAwB;SACjD,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Shopify Files API GraphQL Operations
3
+ *
4
+ * Using Shopify Admin API 2025-10
5
+ * Docs: https://shopify.dev/docs/api/admin-graphql/2025-10/mutations/fileCreate
6
+ */
7
+ export declare const STAGED_UPLOADS_CREATE = "\n mutation stagedUploadsCreate($input: [StagedUploadInput!]!) {\n stagedUploadsCreate(input: $input) {\n stagedTargets {\n url\n resourceUrl\n parameters {\n name\n value\n }\n }\n userErrors {\n field\n message\n }\n }\n }\n";
8
+ export declare const FILE_CREATE = "\n mutation fileCreate($files: [FileCreateInput!]!) {\n fileCreate(files: $files) {\n files {\n id\n alt\n fileStatus\n createdAt\n ... on MediaImage {\n id\n alt\n preview {\n image {\n url\n width\n height\n }\n }\n }\n ... on Video {\n id\n alt\n sources {\n url\n width\n height\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\n";
9
+ export declare const FILES_LIST = "\n query files($first: Int!, $after: String, $query: String) {\n files(first: $first, after: $after, query: $query) {\n edges {\n node {\n id\n alt\n fileStatus\n createdAt\n ... on MediaImage {\n image {\n url\n width\n height\n }\n }\n ... on Video {\n sources {\n url\n width\n height\n }\n }\n }\n }\n pageInfo {\n hasNextPage\n endCursor\n }\n }\n }\n";
10
+ export declare const FILE_GET = "\n query file($id: ID!) {\n node(id: $id) {\n ... on MediaImage {\n id\n alt\n image {\n url\n width\n height\n }\n createdAt\n }\n ... on Video {\n id\n alt\n sources {\n url\n width\n height\n }\n createdAt\n }\n }\n }\n";
11
+ export declare const FILE_DELETE = "\n mutation fileDelete($fileIds: [ID!]!) {\n fileDelete(fileIds: $fileIds) {\n deletedFileIds\n userErrors {\n field\n message\n }\n }\n }\n";
12
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,eAAO,MAAM,qBAAqB,+TAiBjC,CAAC;AAGF,eAAO,MAAM,WAAW,kmBAmCvB,CAAC;AAGF,eAAO,MAAM,UAAU,mmBA+BtB,CAAC;AAGF,eAAO,MAAM,QAAQ,2XAyBpB,CAAC;AAGF,eAAO,MAAM,WAAW,sLAUvB,CAAC"}