ecomcoder-cli 1.3.8 → 1.3.10

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 (42) hide show
  1. package/dist/cli.js +10 -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/get.d.ts +5 -0
  8. package/dist/commands/asset/get.d.ts.map +1 -0
  9. package/dist/commands/asset/get.js +54 -0
  10. package/dist/commands/asset/get.js.map +1 -0
  11. package/dist/commands/asset/import.d.ts +5 -0
  12. package/dist/commands/asset/import.d.ts.map +1 -0
  13. package/dist/commands/asset/import.js +57 -0
  14. package/dist/commands/asset/import.js.map +1 -0
  15. package/dist/commands/asset/index.d.ts +5 -0
  16. package/dist/commands/asset/index.d.ts.map +1 -0
  17. package/dist/commands/asset/index.js +58 -0
  18. package/dist/commands/asset/index.js.map +1 -0
  19. package/dist/commands/asset/list.d.ts +5 -0
  20. package/dist/commands/asset/list.d.ts.map +1 -0
  21. package/dist/commands/asset/list.js +53 -0
  22. package/dist/commands/asset/list.js.map +1 -0
  23. package/dist/commands/asset/queries.d.ts +12 -0
  24. package/dist/commands/asset/queries.d.ts.map +1 -0
  25. package/dist/commands/asset/queries.js +135 -0
  26. package/dist/commands/asset/queries.js.map +1 -0
  27. package/dist/commands/asset/service.d.ts +50 -0
  28. package/dist/commands/asset/service.d.ts.map +1 -0
  29. package/dist/commands/asset/service.js +348 -0
  30. package/dist/commands/asset/service.js.map +1 -0
  31. package/dist/commands/asset/types.d.ts +137 -0
  32. package/dist/commands/asset/types.d.ts.map +1 -0
  33. package/dist/commands/asset/types.js +5 -0
  34. package/dist/commands/asset/types.js.map +1 -0
  35. package/dist/commands/asset/upload.d.ts +5 -0
  36. package/dist/commands/asset/upload.d.ts.map +1 -0
  37. package/dist/commands/asset/upload.js +57 -0
  38. package/dist/commands/asset/upload.js.map +1 -0
  39. package/dist/lib/help-generator.d.ts.map +1 -1
  40. package/dist/lib/help-generator.js +1 -0
  41. package/dist/lib/help-generator.js.map +1 -1
  42. package/package.json +4 -2
package/dist/cli.js CHANGED
@@ -10,9 +10,12 @@
10
10
  * ✅ Scalability - Supports unlimited commands
11
11
  * ✅ Testability - Easy to test routing logic
12
12
  */
13
+ import { createRequire } from 'module';
13
14
  import { getPositionalArgs } from './lib/args-parser.js';
14
15
  import { registry } from './lib/command-registry.js';
15
16
  import { HelpGenerator } from './lib/help-generator.js';
17
+ const require = createRequire(import.meta.url);
18
+ const packageJson = require('../package.json');
16
19
  // Register all command groups
17
20
  import { registerProductCommands } from './commands/product/index.js';
18
21
  import { registerShopCommands } from './commands/shop/index.js';
@@ -20,6 +23,7 @@ import { registerMetafieldCommands } from './commands/metafield/index.js';
20
23
  import { registerProductsCommands } from './commands/products/index.js';
21
24
  import { registerDocsCommands } from './commands/docs/index.js';
22
25
  import { registerDiscountCommands } from './commands/discount/index.js';
26
+ import { registerAssetCommands } from './commands/asset/index.js';
23
27
  // Initialize registry
24
28
  registerProductCommands();
25
29
  registerShopCommands();
@@ -27,11 +31,17 @@ registerMetafieldCommands();
27
31
  registerProductsCommands();
28
32
  registerDocsCommands();
29
33
  registerDiscountCommands();
34
+ registerAssetCommands();
30
35
  function showMainHelp() {
31
36
  console.log(HelpGenerator.generateMainHelp());
32
37
  }
