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