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 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/commands/shop/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-metafield.d.ts","sourceRoot":"","sources":["../../../src/commands/shop/set-metafield.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmIH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBA6C/D"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set Shop Metafield Command
|
|
3
|
+
*
|
|
4
|
+
* Following Command Pattern - thin orchestration layer
|
|
5
|
+
* Delegates business logic to ShopService
|
|
6
|
+
*/
|
|
7
|
+
import { getCredentials, getSessionId } from '../../lib/api-client.js';
|
|
8
|
+
import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
|
|
9
|
+
import { ShopService } from './service.js';
|
|
10
|
+
function showHelp() {
|
|
11
|
+
console.log(`
|
|
12
|
+
Set Shop Metafield
|
|
13
|
+
|
|
14
|
+
USAGE:
|
|
15
|
+
ecomcoder shop set-metafield [OPTIONS]
|
|
16
|
+
|
|
17
|
+
REQUIRED OPTIONS:
|
|
18
|
+
--namespace <namespace> Metafield namespace (e.g., 'custom', 'app')
|
|
19
|
+
--key <key> Metafield key/identifier
|
|
20
|
+
--value <value> Metafield value (format depends on type)
|
|
21
|
+
--type <type> Metafield type (see list below)
|
|
22
|
+
|
|
23
|
+
OPTIONAL:
|
|
24
|
+
--session-id Session ID (auto-provided via SESSION_ID env var)
|
|
25
|
+
--help, -h Show this help message
|
|
26
|
+
|
|
27
|
+
SUPPORTED TYPES:
|
|
28
|
+
Text:
|
|
29
|
+
single_line_text_field Single line of text
|
|
30
|
+
multi_line_text_field Multiple lines of text
|
|
31
|
+
rich_text_field Rich text with formatting
|
|
32
|
+
|
|
33
|
+
Numbers:
|
|
34
|
+
number_integer Whole numbers
|
|
35
|
+
number_decimal Decimal numbers
|
|
36
|
+
rating Rating on a scale
|
|
37
|
+
|
|
38
|
+
Boolean:
|
|
39
|
+
boolean True or false value
|
|
40
|
+
|
|
41
|
+
Dates:
|
|
42
|
+
date ISO 8601 date (YYYY-MM-DD)
|
|
43
|
+
date_time ISO 8601 timestamp
|
|
44
|
+
|
|
45
|
+
Measurements:
|
|
46
|
+
dimension Length with unit
|
|
47
|
+
volume Volume with unit
|
|
48
|
+
weight Weight with unit
|
|
49
|
+
|
|
50
|
+
Commerce:
|
|
51
|
+
money Amount with currency
|
|
52
|
+
color Hexadecimal color code
|
|
53
|
+
|
|
54
|
+
References (Links to Shopify Resources):
|
|
55
|
+
product_reference Link to a product
|
|
56
|
+
variant_reference Link to a variant
|
|
57
|
+
collection_reference Link to a collection
|
|
58
|
+
page_reference Link to a page
|
|
59
|
+
file_reference Link to uploaded file
|
|
60
|
+
|
|
61
|
+
Other:
|
|
62
|
+
url URL (https, http, mailto, sms, tel)
|
|
63
|
+
json JSON-serializable value
|
|
64
|
+
link Text and URL pairing
|
|
65
|
+
|
|
66
|
+
Lists (prefix with 'list.'):
|
|
67
|
+
list.single_line_text_field
|
|
68
|
+
list.number_integer
|
|
69
|
+
list.product_reference
|
|
70
|
+
list.color
|
|
71
|
+
(etc. - all types support lists)
|
|
72
|
+
|
|
73
|
+
EXAMPLES:
|
|
74
|
+
# Store-wide announcement
|
|
75
|
+
ecomcoder shop set-metafield \\
|
|
76
|
+
--namespace=custom \\
|
|
77
|
+
--key=announcement \\
|
|
78
|
+
--value="Black Friday Sale!" \\
|
|
79
|
+
--type=single_line_text_field
|
|
80
|
+
|
|
81
|
+
# Free shipping minimum
|
|
82
|
+
ecomcoder shop set-metafield \\
|
|
83
|
+
--namespace=custom \\
|
|
84
|
+
--key=free_shipping_min \\
|
|
85
|
+
--value="50.00" \\
|
|
86
|
+
--type=number_decimal
|
|
87
|
+
|
|
88
|
+
# Featured products (global)
|
|
89
|
+
ecomcoder shop set-metafield \\
|
|
90
|
+
--namespace=custom \\
|
|
91
|
+
--key=featured_products \\
|
|
92
|
+
--value='["gid://shopify/Product/123","gid://shopify/Product/456"]' \\
|
|
93
|
+
--type=list.product_reference
|
|
94
|
+
|
|
95
|
+
# Store settings as JSON
|
|
96
|
+
ecomcoder shop set-metafield \\
|
|
97
|
+
--namespace=custom \\
|
|
98
|
+
--key=settings \\
|
|
99
|
+
--value='{"theme":"dark","currency":"USD"}' \\
|
|
100
|
+
--type=json
|
|
101
|
+
|
|
102
|
+
# Enable feature flag
|
|
103
|
+
ecomcoder shop set-metafield \\
|
|
104
|
+
--namespace=features \\
|
|
105
|
+
--key=show_reviews \\
|
|
106
|
+
--value="true" \\
|
|
107
|
+
--type=boolean
|
|
108
|
+
|
|
109
|
+
OUTPUT FORMAT:
|
|
110
|
+
{
|
|
111
|
+
"success": true,
|
|
112
|
+
"data": {
|
|
113
|
+
"metafield": {
|
|
114
|
+
"id": "gid://shopify/Metafield/123",
|
|
115
|
+
"namespace": "custom",
|
|
116
|
+
"key": "announcement",
|
|
117
|
+
"value": "Black Friday Sale!",
|
|
118
|
+
"type": "single_line_text_field",
|
|
119
|
+
"createdAt": "2024-01-20T10:30:00Z",
|
|
120
|
+
"updatedAt": "2024-01-20T15:45:00Z"
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
NOTES:
|
|
126
|
+
- Maximum 25 metafields per request
|
|
127
|
+
- Maximum 10MB total payload size
|
|
128
|
+
- All values stored as strings (validated by type)
|
|
129
|
+
- Reference types use GID format: gid://shopify/Resource/ID
|
|
130
|
+
- List values must be valid JSON arrays
|
|
131
|
+
`);
|
|
132
|
+
process.exit(0);
|
|
133
|
+
}
|
|
134
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
135
|
+
if (hasHelpFlag(argv)) {
|
|
136
|
+
showHelp();
|
|
137
|
+
}
|
|
138
|
+
const args = parseArgs(argv);
|
|
139
|
+
// Validate required arguments
|
|
140
|
+
const requiredArgs = ['namespace', 'key', 'value', 'type'];
|
|
141
|
+
const missing = requiredArgs.filter(arg => !args[arg]);
|
|
142
|
+
if (missing.length > 0) {
|
|
143
|
+
console.error(JSON.stringify({
|
|
144
|
+
success: false,
|
|
145
|
+
error: `Missing required arguments: ${missing.map(a => `--${a}`).join(', ')}`
|
|
146
|
+
}));
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
try {
|
|
150
|
+
// Get credentials
|
|
151
|
+
const sessionId = getSessionId(args.sessionId);
|
|
152
|
+
const credentials = await getCredentials(sessionId, args.backendUrl, args.jwt);
|
|
153
|
+
// Execute set metafield via service
|
|
154
|
+
const result = await ShopService.setMetafield(credentials, {
|
|
155
|
+
namespace: args.namespace,
|
|
156
|
+
key: args.key,
|
|
157
|
+
value: args.value,
|
|
158
|
+
type: args.type
|
|
159
|
+
});
|
|
160
|
+
// Output result
|
|
161
|
+
console.log(JSON.stringify(result, null, 2));
|
|
162
|
+
if (!result.success) {
|
|
163
|
+
process.exit(1);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
console.error(JSON.stringify({
|
|
168
|
+
success: false,
|
|
169
|
+
error: error.message || 'Unknown error occurred'
|
|
170
|
+
}));
|
|
171
|
+
process.exit(1);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=set-metafield.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-metafield.js","sourceRoot":"","sources":["../../../src/commands/shop/set-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,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,SAAS,QAAQ;IACf,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwHb,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,MAAM,YAAY,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,+BAA+B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SAC9E,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,WAAW,CAAC,YAAY,CAAC,WAAW,EAAE;YACzD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shop Command Types
|
|
3
|
+
* Type definitions for shop-related commands
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Shop metafield operations
|
|
7
|
+
*/
|
|
8
|
+
export interface SetShopMetafieldInput {
|
|
9
|
+
namespace: string;
|
|
10
|
+
key: string;
|
|
11
|
+
value: string;
|
|
12
|
+
type: string;
|
|
13
|
+
}
|
|
14
|
+
export interface GetShopMetafieldInput {
|
|
15
|
+
namespace?: string;
|
|
16
|
+
key?: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Shopify GraphQL response types
|
|
20
|
+
*/
|
|
21
|
+
export interface ShopMetafieldResponse {
|
|
22
|
+
shop: {
|
|
23
|
+
id: string;
|
|
24
|
+
metafield: {
|
|
25
|
+
id: string;
|
|
26
|
+
namespace: string;
|
|
27
|
+
key: string;
|
|
28
|
+
value: string;
|
|
29
|
+
type: string;
|
|
30
|
+
createdAt: string;
|
|
31
|
+
updatedAt: string;
|
|
32
|
+
} | null;
|
|
33
|
+
} | null;
|
|
34
|
+
}
|
|
35
|
+
export interface ShopMetafieldsResponse {
|
|
36
|
+
shop: {
|
|
37
|
+
id: string;
|
|
38
|
+
metafields: {
|
|
39
|
+
edges: Array<{
|
|
40
|
+
node: {
|
|
41
|
+
id: string;
|
|
42
|
+
namespace: string;
|
|
43
|
+
key: string;
|
|
44
|
+
value: string;
|
|
45
|
+
type: string;
|
|
46
|
+
createdAt: string;
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
};
|
|
49
|
+
}>;
|
|
50
|
+
};
|
|
51
|
+
} | null;
|
|
52
|
+
}
|
|
53
|
+
export interface MetafieldsSetResponse {
|
|
54
|
+
metafieldsSet: {
|
|
55
|
+
metafields: Array<{
|
|
56
|
+
id: string;
|
|
57
|
+
namespace: string;
|
|
58
|
+
key: string;
|
|
59
|
+
value: string;
|
|
60
|
+
type: string;
|
|
61
|
+
createdAt: string;
|
|
62
|
+
updatedAt: string;
|
|
63
|
+
}>;
|
|
64
|
+
userErrors: Array<{
|
|
65
|
+
field: string[] | null;
|
|
66
|
+
message: string;
|
|
67
|
+
code?: string;
|
|
68
|
+
}>;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export interface ShopIdResponse {
|
|
72
|
+
shop: {
|
|
73
|
+
id: string;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* CLI command result types
|
|
78
|
+
*/
|
|
79
|
+
export interface CommandResult<T = any> {
|
|
80
|
+
success: boolean;
|
|
81
|
+
data?: T;
|
|
82
|
+
error?: string;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/commands/shop/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE;YACT,EAAE,EAAE,MAAM,CAAC;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;SACnB,GAAG,IAAI,CAAC;KACV,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE;YACV,KAAK,EAAE,KAAK,CAAC;gBACX,IAAI,EAAE;oBACJ,EAAE,EAAE,MAAM,CAAC;oBACX,SAAS,EAAE,MAAM,CAAC;oBAClB,GAAG,EAAE,MAAM,CAAC;oBACZ,KAAK,EAAE,MAAM,CAAC;oBACd,IAAI,EAAE,MAAM,CAAC;oBACb,SAAS,EAAE,MAAM,CAAC;oBAClB,SAAS,EAAE,MAAM,CAAC;iBACnB,CAAC;aACH,CAAC,CAAC;SACJ,CAAC;KACH,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE;QACb,UAAU,EAAE,KAAK,CAAC;YAChB,EAAE,EAAE,MAAM,CAAC;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC,CAAC;QACH,UAAU,EAAE,KAAK,CAAC;YAChB,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,GAAG;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/commands/shop/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,aAAa,CAA2C;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQzC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAInD;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAW/E;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAKlD;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE;IAKtD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI3D;;OAEG;IACH,YAAY,IAAI,oBAAoB,EAAE;IAItC;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAK3B;AAGD,eAAO,MAAM,QAAQ,iBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,aAAa,CAA2C;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAQzC;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IAInD;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAW/E;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAKlD;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE;IAKtD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI3D;;OAEG;IACH,YAAY,IAAI,oBAAoB,EAAE;IAItC;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE;CAK3B;AAGD,eAAO,MAAM,QAAQ,iBAAwB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../../src/lib/command-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAqBH,MAAM,eAAe;IACX,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC9C,aAAa,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEhE;;OAEG;IACH,QAAQ,CAAC,QAAyB;QAChC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU;YAC7B,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE;YAC9C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAErB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,QAA8B;QAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,UAAmB;QAC5C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe,EAAE,UAAmB;QACtC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAe;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;aACtC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAC3D,CAAC,CAAC;IACL,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates help text dynamically from command metadata
|
|
5
|
+
* Implements three-tier hierarchical help system
|
|
6
|
+
*/
|
|
7
|
+
import type { CommandMetadata } from './command-registry.js';
|
|
8
|
+
export declare class HelpGenerator {
|
|
9
|
+
/**
|
|
10
|
+
* Generate Level 1: Main Help
|
|
11
|
+
* Shows only command groups, ~28 lines total
|
|
12
|
+
*/
|
|
13
|
+
static generateMainHelp(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate Level 2: Group Help
|
|
16
|
+
* Shows commands in a group, categorized, ~35 lines
|
|
17
|
+
*/
|
|
18
|
+
static generateGroupHelp(command: string): string;
|
|
19
|
+
/**
|
|
20
|
+
* Categorize commands by their category field
|
|
21
|
+
*/
|
|
22
|
+
static categorizeCommands(commands: CommandMetadata[]): Map<string, CommandMetadata[]>;
|
|
23
|
+
/**
|
|
24
|
+
* Capitalize first letter
|
|
25
|
+
*/
|
|
26
|
+
private static capitalizeFirst;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=help-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-generator.d.ts","sourceRoot":"","sources":["../../src/lib/help-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAC;AAEnF,qBAAa,aAAa;IACxB;;;OAGG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM;IA8CjC;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IA4DjD;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC;IAmBtF;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAG/B"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates help text dynamically from command metadata
|
|
5
|
+
* Implements three-tier hierarchical help system
|
|
6
|
+
*/
|
|
7
|
+
import { registry } from './command-registry.js';
|
|
8
|
+
export class HelpGenerator {
|
|
9
|
+
/**
|
|
10
|
+
* Generate Level 1: Main Help
|
|
11
|
+
* Shows only command groups, ~28 lines total
|
|
12
|
+
*/
|
|
13
|
+
static generateMainHelp() {
|
|
14
|
+
const groups = registry.getAllGroups();
|
|
15
|
+
const sortedGroups = groups.sort((a, b) => a.command.localeCompare(b.command));
|
|
16
|
+
// Count commands per group
|
|
17
|
+
const groupCounts = new Map();
|
|
18
|
+
sortedGroups.forEach(group => {
|
|
19
|
+
const commands = registry.getCommandsInGroup(group.command);
|
|
20
|
+
groupCounts.set(group.command, commands.length);
|
|
21
|
+
});
|
|
22
|
+
const lines = [];
|
|
23
|
+
lines.push(`
|
|
24
|
+
EcomCoder CLI - Shopify Development Utilities
|
|
25
|
+
|
|
26
|
+
USAGE:
|
|
27
|
+
ecomcoder <command> <subcommand> [options]
|
|
28
|
+
ecomcoder <command> --help View commands in a group
|
|
29
|
+
|
|
30
|
+
COMMAND GROUPS:`);
|
|
31
|
+
// Show each group with command count
|
|
32
|
+
sortedGroups.forEach(group => {
|
|
33
|
+
const count = groupCounts.get(group.command) || 0;
|
|
34
|
+
const countText = count === 1 ? '1 command' : `${count} commands`;
|
|
35
|
+
const padding = ' '.repeat(Math.max(1, 13 - group.command.length));
|
|
36
|
+
lines.push(` ${group.command}${padding}${group.description} (${countText})`);
|
|
37
|
+
});
|
|
38
|
+
lines.push(`
|
|
39
|
+
GLOBAL OPTIONS:
|
|
40
|
+
--session-id <id> Session ID (auto-provided via env)
|
|
41
|
+
--help, -h Show help information
|
|
42
|
+
|
|
43
|
+
GETTING STARTED:
|
|
44
|
+
ecomcoder product --help List all product commands
|
|
45
|
+
ecomcoder shop --help List all shop commands
|
|
46
|
+
ecomcoder discount --help List all discount commands
|
|
47
|
+
|
|
48
|
+
For detailed help: ecomcoder <command> <subcommand> --help
|
|
49
|
+
`);
|
|
50
|
+
return lines.join('\n');
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Generate Level 2: Group Help
|
|
54
|
+
* Shows commands in a group, categorized, ~35 lines
|
|
55
|
+
*/
|
|
56
|
+
static generateGroupHelp(command) {
|
|
57
|
+
const group = registry.getGroup(command);
|
|
58
|
+
if (!group) {
|
|
59
|
+
return `Unknown command group: ${command}`;
|
|
60
|
+
}
|
|
61
|
+
const commands = registry.getCommandsInGroup(command);
|
|
62
|
+
if (commands.length === 0) {
|
|
63
|
+
return `No commands found for: ${command}`;
|
|
64
|
+
}
|
|
65
|
+
const lines = [];
|
|
66
|
+
// Header
|
|
67
|
+
lines.push(`
|
|
68
|
+
${this.capitalizeFirst(command)} Commands - ${group.description}
|
|
69
|
+
|
|
70
|
+
USAGE:
|
|
71
|
+
ecomcoder ${command} <subcommand> [options]
|
|
72
|
+
|
|
73
|
+
COMMANDS:`);
|
|
74
|
+
// Categorize and display commands
|
|
75
|
+
const categorized = this.categorizeCommands(commands);
|
|
76
|
+
// Display uncategorized commands first
|
|
77
|
+
if (categorized.has('')) {
|
|
78
|
+
const uncategorized = categorized.get('') || [];
|
|
79
|
+
uncategorized.forEach(cmd => {
|
|
80
|
+
const padding = ' '.repeat(Math.max(1, 23 - (cmd.subcommand?.length || 0)));
|
|
81
|
+
lines.push(` ${cmd.subcommand}${padding}${cmd.description}`);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// Display categorized commands
|
|
85
|
+
const categories = Array.from(categorized.keys()).filter(cat => cat !== '').sort();
|
|
86
|
+
categories.forEach(category => {
|
|
87
|
+
const cmds = categorized.get(category) || [];
|
|
88
|
+
lines.push(`\n ${category}:`);
|
|
89
|
+
cmds.forEach(cmd => {
|
|
90
|
+
const padding = ' '.repeat(Math.max(1, 21 - (cmd.subcommand?.length || 0)));
|
|
91
|
+
lines.push(` ${cmd.subcommand}${padding}${cmd.description}`);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
// Add quick examples if available
|
|
95
|
+
const exampleCommands = commands.filter(cmd => cmd.quickExample);
|
|
96
|
+
if (exampleCommands.length > 0) {
|
|
97
|
+
lines.push(`\nQUICK EXAMPLES:`);
|
|
98
|
+
exampleCommands.slice(0, 3).forEach(cmd => {
|
|
99
|
+
lines.push(` ${cmd.quickExample}`);
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
lines.push(`\nFor detailed help: ecomcoder ${command} <subcommand> --help`);
|
|
103
|
+
lines.push('');
|
|
104
|
+
return lines.join('\n');
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Categorize commands by their category field
|
|
108
|
+
*/
|
|
109
|
+
static categorizeCommands(commands) {
|
|
110
|
+
const categorized = new Map();
|
|
111
|
+
commands.forEach(cmd => {
|
|
112
|
+
const category = cmd.category || '';
|
|
113
|
+
if (!categorized.has(category)) {
|
|
114
|
+
categorized.set(category, []);
|
|
115
|
+
}
|
|
116
|
+
categorized.get(category).push(cmd);
|
|
117
|
+
});
|
|
118
|
+
// Sort commands within each category
|
|
119
|
+
categorized.forEach((cmds, category) => {
|
|
120
|
+
cmds.sort((a, b) => (a.subcommand || '').localeCompare(b.subcommand || ''));
|
|
121
|
+
});
|
|
122
|
+
return categorized;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Capitalize first letter
|
|
126
|
+
*/
|
|
127
|
+
static capitalizeFirst(str) {
|
|
128
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=help-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-generator.js","sourceRoot":"","sources":["../../src/lib/help-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for consistent help flag handling across all commands
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Check if help flag is present in arguments
|
|
8
|
+
*/
|
|
9
|
+
export declare function hasHelpFlag(argv: string[]): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Handle help flag - show help and exit if flag is present
|
|
12
|
+
*
|
|
13
|
+
* @param argv - Command line arguments
|
|
14
|
+
* @param helpFunction - Function that displays help text
|
|
15
|
+
*/
|
|
16
|
+
export declare function handleHelpFlag(argv: string[], helpFunction: () => void): void;
|
|
17
|
+
//# sourceMappingURL=help-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-utils.d.ts","sourceRoot":"","sources":["../../src/lib/help-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAEnD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,IAAI,GAAG,IAAI,CAK7E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for consistent help flag handling across all commands
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Check if help flag is present in arguments
|
|
8
|
+
*/
|
|
9
|
+
export function hasHelpFlag(argv) {
|
|
10
|
+
return argv.includes('--help') || argv.includes('-h');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Handle help flag - show help and exit if flag is present
|
|
14
|
+
*
|
|
15
|
+
* @param argv - Command line arguments
|
|
16
|
+
* @param helpFunction - Function that displays help text
|
|
17
|
+
*/
|
|
18
|
+
export function handleHelpFlag(argv, helpFunction) {
|
|
19
|
+
if (hasHelpFlag(argv)) {
|
|
20
|
+
helpFunction();
|
|
21
|
+
process.exit(0);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=help-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-utils.js","sourceRoot":"","sources":["../../src/lib/help-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,YAAwB;IACrE,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,YAAY,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|