33
38
  async function main() {
34
39
  const args = process.argv.slice(2);
40
+ // Show version if version flag
41
+ if (args.includes('--version') || args.includes('-v')) {
42
+ console.log(`v${packageJson.version}`);
43
+ process.exit(0);
44
+ }
35
45
  // Show help if no arguments
36
46
  if (args.length === 0) {
37
47
  showMainHelp();
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,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,CAwD5C"}
@@ -0,0 +1,58 @@
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
+ }
58
+ //# 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;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"}
@@ -0,0 +1,135 @@
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
+ // Create staged upload (step 1 of upload process)
8
+ export const STAGED_UPLOADS_CREATE = `
9
+ mutation stagedUploadsCreate($input: [StagedUploadInput!]!) {
10
+ stagedUploadsCreate(input: $input) {
11
+ stagedTargets {
12
+ url
13
+ resourceUrl
14
+ parameters {
15
+ name
16
+ value
17
+ }
18
+ }
19
+ userErrors {
20
+ field
21
+ message
22
+ }
23
+ }
24
+ }
25
+ `;
26
+ // Upload asset via staged upload (step 2)
27
+ export const FILE_CREATE = `
28
+ mutation fileCreate($files: [FileCreateInput!]!) {
29
+ fileCreate(files: $files) {
30
+ files {
31
+ id
32
+ alt
33
+ fileStatus
34
+ createdAt
35
+ ... on MediaImage {
36
+ id
37
+ alt
38
+ preview {
39
+ image {
40
+ url
41
+ width
42
+ height
43
+ }
44
+ }
45
+ }
46
+ ... on Video {
47
+ id
48
+ alt
49
+ sources {
50
+ url
51
+ width
52
+ height
53
+ }
54
+ }
55
+ }
56
+ userErrors {
57
+ field
58
+ message
59
+ }
60
+ }
61
+ }
62
+ `;
63
+ // List all files (images + videos)
64
+ export const FILES_LIST = `
65
+ query files($first: Int!, $after: String, $query: String) {
66
+ files(first: $first, after: $after, query: $query) {
67
+ edges {
68
+ node {
69
+ id
70
+ alt
71
+ fileStatus
72
+ createdAt
73
+ ... on MediaImage {
74
+ image {
75
+ url
76
+ width
77
+ height
78
+ }
79
+ }
80
+ ... on Video {
81
+ sources {
82
+ url
83
+ width
84
+ height
85
+ }
86
+ }
87
+ }
88
+ }
89
+ pageInfo {
90
+ hasNextPage
91
+ endCursor
92
+ }
93
+ }
94
+ }
95
+ `;
96
+ // Get single file details
97
+ export const FILE_GET = `
98
+ query file($id: ID!) {
99
+ node(id: $id) {
100
+ ... on MediaImage {
101
+ id
102
+ alt
103
+ image {
104
+ url
105
+ width
106
+ height
107
+ }
108
+ createdAt
109
+ }
110
+ ... on Video {
111
+ id
112
+ alt
113
+ sources {
114
+ url
115
+ width
116
+ height
117
+ }
118
+ createdAt
119
+ }
120
+ }
121
+ }
122
+ `;
123
+ // Delete file
124
+ export const FILE_DELETE = `
125
+ mutation fileDelete($fileIds: [ID!]!) {
126
+ fileDelete(fileIds: $fileIds) {
127
+ deletedFileIds
128
+ userErrors {
129
+ field
130
+ message
131
+ }
132
+ }
133
+ }
134
+ `;
135
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/commands/asset/queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;CAiBpC,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC1B,CAAC;AAEF,mCAAmC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BzB,CAAC;AAEF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBvB,CAAC;AAEF,cAAc;AACd,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;CAU1B,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Asset Service
3
+ *
4
+ * Handles all asset management business logic
5
+ * Following Service Layer Pattern
6
+ */
7
+ import { ShopifyCredentials } from '../../lib/types.js';
8
+ import { CommandResult, UploadAssetInput, ListAssetsInput, GetAssetInput, DeleteAssetInput, ImportAssetsInput, FormattedAsset } from './types.js';
9
+ export declare class AssetService {
10
+ /**
11
+ * Upload single asset to Shopify
12
+ *
13
+ * Three-step process:
14
+ * 1. Create staged upload target
15
+ * 2. Upload file to signed URL
16
+ * 3. Create file record in Shopify
17
+ */
18
+ static upload(credentials: ShopifyCredentials, input: UploadAssetInput): Promise<CommandResult<{
19
+ asset: FormattedAsset;
20
+ }>>;
21
+ /**
22
+ * List all assets
23
+ */
24
+ static list(credentials: ShopifyCredentials, input?: ListAssetsInput): Promise<CommandResult<{
25
+ assets: FormattedAsset[];
26
+ hasMore: boolean;
27
+ cursor: string | null;
28
+ }>>;
29
+ /**
30
+ * Get single asset details
31
+ */
32
+ static get(credentials: ShopifyCredentials, input: GetAssetInput): Promise<CommandResult<{
33
+ asset: FormattedAsset;
34
+ }>>;
35
+ /**
36
+ * Delete asset
37
+ */
38
+ static delete(credentials: ShopifyCredentials, input: DeleteAssetInput): Promise<CommandResult<{
39
+ deletedId: string;
40
+ }>>;
41
+ /**
42
+ * Bulk import assets from directory
43
+ */
44
+ static import(credentials: ShopifyCredentials, input: ImportAssetsInput): Promise<CommandResult<{
45
+ uploaded: number;
46
+ failed: number;
47
+ errors: string[];
48
+ }>>;
49
+ }
50
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAYxD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EAMf,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB;;;;;;;OAOG;WACU,MAAM,CACjB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAiJpD;;OAEG;WACU,IAAI,CACf,WAAW,EAAE,kBAAkB,EAC/B,KAAK,GAAE,eAAoB,GAC1B,OAAO,CAAC,aAAa,CAAC;QAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAyChG;;OAEG;WACU,GAAG,CACd,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IA6BpD;;OAEG;WACU,MAAM,CACjB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA+BhD;;OAEG;WACU,MAAM,CACjB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CAkDlF"}