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.
- package/README.md +0 -23
- package/dist/cli.js +4 -84
- package/dist/cli.js.map +1 -1
- package/dist/commands/discount/index.d.ts.map +1 -1
- package/dist/commands/discount/index.js +10 -49
- package/dist/commands/discount/index.js.map +1 -1
- package/dist/commands/docs/index.d.ts.map +1 -1
- package/dist/commands/docs/index.js +4 -18
- package/dist/commands/docs/index.js.map +1 -1
- package/dist/commands/metafield/index.d.ts.map +1 -1
- package/dist/commands/metafield/index.js +6 -24
- package/dist/commands/metafield/index.js.map +1 -1
- package/dist/commands/product/create.d.ts +8 -0
- package/dist/commands/product/create.d.ts.map +1 -0
- package/dist/commands/product/create.js +166 -0
- package/dist/commands/product/create.js.map +1 -0
- package/dist/commands/product/get-metafield.d.ts +8 -0
- package/dist/commands/product/get-metafield.d.ts.map +1 -0
- package/dist/commands/product/get-metafield.js +131 -0
- package/dist/commands/product/get-metafield.js.map +1 -0
- package/dist/commands/product/index.d.ts.map +1 -1
- package/dist/commands/product/index.js +42 -42
- package/dist/commands/product/index.js.map +1 -1
- package/dist/commands/product/queries.d.ts +19 -0
- package/dist/commands/product/queries.d.ts.map +1 -1
- package/dist/commands/product/queries.js +122 -0
- package/dist/commands/product/queries.js.map +1 -1
- package/dist/commands/product/service.d.ts +35 -1
- package/dist/commands/product/service.d.ts.map +1 -1
- package/dist/commands/product/service.js +241 -1
- package/dist/commands/product/service.js.map +1 -1
- package/dist/commands/product/set-metafield.d.ts +8 -0
- package/dist/commands/product/set-metafield.d.ts.map +1 -0
- package/dist/commands/product/set-metafield.js +174 -0
- package/dist/commands/product/set-metafield.js.map +1 -0
- package/dist/commands/product/types.d.ts +88 -0
- package/dist/commands/product/types.d.ts.map +1 -1
- package/dist/commands/product/update-status.d.ts +8 -0
- package/dist/commands/product/update-status.d.ts.map +1 -0
- package/dist/commands/product/update-status.js +105 -0
- package/dist/commands/product/update-status.js.map +1 -0
- package/dist/commands/products/index.d.ts.map +1 -1
- package/dist/commands/products/index.js +5 -31
- package/dist/commands/products/index.js.map +1 -1
- package/dist/commands/shop/get-metafield.d.ts +8 -0
- package/dist/commands/shop/get-metafield.d.ts.map +1 -0
- package/dist/commands/shop/get-metafield.js +117 -0
- package/dist/commands/shop/get-metafield.js.map +1 -0
- package/dist/commands/shop/index.d.ts +10 -0
- package/dist/commands/shop/index.d.ts.map +1 -0
- package/dist/commands/shop/index.js +38 -0
- package/dist/commands/shop/index.js.map +1 -0
- package/dist/commands/shop/queries.d.ts +24 -0
- package/dist/commands/shop/queries.d.ts.map +1 -0
- package/dist/commands/shop/queries.js +83 -0
- package/dist/commands/shop/queries.js.map +1 -0
- package/dist/commands/shop/service.d.ts +30 -0
- package/dist/commands/shop/service.d.ts.map +1 -0
- package/dist/commands/shop/service.js +131 -0
- package/dist/commands/shop/service.js.map +1 -0
- package/dist/commands/shop/set-metafield.d.ts +8 -0
- package/dist/commands/shop/set-metafield.d.ts.map +1 -0
- package/dist/commands/shop/set-metafield.js +174 -0
- package/dist/commands/shop/set-metafield.js.map +1 -0
- package/dist/commands/shop/types.d.ts +84 -0
- package/dist/commands/shop/types.d.ts.map +1 -0
- package/dist/commands/shop/types.js +6 -0
- package/dist/commands/shop/types.js.map +1 -0
- package/dist/lib/command-registry.d.ts +2 -0
- package/dist/lib/command-registry.d.ts.map +1 -1
- package/dist/lib/command-registry.js.map +1 -1
- package/dist/lib/help-generator.d.ts +28 -0
- package/dist/lib/help-generator.d.ts.map +1 -0
- package/dist/lib/help-generator.js +131 -0
- package/dist/lib/help-generator.js.map +1 -0
- package/dist/lib/help-utils.d.ts +17 -0
- package/dist/lib/help-utils.d.ts.map +1 -0
- package/dist/lib/help-utils.js +24 -0
- package/dist/lib/help-utils.js.map +1 -0
- 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;
|
|
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: '
|
|
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;
|
|
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;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/commands/product/service.ts"],"names":[],"mappings":"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"}
|