ecomcoder-cli 1.3.3 → 1.3.5

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 (80) hide show
  1. package/README.md +0 -23
  2. package/dist/cli.js +4 -84
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/discount/index.d.ts.map +1 -1
  5. package/dist/commands/discount/index.js +10 -49
  6. package/dist/commands/discount/index.js.map +1 -1
  7. package/dist/commands/docs/index.d.ts.map +1 -1
  8. package/dist/commands/docs/index.js +4 -18
  9. package/dist/commands/docs/index.js.map +1 -1
  10. package/dist/commands/metafield/index.d.ts.map +1 -1
  11. package/dist/commands/metafield/index.js +6 -24
  12. package/dist/commands/metafield/index.js.map +1 -1
  13. package/dist/commands/product/create.d.ts +8 -0
  14. package/dist/commands/product/create.d.ts.map +1 -0
  15. package/dist/commands/product/create.js +166 -0
  16. package/dist/commands/product/create.js.map +1 -0
  17. package/dist/commands/product/get-metafield.d.ts +8 -0
  18. package/dist/commands/product/get-metafield.d.ts.map +1 -0
  19. package/dist/commands/product/get-metafield.js +131 -0
  20. package/dist/commands/product/get-metafield.js.map +1 -0
  21. package/dist/commands/product/index.d.ts.map +1 -1
  22. package/dist/commands/product/index.js +42 -42
  23. package/dist/commands/product/index.js.map +1 -1
  24. package/dist/commands/product/queries.d.ts +19 -0
  25. package/dist/commands/product/queries.d.ts.map +1 -1
  26. package/dist/commands/product/queries.js +122 -0
  27. package/dist/commands/product/queries.js.map +1 -1
  28. package/dist/commands/product/service.d.ts +35 -1
  29. package/dist/commands/product/service.d.ts.map +1 -1
  30. package/dist/commands/product/service.js +241 -1
  31. package/dist/commands/product/service.js.map +1 -1
  32. package/dist/commands/product/set-metafield.d.ts +8 -0
  33. package/dist/commands/product/set-metafield.d.ts.map +1 -0
  34. package/dist/commands/product/set-metafield.js +174 -0
  35. package/dist/commands/product/set-metafield.js.map +1 -0
  36. package/dist/commands/product/types.d.ts +88 -0
  37. package/dist/commands/product/types.d.ts.map +1 -1
  38. package/dist/commands/product/update-status.d.ts +8 -0
  39. package/dist/commands/product/update-status.d.ts.map +1 -0
  40. package/dist/commands/product/update-status.js +105 -0
  41. package/dist/commands/product/update-status.js.map +1 -0
  42. package/dist/commands/products/index.d.ts.map +1 -1
  43. package/dist/commands/products/index.js +5 -31
  44. package/dist/commands/products/index.js.map +1 -1
  45. package/dist/commands/shop/get-metafield.d.ts +8 -0
  46. package/dist/commands/shop/get-metafield.d.ts.map +1 -0
  47. package/dist/commands/shop/get-metafield.js +117 -0
  48. package/dist/commands/shop/get-metafield.js.map +1 -0
  49. package/dist/commands/shop/index.d.ts +10 -0
  50. package/dist/commands/shop/index.d.ts.map +1 -0
  51. package/dist/commands/shop/index.js +38 -0
  52. package/dist/commands/shop/index.js.map +1 -0
  53. package/dist/commands/shop/queries.d.ts +24 -0
  54. package/dist/commands/shop/queries.d.ts.map +1 -0
  55. package/dist/commands/shop/queries.js +83 -0
  56. package/dist/commands/shop/queries.js.map +1 -0
  57. package/dist/commands/shop/service.d.ts +30 -0
  58. package/dist/commands/shop/service.d.ts.map +1 -0
  59. package/dist/commands/shop/service.js +131 -0
  60. package/dist/commands/shop/service.js.map +1 -0
  61. package/dist/commands/shop/set-metafield.d.ts +8 -0
  62. package/dist/commands/shop/set-metafield.d.ts.map +1 -0
  63. package/dist/commands/shop/set-metafield.js +174 -0
  64. package/dist/commands/shop/set-metafield.js.map +1 -0
  65. package/dist/commands/shop/types.d.ts +84 -0
  66. package/dist/commands/shop/types.d.ts.map +1 -0
  67. package/dist/commands/shop/types.js +6 -0
  68. package/dist/commands/shop/types.js.map +1 -0
  69. package/dist/lib/command-registry.d.ts +2 -0
  70. package/dist/lib/command-registry.d.ts.map +1 -1
  71. package/dist/lib/command-registry.js.map +1 -1
  72. package/dist/lib/help-generator.d.ts +28 -0
  73. package/dist/lib/help-generator.d.ts.map +1 -0
  74. package/dist/lib/help-generator.js +131 -0
  75. package/dist/lib/help-generator.js.map +1 -0
  76. package/dist/lib/help-utils.d.ts +17 -0
  77. package/dist/lib/help-utils.d.ts.map +1 -0
  78. package/dist/lib/help-utils.js +24 -0
  79. package/dist/lib/help-utils.js.map +1 -0
  80. package/package.json +1 -1
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Get Product Metafield Command
3
+ *
4
+ * Following Command Pattern - thin orchestration layer
5
+ * Delegates business logic to ProductService
6
+ */
7
+ import { getCredentials, getSessionId } from '../../lib/api-client.js';
8
+ import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
9
+ import { ProductService } from './service.js';
10
+ function showHelp() {
11
+ console.log(`
12
+ Get Product Metafield
13
+
14
+ USAGE:
15
+ ecomcoder product get-metafield [OPTIONS]
16
+
17
+ REQUIRED OPTIONS:
18
+ --id <id> Product ID (numeric or GID)
19
+
20
+ QUERY OPTIONS (choose one):
21
+ --namespace <ns> --key <key> Get specific metafield
22
+ --namespace <ns> Get all metafields in namespace
23
+ (no namespace/key) Get all metafields for product
24
+
25
+ OPTIONAL:
26
+ --session-id Session ID (auto-provided via SESSION_ID env var)
27
+ --help, -h Show this help message
28
+
29
+ EXAMPLES:
30
+ # Get specific metafield by namespace and key
31
+ ecomcoder product get-metafield \\
32
+ --id=123 \\
33
+ --namespace=bundles \\
34
+ --key=products
35
+
36
+ # Get all metafields in a namespace
37
+ ecomcoder product get-metafield \\
38
+ --id=123 \\
39
+ --namespace=custom
40
+
41
+ # Get all metafields for product (all namespaces)
42
+ ecomcoder product get-metafield --id=123
43
+
44
+ OUTPUT FORMATS:
45
+ Specific metafield (namespace + key):
46
+ {
47
+ "success": true,
48
+ "data": {
49
+ "metafield": {
50
+ "id": "gid://shopify/Metafield/123",
51
+ "namespace": "bundles",
52
+ "key": "products",
53
+ "value": "[\\"gid://shopify/Product/456\\"]",
54
+ "type": "list.product_reference",
55
+ "createdAt": "2024-01-20T10:30:00Z",
56
+ "updatedAt": "2024-01-20T15:45:00Z"
57
+ }
58
+ }
59
+ }
60
+
61
+ Multiple metafields (namespace or all):
62
+ {
63
+ "success": true,
64
+ "data": {
65
+ "metafields": [...],
66
+ "count": 5
67
+ }
68
+ }
69
+
70
+ Not found:
71
+ {
72
+ "success": true,
73
+ "data": {
74
+ "metafield": null
75
+ }
76
+ }
77
+
78
+ NOTES:
79
+ - Returns up to 250 metafields when querying multiple
80
+ - Namespace filter is optional (omit to get all namespaces)
81
+ - Key requires namespace (cannot query by key alone)
82
+ - Metafield values are always strings (parse JSON for complex types)
83
+ `);
84
+ process.exit(0);
85
+ }
86
+ export async function run(argv = process.argv.slice(2)) {
87
+ if (hasHelpFlag(argv)) {
88
+ showHelp();
89
+ }
90
+ const args = parseArgs(argv);
91
+ // Validate required arguments
92
+ if (!args.id) {
93
+ console.error(JSON.stringify({
94
+ success: false,
95
+ error: 'Missing required argument: --id'
96
+ }));
97
+ process.exit(1);
98
+ }
99
+ // Validate key requires namespace
100
+ if (args.key && !args.namespace) {
101
+ console.error(JSON.stringify({
102
+ success: false,
103
+ error: 'Key requires namespace. Use --namespace with --key'
104
+ }));
105
+ process.exit(1);
106
+ }
107
+ try {
108
+ // Get credentials
109
+ const sessionId = getSessionId(args.sessionId);
110
+ const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
111
+ // Execute get metafield via service
112
+ const result = await ProductService.getMetafield(credentials, {
113
+ id: args.id,
114
+ namespace: args.namespace,
115
+ key: args.key
116
+ });
117
+ // Output result
118
+ console.log(JSON.stringify(result, null, 2));
119
+ if (!result.success) {
120
+ process.exit(1);
121
+ }
122
+ }
123
+ catch (error) {
124
+ console.error(JSON.stringify({
125
+ success: false,
126
+ error: error.message || 'Unknown error occurred'
127
+ }));
128
+ process.exit(1);
129
+ }
130
+ }
131
+ //# sourceMappingURL=get-metafield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-metafield.js","sourceRoot":"","sources":["../../../src/commands/product/get-metafield.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwEb,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,8BAA8B;IAC9B,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,kCAAkC;IAClC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,oDAAoD;SAC5D,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,kBAAkB;QAClB,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,oCAAoC;QACpC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,WAAW,EAAE;YAC5D,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QAEH,gBAAgB;QAChB,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAmG9C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAsG9C"}
@@ -4,6 +4,7 @@
4
4
  * Following Open/Closed Principle - commands register themselves
