@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/AGENTS.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# @tokenrip/cli — Agent Guide
|
|
2
|
+
|
|
3
|
+
Tokenrip CLI creates shareable asset links (PDFs, markdown, HTML, charts, images) for AI agents.
|
|
4
|
+
|
|
5
|
+
## Setup
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @tokenrip/cli
|
|
9
|
+
tokenrip auth create-key
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Or use environment variables:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
export TOKENRIP_API_KEY=tr_...
|
|
16
|
+
export TOKENRIP_API_URL=https://api.tokenrip.com # optional, this is the default
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Output Format
|
|
20
|
+
|
|
21
|
+
All commands output JSON when piped or when `--json` is passed:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{ "ok": true, "data": { ... } }
|
|
25
|
+
{ "ok": false, "error": "ERROR_CODE", "message": "description" }
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Exit code 0 = success, 1 = error.
|
|
29
|
+
|
|
30
|
+
In a TTY without `--json`, output is human-readable. Force JSON with `--json` or `TOKENRIP_OUTPUT=json`.
|
|
31
|
+
|
|
32
|
+
## Commands
|
|
33
|
+
|
|
34
|
+
### `tokenrip asset publish <file> --type <type>`
|
|
35
|
+
|
|
36
|
+
Publish structured content. Types: `markdown`, `html`, `chart`, `code`, `text`, `json`.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
tokenrip asset publish report.md --type markdown --title "Analysis"
|
|
40
|
+
tokenrip asset publish data.json --type json --context "My Agent"
|
|
41
|
+
tokenrip asset publish report.md --type markdown --dry-run # validate only
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### `tokenrip asset upload <file>`
|
|
45
|
+
|
|
46
|
+
Upload a binary file (PDF, image, etc.).
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
tokenrip asset upload screenshot.png --title "Screenshot"
|
|
50
|
+
tokenrip asset upload document.pdf --dry-run # validate only
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### `tokenrip asset list`
|
|
54
|
+
|
|
55
|
+
List your assets.
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
tokenrip asset list
|
|
59
|
+
tokenrip asset list --since 2026-03-30T00:00:00Z
|
|
60
|
+
tokenrip asset list --type markdown --limit 5
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### `tokenrip asset delete <uuid>`
|
|
64
|
+
|
|
65
|
+
Delete an asset permanently.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
tokenrip asset delete 550e8400-e29b-41d4-a716-446655440000
|
|
69
|
+
tokenrip asset delete 550e8400-... --dry-run # preview without deleting
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `tokenrip asset stats`
|
|
73
|
+
|
|
74
|
+
Show storage usage statistics.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
tokenrip asset stats
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### `tokenrip auth create-key`
|
|
81
|
+
|
|
82
|
+
Create and auto-save a new API key.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
tokenrip auth create-key
|
|
86
|
+
tokenrip auth create-key --name "My Agent" --no-save
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `tokenrip config set-key <key>` / `tokenrip config set-url <url>`
|
|
90
|
+
|
|
91
|
+
Manually configure API key or server URL.
|
|
92
|
+
|
|
93
|
+
## Provenance Tracking
|
|
94
|
+
|
|
95
|
+
All asset commands support lineage metadata:
|
|
96
|
+
|
|
97
|
+
- `--parent <uuid>` — Parent asset ID
|
|
98
|
+
- `--context <text>` — Creator context (agent name, task description)
|
|
99
|
+
- `--refs <urls>` — Comma-separated input reference URLs
|
|
100
|
+
|
|
101
|
+
## Error Codes
|
|
102
|
+
|
|
103
|
+
| Code | Meaning | Fix |
|
|
104
|
+
|---|---|---|
|
|
105
|
+
| `NO_API_KEY` | No API key configured | `tokenrip auth create-key` or set `TOKENRIP_API_KEY` |
|
|
106
|
+
| `UNAUTHORIZED` | Key invalid or expired | Create a new key |
|
|
107
|
+
| `FILE_NOT_FOUND` | File path doesn't exist | Check the path |
|
|
108
|
+
| `INVALID_TYPE` | Bad content type | Use: markdown, html, chart, code, text, json |
|
|
109
|
+
| `NETWORK_ERROR` | Can't reach server | Check `TOKENRIP_API_URL` |
|
|
110
|
+
| `TIMEOUT` | Server didn't respond | Retry or check server status |
|
|
111
|
+
|
|
112
|
+
## Agent Workflow Example
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# 1. Setup (once)
|
|
116
|
+
tokenrip auth create-key --name "analysis-agent"
|
|
117
|
+
|
|
118
|
+
# 2. Publish results
|
|
119
|
+
tokenrip asset publish --json report.md --type markdown --title "Daily Report" \
|
|
120
|
+
--context "analysis-agent" --refs "https://source.example.com"
|
|
121
|
+
|
|
122
|
+
# 3. Parse the response
|
|
123
|
+
# { "ok": true, "data": { "id": "...", "url": "https://..." } }
|
|
124
|
+
|
|
125
|
+
# 4. Check storage
|
|
126
|
+
tokenrip --json asset stats
|
|
127
|
+
```
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tokenrip
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# @tokenrip/cli
|
|
2
|
+
|
|
3
|
+
Asset sharing for AI agents. Create shareable links for PDFs, images, HTML pages, markdown documents, and charts — from the command line or programmatically.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -g @tokenrip/cli
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
# 1. Create an API key (auto-saved)
|
|
15
|
+
tokenrip auth create-key
|
|
16
|
+
|
|
17
|
+
# 2. Upload a file
|
|
18
|
+
tokenrip asset upload report.pdf --title "Q1 Report"
|
|
19
|
+
|
|
20
|
+
# 3. Publish structured content
|
|
21
|
+
tokenrip asset publish dashboard.html --type html --title "Dashboard"
|
|
22
|
+
|
|
23
|
+
# 4. Check your assets
|
|
24
|
+
tokenrip asset list
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Every command outputs machine-readable JSON:
|
|
28
|
+
|
|
29
|
+
```json
|
|
30
|
+
{ "ok": true, "data": { "id": "abc-123", "url": "https://...", "title": "Q1 Report", "type": "file" } }
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## CLI Commands
|
|
34
|
+
|
|
35
|
+
### `tokenrip asset upload <file> [--title <title>]`
|
|
36
|
+
|
|
37
|
+
Upload a binary file (PDF, image, etc.) and get a shareable link. MIME type is auto-detected.
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
tokenrip asset upload chart.png
|
|
41
|
+
tokenrip asset upload slides.pdf --title "Team Slides"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### `tokenrip asset publish <file> --type <type> [--title <title>]`
|
|
45
|
+
|
|
46
|
+
Publish structured content for rich rendering in the browser.
|
|
47
|
+
|
|
48
|
+
Supported types: `markdown`, `html`, `chart`, `code`, `text`, `json`
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
tokenrip asset publish notes.md --type markdown
|
|
52
|
+
tokenrip asset publish page.html --type html --title "Landing Page"
|
|
53
|
+
tokenrip asset publish data.json --type chart --title "Revenue Chart"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### `tokenrip asset list`
|
|
57
|
+
|
|
58
|
+
List your published assets and their metadata.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
tokenrip asset list
|
|
62
|
+
tokenrip asset list --since 2026-03-30T00:00:00Z --type markdown --limit 5
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### `tokenrip asset update <uuid> <file> [--type <type>]`
|
|
66
|
+
|
|
67
|
+
Publish a new version of an existing asset.
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
tokenrip asset update 550e8400-... report-v2.md --type markdown
|
|
71
|
+
tokenrip asset update 550e8400-... chart.png --label "with axes fixed"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### `tokenrip asset delete <uuid>`
|
|
75
|
+
|
|
76
|
+
Permanently delete an asset and its shareable link.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
tokenrip asset delete 550e8400-e29b-41d4-a716-446655440000
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### `tokenrip asset stats`
|
|
83
|
+
|
|
84
|
+
Show storage usage statistics.
|
|
85
|
+
|
|
86
|
+
### `tokenrip auth create-key`
|
|
87
|
+
|
|
88
|
+
Create a new API key (auto-saved to config).
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
tokenrip auth create-key
|
|
92
|
+
tokenrip auth create-key --name "My Agent" --no-save
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `tokenrip config set-key <key>`
|
|
96
|
+
|
|
97
|
+
Save your API key to `~/.config/tokenrip/config.json`.
|
|
98
|
+
|
|
99
|
+
### `tokenrip config set-url <url>`
|
|
100
|
+
|
|
101
|
+
Set a custom API server URL (default: `https://api.tokenrip.com`).
|
|
102
|
+
|
|
103
|
+
## Provenance Tracking
|
|
104
|
+
|
|
105
|
+
All asset commands support lineage metadata:
|
|
106
|
+
|
|
107
|
+
- `--parent <uuid>` — Parent asset ID
|
|
108
|
+
- `--context <text>` — Creator context (agent name, task description)
|
|
109
|
+
- `--refs <urls>` — Comma-separated input reference URLs
|
|
110
|
+
|
|
111
|
+
## Library Usage
|
|
112
|
+
|
|
113
|
+
`@tokenrip/cli` also works as a Node.js library for programmatic asset creation.
|
|
114
|
+
|
|
115
|
+
```typescript
|
|
116
|
+
import { loadConfig, getApiUrl, getApiKey, createHttpClient } from '@tokenrip/cli';
|
|
117
|
+
|
|
118
|
+
const config = loadConfig();
|
|
119
|
+
const client = createHttpClient({
|
|
120
|
+
baseUrl: getApiUrl(config),
|
|
121
|
+
apiKey: getApiKey(config),
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// Publish markdown content
|
|
125
|
+
const { data } = await client.post('/v0/assets', {
|
|
126
|
+
type: 'markdown',
|
|
127
|
+
content: '# Hello\n\nGenerated by my agent.',
|
|
128
|
+
title: 'Agent Output',
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
console.log(data.data.id); // asset UUID
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### Exports
|
|
135
|
+
|
|
136
|
+
| Export | Description |
|
|
137
|
+
|--------|-------------|
|
|
138
|
+
| `loadConfig()` | Load config from `~/.config/tokenrip/config.json` |
|
|
139
|
+
| `saveConfig(config)` | Persist config to disk |
|
|
140
|
+
| `getApiUrl(config)` | Resolve API URL (config > env > default) |
|
|
141
|
+
| `getApiKey(config)` | Resolve API key (config > env) |
|
|
142
|
+
| `createHttpClient(config?)` | Axios instance with auth and error handling |
|
|
143
|
+
| `CliError` | Typed error class with error codes |
|
|
144
|
+
| `toCliError(err)` | Normalize any error to `CliError` |
|
|
145
|
+
| `outputSuccess(data)` | Print `{ ok: true, data }` JSON |
|
|
146
|
+
| `outputError(err)` | Print `{ ok: false, error, message }` and exit |
|
|
147
|
+
| `wrapCommand(fn)` | Wrap async handler with error catching |
|
|
148
|
+
|
|
149
|
+
## Configuration
|
|
150
|
+
|
|
151
|
+
Configuration is read from `~/.config/tokenrip/config.json`:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"apiKey": "tr_...",
|
|
156
|
+
"apiUrl": "https://api.tokenrip.com",
|
|
157
|
+
"preferences": {}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Environment variables take precedence over the config file:
|
|
162
|
+
|
|
163
|
+
| Variable | Overrides |
|
|
164
|
+
|----------|-----------|
|
|
165
|
+
| `TOKENRIP_API_KEY` | `apiKey` |
|
|
166
|
+
| `TOKENRIP_API_URL` | `apiUrl` |
|
|
167
|
+
|
|
168
|
+
## Output Format
|
|
169
|
+
|
|
170
|
+
All commands output JSON to stdout. In a TTY, output is human-readable by default — use `--json` or pipe to get JSON. Errors exit with code 1.
|
|
171
|
+
|
|
172
|
+
**Success:**
|
|
173
|
+
```json
|
|
174
|
+
{ "ok": true, "data": { ... } }
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Error:**
|
|
178
|
+
```json
|
|
179
|
+
{ "ok": false, "error": "NO_API_KEY", "message": "No API key configured. Run `tokenrip config set-key <key>`" }
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Error Codes
|
|
183
|
+
|
|
184
|
+
| Code | Meaning |
|
|
185
|
+
|------|---------|
|
|
186
|
+
| `NO_API_KEY` | No API key configured |
|
|
187
|
+
| `FILE_NOT_FOUND` | Input file does not exist |
|
|
188
|
+
| `INVALID_TYPE` | Publish type not one of: markdown, html, chart, code, text, json |
|
|
189
|
+
| `UNAUTHORIZED` | API key is invalid or expired |
|
|
190
|
+
| `TIMEOUT` | Request timed out (30s) |
|
|
191
|
+
| `NETWORK_ERROR` | Cannot reach the API server |
|
|
192
|
+
|
|
193
|
+
## License
|
|
194
|
+
|
|
195
|
+
MIT
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { loadConfig, getApiUrl, getApiKey } from './config.js';
|
|
2
|
+
import { createHttpClient } from './client.js';
|
|
3
|
+
import { CliError } from './errors.js';
|
|
4
|
+
export function requireAuthClient() {
|
|
5
|
+
const config = loadConfig();
|
|
6
|
+
const apiKey = getApiKey(config);
|
|
7
|
+
if (!apiKey) {
|
|
8
|
+
throw new CliError('NO_API_KEY', 'No API key configured. Run `tokenrip auth create-key` or set TOKENRIP_API_KEY.');
|
|
9
|
+
}
|
|
10
|
+
const apiUrl = getApiUrl(config);
|
|
11
|
+
const client = createHttpClient({ baseUrl: apiUrl, apiKey });
|
|
12
|
+
return { client, config, apiUrl };
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=auth-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../src/auth-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAQvC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,QAAQ,CAChB,YAAY,EACZ,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.requireAuthClient = requireAuthClient;
|
|
4
|
+
const config_js_1 = require("./config.js");
|
|
5
|
+
const client_js_1 = require("./client.js");
|
|
6
|
+
const errors_js_1 = require("./errors.js");
|
|
7
|
+
function requireAuthClient() {
|
|
8
|
+
const config = (0, config_js_1.loadConfig)();
|
|
9
|
+
const apiKey = (0, config_js_1.getApiKey)(config);
|
|
10
|
+
if (!apiKey) {
|
|
11
|
+
throw new errors_js_1.CliError('NO_API_KEY', 'No API key configured. Run `tokenrip auth create-key` or set TOKENRIP_API_KEY.');
|
|
12
|
+
}
|
|
13
|
+
const apiUrl = (0, config_js_1.getApiUrl)(config);
|
|
14
|
+
const client = (0, client_js_1.createHttpClient)({ baseUrl: apiUrl, apiKey });
|
|
15
|
+
return { client, config, apiUrl };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=auth-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-client.js","sourceRoot":"","sources":["../../src/auth-client.ts"],"names":[],"mappings":";;AAWA,8CAYC;AAtBD,2CAA+E;AAC/E,2CAA+C;AAC/C,2CAAuC;AAQvC,SAAgB,iBAAiB;IAC/B,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,oBAAQ,CAChB,YAAY,EACZ,gFAAgF,CACjF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,MAAM,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAA,4BAAgB,EAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createHttpClient = createHttpClient;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const errors_js_1 = require("./errors.js");
|
|
9
|
+
const DEFAULT_TIMEOUT = 30000;
|
|
10
|
+
function createHttpClient(config = {}) {
|
|
11
|
+
const headers = {};
|
|
12
|
+
if (config.apiKey) {
|
|
13
|
+
headers['Authorization'] = `Bearer ${config.apiKey}`;
|
|
14
|
+
}
|
|
15
|
+
const client = axios_1.default.create({
|
|
16
|
+
baseURL: config.baseUrl || 'https://api.tokenrip.com',
|
|
17
|
+
timeout: config.timeout || DEFAULT_TIMEOUT,
|
|
18
|
+
headers,
|
|
19
|
+
});
|
|
20
|
+
client.interceptors.response.use((response) => response, (error) => {
|
|
21
|
+
if (error.response?.status === 401) {
|
|
22
|
+
throw new errors_js_1.CliError('UNAUTHORIZED', 'API key required or invalid. Run `tokenrip auth create-key` or set TOKENRIP_API_KEY.');
|
|
23
|
+
}
|
|
24
|
+
if (error.response?.data?.error) {
|
|
25
|
+
throw new errors_js_1.CliError(error.response.data.error, error.response.data.message || 'Unknown API error');
|
|
26
|
+
}
|
|
27
|
+
if (error.code === 'ECONNABORTED') {
|
|
28
|
+
throw new errors_js_1.CliError('TIMEOUT', 'Request timeout — is the Tokenrip server running?');
|
|
29
|
+
}
|
|
30
|
+
throw new errors_js_1.CliError('NETWORK_ERROR', 'Network error — is the Tokenrip server running?');
|
|
31
|
+
});
|
|
32
|
+
return client;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;;;AAWA,4CAgCC;AA3CD,kDAAyD;AACzD,2CAAuC;AAEvC,MAAM,eAAe,GAAG,KAAK,CAAC;AAQ9B,SAAgB,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,eAAK,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,oBAAQ,CAChB,cAAc,EACd,sFAAsF,CACvF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,oBAAQ,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,oBAAQ,CAAC,SAAS,EAAE,mDAAmD,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,IAAI,oBAAQ,CAAC,eAAe,EAAE,iDAAiD,CAAC,CAAC;IACzF,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.authCreateKey = authCreateKey;
|
|
4
|
+
const node_os_1 = require("node:os");
|
|
5
|
+
const config_js_1 = require("../config.js");
|
|
6
|
+
const client_js_1 = require("../client.js");
|
|
7
|
+
const errors_js_1 = require("../errors.js");
|
|
8
|
+
const output_js_1 = require("../output.js");
|
|
9
|
+
const formatters_js_1 = require("../formatters.js");
|
|
10
|
+
async function authCreateKey(options) {
|
|
11
|
+
const config = (0, config_js_1.loadConfig)();
|
|
12
|
+
const apiUrl = (0, config_js_1.getApiUrl)(config);
|
|
13
|
+
const keyName = options.name || `tokenrip-${(0, node_os_1.hostname)()}`;
|
|
14
|
+
const client = (0, client_js_1.createHttpClient)({ baseUrl: apiUrl });
|
|
15
|
+
try {
|
|
16
|
+
const { data } = await client.post('/v0/auth/keys', { name: keyName });
|
|
17
|
+
const apiKey = data.data.apiKey;
|
|
18
|
+
// Auto-save the key if requested or not explicitly disabled
|
|
19
|
+
if (options.save !== false) {
|
|
20
|
+
config.apiKey = apiKey;
|
|
21
|
+
(0, config_js_1.saveConfig)(config);
|
|
22
|
+
(0, output_js_1.outputSuccess)({
|
|
23
|
+
keyName,
|
|
24
|
+
apiKey,
|
|
25
|
+
message: 'API key created and saved',
|
|
26
|
+
note: 'Keep this key safe — treat it like a password',
|
|
27
|
+
}, formatters_js_1.formatAuthKey);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
(0, output_js_1.outputSuccess)({
|
|
31
|
+
keyName,
|
|
32
|
+
apiKey,
|
|
33
|
+
message: 'API key created',
|
|
34
|
+
note: 'To save it, run: tokenrip config set-key <key>',
|
|
35
|
+
}, formatters_js_1.formatAuthKey);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error instanceof errors_js_1.CliError)
|
|
40
|
+
throw error;
|
|
41
|
+
throw new errors_js_1.CliError('AUTH_FAILED', 'Failed to create API key. Is the server running?');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/commands/auth.ts"],"names":[],"mappings":";;AAOA,sCAiCC;AAxCD,qCAAmC;AACnC,4CAAiE;AACjE,4CAAgD;AAChD,4CAAwC;AACxC,4CAA6C;AAC7C,oDAAiD;AAE1C,KAAK,UAAU,aAAa,CAAC,OAA0C;IAC5E,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,IAAA,kBAAQ,GAAE,EAAE,CAAC;IACzD,MAAM,MAAM,GAAG,IAAA,4BAAgB,EAAC,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,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;YACnB,IAAA,yBAAa,EAAC;gBACZ,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,2BAA2B;gBACpC,IAAI,EAAE,+CAA+C;aACtD,EAAE,6BAAa,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,IAAA,yBAAa,EAAC;gBACZ,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,iBAAiB;gBAC1B,IAAI,EAAE,gDAAgD;aACvD,EAAE,6BAAa,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,oBAAQ;YAAE,MAAM,KAAK,CAAC;QAC3C,MAAM,IAAI,oBAAQ,CAAC,aAAa,EAAE,kDAAkD,CAAC,CAAC;IACxF,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configSetKey = configSetKey;
|
|
4
|
+
exports.configSetUrl = configSetUrl;
|
|
5
|
+
const config_js_1 = require("../config.js");
|
|
6
|
+
const output_js_1 = require("../output.js");
|
|
7
|
+
const formatters_js_1 = require("../formatters.js");
|
|
8
|
+
async function configSetKey(key) {
|
|
9
|
+
const config = (0, config_js_1.loadConfig)();
|
|
10
|
+
config.apiKey = key;
|
|
11
|
+
(0, config_js_1.saveConfig)(config);
|
|
12
|
+
(0, output_js_1.outputSuccess)({ message: 'API key saved' }, formatters_js_1.formatConfigSaved);
|
|
13
|
+
}
|
|
14
|
+
async function configSetUrl(url) {
|
|
15
|
+
const config = (0, config_js_1.loadConfig)();
|
|
16
|
+
config.apiUrl = url;
|
|
17
|
+
(0, config_js_1.saveConfig)(config);
|
|
18
|
+
(0, output_js_1.outputSuccess)({ message: 'API URL saved', apiUrl: url }, formatters_js_1.formatConfigSaved);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":";;AAIA,oCAKC;AAED,oCAKC;AAhBD,4CAAsD;AACtD,4CAA6C;AAC7C,oDAAqD;AAE9C,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;IACnB,IAAA,yBAAa,EAAC,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,iCAAiB,CAAC,CAAC;AACjE,CAAC;AAEM,KAAK,UAAU,YAAY,CAAC,GAAW;IAC5C,MAAM,MAAM,GAAG,IAAA,sBAAU,GAAE,CAAC;IAC5B,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,IAAA,sBAAU,EAAC,MAAM,CAAC,CAAC;IACnB,IAAA,yBAAa,EAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,iCAAiB,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteVersion = deleteVersion;
|
|
4
|
+
const auth_client_js_1 = require("../auth-client.js");
|
|
5
|
+
const output_js_1 = require("../output.js");
|
|
6
|
+
const formatters_js_1 = require("../formatters.js");
|
|
7
|
+
async function deleteVersion(uuid, versionId, options = {}) {
|
|
8
|
+
if (options.dryRun) {
|
|
9
|
+
(0, output_js_1.outputSuccess)({ dryRun: true, action: 'would delete version', assetId: uuid, versionId }, formatters_js_1.formatVersionDeleted);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const { client } = (0, auth_client_js_1.requireAuthClient)();
|
|
13
|
+
await client.delete(`/v0/assets/${uuid}/versions/${versionId}`);
|
|
14
|
+
(0, output_js_1.outputSuccess)({ assetId: uuid, versionId, deleted: true }, formatters_js_1.formatVersionDeleted);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=delete-version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-version.js","sourceRoot":"","sources":["../../../src/commands/delete-version.ts"],"names":[],"mappings":";;AAIA,sCAcC;AAlBD,sDAAsD;AACtD,4CAA6C;AAC7C,oDAAwD;AAEjD,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,SAAiB,EACjB,UAAgC,EAAE;IAElC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAA,yBAAa,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,oCAAoB,CAAC,CAAC;QAChH,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,aAAa,SAAS,EAAE,CAAC,CAAC;IAEhE,IAAA,yBAAa,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,oCAAoB,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteAsset = deleteAsset;
|
|
4
|
+
const auth_client_js_1 = require("../auth-client.js");
|
|
5
|
+
const output_js_1 = require("../output.js");
|
|
6
|
+
const formatters_js_1 = require("../formatters.js");
|
|
7
|
+
async function deleteAsset(uuid, options = {}) {
|
|
8
|
+
if (options.dryRun) {
|
|
9
|
+
(0, output_js_1.outputSuccess)({ dryRun: true, action: 'would delete', id: uuid }, formatters_js_1.formatAssetDeleted);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const { client } = (0, auth_client_js_1.requireAuthClient)();
|
|
13
|
+
await client.delete(`/v0/assets/${uuid}`);
|
|
14
|
+
(0, output_js_1.outputSuccess)({ id: uuid, deleted: true }, formatters_js_1.formatAssetDeleted);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/delete.ts"],"names":[],"mappings":";;AAIA,kCAUC;AAdD,sDAAsD;AACtD,4CAA6C;AAC7C,oDAAsD;AAE/C,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,UAAgC,EAAE;IAChF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAA,yBAAa,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,kCAAkB,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAE1C,IAAA,yBAAa,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,kCAAkB,CAAC,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.publish = publish;
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const auth_client_js_1 = require("../auth-client.js");
|
|
10
|
+
const errors_js_1 = require("../errors.js");
|
|
11
|
+
const output_js_1 = require("../output.js");
|
|
12
|
+
const formatters_js_1 = require("../formatters.js");
|
|
13
|
+
const VALID_TYPES = ['markdown', 'html', 'chart', 'code', 'text', 'json'];
|
|
14
|
+
async function publish(filePath, options) {
|
|
15
|
+
if (!VALID_TYPES.includes(options.type)) {
|
|
16
|
+
throw new errors_js_1.CliError('INVALID_TYPE', `Type must be one of: ${VALID_TYPES.join(', ')}`);
|
|
17
|
+
}
|
|
18
|
+
const absPath = node_path_1.default.resolve(filePath);
|
|
19
|
+
if (!node_fs_1.default.existsSync(absPath)) {
|
|
20
|
+
throw new errors_js_1.CliError('FILE_NOT_FOUND', `File not found: ${absPath}`);
|
|
21
|
+
}
|
|
22
|
+
const title = options.title || node_path_1.default.basename(absPath);
|
|
23
|
+
const size = node_fs_1.default.statSync(absPath).size;
|
|
24
|
+
if (options.dryRun) {
|
|
25
|
+
(0, output_js_1.outputSuccess)({ dryRun: true, action: 'would publish', file: absPath, title, type: options.type, size }, formatters_js_1.formatAssetCreated);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const { client } = (0, auth_client_js_1.requireAuthClient)();
|
|
29
|
+
const content = node_fs_1.default.readFileSync(absPath, 'utf-8');
|
|
30
|
+
const body = {
|
|
31
|
+
type: options.type,
|
|
32
|
+
content,
|
|
33
|
+
title,
|
|
34
|
+
};
|
|
35
|
+
if (options.parent)
|
|
36
|
+
body.parentAssetId = options.parent;
|
|
37
|
+
if (options.context)
|
|
38
|
+
body.creatorContext = options.context;
|
|
39
|
+
if (options.refs)
|
|
40
|
+
body.inputReferences = options.refs.split(',').map((r) => r.trim());
|
|
41
|
+
const { data } = await client.post('/v0/assets', body);
|
|
42
|
+
const url = data.data.url || `https://tokenrip.com/s/${data.data.id}`;
|
|
43
|
+
(0, output_js_1.outputSuccess)({
|
|
44
|
+
id: data.data.id,
|
|
45
|
+
url,
|
|
46
|
+
title: data.data.title,
|
|
47
|
+
type: data.data.type,
|
|
48
|
+
}, formatters_js_1.formatAssetCreated);
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=publish.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/commands/publish.ts"],"names":[],"mappings":";;;;;AAUA,0BA0CC;AApDD,sDAAyB;AACzB,0DAA6B;AAC7B,sDAAsD;AACtD,4CAAwC;AACxC,4CAA6C;AAC7C,oDAAsD;AAEtD,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAU,CAAC;AAG5E,KAAK,UAAU,OAAO,CAC3B,QAAgB,EAChB,OAA6G;IAE7G,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAmB,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,oBAAQ,CAAC,cAAc,EAAE,wBAAwB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,OAAO,GAAG,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,oBAAQ,CAAC,gBAAgB,EAAE,mBAAmB,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,mBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,iBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAEvC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAA,yBAAa,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,kCAAkB,CAAC,CAAC;QAC7H,OAAO;IACT,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,OAAO,GAAG,iBAAE,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,IAAA,yBAAa,EAAC;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,kCAAkB,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.stats = stats;
|
|
4
|
+
const auth_client_js_1 = require("../auth-client.js");
|
|
5
|
+
const output_js_1 = require("../output.js");
|
|
6
|
+
const formatters_js_1 = require("../formatters.js");
|
|
7
|
+
async function stats() {
|
|
8
|
+
const { client } = (0, auth_client_js_1.requireAuthClient)();
|
|
9
|
+
const { data } = await client.get('/v0/assets/stats');
|
|
10
|
+
(0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatStats);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../../src/commands/stats.ts"],"names":[],"mappings":";;AAIA,sBAKC;AATD,sDAAsD;AACtD,4CAA6C;AAC7C,oDAA+C;AAExC,KAAK,UAAU,KAAK;IACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAEtD,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,EAAE,2BAAW,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.status = status;
|
|
4
|
+
const auth_client_js_1 = require("../auth-client.js");
|
|
5
|
+
const output_js_1 = require("../output.js");
|
|
6
|
+
const formatters_js_1 = require("../formatters.js");
|
|
7
|
+
async function status(options) {
|
|
8
|
+
const { client } = (0, auth_client_js_1.requireAuthClient)();
|
|
9
|
+
const params = {};
|
|
10
|
+
if (options.since)
|
|
11
|
+
params.since = options.since;
|
|
12
|
+
if (options.limit)
|
|
13
|
+
params.limit = options.limit;
|
|
14
|
+
if (options.type)
|
|
15
|
+
params.type = options.type;
|
|
16
|
+
const { data } = await client.get('/v0/assets/status', { params });
|
|
17
|
+
(0, output_js_1.outputSuccess)(data.data, formatters_js_1.formatAssetList);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":";;AAIA,wBAWC;AAfD,sDAAsD;AACtD,4CAA6C;AAC7C,oDAAmD;AAE5C,KAAK,UAAU,MAAM,CAAC,OAA0D;IACrF,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,kCAAiB,GAAE,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,IAAA,yBAAa,EAAC,IAAI,CAAC,IAAI,EAAE,+BAAe,CAAC,CAAC;AAC5C,CAAC"}
|