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
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shopify Files API GraphQL Operations
|
|
3
|
+
*
|
|
4
|
+
* Using Shopify Admin API 2025-10
|
|
5
|
+
* Docs: https://shopify.dev/docs/api/admin-graphql/2025-10/mutations/fileCreate
|
|
6
|
+
*/
|
|
7
|
+
// Create staged upload (step 1 of upload process)
|
|
8
|
+
export const STAGED_UPLOADS_CREATE = `
|
|
9
|
+
mutation stagedUploadsCreate($input: [StagedUploadInput!]!) {
|
|
10
|
+
stagedUploadsCreate(input: $input) {
|
|
11
|
+
stagedTargets {
|
|
12
|
+
url
|
|
13
|
+
resourceUrl
|
|
14
|
+
parameters {
|
|
15
|
+
name
|
|
16
|
+
value
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
userErrors {
|
|
20
|
+
field
|
|
21
|
+
message
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
// Upload asset via staged upload (step 2)
|
|
27
|
+
export const FILE_CREATE = `
|
|
28
|
+
mutation fileCreate($files: [FileCreateInput!]!) {
|
|
29
|
+
fileCreate(files: $files) {
|
|
30
|
+
files {
|
|
31
|
+
id
|
|
32
|
+
alt
|
|
33
|
+
fileStatus
|
|
34
|
+
createdAt
|
|
35
|
+
... on MediaImage {
|
|
36
|
+
id
|
|
37
|
+
alt
|
|
38
|
+
preview {
|
|
39
|
+
image {
|
|
40
|
+
url
|
|
41
|
+
width
|
|
42
|
+
height
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
... on Video {
|
|
47
|
+
id
|
|
48
|
+
alt
|
|
49
|
+
sources {
|
|
50
|
+
url
|
|
51
|
+
width
|
|
52
|
+
height
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
userErrors {
|
|
57
|
+
field
|
|
58
|
+
message
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
// List all files (images + videos)
|
|
64
|
+
export const FILES_LIST = `
|
|
65
|
+
query files($first: Int!, $after: String, $query: String) {
|
|
66
|
+
files(first: $first, after: $after, query: $query) {
|
|
67
|
+
edges {
|
|
68
|
+
node {
|
|
69
|
+
id
|
|
70
|
+
alt
|
|
71
|
+
fileStatus
|
|
72
|
+
createdAt
|
|
73
|
+
... on MediaImage {
|
|
74
|
+
image {
|
|
75
|
+
url
|
|
76
|
+
width
|
|
77
|
+
height
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
... on Video {
|
|
81
|
+
sources {
|
|
82
|
+
url
|
|
83
|
+
width
|
|
84
|
+
height
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
pageInfo {
|
|
90
|
+
hasNextPage
|
|
91
|
+
endCursor
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
`;
|
|
96
|
+
// Get single file details
|
|
97
|
+
export const FILE_GET = `
|
|
98
|
+
query file($id: ID!) {
|
|
99
|
+
node(id: $id) {
|
|
100
|
+
... on MediaImage {
|
|
101
|
+
id
|
|
102
|
+
alt
|
|
103
|
+
image {
|
|
104
|
+
url
|
|
105
|
+
width
|
|
106
|
+
height
|
|
107
|
+
}
|
|
108
|
+
createdAt
|
|
109
|
+
}
|
|
110
|
+
... on Video {
|
|
111
|
+
id
|
|
112
|
+
alt
|
|
113
|
+
sources {
|
|
114
|
+
url
|
|
115
|
+
width
|
|
116
|
+
height
|
|
117
|
+
}
|
|
118
|
+
createdAt
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
`;
|
|
123
|
+
// Delete file
|
|
124
|
+
export const FILE_DELETE = `
|
|
125
|
+
mutation fileDelete($fileIds: [ID!]!) {
|
|
126
|
+
fileDelete(fileIds: $fileIds) {
|
|
127
|
+
deletedFileIds
|
|
128
|
+
userErrors {
|
|
129
|
+
field
|
|
130
|
+
message
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
`;
|
|
135
|
+
//# sourceMappingURL=queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../src/commands/asset/queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kDAAkD;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;CAiBpC,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmC1B,CAAC;AAEF,mCAAmC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BzB,CAAC;AAEF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBvB,CAAC;AAEF,cAAc;AACd,MAAM,CAAC,MAAM,WAAW,GAAG;;;;;;;;;;CAU1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-icons.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/search-icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqDH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBAiC/D"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Icons Command
|
|
3
|
+
* Search open-source icons from Lucide library
|
|
4
|
+
*/
|
|
5
|
+
import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
|
|
6
|
+
import { AssetService } from './service.js';
|
|
7
|
+
function showHelp() {
|
|
8
|
+
console.log(`
|
|
9
|
+
Search Icons (Lucide)
|
|
10
|
+
|
|
11
|
+
USAGE:
|
|
12
|
+
ecomcoder asset search-icons --query=<search> [OPTIONS]
|
|
13
|
+
|
|
14
|
+
OPTIONS:
|
|
15
|
+
--query <text> Search query (required)
|
|
16
|
+
--limit <number> Max results (default: 10)
|
|
17
|
+
--help, -h Show this help message
|
|
18
|
+
|
|
19
|
+
ABOUT LUCIDE:
|
|
20
|
+
- Open-source icon library (ISC license)
|
|
21
|
+
- 1,667+ icons and growing
|
|
22
|
+
- SVG format (lightweight, customizable)
|
|
23
|
+
- No API key required
|
|
24
|
+
- Free for commercial use
|
|
25
|
+
|
|
26
|
+
EXAMPLES:
|
|
27
|
+
# Search for shopping cart icons
|
|
28
|
+
ecomcoder asset search-icons --query="cart"
|
|
29
|
+
|
|
30
|
+
# Search for payment icons
|
|
31
|
+
ecomcoder asset search-icons --query="credit card"
|
|
32
|
+
|
|
33
|
+
# Search for social icons
|
|
34
|
+
ecomcoder asset search-icons --query="heart" --limit=5
|
|
35
|
+
|
|
36
|
+
USAGE IN LIQUID:
|
|
37
|
+
Icons are returned as CDN URLs. Use directly in your theme:
|
|
38
|
+
|
|
39
|
+
<img src="{{icon_url}}" alt="Icon" width="24" height="24">
|
|
40
|
+
|
|
41
|
+
Or download and customize:
|
|
42
|
+
|
|
43
|
+
ecomcoder asset upload --url=<icon_url>
|
|
44
|
+
|
|
45
|
+
CATEGORIES:
|
|
46
|
+
ecommerce: cart, bag, tag, truck, package, gift
|
|
47
|
+
payment: credit-card, dollar, percent
|
|
48
|
+
social: heart, star, share, thumbs-up
|
|
49
|
+
ui: menu, search, x, check, arrow
|
|
50
|
+
communication: mail, phone, message
|
|
51
|
+
`);
|
|
52
|
+
process.exit(0);
|
|
53
|
+
}
|
|
54
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
55
|
+
if (hasHelpFlag(argv)) {
|
|
56
|
+
showHelp();
|
|
57
|
+
}
|
|
58
|
+
const args = parseArgs(argv);
|
|
59
|
+
if (!args.query) {
|
|
60
|
+
console.error(JSON.stringify({
|
|
61
|
+
success: false,
|
|
62
|
+
error: 'Missing required argument: --query'
|
|
63
|
+
}));
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
const result = await AssetService.searchIcons({
|
|
68
|
+
query: args.query,
|
|
69
|
+
limit: args.limit ? parseInt(args.limit) : undefined
|
|
70
|
+
});
|
|
71
|
+
console.log(JSON.stringify(result, null, 2));
|
|
72
|
+
if (!result.success) {
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error(JSON.stringify({
|
|
78
|
+
success: false,
|
|
79
|
+
error: error.message || 'Unknown error occurred'
|
|
80
|
+
}));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=search-icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-icons.js","sourceRoot":"","sources":["../../../src/commands/asset/search-icons.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Cb,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,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,oCAAoC;SAC5C,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;SACrD,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":"search-stock.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/search-stock.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA6CH,wBAAsB,GAAG,CAAC,IAAI,GAAE,MAAM,EAA0B,iBAoC/D"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Stock Images Command
|
|
3
|
+
* Search free stock photos from Pexels API
|
|
4
|
+
*/
|
|
5
|
+
import { parseArgs, hasHelpFlag } from '../../lib/args-parser.js';
|
|
6
|
+
import { AssetService } from './service.js';
|
|
7
|
+
function showHelp() {
|
|
8
|
+
console.log(`
|
|
9
|
+
Search Stock Images (Pexels)
|
|
10
|
+
|
|
11
|
+
USAGE:
|
|
12
|
+
ecomcoder asset search-stock --query=<search> [OPTIONS]
|
|
13
|
+
|
|
14
|
+
OPTIONS:
|
|
15
|
+
--query <text> Search query (required)
|
|
16
|
+
--limit <number> Max results (default: 10, max: 80)
|
|
17
|
+
--orientation <type> Filter by orientation (landscape|portrait|square)
|
|
18
|
+
--size <size> Filter by size (large|medium|small)
|
|
19
|
+
--color <color> Filter by color (e.g., red, blue, green)
|
|
20
|
+
--help, -h Show this help message
|
|
21
|
+
|
|
22
|
+
SETUP:
|
|
23
|
+
Get your free API key at: https://www.pexels.com/api/
|
|
24
|
+
Set environment variable: export PEXELS_API_KEY=your-key-here
|
|
25
|
+
|
|
26
|
+
EXAMPLES:
|
|
27
|
+
# Search for mountains
|
|
28
|
+
ecomcoder asset search-stock --query="mountains"
|
|
29
|
+
|
|
30
|
+
# Landscape photos of ocean
|
|
31
|
+
ecomcoder asset search-stock --query="ocean" --orientation=landscape --limit=5
|
|
32
|
+
|
|
33
|
+
# Large photos of sunset
|
|
34
|
+
ecomcoder asset search-stock --query="sunset" --size=large
|
|
35
|
+
|
|
36
|
+
WORKFLOW:
|
|
37
|
+
1. Search for stock images
|
|
38
|
+
2. Use returned URL with: ecomcoder asset upload --url=<url>
|
|
39
|
+
3. Asset is uploaded to your Shopify store
|
|
40
|
+
|
|
41
|
+
RATE LIMITS:
|
|
42
|
+
Free tier: 200 requests/hour, 20,000 requests/month
|
|
43
|
+
`);
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
export async function run(argv = process.argv.slice(2)) {
|
|
47
|
+
if (hasHelpFlag(argv)) {
|
|
48
|
+
showHelp();
|
|
49
|
+
}
|
|
50
|
+
const args = parseArgs(argv);
|
|
51
|
+
if (!args.query) {
|
|
52
|
+
console.error(JSON.stringify({
|
|
53
|
+
success: false,
|
|
54
|
+
error: 'Missing required argument: --query'
|
|
55
|
+
}));
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const result = await AssetService.searchStock({
|
|
60
|
+
query: args.query,
|
|
61
|
+
limit: args.limit ? parseInt(args.limit) : undefined,
|
|
62
|
+
orientation: args.orientation,
|
|
63
|
+
size: args.size,
|
|
64
|
+
color: args.color
|
|
65
|
+
});
|
|
66
|
+
console.log(JSON.stringify(result, null, 2));
|
|
67
|
+
if (!result.success) {
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error(JSON.stringify({
|
|
73
|
+
success: false,
|
|
74
|
+
error: error.message || 'Unknown error occurred'
|
|
75
|
+
}));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=search-stock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-stock.js","sourceRoot":"","sources":["../../../src/commands/asset/search-stock.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCb,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,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;YAC3B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,oCAAoC;SAC5C,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;YACpD,WAAW,EAAE,IAAI,CAAC,WAA8D;YAChF,IAAI,EAAE,IAAI,CAAC,IAAgD;YAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,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,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asset Service
|
|
3
|
+
*
|
|
4
|
+
* Handles all asset management business logic
|
|
5
|
+
* Following Service Layer Pattern
|
|
6
|
+
*/
|
|
7
|
+
import { ShopifyCredentials } from '../../lib/types.js';
|
|
8
|
+
import { CommandResult, UploadAssetInput, ListAssetsInput, GetAssetInput, DeleteAssetInput, ImportAssetsInput, FormattedAsset, SearchStockInput, StockImage, SearchIconsInput, Icon } from './types.js';
|
|
9
|
+
export declare class AssetService {
|
|
10
|
+
/**
|
|
11
|
+
* Upload single asset to Shopify
|
|
12
|
+
*
|
|
13
|
+
* Three-step process:
|
|
14
|
+
* 1. Create staged upload target
|
|
15
|
+
* 2. Upload file to signed URL
|
|
16
|
+
* 3. Create file record in Shopify
|
|
17
|
+
*/
|
|
18
|
+
static upload(credentials: ShopifyCredentials, input: UploadAssetInput): Promise<CommandResult<{
|
|
19
|
+
asset: FormattedAsset;
|
|
20
|
+
}>>;
|
|
21
|
+
/**
|
|
22
|
+
* List all assets
|
|
23
|
+
*/
|
|
24
|
+
static list(credentials: ShopifyCredentials, input?: ListAssetsInput): Promise<CommandResult<{
|
|
25
|
+
assets: FormattedAsset[];
|
|
26
|
+
hasMore: boolean;
|
|
27
|
+
cursor: string | null;
|
|
28
|
+
}>>;
|
|
29
|
+
/**
|
|
30
|
+
* Get single asset details
|
|
31
|
+
*/
|
|
32
|
+
static get(credentials: ShopifyCredentials, input: GetAssetInput): Promise<CommandResult<{
|
|
33
|
+
asset: FormattedAsset;
|
|
34
|
+
}>>;
|
|
35
|
+
/**
|
|
36
|
+
* Delete asset
|
|
37
|
+
*/
|
|
38
|
+
static delete(credentials: ShopifyCredentials, input: DeleteAssetInput): Promise<CommandResult<{
|
|
39
|
+
deletedId: string;
|
|
40
|
+
}>>;
|
|
41
|
+
/**
|
|
42
|
+
* Bulk import assets from directory
|
|
43
|
+
*/
|
|
44
|
+
static import(credentials: ShopifyCredentials, input: ImportAssetsInput): Promise<CommandResult<{
|
|
45
|
+
uploaded: number;
|
|
46
|
+
failed: number;
|
|
47
|
+
errors: string[];
|
|
48
|
+
}>>;
|
|
49
|
+
/**
|
|
50
|
+
* Search stock images from Pexels
|
|
51
|
+
*/
|
|
52
|
+
static searchStock(input: SearchStockInput): Promise<CommandResult<{
|
|
53
|
+
images: StockImage[];
|
|
54
|
+
}>>;
|
|
55
|
+
/**
|
|
56
|
+
* Search icons from Lucide
|
|
57
|
+
*/
|
|
58
|
+
static searchIcons(input: SearchIconsInput): Promise<CommandResult<{
|
|
59
|
+
icons: Icon[];
|
|
60
|
+
}>>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/commands/asset/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAaxD,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EAMd,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,qBAAa,YAAY;IACvB;;;;;;;OAOG;WACU,MAAM,CACjB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAiLpD;;OAEG;WACU,IAAI,CACf,WAAW,EAAE,kBAAkB,EAC/B,KAAK,GAAE,eAAoB,GAC1B,OAAO,CAAC,aAAa,CAAC;QAAE,MAAM,EAAE,cAAc,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAyChG;;OAEG;WACU,GAAG,CACd,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IA6BpD;;OAEG;WACU,MAAM,CACjB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA+BhD;;OAEG;WACU,MAAM,CACjB,WAAW,EAAE,kBAAkB,EAC/B,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,aAAa,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAmDjF;;OAEG;WACU,WAAW,CACtB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,MAAM,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC,CAAC;IAiBnD;;OAEG;WACU,WAAW,CACtB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,CAAC,CAAC;CAgB7C"}
|