5
5
  */
6
6
  import { registry } from '../../lib/command-registry.js';
7
+ import { HelpGenerator } from '../../lib/help-generator.js';
7
8
  /**
8
9
  * Register all product commands
9
10
  */
@@ -11,92 +12,91 @@ export function registerProductCommands() {
11
12
  // Register command group
12
13
  registry.registerGroup({
13
14
  command: 'product',
14
- description: 'View and modify Shopify product data',
15
+ description: 'Manage individual products',
15
16
  showHelp: () => {
16
- console.log(`
17
- Product Commands - View and modify Shopify product data
18
-
19
- USAGE:
20
- ecomcoder product <subcommand> [options]
21
-
22
- SUBCOMMANDS:
23
- get Get product details by ID, title, or handle
24
- update-title Update product title
25
- update-description Update product description
26
- update-price Update product price and compare-at price
27
- update-template Change product template assignment
28
- create-variants Create product variants (bulk operation)
29
- delete-variants Delete product variants (bulk operation)
30
-
31
- EXAMPLES:
32
- # Get product details
33
- ecomcoder product get --title="Blue T-Shirt"
34
- ecomcoder product get --id=123456789
35
-
36
- # Update title
37
- ecomcoder product update-title --id=123 --title="Premium Cotton T-Shirt"
38
-
39
- # Update description
40
- ecomcoder product update-description --id=123 --description="Premium cotton t-shirt"
41
-
42
- # Update price
43
- ecomcoder product update-price --id=123 --price=34.99 --compare-at-price=49.99
44
-
45
- # Change template
46
- ecomcoder product update-template --id=123 --template=premium
47
-
48
- # Create variants
49
- ecomcoder product create-variants --product-id=123 --variants='[{"price":"29.99","inventoryItem":{"sku":"TEST-001"}}]'
50
-
51
- # Delete variants
52
- ecomcoder product delete-variants --product-id=123 --variant-ids="456,789"
53
-
54
- For detailed help on a specific subcommand:
55
- ecomcoder product <subcommand> --help
56
- `);
17
+ console.log(HelpGenerator.generateGroupHelp('product'));
57
18
  }
58
19
  });
59
20
  // Register individual subcommands
21
+ registry.register({
22
+ command: 'product',
23
+ subcommand: 'create',
24
+ description: 'Create a new product from scratch',
25
+ category: 'CRUD',
26
+ quickExample: 'ecomcoder product create --title="Premium Hair Serum" --price=29.99',
27
+ handler: async () => await import('./create.js')
28
+ });
60
29
  registry.register({
61
30
  command: 'product',
62
31
  subcommand: 'get',
63
32
  description: 'Get product details by ID, title, or handle',
33
+ category: 'CRUD',
34
+ quickExample: 'ecomcoder product get --id=123',
64
35
  handler: async () => await import('./get.js')
65
36
  });
37
+ registry.register({
38
+ command: 'product',
39
+ subcommand: 'get-metafield',
40
+ description: 'View product metafield values',
41
+ category: 'Metafields',
42
+ handler: async () => await import('./get-metafield.js')
43
+ });
44
+ registry.register({
45
+ command: 'product',
46
+ subcommand: 'set-metafield',
47
+ description: 'Set or update product metafield values',
48
+ category: 'Metafields',
49
+ quickExample: 'ecomcoder product set-metafield --id=123 --namespace=custom --key=rating --value=4.5 --type=number_decimal',
50
+ handler: async () => await import('./set-metafield.js')
51
+ });
66
52
  registry.register({
67
53
  command: 'product',
68
54
  subcommand: 'update-title',
69
55
  description: 'Update product title',
56
+ category: 'Updates',
70
57
  handler: async () => await import('./update-title.js')
71
58
  });
72
59
  registry.register({
73
60
  command: 'product',
74
61
  subcommand: 'update-description',
75
62
  description: 'Update product description',
63
+ category: 'Updates',
76
64
  handler: async () => await import('./update-description.js')
77
65
  });
78
66
  registry.register({
79
67
  command: 'product',
80
68
  subcommand: 'update-price',
81
69
  description: 'Update product price and compare-at price',
70
+ category: 'Updates',
71
+ quickExample: 'ecomcoder product update-price --id=123 --price=29.99',
82
72
  handler: async () => await import('./update-price.js')
83
73
  });
74
+ registry.register({
75
+ command: 'product',
76
+ subcommand: 'update-status',
77
+ description: 'Update product status (ACTIVE, DRAFT, ARCHIVED, UNLISTED)',
78
+ category: 'Updates',
79
+ handler: async () => await import('./update-status.js')
80
+ });
84
81
  registry.register({
85
82
  command: 'product',
86
83
  subcommand: 'update-template',
87
84
  description: 'Change product template assignment',
85
+ category: 'Updates',
88
86
  handler: async () => await import('./update-template.js')
89
87
  });
90
88
  registry.register({
91
89
  command: 'product',
92
90
  subcommand: 'create-variants',
93
91
  description: 'Create product variants (bulk operation)',
92
+ category: 'Variants',
94
93
  handler: async () => await import('./create-variants.js')
95
94
  });
96
95
  registry.register({
97
96
  command: 'product',
98
97
  subcommand: 'delete-variants',
99
98
  description: 'Delete product variants (bulk operation)',
99
+ category: 'Variants',
100
100
  handler: async () => await import('./delete-variants.js')
101
101
  });
102
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,yBAAyB;IACzB,QAAQ,CAAC,aAAa,CAAC;QACrB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,GAAG,EAAE;YACb,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCjB,CAAC,CAAC;QACC,CAAC;KACF,CAAC,CAAC;IAEH,kCAAkC;IAClC,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,6CAA6C;QAC1D,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC;KAC9C,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,sBAAsB;QACnC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,oBAAoB;QAChC,WAAW,EAAE,4BAA4B;QACzC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,yBAAyB,CAAC;KAC7D,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,cAAc;QAC1B,WAAW,EAAE,2CAA2C;QACxD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,mBAAmB,CAAC;KACvD,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC;KAC1D,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC;KAC1D,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC;QAChB,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,iBAAiB;QAC7B,WAAW,EAAE,0CAA0C;QACvD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,MAAM,CAAC,sBAAsB,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/product/index.ts"],"names":[],"mappings":"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"}
@@ -39,4 +39,23 @@ export declare const PRODUCT_VARIANTS_BULK_DELETE = "\n mutation productVariant
39
39
  * Maximum 2,048 variants per product
40
40
  */
41
41
  export declare const PRODUCT_VARIANTS_BULK_CREATE = "\n mutation productVariantsBulkCreate($productId: ID!, $variants: [ProductVariantsBulkInput!]!) {\n productVariantsBulkCreate(productId: $productId, variants: $variants) {\n productVariants {\n id\n title\n sku\n price\n compareAtPrice\n inventoryQuantity\n }\n userErrors {\n field\n message\n }\n }\n }\n";
42
+ /**
43
+ * Get specific product metafield by namespace and key
44
+ */
45
+ export declare const GET_PRODUCT_METAFIELD = "\n query getProductMetafield($id: ID!, $namespace: String!, $key: String!) {\n product(id: $id) {\n id\n metafield(namespace: $namespace, key: $key) {\n id\n namespace\n key\n value\n type\n createdAt\n updatedAt\n }\n }\n }\n";
46
+ /**
47
+ * Get product metafields (multiple)
48
+ * Used for querying all metafields or by namespace
49
+ */
50
+ export declare const GET_PRODUCT_METAFIELDS = "\n query getProductMetafields($id: ID!, $namespace: String, $first: Int) {\n product(id: $id) {\n id\n metafields(namespace: $namespace, first: $first) {\n edges {\n node {\n id\n namespace\n key\n value\n type\n createdAt\n updatedAt\n }\n }\n }\n }\n }\n";
51
+ /**
52
+ * Set metafield values for a product
53
+ * Maximum 25 metafields per request, atomic operation
54
+ */
55
+ export declare const METAFIELDS_SET = "\n mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {\n metafieldsSet(metafields: $metafields) {\n metafields {\n id\n namespace\n key\n value\n type\n createdAt\n updatedAt\n }\n userErrors {\n field\n message\n code\n }\n }\n }\n";
56
+ /**
57
+ * Create a new product from scratch
58
+ * Creates product with 1 initial variant
59
+ */
60
+ export declare const PRODUCT_CREATE = "\n mutation productCreate($input: ProductInput!) {\n productCreate(input: $input) {\n product {\n id\n title\n description\n descriptionHtml\n handle\n status\n productType\n vendor\n tags\n templateSuffix\n options {\n id\n name\n position\n values\n }\n variants(first: 10) {\n edges {\n node {\n id\n title\n sku\n price\n compareAtPrice\n inventoryQuantity\n availableForSale\n }\n }\n }\n priceRangeV2 {\n minVariantPrice {\n amount\n currencyCode\n }\n maxVariantPrice {\n amount\n currencyCode\n }\n }\n }\n userErrors {\n field\n message\n }\n }\n }\n";
42
61
  //# sourceMappingURL=queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/commands/product/queries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,87BAuD7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,gaAqBpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,89BAuDjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,kSAgB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,gRAc1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,oVAcxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,oeAuBxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2YAiBxC,CAAC"}
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../src/commands/product/queries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,87BAuD7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,gaAqBpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,89BAuDjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,kSAgB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,gRAc1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,oVAcxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,oeAuBxC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,2YAiBxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,+SAejC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,yYAmBlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,yVAmB1B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,q8BAkD1B,CAAC"}
@@ -254,4 +254,126 @@ export const PRODUCT_VARIANTS_BULK_CREATE = `
254
254
  }
255
255
  }
256
256
  `;
257
+ /**
258
+ * Get specific product metafield by namespace and key
259
+ */
260
+ export const GET_PRODUCT_METAFIELD = `
261
+ query getProductMetafield($id: ID!, $namespace: String!, $key: String!) {
262
+ product(id: $id) {
263
+ id
264
+ metafield(namespace: $namespace, key: $key) {
265
+ id
266
+ namespace
267
+ key
268
+ value
269
+ type
270
+ createdAt
271
+ updatedAt
272
+ }
273
+ }
274
+ }
275
+ `;
276
+ /**
277
+ * Get product metafields (multiple)
278
+ * Used for querying all metafields or by namespace
279
+ */
280
+ export const GET_PRODUCT_METAFIELDS = `
281
+ query getProductMetafields($id: ID!, $namespace: String, $first: Int) {
282
+ product(id: $id) {
283
+ id
284
+ metafields(namespace: $namespace, first: $first) {
285
+ edges {
286
+ node {
287
+ id
288
+ namespace
289
+ key
290
+ value
291
+ type
292
+ createdAt
293
+ updatedAt
294
+ }
295
+ }
296
+ }
297
+ }
298
+ }
299
+ `;
300
+ /**
301
+ * Set metafield values for a product
302
+ * Maximum 25 metafields per request, atomic operation
303
+ */
304
+ export const METAFIELDS_SET = `
305
+ mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {
306
+ metafieldsSet(metafields: $metafields) {
307
+ metafields {
308
+ id
309
+ namespace
310
+ key
311
+ value
312
+ type
313
+ createdAt
314
+ updatedAt
315
+ }
316
+ userErrors {
317
+ field
318
+ message
319
+ code
320
+ }
321
+ }
322
+ }
323
+ `;
324
+ /**
325
+ * Create a new product from scratch
326
+ * Creates product with 1 initial variant
327
+ */
328
+ export const PRODUCT_CREATE = `
329
+ mutation productCreate($input: ProductInput!) {
330
+ productCreate(input: $input) {
331
+ product {
332
+ id
333
+ title
334
+ description
335
+ descriptionHtml
336
+ handle
337
+ status
338
+ productType
339
+ vendor
340
+ tags
341
+ templateSuffix
342
+ options {
343
+ id
344
+ name
345
+ position
346
+ values
347
+ }
348
+ variants(first: 10) {
349
+ edges {
350
+ node {
351
+ id
352
+ title
353
+ sku
354
+ price
355
+ compareAtPrice
356
+ inventoryQuantity
357
+ availableForSale
358
+ }
359
+ }
360
+ }
361
+ priceRangeV2 {
362
+ minVariantPrice {
363
+ amount
364
+ currencyCode
365
+ }
366
+ maxVariantPrice {
367
+ amount
368
+ currencyCode
369
+ }
370
+ }
371
+ }
372
+ userErrors {
373
+ field
374
+ message
375
+ }
376
+ }
377
+ }
378
+ `;
257
379
  //# sourceMappingURL=queries.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/commands/product/queries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDhC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBvC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;CAgB7B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;CAc7B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;CAc3C,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuB3C,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;CAiB3C,CAAC"}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/commands/product/queries.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDhC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;CAqBvC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;CAgB7B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;CAc7B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;CAc3C,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuB3C,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;;;;;;;;;;;;;;;CAiB3C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;CAepC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;CAmBrC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;CAmB7B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkD7B,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Follows Dependency Injection - accepts dependencies as parameters
6
6
  */
7
7
  import type { ShopifyCredentials } from '../../lib/types.js';
8
- import type { ShopifyProduct, FormattedProduct, UpdateDescriptionInput, UpdateTitleInput, UpdatePriceInput, UpdateTemplateInput, DeleteVariantsInput, CreateVariantsInput, CommandResult } from './types.js';
8
+ import type { ShopifyProduct, FormattedProduct, UpdateDescriptionInput, UpdateTitleInput, UpdateStatusInput, UpdatePriceInput, UpdateTemplateInput, SetMetafieldInput, GetMetafieldInput, DeleteVariantsInput, CreateVariantsInput, CreateProductInput, CommandResult } from './types.js';
9
9
  /**
10
10
  * Product Service
11
11
  *
@@ -19,6 +19,14 @@ export declare class ProductService {
19
19
  * @throws Error if product not found or GraphQL errors occur
20
20
  */
21
21
  static getProductById(credentials: ShopifyCredentials, productId: string): Promise<ShopifyProduct>;
22
+ /**
23
+ * Create a new product from scratch
24
+ *
25
+ * @returns Formatted result with created product data
26
+ */
27
+ static createProduct(credentials: ShopifyCredentials, input: CreateProductInput): Promise<CommandResult<{
28
+ product: FormattedProduct;
29
+ }>>;
22
30
  /**
23
31
  * Update product description
24
32
  *
@@ -35,6 +43,32 @@ export declare class ProductService {
35
43
  static updateTitle(credentials: ShopifyCredentials, input: UpdateTitleInput): Promise<CommandResult<{
36
44
  product: FormattedProduct;
37
45
  }>>;
46
+ /**
47
+ * Update product status
48
+ *
49
+ * @returns Formatted result with updated product data
50
+ */
51
+ static updateStatus(credentials: ShopifyCredentials, input: UpdateStatusInput): Promise<CommandResult<{
52
+ product: FormattedProduct;
53
+ }>>;
54
+ /**
55
+ * Set product metafield value
56
+ *
57
+ * @returns Formatted result with metafield data
58
+ */
59
+ static setMetafield(credentials: ShopifyCredentials, input: SetMetafieldInput): Promise<CommandResult<{
60
+ metafield: any;
61
+ }>>;
62
+ /**
63
+ * Get product metafield(s)
64
+ *
65
+ * @returns Formatted result with metafield data
66
+ */
67
+ static getMetafield(credentials: ShopifyCredentials, input: GetMetafieldInput): Promise<CommandResult<{
68
+ metafield?: any;
69
+ metafields?: any[];
70
+ count?: number;
71
+ }>>;
38
72
  /**
39
73
  * Update product variant price
40
74
  * Uses productVariantsBulkUpdate mutation (current Shopify API)
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/commands/product/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAmB7D,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EAKnB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,qBAAa,cAAc;IACzB;;;;OAIG;WACU,cAAc,CACzB,WAAW,EAAE,kBAAkB,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,CAAC;IAkB1B;;;;OAIG;WACU,iBAAiB,CAC5B,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IAkDxD;;;;OAIG;WACU,WAAW,CACtB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IA2CxD;;;;;OAKG;WACU,WAAW,CACtB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,CAAC,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QAAC,OAAO,EAAE,gBAAgB,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA+IhH;;;;OAIG;WACU,cAAc,CACzB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC,CAAC;IA2CxD;;;;;;;;;;OAUG;WACU,cAAc,CACzB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAiEzG;;;;;;;;;;OAUG;WACU,cAAc,CACzB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC,CAAC;CAgEvG"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/commands/product/service.ts"],"names":[],"mappings":"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"}