@clawmarket.cc/marketcc 0.5.2 → 0.5.4
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/commands/download.js +35 -10
- package/dist/commands/download.js.map +1 -1
- package/dist/commands/init.js +28 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +31 -12
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/ls.js +6 -2
- package/dist/commands/ls.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.js +148 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/upload.js +16 -7
- package/dist/commands/upload.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -10,25 +10,40 @@ export default function registerDownload(program) {
|
|
|
10
10
|
try {
|
|
11
11
|
const config = await loadConfig();
|
|
12
12
|
const baseUrl = getApiUrl(config);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
// Step 1: Validate access key and get download token
|
|
14
|
+
console.log('Validating access key...');
|
|
15
|
+
const validateRes = await fetch(`${baseUrl}/api/files/download/validate`, {
|
|
16
|
+
method: 'POST',
|
|
17
|
+
headers: { 'Content-Type': 'application/json' },
|
|
18
|
+
body: JSON.stringify({ key: accessKey }),
|
|
19
|
+
});
|
|
20
|
+
if (!validateRes.ok) {
|
|
21
|
+
if (validateRes.status === 404) {
|
|
18
22
|
console.error('Error: Invalid or already used access key.');
|
|
19
23
|
process.exit(1);
|
|
20
24
|
}
|
|
21
|
-
const errBody = await
|
|
22
|
-
const msg = errBody?.error?.message || 'Failed to
|
|
25
|
+
const errBody = await validateRes.json().catch(() => null);
|
|
26
|
+
const msg = errBody?.error?.message || 'Failed to validate access key';
|
|
23
27
|
console.error(`Error: ${msg}`);
|
|
24
28
|
process.exit(1);
|
|
25
29
|
}
|
|
26
|
-
const {
|
|
30
|
+
const { download_token } = (await validateRes.json());
|
|
31
|
+
// Step 2: Get download URL using token
|
|
32
|
+
console.log('Fetching download URL...');
|
|
33
|
+
const downloadRes = await fetch(`${baseUrl}/api/files/download?token=${encodeURIComponent(download_token)}`);
|
|
34
|
+
if (!downloadRes.ok) {
|
|
35
|
+
const errBody = await downloadRes.json().catch(() => null);
|
|
36
|
+
const msg = errBody?.error?.message || 'Failed to get download URL';
|
|
37
|
+
console.error(`Error: ${msg}`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
const { download_url } = (await downloadRes.json());
|
|
41
|
+
// Step 3: Download the actual file from the signed URL
|
|
27
42
|
console.log('Downloading file...');
|
|
28
|
-
// Download the actual file from the signed URL
|
|
29
43
|
const fileRes = await fetch(download_url);
|
|
30
44
|
if (!fileRes.ok) {
|
|
31
|
-
console.error('Error: Failed to download file.');
|
|
45
|
+
console.error('Error: Failed to download file. Your access key has NOT been consumed.');
|
|
46
|
+
console.error('You can retry the download with the same access key.');
|
|
32
47
|
process.exit(1);
|
|
33
48
|
}
|
|
34
49
|
const buffer = Buffer.from(await fileRes.arrayBuffer());
|
|
@@ -48,6 +63,16 @@ export default function registerDownload(program) {
|
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
65
|
await writeFile(outputPath, buffer);
|
|
66
|
+
// Step 4: Confirm download — marks access key as used
|
|
67
|
+
const confirmRes = await fetch(`${baseUrl}/api/files/download/confirm`, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: { 'Content-Type': 'application/json' },
|
|
70
|
+
body: JSON.stringify({ download_token }),
|
|
71
|
+
});
|
|
72
|
+
if (!confirmRes.ok) {
|
|
73
|
+
console.warn('Warning: Download succeeded but confirmation failed.');
|
|
74
|
+
console.warn('The access key may still be usable for another download.');
|
|
75
|
+
}
|
|
51
76
|
console.log(`\nDownloaded: ${outputPath} (${buffer.length} bytes)`);
|
|
52
77
|
}
|
|
53
78
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,OAAgB;IACvD,OAAO;SACJ,OAAO,CAAC,uBAAuB,CAAC;SAChC,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,IAAyB,EAAE,EAAE;QAC7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YAElC,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/commands/download.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.js
CHANGED
|
@@ -6,21 +6,42 @@ import { handleApiError } from '../lib/errors.js';
|
|
|
6
6
|
export default function registerInit(program) {
|
|
7
7
|
program
|
|
8
8
|
.command('init')
|
|
9
|
-
.description('
|
|
9
|
+
.description('Initialize CLI auth (use existing API key or create a provisioned account)')
|
|
10
10
|
.action(async () => {
|
|
11
11
|
const rl = createInterface({ input: stdin, output: stdout });
|
|
12
12
|
try {
|
|
13
|
-
const email = await rl.question('Email: ');
|
|
14
|
-
const password = await rl.question('Password (min 8 chars): ');
|
|
15
|
-
const displayName = await rl.question('Display name: ');
|
|
16
|
-
rl.close();
|
|
17
13
|
const config = await loadConfig();
|
|
18
14
|
const apiUrl = getApiUrl(config);
|
|
15
|
+
const useExisting = (await rl.question('Use an existing API key? (y/N): ')).trim().toLowerCase() === 'y';
|
|
16
|
+
if (useExisting) {
|
|
17
|
+
const apiKey = (await rl.question('API key: ')).trim();
|
|
18
|
+
rl.close();
|
|
19
|
+
if (!apiKey) {
|
|
20
|
+
console.error('Error: API key is required.');
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
const client = new ApiClient(apiUrl, apiKey);
|
|
24
|
+
const profile = await client.request('GET', '/api/profiles/me');
|
|
25
|
+
await saveConfig({ api_key: apiKey, api_url: apiUrl });
|
|
26
|
+
console.log(`\nLogged in with API key. Welcome, ${profile.display_name}.`);
|
|
27
|
+
console.log('API key saved to ~/.marketcc/config.json');
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const displayName = (await rl.question('Display name (optional): ')).trim();
|
|
31
|
+
rl.close();
|
|
19
32
|
const client = new ApiClient(apiUrl);
|
|
20
|
-
const result = await client.request('POST', '/api/auth/
|
|
33
|
+
const result = await client.request('POST', '/api/auth/cli/provision', displayName ? { display_name: displayName } : {}, false);
|
|
21
34
|
await saveConfig({ api_key: result.api_key, api_url: apiUrl });
|
|
22
35
|
console.log(`\nAccount created! Welcome, ${result.user.display_name}.`);
|
|
23
|
-
console.log('Your API key
|
|
36
|
+
console.log('Your API key (save this now):');
|
|
37
|
+
console.log(` ${result.api_key}`);
|
|
38
|
+
console.log('Stored at: ~/.marketcc/config.json');
|
|
39
|
+
if (result.web_credentials) {
|
|
40
|
+
console.log('\nWeb login credentials (save these now):');
|
|
41
|
+
console.log(` Email: ${result.web_credentials.email}`);
|
|
42
|
+
console.log(` Password: ${result.web_credentials.password}`);
|
|
43
|
+
console.log('Use these in the UI, then update your profile details.');
|
|
44
|
+
}
|
|
24
45
|
}
|
|
25
46
|
catch (err) {
|
|
26
47
|
rl.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/login.js
CHANGED
|
@@ -1,25 +1,44 @@
|
|
|
1
1
|
import { createInterface } from 'readline/promises';
|
|
2
2
|
import { stdin, stdout } from 'process';
|
|
3
3
|
import { ApiClient } from '../lib/api.js';
|
|
4
|
-
import { loadConfig, saveConfig, getApiUrl } from '../lib/config.js';
|
|
4
|
+
import { loadConfig, saveConfig, getApiUrl, clearConfig } from '../lib/config.js';
|
|
5
5
|
import { handleApiError } from '../lib/errors.js';
|
|
6
6
|
export default function registerLogin(program) {
|
|
7
7
|
program
|
|
8
|
-
.command('login')
|
|
9
|
-
.description('Log in
|
|
10
|
-
.action(async () => {
|
|
8
|
+
.command('login [api-key]')
|
|
9
|
+
.description('Log in using an existing API key')
|
|
10
|
+
.action(async (apiKeyArg) => {
|
|
11
11
|
const rl = createInterface({ input: stdin, output: stdout });
|
|
12
12
|
try {
|
|
13
|
-
const email = await rl.question('Email: ');
|
|
14
|
-
const password = await rl.question('Password: ');
|
|
15
|
-
rl.close();
|
|
16
13
|
const config = await loadConfig();
|
|
14
|
+
const existingApiKey = (config.api_key ?? '').trim();
|
|
15
|
+
if (existingApiKey) {
|
|
16
|
+
const answer = (await rl.question('You are already logged in. To use a different account, log out now? (y/N): '))
|
|
17
|
+
.trim()
|
|
18
|
+
.toLowerCase();
|
|
19
|
+
rl.close();
|
|
20
|
+
if (answer !== 'y') {
|
|
21
|
+
console.log('Skipped. You are still logged in.');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await clearConfig();
|
|
25
|
+
console.log('Successfully logged out.');
|
|
26
|
+
console.log('Run `marketcc login` again to log in with a different account.');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const provided = (apiKeyArg ?? '').trim();
|
|
30
|
+
const apiKey = provided || (await rl.question('API key: ')).trim();
|
|
31
|
+
rl.close();
|
|
32
|
+
if (!apiKey) {
|
|
33
|
+
console.error('Error: API key is required.');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
17
36
|
const apiUrl = getApiUrl(config);
|
|
18
|
-
const client = new ApiClient(apiUrl);
|
|
19
|
-
const
|
|
20
|
-
await saveConfig({ api_key:
|
|
21
|
-
console.log(`\nLogged in! Welcome
|
|
22
|
-
console.log('
|
|
37
|
+
const client = new ApiClient(apiUrl, apiKey);
|
|
38
|
+
const profile = await client.request('GET', '/api/profiles/me');
|
|
39
|
+
await saveConfig({ api_key: apiKey, api_url: apiUrl });
|
|
40
|
+
console.log(`\nLogged in! Welcome, ${profile.display_name}.`);
|
|
41
|
+
console.log('API key saved to ~/.marketcc/config.json');
|
|
23
42
|
}
|
|
24
43
|
catch (err) {
|
|
25
44
|
rl.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,OAAgB;IACpD,OAAO;SACJ,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,SAAkB,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAErD,IAAI,cAAc,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC/B,6EAA6E,CAC9E,CAAC;qBACC,IAAI,EAAE;qBACN,WAAW,EAAE,CAAC;gBACjB,EAAE,CAAC,KAAK,EAAE,CAAC;gBAEX,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;oBACjD,OAAO;gBACT,CAAC;gBAED,MAAM,WAAW,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;gBAC9E,OAAO;YACT,CAAC;YAED,MAAM,QAAQ,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEnE,EAAE,CAAC,KAAK,EAAE,CAAC;YAEX,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAGjC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAE9B,MAAM,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAEvD,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/ls.js
CHANGED
|
@@ -8,9 +8,10 @@ export default function registerLs(program) {
|
|
|
8
8
|
.action(async () => {
|
|
9
9
|
try {
|
|
10
10
|
const client = await createAuthenticatedClient();
|
|
11
|
-
const
|
|
11
|
+
const data = await client.request('GET', '/api/profiles/me/listings');
|
|
12
|
+
const listings = Array.isArray(data) ? data : data.items;
|
|
12
13
|
if (listings.length === 0) {
|
|
13
|
-
console.log('
|
|
14
|
+
console.log("You haven't listed anything yet. Use `marketcc upload <file>` to create your first listing.");
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
const headers = ['ID', 'Title', 'Price (SOL)', 'Status', 'Created'];
|
|
@@ -23,6 +24,9 @@ export default function registerLs(program) {
|
|
|
23
24
|
new Date(l.created_at).toLocaleDateString(),
|
|
24
25
|
]);
|
|
25
26
|
renderTable(headers, rows, widths);
|
|
27
|
+
if (!Array.isArray(data)) {
|
|
28
|
+
console.log(`\nShowing ${listings.length} of ${data.total} listings (page ${data.page})`);
|
|
29
|
+
}
|
|
26
30
|
}
|
|
27
31
|
catch (err) {
|
|
28
32
|
handleApiError(err);
|
package/dist/commands/ls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../src/commands/ls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiB9C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAC/B,KAAK,EACL,2BAA2B,CAC5B,CAAC;YACF,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAEzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,GAAG,CAAC,6FAA6F,CAAC,CAAC;gBAC3G,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC/B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK;gBACP,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnB,CAAC,CAAC,MAAM;gBACR,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE;aAC5C,CAAC,CAAC;YAEH,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAEnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,OAAO,IAAI,CAAC,KAAK,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { execFileSync } from 'node:child_process';
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
const FALLBACK_PACKAGE_NAME = '@clawmarket.cc/marketcc';
|
|
6
|
+
function parseSemver(version) {
|
|
7
|
+
const match = /^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-.]+))?(?:\+.*)?$/.exec(version.trim());
|
|
8
|
+
if (!match) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const prerelease = match[4]
|
|
12
|
+
? match[4]
|
|
13
|
+
.split('.')
|
|
14
|
+
.filter(Boolean)
|
|
15
|
+
.map((id) => (/^\d+$/.test(id) ? Number(id) : id))
|
|
16
|
+
: [];
|
|
17
|
+
return {
|
|
18
|
+
major: Number(match[1]),
|
|
19
|
+
minor: Number(match[2]),
|
|
20
|
+
patch: Number(match[3]),
|
|
21
|
+
prerelease,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function compareSemver(a, b) {
|
|
25
|
+
const aParsed = parseSemver(a);
|
|
26
|
+
const bParsed = parseSemver(b);
|
|
27
|
+
if (!aParsed || !bParsed) {
|
|
28
|
+
return a.localeCompare(b);
|
|
29
|
+
}
|
|
30
|
+
if (aParsed.major !== bParsed.major) {
|
|
31
|
+
return aParsed.major - bParsed.major;
|
|
32
|
+
}
|
|
33
|
+
if (aParsed.minor !== bParsed.minor) {
|
|
34
|
+
return aParsed.minor - bParsed.minor;
|
|
35
|
+
}
|
|
36
|
+
if (aParsed.patch !== bParsed.patch) {
|
|
37
|
+
return aParsed.patch - bParsed.patch;
|
|
38
|
+
}
|
|
39
|
+
const aPre = aParsed.prerelease;
|
|
40
|
+
const bPre = bParsed.prerelease;
|
|
41
|
+
if (aPre.length === 0 && bPre.length === 0) {
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
if (aPre.length === 0) {
|
|
45
|
+
return 1;
|
|
46
|
+
}
|
|
47
|
+
if (bPre.length === 0) {
|
|
48
|
+
return -1;
|
|
49
|
+
}
|
|
50
|
+
const length = Math.max(aPre.length, bPre.length);
|
|
51
|
+
for (let i = 0; i < length; i += 1) {
|
|
52
|
+
const left = aPre[i];
|
|
53
|
+
const right = bPre[i];
|
|
54
|
+
if (left === undefined) {
|
|
55
|
+
return -1;
|
|
56
|
+
}
|
|
57
|
+
if (right === undefined) {
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
if (left === right) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const leftNum = typeof left === 'number';
|
|
64
|
+
const rightNum = typeof right === 'number';
|
|
65
|
+
if (leftNum && rightNum) {
|
|
66
|
+
return Number(left) - Number(right);
|
|
67
|
+
}
|
|
68
|
+
if (leftNum) {
|
|
69
|
+
return -1;
|
|
70
|
+
}
|
|
71
|
+
if (rightNum) {
|
|
72
|
+
return 1;
|
|
73
|
+
}
|
|
74
|
+
return String(left).localeCompare(String(right));
|
|
75
|
+
}
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
function getInstalledPackageMetadata() {
|
|
79
|
+
try {
|
|
80
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
81
|
+
const packageJsonPath = join(currentDir, '..', '..', 'package.json');
|
|
82
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
83
|
+
return {
|
|
84
|
+
name: packageJson.name || FALLBACK_PACKAGE_NAME,
|
|
85
|
+
version: packageJson.version || '0.0.0',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return {
|
|
90
|
+
name: FALLBACK_PACKAGE_NAME,
|
|
91
|
+
version: '0.0.0',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function getPublishedVersions(packageName) {
|
|
96
|
+
const raw = execFileSync('npm', ['view', packageName, 'versions', '--json'], { encoding: 'utf-8' });
|
|
97
|
+
const parsed = JSON.parse(raw);
|
|
98
|
+
if (typeof parsed === 'string') {
|
|
99
|
+
return [parsed];
|
|
100
|
+
}
|
|
101
|
+
if (!Array.isArray(parsed)) {
|
|
102
|
+
throw new Error('Unexpected npm response for published versions.');
|
|
103
|
+
}
|
|
104
|
+
return parsed
|
|
105
|
+
.filter((version) => typeof version === 'string')
|
|
106
|
+
.map((version) => version.trim())
|
|
107
|
+
.filter(Boolean);
|
|
108
|
+
}
|
|
109
|
+
function getNextStableVersion(currentVersion, versions) {
|
|
110
|
+
const stableVersions = versions.filter((version) => {
|
|
111
|
+
const parsed = parseSemver(version);
|
|
112
|
+
return parsed && parsed.prerelease.length === 0;
|
|
113
|
+
});
|
|
114
|
+
const candidates = (stableVersions.length > 0 ? stableVersions : versions)
|
|
115
|
+
.filter((version, index, all) => all.indexOf(version) === index)
|
|
116
|
+
.sort(compareSemver);
|
|
117
|
+
for (const version of candidates) {
|
|
118
|
+
if (compareSemver(version, currentVersion) > 0) {
|
|
119
|
+
return version;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
export default function registerUpdate(program) {
|
|
125
|
+
program
|
|
126
|
+
.command('update')
|
|
127
|
+
.description('Update to the next published npm version')
|
|
128
|
+
.action(() => {
|
|
129
|
+
try {
|
|
130
|
+
const metadata = getInstalledPackageMetadata();
|
|
131
|
+
const versions = getPublishedVersions(metadata.name);
|
|
132
|
+
const nextVersion = getNextStableVersion(metadata.version, versions);
|
|
133
|
+
if (!nextVersion) {
|
|
134
|
+
console.log(`Already up to date (installed: ${metadata.version}).`);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
console.log(`Updating ${metadata.name} from ${metadata.version} to ${nextVersion}...`);
|
|
138
|
+
execFileSync('npm', ['install', '-g', `${metadata.name}@${nextVersion}`], { stdio: 'inherit' });
|
|
139
|
+
console.log(`Update complete. Now running version ${nextVersion}.`);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
143
|
+
console.error(`Failed to update CLI: ${message}`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/upload.js
CHANGED
|
@@ -18,6 +18,7 @@ export default function registerUpload(program) {
|
|
|
18
18
|
console.error('Error: Only .md and .zip files are allowed.');
|
|
19
19
|
rl.close();
|
|
20
20
|
process.exit(1);
|
|
21
|
+
return;
|
|
21
22
|
}
|
|
22
23
|
const title = await rl.question('Title: ');
|
|
23
24
|
const description = await rl.question('Description (optional): ');
|
|
@@ -26,17 +27,25 @@ export default function registerUpload(program) {
|
|
|
26
27
|
const totalLicenses = await rl.question('Total licenses (leave empty for unlimited): ');
|
|
27
28
|
rl.close();
|
|
28
29
|
const client = await createAuthenticatedClient();
|
|
30
|
+
// Step 1: Upload file to storage
|
|
29
31
|
const formData = new FormData();
|
|
30
32
|
formData.append('file', new Blob([fileBuffer]), fileName);
|
|
31
|
-
|
|
33
|
+
const uploadResult = await client.uploadMultipart('/api/files/upload', formData);
|
|
34
|
+
console.log(`File uploaded: ${uploadResult.file_name} (${uploadResult.file_size_bytes} bytes)`);
|
|
35
|
+
// Step 2: Create listing
|
|
36
|
+
const listingBody = {
|
|
37
|
+
title,
|
|
38
|
+
price_sol: parseFloat(priceSol),
|
|
39
|
+
solana_address: solanaAddress,
|
|
40
|
+
file_storage_path: uploadResult.file_storage_path,
|
|
41
|
+
file_size_bytes: uploadResult.file_size_bytes,
|
|
42
|
+
};
|
|
32
43
|
if (description)
|
|
33
|
-
|
|
34
|
-
formData.append('price_sol', priceSol);
|
|
35
|
-
formData.append('solana_address', solanaAddress);
|
|
44
|
+
listingBody.description = description;
|
|
36
45
|
if (totalLicenses)
|
|
37
|
-
|
|
38
|
-
const result = await client.
|
|
39
|
-
console.log(`\
|
|
46
|
+
listingBody.total_licenses = parseInt(totalLicenses, 10);
|
|
47
|
+
const result = await client.request('POST', '/api/marketplace', listingBody);
|
|
48
|
+
console.log(`\nListing created! ID: ${result.id}`);
|
|
40
49
|
console.log(`Title: ${result.title}`);
|
|
41
50
|
console.log(`Price: ${result.price_sol} SOL`);
|
|
42
51
|
console.log(`Status: ${result.status}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,EAAE;QACjC,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;YAEnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC7D,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -7,7 +7,7 @@ export default function registerWhoami(program) {
|
|
|
7
7
|
.action(async () => {
|
|
8
8
|
try {
|
|
9
9
|
const client = await createAuthenticatedClient();
|
|
10
|
-
const profile = await client.request('GET', '/api/
|
|
10
|
+
const profile = await client.request('GET', '/api/profiles/me');
|
|
11
11
|
console.log(`ID: ${profile.id}`);
|
|
12
12
|
console.log(`Display name: ${profile.display_name}`);
|
|
13
13
|
console.log(`Listings: ${profile.listing_count}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAKjC,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;YACjD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAKjC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YAE9B,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,cAAc,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { Command } from 'commander';
|
|
3
|
+
import { readFileSync } from 'fs';
|
|
4
|
+
import { dirname, join } from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
3
6
|
import registerInit from './commands/init.js';
|
|
4
7
|
import registerUpload from './commands/upload.js';
|
|
5
8
|
import registerLs from './commands/ls.js';
|
|
@@ -10,10 +13,22 @@ import registerLogout from './commands/logout.js';
|
|
|
10
13
|
import registerBrowse from './commands/browse.js';
|
|
11
14
|
import registerBuy from './commands/buy.js';
|
|
12
15
|
import registerDownload from './commands/download.js';
|
|
16
|
+
import registerUpdate from './commands/update.js';
|
|
13
17
|
const R = '\x1b[31m';
|
|
14
18
|
const O = '\x1b[38;5;208m';
|
|
15
19
|
const Y = '\x1b[33m';
|
|
16
20
|
const X = '\x1b[0m';
|
|
21
|
+
function getCliVersion() {
|
|
22
|
+
try {
|
|
23
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
24
|
+
const packageJsonPath = join(currentDir, '..', 'package.json');
|
|
25
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
26
|
+
return packageJson.version || '0.0.0';
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return '0.0.0';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
17
32
|
function printCrab() {
|
|
18
33
|
console.log('');
|
|
19
34
|
console.log(`${R} ___ ___`);
|
|
@@ -31,7 +46,7 @@ const program = new Command();
|
|
|
31
46
|
program
|
|
32
47
|
.name('marketcc')
|
|
33
48
|
.description('CLI for ClawMarket — upload and manage files')
|
|
34
|
-
.version(
|
|
49
|
+
.version(getCliVersion())
|
|
35
50
|
.action(() => {
|
|
36
51
|
const D = '\x1b[2m';
|
|
37
52
|
const B = '\x1b[1m';
|
|
@@ -51,5 +66,6 @@ registerLogout(program);
|
|
|
51
66
|
registerBrowse(program);
|
|
52
67
|
registerBuy(program);
|
|
53
68
|
registerDownload(program);
|
|
69
|
+
registerUpdate(program);
|
|
54
70
|
program.parse();
|
|
55
71
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|