@tokenrip/cli 1.0.1
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/AGENTS.md +127 -0
- package/LICENSE +21 -0
- package/README.md +195 -0
- package/dist/auth-client.d.ts +8 -0
- package/dist/auth-client.js +14 -0
- package/dist/auth-client.js.map +1 -0
- package/dist/cjs/auth-client.js +17 -0
- package/dist/cjs/auth-client.js.map +1 -0
- package/dist/cjs/client.js +34 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/commands/auth.js +44 -0
- package/dist/cjs/commands/auth.js.map +1 -0
- package/dist/cjs/commands/config.js +20 -0
- package/dist/cjs/commands/config.js.map +1 -0
- package/dist/cjs/commands/delete-version.js +16 -0
- package/dist/cjs/commands/delete-version.js.map +1 -0
- package/dist/cjs/commands/delete.js +16 -0
- package/dist/cjs/commands/delete.js.map +1 -0
- package/dist/cjs/commands/publish.js +50 -0
- package/dist/cjs/commands/publish.js.map +1 -0
- package/dist/cjs/commands/stats.js +12 -0
- package/dist/cjs/commands/stats.js.map +1 -0
- package/dist/cjs/commands/status.js +19 -0
- package/dist/cjs/commands/status.js.map +1 -0
- package/dist/cjs/commands/update.js +55 -0
- package/dist/cjs/commands/update.js.map +1 -0
- package/dist/cjs/commands/upload.js +53 -0
- package/dist/cjs/commands/upload.js.map +1 -0
- package/dist/cjs/config.js +38 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/errors.js +20 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/formatters.js +94 -0
- package/dist/cjs/formatters.js.map +1 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/output.js +64 -0
- package/dist/cjs/output.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +211 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +7 -0
- package/dist/client.js +28 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/auth.d.ts +4 -0
- package/dist/commands/auth.js +41 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.js +16 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/delete-version.d.ts +3 -0
- package/dist/commands/delete-version.js +13 -0
- package/dist/commands/delete-version.js.map +1 -0
- package/dist/commands/delete.d.ts +3 -0
- package/dist/commands/delete.js +13 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/publish.d.ts +8 -0
- package/dist/commands/publish.js +44 -0
- package/dist/commands/publish.js.map +1 -0
- package/dist/commands/stats.d.ts +1 -0
- package/dist/commands/stats.js +9 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.js +16 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +6 -0
- package/dist/commands/update.js +49 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/upload.d.ts +7 -0
- package/dist/commands/upload.js +47 -0
- package/dist/commands/upload.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.js +28 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +5 -0
- package/dist/errors.js +15 -0
- package/dist/errors.js.map +1 -0
- package/dist/formatters.d.ts +9 -0
- package/dist/formatters.js +83 -0
- package/dist/formatters.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +6 -0
- package/dist/output.js +58 -0
- package/dist/output.js.map +1 -0
- package/package.json +43 -0
package/dist/client.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import { CliError } from './errors.js';
|
|
3
|
+
const DEFAULT_TIMEOUT = 30000;
|
|
4
|
+
export function createHttpClient(config = {}) {
|
|
5
|
+
const headers = {};
|
|
6
|
+
if (config.apiKey) {
|
|
7
|
+
headers['Authorization'] = `Bearer ${config.apiKey}`;
|
|
8
|
+
}
|
|
9
|
+
const client = axios.create({
|
|
10
|
+
baseURL: config.baseUrl || 'https://api.tokenrip.com',
|
|
11
|
+
timeout: config.timeout || DEFAULT_TIMEOUT,
|
|
12
|
+
headers,
|
|
13
|
+
});
|
|
14
|
+
client.interceptors.response.use((response) => response, (error) => {
|
|
15
|
+
if (error.response?.status === 401) {
|
|
16
|
+
throw new CliError('UNAUTHORIZED', 'API key required or invalid. Run `tokenrip auth create-key` or set TOKENRIP_API_KEY.');
|
|
17
|
+
}
|
|
18
|
+
if (error.response?.data?.error) {
|
|
19
|
+
throw new CliError(error.response.data.error, error.response.data.message || 'Unknown API error');
|
|
20
|
+
}
|
|
21
|
+
if (error.code === 'ECONNABORTED') {
|
|
22
|
+
throw new CliError('TIMEOUT', 'Request timeout — is the Tokenrip server running?');
|
|
23
|
+
}
|
|
24
|
+
throw new CliError('NETWORK_ERROR', 'Network error — is the Tokenrip server running?');
|
|
25
|
+
});
|
|
26
|
+
return client;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,eAAe,GAAG,KAAK,CAAC;AAQ9B,MAAM,UAAU,gBAAgB,CAAC,SAAuB,EAAE;IACxD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,MAAM,CAAC,MAAM,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,0BAA0B;QACrD,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,eAAe;QAC1C,OAAO;KACR,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAC9B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAoE,EAAE,EAAE;QACvE,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;YACnC,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;QACpG,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,CAAC,SAAS,EAAE,mDAAmD,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,iDAAiD,CAAC,CAAC;IACzF,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { hostname } from 'node:os';
|
|
2
|
+
import { loadConfig, getApiUrl, saveConfig } from '../config.js';
|
|
3
|
+
import { createHttpClient } from '../client.js';
|
|
4
|
+
import { CliError } from '../errors.js';
|
|
5
|
+
import { outputSuccess } from '../output.js';
|
|
6
|
+
import { formatAuthKey } from '../formatters.js';
|
|
7
|
+
export async function authCreateKey(options) {
|
|
8
|
+
const config = loadConfig();
|
|
9
|
+
const apiUrl = getApiUrl(config);
|
|
10
|
+
const keyName = options.name || `tokenrip-${hostname()}`;
|
|
11
|
+
const client = createHttpClient({ baseUrl: apiUrl });
|
|
12
|
+
try {
|
|
13
|
+
const { data } = await client.post('/v0/auth/keys', { name: keyName });
|
|
14
|
+
const apiKey = data.data.apiKey;
|
|
15
|
+
// Auto-save the key if requested or not explicitly disabled
|
|
16
|
+
if (options.save !== false) {
|
|
17
|
+
config.apiKey = apiKey;
|
|
18
|
+
saveConfig(config);
|
|
19
|
+
outputSuccess({
|
|
20
|
+
keyName,
|
|
21
|
+
apiKey,
|
|
22
|
+
message: 'API key created and saved',
|
|
23
|
+
note: 'Keep this key safe — treat it like a password',
|
|
24
|
+
}, formatAuthKey);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
outputSuccess({
|
|
28
|
+
keyName,
|
|
29
|
+
apiKey,
|
|
30
|
+
message: 'API key created',
|
|
31
|
+
note: 'To save it, run: tokenrip config set-key <key>',
|
|
32
|
+
}, formatAuthKey);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof CliError)
|
|
37
|
+
throw error;
|
|
38
|
+
throw new CliError('AUTH_FAILED', 'Failed to create API key. Is the server running?');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA0C;IAC5E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,QAAQ,EAAE,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAEhC,4DAA4D;QAC5D,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,aAAa,CAAC;gBACZ,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,2BAA2B;gBACpC,IAAI,EAAE,+CAA+C;aACtD,EAAE,aAAa,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,aAAa,CAAC;gBACZ,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,iBAAiB;gBAC1B,IAAI,EAAE,gDAAgD;aACvD,EAAE,aAAa,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,QAAQ;YAAE,MAAM,KAAK,CAAC;QAC3C,MAAM,IAAI,QAAQ,CAAC,aAAa,EAAE,kDAAkD,CAAC,CAAC;IACxF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { loadConfig, saveConfig } from '../config.js';
|
|
2
|
+
import { outputSuccess } from '../output.js';
|
|
3
|
+
import { formatConfigSaved } from '../formatters.js';
|
|
4
|
+
export async function configSetKey(key) {
|
|
5
|
+
const config = loadConfig();
|
|
6
|
+
config.apiKey = key;
|
|
7
|
+
saveConfig(config);
|
|
8
|
+
outputSuccess({ message: 'API key saved' }, formatConfigSaved);
|
|
9
|
+
}
|
|
10
|
+
export async function configSetUrl(url) {
|
|
11
|
+
const config = loadConfig();
|
|
12
|
+
config.apiUrl = url;
|
|
13
|
+
saveConfig(config);
|
|
14
|
+
outputSuccess({ message: 'API URL saved', apiUrl: url }, formatConfigSaved);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,UAAU,CAAC,MAAM,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,UAAU,CAAC,MAAM,CAAC,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { requireAuthClient } from '../auth-client.js';
|
|
2
|
+
import { outputSuccess } from '../output.js';
|
|
3
|
+
import { formatVersionDeleted } from '../formatters.js';
|
|
4
|
+
export async function deleteVersion(uuid, versionId, options = {}) {
|
|
5
|
+
if (options.dryRun) {
|
|
6
|
+
outputSuccess({ dryRun: true, action: 'would delete version', assetId: uuid, versionId }, formatVersionDeleted);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const { client } = requireAuthClient();
|
|
10
|
+
await client.delete(`/v0/assets/${uuid}/versions/${versionId}`);
|
|
11
|
+
outputSuccess({ assetId: uuid, versionId, deleted: true }, formatVersionDeleted);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=delete-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-version.js","sourceRoot":"","sources":["../../src/commands/delete-version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,SAAiB,EACjB,UAAgC,EAAE;IAElC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,oBAAoB,CAAC,CAAC;QAChH,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,aAAa,SAAS,EAAE,CAAC,CAAC;IAEhE,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,oBAAoB,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { requireAuthClient } from '../auth-client.js';
|
|
2
|
+
import { outputSuccess } from '../output.js';
|
|
3
|
+
import { formatAssetDeleted } from '../formatters.js';
|
|
4
|
+
export async function deleteAsset(uuid, options = {}) {
|
|
5
|
+
if (options.dryRun) {
|
|
6
|
+
outputSuccess({ dryRun: true, action: 'would delete', id: uuid }, formatAssetDeleted);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const { client } = requireAuthClient();
|
|
10
|
+
await client.delete(`/v0/assets/${uuid}`);
|
|
11
|
+
outputSuccess({ id: uuid, deleted: true }, formatAssetDeleted);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../src/commands/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,UAAgC,EAAE;IAChF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAE1C,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { requireAuthClient } from '../auth-client.js';
|
|
4
|
+
import { CliError } from '../errors.js';
|
|
5
|
+
import { outputSuccess } from '../output.js';
|
|
6
|
+
import { formatAssetCreated } from '../formatters.js';
|
|
7
|
+
const VALID_TYPES = ['markdown', 'html', 'chart', 'code', 'text', 'json'];
|
|
8
|
+
export async function publish(filePath, options) {
|
|
9
|
+
if (!VALID_TYPES.includes(options.type)) {
|
|
10
|
+
throw new CliError('INVALID_TYPE', `Type must be one of: ${VALID_TYPES.join(', ')}`);
|
|
11
|
+
}
|
|
12
|
+
const absPath = path.resolve(filePath);
|
|
13
|
+
if (!fs.existsSync(absPath)) {
|
|
14
|
+
throw new CliError('FILE_NOT_FOUND', `File not found: ${absPath}`);
|
|
15
|
+
}
|
|
16
|
+
const title = options.title || path.basename(absPath);
|
|
17
|
+
const size = fs.statSync(absPath).size;
|
|
18
|
+
if (options.dryRun) {
|
|
19
|
+
outputSuccess({ dryRun: true, action: 'would publish', file: absPath, title, type: options.type, size }, formatAssetCreated);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const { client } = requireAuthClient();
|
|
23
|
+
const content = fs.readFileSync(absPath, 'utf-8');
|
|
24
|
+
const body = {
|
|
25
|
+
type: options.type,
|
|
26
|
+
content,
|
|
27
|
+
title,
|
|
28
|
+
};
|
|
29
|
+
if (options.parent)
|
|
30
|
+
body.parentAssetId = options.parent;
|
|
31
|
+
if (options.context)
|
|
32
|
+
body.creatorContext = options.context;
|
|
33
|
+
if (options.refs)
|
|
34
|
+
body.inputReferences = options.refs.split(',').map((r) => r.trim());
|
|
35
|
+
const { data } = await client.post('/v0/assets', body);
|
|
36
|
+
const url = data.data.url || `https://tokenrip.com/s/${data.data.id}`;
|
|
37
|
+
outputSuccess({
|
|
38
|
+
id: data.data.id,
|
|
39
|
+
url,
|
|
40
|
+
title: data.data.title,
|
|
41
|
+
type: data.data.type,
|
|
42
|
+
}, formatAssetCreated);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/commands/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAGnF,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,OAA6G;IAE7G,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAmB,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,wBAAwB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAEvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC7H,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,IAAI,GAA4B;QACpC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO;QACP,KAAK;KACN,CAAC;IACF,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IACxD,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,CAAC,IAAI;QAAE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,0BAA0B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;IACtE,aAAa,CAAC;QACZ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;QAChB,GAAG;QACH,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;QACtB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;KACrB,EAAE,kBAAkB,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function stats(): Promise<void>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { requireAuthClient } from '../auth-client.js';
|
|
2
|
+
import { outputSuccess } from '../output.js';
|
|
3
|
+
import { formatStats } from '../formatters.js';
|
|
4
|
+
export async function stats() {
|
|
5
|
+
const { client } = requireAuthClient();
|
|
6
|
+
const { data } = await client.get('/v0/assets/stats');
|
|
7
|
+
outputSuccess(data.data, formatStats);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEtD,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { requireAuthClient } from '../auth-client.js';
|
|
2
|
+
import { outputSuccess } from '../output.js';
|
|
3
|
+
import { formatAssetList } from '../formatters.js';
|
|
4
|
+
export async function status(options) {
|
|
5
|
+
const { client } = requireAuthClient();
|
|
6
|
+
const params = {};
|
|
7
|
+
if (options.since)
|
|
8
|
+
params.since = options.since;
|
|
9
|
+
if (options.limit)
|
|
10
|
+
params.limit = options.limit;
|
|
11
|
+
if (options.type)
|
|
12
|
+
params.type = options.type;
|
|
13
|
+
const { data } = await client.get('/v0/assets/status', { params });
|
|
14
|
+
outputSuccess(data.data, formatAssetList);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA0D;IACrF,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAEvC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAChD,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAChD,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAEnE,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import FormData from 'form-data';
|
|
4
|
+
import { requireAuthClient } from '../auth-client.js';
|
|
5
|
+
import { CliError } from '../errors.js';
|
|
6
|
+
import { outputSuccess } from '../output.js';
|
|
7
|
+
import { formatVersionCreated } from '../formatters.js';
|
|
8
|
+
const VALID_TYPES = ['markdown', 'html', 'chart', 'code', 'text'];
|
|
9
|
+
export async function update(uuid, filePath, options) {
|
|
10
|
+
const absPath = path.resolve(filePath);
|
|
11
|
+
if (!fs.existsSync(absPath)) {
|
|
12
|
+
throw new CliError('FILE_NOT_FOUND', `File not found: ${absPath}`);
|
|
13
|
+
}
|
|
14
|
+
if (options.type && !VALID_TYPES.includes(options.type)) {
|
|
15
|
+
throw new CliError('INVALID_TYPE', `Type must be one of: ${VALID_TYPES.join(', ')}`);
|
|
16
|
+
}
|
|
17
|
+
if (options.dryRun) {
|
|
18
|
+
outputSuccess({ dryRun: true, action: 'would update', assetId: uuid, file: absPath }, formatVersionCreated);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const { client } = requireAuthClient();
|
|
22
|
+
if (options.type) {
|
|
23
|
+
// Content publish mode
|
|
24
|
+
const content = fs.readFileSync(absPath, 'utf-8');
|
|
25
|
+
const body = { type: options.type, content };
|
|
26
|
+
if (options.label)
|
|
27
|
+
body.label = options.label;
|
|
28
|
+
if (options.context)
|
|
29
|
+
body.creatorContext = options.context;
|
|
30
|
+
const { data } = await client.post(`/v0/assets/${uuid}/versions`, body);
|
|
31
|
+
outputSuccess(data.data, formatVersionCreated);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
// File upload mode
|
|
35
|
+
const form = new FormData();
|
|
36
|
+
form.append('file', fs.createReadStream(absPath));
|
|
37
|
+
if (options.label)
|
|
38
|
+
form.append('label', options.label);
|
|
39
|
+
if (options.context)
|
|
40
|
+
form.append('creatorContext', options.context);
|
|
41
|
+
const { data } = await client.post(`/v0/assets/${uuid}/versions`, form, {
|
|
42
|
+
headers: form.getHeaders(),
|
|
43
|
+
maxContentLength: Infinity,
|
|
44
|
+
maxBodyLength: Infinity,
|
|
45
|
+
});
|
|
46
|
+
outputSuccess(data.data, formatVersionCreated);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# 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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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import FormData from 'form-data';
|
|
4
|
+
import mime from 'mime-types';
|
|
5
|
+
import { requireAuthClient } from '../auth-client.js';
|
|
6
|
+
import { CliError } from '../errors.js';
|
|
7
|
+
import { outputSuccess } from '../output.js';
|
|
8
|
+
import { formatAssetCreated } from '../formatters.js';
|
|
9
|
+
export async function upload(filePath, options) {
|
|
10
|
+
const absPath = path.resolve(filePath);
|
|
11
|
+
if (!fs.existsSync(absPath)) {
|
|
12
|
+
throw new CliError('FILE_NOT_FOUND', `File not found: ${absPath}`);
|
|
13
|
+
}
|
|
14
|
+
const mimeType = mime.lookup(absPath) || 'application/octet-stream';
|
|
15
|
+
const title = options.title || path.basename(absPath);
|
|
16
|
+
const size = fs.statSync(absPath).size;
|
|
17
|
+
if (options.dryRun) {
|
|
18
|
+
outputSuccess({ dryRun: true, action: 'would upload', file: absPath, title, mimeType, size }, formatAssetCreated);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const { client } = requireAuthClient();
|
|
22
|
+
const form = new FormData();
|
|
23
|
+
form.append('file', fs.createReadStream(absPath));
|
|
24
|
+
form.append('type', 'file');
|
|
25
|
+
form.append('mimeType', mimeType);
|
|
26
|
+
form.append('title', title);
|
|
27
|
+
if (options.parent)
|
|
28
|
+
form.append('parentAssetId', options.parent);
|
|
29
|
+
if (options.context)
|
|
30
|
+
form.append('creatorContext', options.context);
|
|
31
|
+
if (options.refs)
|
|
32
|
+
form.append('inputReferences', JSON.stringify(options.refs.split(',').map((r) => r.trim())));
|
|
33
|
+
const { data } = await client.post('/v0/assets', form, {
|
|
34
|
+
headers: form.getHeaders(),
|
|
35
|
+
maxContentLength: Infinity,
|
|
36
|
+
maxBodyLength: Infinity,
|
|
37
|
+
});
|
|
38
|
+
const url = data.data.url || `https://tokenrip.com/s/${data.data.id}`;
|
|
39
|
+
outputSuccess({
|
|
40
|
+
id: data.data.id,
|
|
41
|
+
url,
|
|
42
|
+
title: data.data.title,
|
|
43
|
+
type: data.data.type,
|
|
44
|
+
mimeType: data.data.mimeType,
|
|
45
|
+
}, formatAssetCreated);
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/commands/upload.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const CONFIG_DIR: string;
|
|
2
|
+
export interface TokenripConfig {
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
apiUrl?: string;
|
|
5
|
+
preferences: Record<string, unknown>;
|
|
6
|
+
}
|
|
7
|
+
export declare function loadConfig(): TokenripConfig;
|
|
8
|
+
export declare function saveConfig(config: TokenripConfig): void;
|
|
9
|
+
export declare function getApiUrl(config: TokenripConfig): string;
|
|
10
|
+
export declare function getApiKey(config: TokenripConfig): string | undefined;
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
export const CONFIG_DIR = path.join(os.homedir(), '.config', 'tokenrip');
|
|
5
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
6
|
+
function defaultConfig() {
|
|
7
|
+
return { preferences: {} };
|
|
8
|
+
}
|
|
9
|
+
export function loadConfig() {
|
|
10
|
+
try {
|
|
11
|
+
const raw = fs.readFileSync(CONFIG_FILE, 'utf-8');
|
|
12
|
+
return JSON.parse(raw);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return defaultConfig();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function saveConfig(config) {
|
|
19
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
20
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');
|
|
21
|
+
}
|
|
22
|
+
export function getApiUrl(config) {
|
|
23
|
+
return config.apiUrl || process.env.TOKENRIP_API_URL || 'https://api.tokenrip.com';
|
|
24
|
+
}
|
|
25
|
+
export function getApiKey(config) {
|
|
26
|
+
return config.apiKey || process.env.TOKENRIP_API_KEY;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACzE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAQzD,SAAS,aAAa;IACpB,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAsB;IAC/C,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,OAAO,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,OAAO,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvD,CAAC"}
|
package/dist/errors.d.ts
ADDED
package/dist/errors.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class CliError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
constructor(code, message) {
|
|
4
|
+
super(message);
|
|
5
|
+
this.code = code;
|
|
6
|
+
this.name = 'CliError';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function toCliError(err) {
|
|
10
|
+
if (err instanceof CliError)
|
|
11
|
+
return err;
|
|
12
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
13
|
+
return new CliError('UNKNOWN_ERROR', message);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEf;IADlB,YACkB,IAAY,EAC5B,OAAe;QAEf,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAQ;QAI5B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,UAAU,UAAU,CAAC,GAAY;IACrC,IAAI,GAAG,YAAY,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,IAAI,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type Formatter = (data: Record<string, unknown>) => string;
|
|
2
|
+
export declare const formatAssetCreated: Formatter;
|
|
3
|
+
export declare const formatAssetDeleted: Formatter;
|
|
4
|
+
export declare const formatAssetList: Formatter;
|
|
5
|
+
export declare const formatStats: Formatter;
|
|
6
|
+
export declare const formatVersionCreated: Formatter;
|
|
7
|
+
export declare const formatVersionDeleted: Formatter;
|
|
8
|
+
export declare const formatConfigSaved: Formatter;
|
|
9
|
+
export declare const formatAuthKey: Formatter;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export const formatAssetCreated = (data) => {
|
|
2
|
+
const lines = [`Created: ${data.title || '(untitled)'}`];
|
|
3
|
+
if (data.id)
|
|
4
|
+
lines.push(` ID: ${data.id}`);
|
|
5
|
+
if (data.url)
|
|
6
|
+
lines.push(` URL: ${data.url}`);
|
|
7
|
+
if (data.type)
|
|
8
|
+
lines.push(` Type: ${data.type}`);
|
|
9
|
+
if (data.mimeType)
|
|
10
|
+
lines.push(` MIME: ${data.mimeType}`);
|
|
11
|
+
return lines.join('\n');
|
|
12
|
+
};
|
|
13
|
+
export const formatAssetDeleted = (data) => {
|
|
14
|
+
return `Deleted: ${data.id}`;
|
|
15
|
+
};
|
|
16
|
+
export const formatAssetList = (data) => {
|
|
17
|
+
const assets = data;
|
|
18
|
+
if (!Array.isArray(assets) || assets.length === 0) {
|
|
19
|
+
return 'No assets found.';
|
|
20
|
+
}
|
|
21
|
+
const lines = [`${assets.length} asset(s):\n`];
|
|
22
|
+
for (const a of assets) {
|
|
23
|
+
const title = a.title || '(untitled)';
|
|
24
|
+
const type = a.type || '';
|
|
25
|
+
const id = a.id || '';
|
|
26
|
+
lines.push(` ${type.toString().padEnd(10)} ${title} (${id})`);
|
|
27
|
+
}
|
|
28
|
+
return lines.join('\n');
|
|
29
|
+
};
|
|
30
|
+
export const formatStats = (data) => {
|
|
31
|
+
const lines = [];
|
|
32
|
+
if (data.totalCount !== undefined)
|
|
33
|
+
lines.push(`Total assets: ${data.totalCount}`);
|
|
34
|
+
if (data.totalBytes !== undefined)
|
|
35
|
+
lines.push(`Total size: ${formatBytes(data.totalBytes)}`);
|
|
36
|
+
const byType = data.byType;
|
|
37
|
+
if (Array.isArray(byType) && byType.length > 0) {
|
|
38
|
+
lines.push('');
|
|
39
|
+
lines.push('By type:');
|
|
40
|
+
for (const t of byType) {
|
|
41
|
+
const name = (t.type || 'unknown');
|
|
42
|
+
const count = t.count ?? 0;
|
|
43
|
+
const bytes = t.totalBytes ?? 0;
|
|
44
|
+
lines.push(` ${name.padEnd(10)} ${String(count).padStart(4)} assets ${formatBytes(bytes)}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return lines.join('\n');
|
|
48
|
+
};
|
|
49
|
+
export const formatVersionCreated = (data) => {
|
|
50
|
+
const lines = [`Version ${data.version || '?'} published`];
|
|
51
|
+
if (data.id)
|
|
52
|
+
lines.push(` Version ID: ${data.id}`);
|
|
53
|
+
if (data.assetId)
|
|
54
|
+
lines.push(` Asset ID: ${data.assetId}`);
|
|
55
|
+
if (data.label)
|
|
56
|
+
lines.push(` Label: ${data.label}`);
|
|
57
|
+
return lines.join('\n');
|
|
58
|
+
};
|
|
59
|
+
export const formatVersionDeleted = (data) => {
|
|
60
|
+
return `Deleted version ${data.versionId} from asset ${data.assetId}`;
|
|
61
|
+
};
|
|
62
|
+
export const formatConfigSaved = (data) => {
|
|
63
|
+
return data.message || 'Configuration saved.';
|
|
64
|
+
};
|
|
65
|
+
export const formatAuthKey = (data) => {
|
|
66
|
+
const lines = [data.message || 'API key created.'];
|
|
67
|
+
if (data.keyName)
|
|
68
|
+
lines.push(` Name: ${data.keyName}`);
|
|
69
|
+
if (data.apiKey)
|
|
70
|
+
lines.push(` Key: ${data.apiKey}`);
|
|
71
|
+
if (data.note)
|
|
72
|
+
lines.push(` ${data.note}`);
|
|
73
|
+
return lines.join('\n');
|
|
74
|
+
};
|
|
75
|
+
function formatBytes(bytes) {
|
|
76
|
+
if (bytes === 0)
|
|
77
|
+
return '0 B';
|
|
78
|
+
const units = ['B', 'KB', 'MB', 'GB'];
|
|
79
|
+
const i = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
|
|
80
|
+
const value = bytes / Math.pow(1024, i);
|
|
81
|
+
return `${value.toFixed(i === 0 ? 0 : 1)} ${units[i]}`;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { loadConfig, saveConfig, getApiUrl, getApiKey, CONFIG_DIR } from './config.js';
|
|
2
|
+
export type { TokenripConfig } from './config.js';
|
|
3
|
+
export { createHttpClient } from './client.js';
|
|
4
|
+
export type { ClientConfig } from './client.js';
|
|
5
|
+
export { CliError, toCliError } from './errors.js';
|
|
6
|
+
export { outputSuccess, outputError, wrapCommand } from './output.js';
|
|
7
|
+
export { requireAuthClient } from './auth-client.js';
|
|
8
|
+
export type { AuthContext } from './auth-client.js';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { loadConfig, saveConfig, getApiUrl, getApiKey, CONFIG_DIR } from './config.js';
|
|
2
|
+
export { createHttpClient } from './client.js';
|
|
3
|
+
export { CliError, toCliError } from './errors.js';
|
|
4
|
+
export { outputSuccess, outputError, wrapCommand } from './output.js';
|
|
5
|
+
export { requireAuthClient } from './auth-client.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { CliError } from './errors.js';
|
|
2
|
+
import type { Formatter } from './formatters.js';
|
|
3
|
+
export declare function setForceJson(value: boolean): void;
|
|
4
|
+
export declare function outputSuccess(data: Record<string, unknown>, formatter?: Formatter): void;
|
|
5
|
+
export declare function outputError(err: CliError): never;
|
|
6
|
+
export declare function wrapCommand<T extends (...args: any[]) => Promise<void>>(fn: T): T;
|