@purveyors/cli 0.2.1 → 0.4.0
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/catalog.d.ts +4 -56
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +14 -81
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/config.d.ts +7 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +82 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/inventory.d.ts +2 -25
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +109 -149
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/roast.d.ts +2 -41
- package/dist/commands/roast.d.ts.map +1 -1
- package/dist/commands/roast.js +445 -126
- package/dist/commands/roast.js.map +1 -1
- package/dist/commands/sales.d.ts +2 -10
- package/dist/commands/sales.d.ts.map +1 -1
- package/dist/commands/sales.js +100 -112
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/tasting.d.ts +4 -38
- package/dist/commands/tasting.d.ts.map +1 -1
- package/dist/commands/tasting.js +93 -116
- package/dist/commands/tasting.js.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/ai.d.ts +36 -0
- package/dist/lib/ai.d.ts.map +1 -0
- package/dist/lib/ai.js +38 -0
- package/dist/lib/ai.js.map +1 -0
- package/dist/lib/artisan/db.d.ts +37 -0
- package/dist/lib/artisan/db.d.ts.map +1 -0
- package/dist/lib/artisan/db.js +51 -0
- package/dist/lib/artisan/db.js.map +1 -0
- package/dist/lib/artisan/import.d.ts +16 -0
- package/dist/lib/artisan/import.d.ts.map +1 -0
- package/dist/lib/artisan/import.js +447 -0
- package/dist/lib/artisan/import.js.map +1 -0
- package/dist/lib/artisan/index.d.ts +9 -0
- package/dist/lib/artisan/index.d.ts.map +1 -0
- package/dist/lib/artisan/index.js +7 -0
- package/dist/lib/artisan/index.js.map +1 -0
- package/dist/lib/artisan/parser.d.ts +19 -0
- package/dist/lib/artisan/parser.d.ts.map +1 -0
- package/dist/lib/artisan/parser.js +376 -0
- package/dist/lib/artisan/parser.js.map +1 -0
- package/dist/lib/artisan/temperature.d.ts +52 -0
- package/dist/lib/artisan/temperature.d.ts.map +1 -0
- package/dist/lib/artisan/temperature.js +101 -0
- package/dist/lib/artisan/temperature.js.map +1 -0
- package/dist/lib/artisan/types.d.ts +195 -0
- package/dist/lib/artisan/types.d.ts.map +1 -0
- package/dist/lib/artisan/types.js +35 -0
- package/dist/lib/artisan/types.js.map +1 -0
- package/dist/lib/artisan/validator.d.ts +14 -0
- package/dist/lib/artisan/validator.d.ts.map +1 -0
- package/dist/lib/artisan/validator.js +228 -0
- package/dist/lib/artisan/validator.js.map +1 -0
- package/dist/lib/catalog.d.ts +87 -0
- package/dist/lib/catalog.d.ts.map +1 -0
- package/dist/lib/catalog.js +111 -0
- package/dist/lib/catalog.js.map +1 -0
- package/dist/lib/config.d.ts +26 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +59 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/index.d.ts +6 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +11 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/interactive/forms.d.ts +33 -0
- package/dist/lib/interactive/forms.d.ts.map +1 -0
- package/dist/lib/interactive/forms.js +139 -0
- package/dist/lib/interactive/forms.js.map +1 -0
- package/dist/lib/interactive/watch.d.ts +66 -0
- package/dist/lib/interactive/watch.d.ts.map +1 -0
- package/dist/lib/interactive/watch.js +494 -0
- package/dist/lib/interactive/watch.js.map +1 -0
- package/dist/lib/inventory.d.ts +80 -0
- package/dist/lib/inventory.d.ts.map +1 -0
- package/dist/lib/inventory.js +205 -0
- package/dist/lib/inventory.js.map +1 -0
- package/dist/lib/roast.d.ts +127 -0
- package/dist/lib/roast.d.ts.map +1 -0
- package/dist/lib/roast.js +284 -0
- package/dist/lib/roast.js.map +1 -0
- package/dist/lib/sales.d.ts +53 -0
- package/dist/lib/sales.d.ts.map +1 -0
- package/dist/lib/sales.js +155 -0
- package/dist/lib/sales.js.map +1 -0
- package/dist/lib/tasting.d.ts +76 -0
- package/dist/lib/tasting.d.ts.map +1 -0
- package/dist/lib/tasting.js +136 -0
- package/dist/lib/tasting.js.map +1 -0
- package/package.json +15 -2
|
@@ -1,24 +1,12 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import * as p from '@clack/prompts';
|
|
2
3
|
import { createAuthenticatedClient } from '../lib/supabase.js';
|
|
4
|
+
import { getConfigValue } from '../lib/config.js';
|
|
3
5
|
import { outputData, info, success } from '../lib/output.js';
|
|
4
6
|
import { withErrorHandling, AuthError, PrvrsError } from '../lib/errors.js';
|
|
5
7
|
import { confirm, todayIso } from '../lib/prompts.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
'id',
|
|
9
|
-
'rank',
|
|
10
|
-
'notes',
|
|
11
|
-
'cupping_notes',
|
|
12
|
-
'purchase_date',
|
|
13
|
-
'purchased_qty_lbs',
|
|
14
|
-
'bean_cost',
|
|
15
|
-
'tax_ship_cost',
|
|
16
|
-
'last_updated',
|
|
17
|
-
'user',
|
|
18
|
-
'catalog_id',
|
|
19
|
-
'stocked',
|
|
20
|
-
'coffee_catalog!catalog_id (id, name, source, country, region, processing, cost_lb, description_short, stocked)',
|
|
21
|
-
].join(', ');
|
|
8
|
+
import { listInventory, getInventory, addInventory, updateInventory, deleteInventory, } from '../lib/inventory.js';
|
|
9
|
+
import { pickCatalogItem, guardCancel } from '../lib/interactive/forms.js';
|
|
22
10
|
// ─── Command builder ──────────────────────────────────────────────────────────
|
|
23
11
|
/**
|
|
24
12
|
* `purvey inventory` — Manage your green coffee inventory.
|
|
@@ -39,17 +27,11 @@ export function buildInventoryCommand() {
|
|
|
39
27
|
if (!user) {
|
|
40
28
|
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
41
29
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const { data, error } = await query
|
|
48
|
-
.order('last_updated', { ascending: false })
|
|
49
|
-
.limit(limit);
|
|
50
|
-
if (error)
|
|
51
|
-
throw error;
|
|
52
|
-
if (!data || data.length === 0) {
|
|
30
|
+
const data = await listInventory(supabase, user.id, {
|
|
31
|
+
stocked: opts.stocked ? true : undefined,
|
|
32
|
+
limit: Math.max(1, parseInt(opts.limit, 10)),
|
|
33
|
+
});
|
|
34
|
+
if (data.length === 0) {
|
|
53
35
|
info('No inventory items found.');
|
|
54
36
|
return;
|
|
55
37
|
}
|
|
@@ -66,45 +48,20 @@ export function buildInventoryCommand() {
|
|
|
66
48
|
if (!user) {
|
|
67
49
|
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
68
50
|
}
|
|
69
|
-
const
|
|
70
|
-
'id',
|
|
71
|
-
'rank',
|
|
72
|
-
'notes',
|
|
73
|
-
'cupping_notes',
|
|
74
|
-
'purchase_date',
|
|
75
|
-
'purchased_qty_lbs',
|
|
76
|
-
'bean_cost',
|
|
77
|
-
'tax_ship_cost',
|
|
78
|
-
'last_updated',
|
|
79
|
-
'user',
|
|
80
|
-
'catalog_id',
|
|
81
|
-
'stocked',
|
|
82
|
-
'coffee_catalog!catalog_id (id, name, source, country, region, processing, cost_lb, description_short, description_long, farm_notes, cupping_notes, stocked)',
|
|
83
|
-
].join(', ');
|
|
84
|
-
const { data, error } = await supabase
|
|
85
|
-
.from('green_coffee_inv')
|
|
86
|
-
.select(selectColumns)
|
|
87
|
-
.eq('id', parseInt(id, 10))
|
|
88
|
-
.eq('user', user.id)
|
|
89
|
-
.single();
|
|
90
|
-
if (error) {
|
|
91
|
-
if (error.code === 'PGRST116') {
|
|
92
|
-
throw new AuthError(`Inventory item ${id} not found or does not belong to you.`);
|
|
93
|
-
}
|
|
94
|
-
throw error;
|
|
95
|
-
}
|
|
51
|
+
const data = await getInventory(supabase, user.id, parseInt(id, 10));
|
|
96
52
|
outputData(data, globalOpts);
|
|
97
53
|
}));
|
|
98
54
|
// ── inventory add ─────────────────────────────────────────────────────────
|
|
99
55
|
inventory
|
|
100
56
|
.command('add')
|
|
101
57
|
.description('Add a new green coffee inventory item')
|
|
102
|
-
.
|
|
103
|
-
.
|
|
58
|
+
.option('--catalog-id <id>', 'Coffee catalog entry ID')
|
|
59
|
+
.option('--qty <lbs>', 'Quantity purchased in pounds')
|
|
104
60
|
.option('--cost <dollars>', 'Bean cost in dollars')
|
|
105
61
|
.option('--tax-ship <dollars>', 'Tax and shipping cost in dollars')
|
|
106
62
|
.option('--notes <text>', 'Notes for this inventory item')
|
|
107
63
|
.option('--purchase-date <YYYY-MM-DD>', 'Purchase date (defaults to today)')
|
|
64
|
+
.option('--form', 'Interactive form mode')
|
|
108
65
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
109
66
|
const globalOpts = cmd.optsWithGlobals();
|
|
110
67
|
const supabase = await createAuthenticatedClient();
|
|
@@ -112,6 +69,62 @@ export function buildInventoryCommand() {
|
|
|
112
69
|
if (!user) {
|
|
113
70
|
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
114
71
|
}
|
|
72
|
+
// ── Interactive form mode ──────────────────────────────────────────
|
|
73
|
+
// Auto-enter form mode if config form-mode is true and required args are missing
|
|
74
|
+
const formMode = opts.form ||
|
|
75
|
+
(!(opts.catalogId && opts.qty) && (await getConfigValue('form-mode')) === 'true');
|
|
76
|
+
if (formMode) {
|
|
77
|
+
p.intro('Add Bean to Inventory');
|
|
78
|
+
const catalogItem = await pickCatalogItem(supabase);
|
|
79
|
+
const qtyRaw = await p.text({
|
|
80
|
+
message: 'Quantity (lbs)',
|
|
81
|
+
placeholder: '5',
|
|
82
|
+
validate: (v) => {
|
|
83
|
+
const n = parseFloat(String(v));
|
|
84
|
+
if (isNaN(n) || n <= 0)
|
|
85
|
+
return 'Must be a positive number.';
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
guardCancel(qtyRaw);
|
|
89
|
+
const costRaw = await p.text({
|
|
90
|
+
message: 'Cost per lb ($)',
|
|
91
|
+
placeholder: 'optional',
|
|
92
|
+
});
|
|
93
|
+
guardCancel(costRaw);
|
|
94
|
+
const notesRaw = await p.text({
|
|
95
|
+
message: 'Notes',
|
|
96
|
+
placeholder: 'optional',
|
|
97
|
+
});
|
|
98
|
+
guardCancel(notesRaw);
|
|
99
|
+
const confirmed = await p.confirm({ message: 'Add this bean?' });
|
|
100
|
+
guardCancel(confirmed);
|
|
101
|
+
if (!confirmed) {
|
|
102
|
+
p.cancel('Aborted.');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
const costStr = String(costRaw).trim();
|
|
106
|
+
const cost = costStr !== '' ? parseFloat(costStr) : undefined;
|
|
107
|
+
const notesStr = String(notesRaw).trim();
|
|
108
|
+
const notes = notesStr !== '' ? notesStr : undefined;
|
|
109
|
+
const qtyStr = String(qtyRaw);
|
|
110
|
+
const data = await addInventory(supabase, user.id, {
|
|
111
|
+
catalogId: catalogItem.id,
|
|
112
|
+
qty: parseFloat(qtyStr),
|
|
113
|
+
cost,
|
|
114
|
+
notes,
|
|
115
|
+
purchaseDate: todayIso(),
|
|
116
|
+
});
|
|
117
|
+
p.outro(`Bean added! Inventory item #${data.id} created.`);
|
|
118
|
+
outputData(data, globalOpts);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// ── Flag-based mode ────────────────────────────────────────────────
|
|
122
|
+
if (!opts.catalogId) {
|
|
123
|
+
throw new PrvrsError('INVALID_ARGUMENT', 'Missing --catalog-id. Use --form for interactive mode.');
|
|
124
|
+
}
|
|
125
|
+
if (!opts.qty) {
|
|
126
|
+
throw new PrvrsError('INVALID_ARGUMENT', 'Missing --qty. Use --form for interactive mode.');
|
|
127
|
+
}
|
|
115
128
|
const catalogId = parseInt(opts.catalogId, 10);
|
|
116
129
|
if (isNaN(catalogId)) {
|
|
117
130
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --catalog-id: "${opts.catalogId}".`);
|
|
@@ -120,43 +133,23 @@ export function buildInventoryCommand() {
|
|
|
120
133
|
if (isNaN(qty) || qty <= 0) {
|
|
121
134
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --qty: "${opts.qty}". Must be a positive number.`);
|
|
122
135
|
}
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
if (opts.notes !== undefined) {
|
|
142
|
-
insertPayload.notes = opts.notes;
|
|
143
|
-
}
|
|
144
|
-
const { data: inserted, error: insertError } = await supabase
|
|
145
|
-
.from('green_coffee_inv')
|
|
146
|
-
.insert(insertPayload)
|
|
147
|
-
.select('id')
|
|
148
|
-
.single();
|
|
149
|
-
if (insertError)
|
|
150
|
-
throw insertError;
|
|
151
|
-
// Re-fetch the full row with catalog join
|
|
152
|
-
const { data, error } = await supabase
|
|
153
|
-
.from('green_coffee_inv')
|
|
154
|
-
.select(LIST_SELECT)
|
|
155
|
-
.eq('id', inserted.id)
|
|
156
|
-
.single();
|
|
157
|
-
if (error)
|
|
158
|
-
throw error;
|
|
159
|
-
success(`Inventory item ${inserted.id} created.`);
|
|
136
|
+
const cost = opts.cost !== undefined ? parseFloat(opts.cost) : undefined;
|
|
137
|
+
if (cost !== undefined && isNaN(cost)) {
|
|
138
|
+
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --cost: "${opts.cost}".`);
|
|
139
|
+
}
|
|
140
|
+
const taxShip = opts.taxShip !== undefined ? parseFloat(opts.taxShip) : undefined;
|
|
141
|
+
if (taxShip !== undefined && isNaN(taxShip)) {
|
|
142
|
+
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --tax-ship: "${opts.taxShip}".`);
|
|
143
|
+
}
|
|
144
|
+
const data = await addInventory(supabase, user.id, {
|
|
145
|
+
catalogId,
|
|
146
|
+
qty,
|
|
147
|
+
cost,
|
|
148
|
+
taxShip,
|
|
149
|
+
notes: opts.notes,
|
|
150
|
+
purchaseDate: opts.purchaseDate ?? todayIso(),
|
|
151
|
+
});
|
|
152
|
+
success(`Inventory item ${data.id} created.`);
|
|
160
153
|
outputData(data, globalOpts);
|
|
161
154
|
}));
|
|
162
155
|
// ── inventory update <id> ─────────────────────────────────────────────────
|
|
@@ -179,64 +172,47 @@ export function buildInventoryCommand() {
|
|
|
179
172
|
if (isNaN(itemId)) {
|
|
180
173
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
|
|
181
174
|
}
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
.from('green_coffee_inv')
|
|
185
|
-
.select('id')
|
|
186
|
-
.eq('id', itemId)
|
|
187
|
-
.eq('user', user.id)
|
|
188
|
-
.single();
|
|
189
|
-
if (fetchError || !existing) {
|
|
190
|
-
throw new AuthError(`Inventory item ${id} not found or does not belong to you.`);
|
|
191
|
-
}
|
|
192
|
-
// Build partial update — only include fields that were explicitly passed
|
|
193
|
-
const updates = {};
|
|
175
|
+
// Parse CLI strings into typed values
|
|
176
|
+
let qty;
|
|
194
177
|
if (opts.qty !== undefined) {
|
|
195
|
-
|
|
178
|
+
qty = parseFloat(opts.qty);
|
|
196
179
|
if (isNaN(qty) || qty <= 0)
|
|
197
180
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --qty: "${opts.qty}".`);
|
|
198
|
-
updates.purchased_qty_lbs = qty;
|
|
199
181
|
}
|
|
182
|
+
let cost;
|
|
200
183
|
if (opts.cost !== undefined) {
|
|
201
|
-
|
|
184
|
+
cost = parseFloat(opts.cost);
|
|
202
185
|
if (isNaN(cost))
|
|
203
186
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --cost: "${opts.cost}".`);
|
|
204
|
-
updates.bean_cost = cost;
|
|
205
187
|
}
|
|
188
|
+
let taxShip;
|
|
206
189
|
if (opts.taxShip !== undefined) {
|
|
207
|
-
|
|
190
|
+
taxShip = parseFloat(opts.taxShip);
|
|
208
191
|
if (isNaN(taxShip))
|
|
209
192
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --tax-ship: "${opts.taxShip}".`);
|
|
210
|
-
updates.tax_ship_cost = taxShip;
|
|
211
|
-
}
|
|
212
|
-
if (opts.notes !== undefined) {
|
|
213
|
-
updates.notes = opts.notes;
|
|
214
193
|
}
|
|
194
|
+
let stocked;
|
|
215
195
|
if (opts.stocked !== undefined) {
|
|
216
196
|
const stockedStr = opts.stocked.toLowerCase();
|
|
217
197
|
if (stockedStr !== 'true' && stockedStr !== 'false') {
|
|
218
198
|
throw new PrvrsError('INVALID_ARGUMENT', `--stocked must be "true" or "false".`);
|
|
219
199
|
}
|
|
220
|
-
|
|
200
|
+
stocked = stockedStr === 'true';
|
|
221
201
|
}
|
|
222
|
-
if (
|
|
202
|
+
if (qty === undefined &&
|
|
203
|
+
cost === undefined &&
|
|
204
|
+
taxShip === undefined &&
|
|
205
|
+
opts.notes === undefined &&
|
|
206
|
+
stocked === undefined) {
|
|
223
207
|
throw new PrvrsError('INVALID_ARGUMENT', 'No update fields provided. Pass at least one of: --qty, --cost, --tax-ship, --notes, --stocked.');
|
|
224
208
|
}
|
|
225
|
-
const
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
.
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
// Re-fetch the updated row
|
|
233
|
-
const { data, error } = await supabase
|
|
234
|
-
.from('green_coffee_inv')
|
|
235
|
-
.select(LIST_SELECT)
|
|
236
|
-
.eq('id', itemId)
|
|
237
|
-
.single();
|
|
238
|
-
if (error)
|
|
239
|
-
throw error;
|
|
209
|
+
const data = await updateInventory(supabase, user.id, itemId, {
|
|
210
|
+
qty,
|
|
211
|
+
cost,
|
|
212
|
+
taxShip,
|
|
213
|
+
notes: opts.notes,
|
|
214
|
+
stocked,
|
|
215
|
+
});
|
|
240
216
|
success(`Inventory item ${itemId} updated.`);
|
|
241
217
|
outputData(data, globalOpts);
|
|
242
218
|
}));
|
|
@@ -246,7 +222,7 @@ export function buildInventoryCommand() {
|
|
|
246
222
|
.description('Delete an inventory item (must be yours)')
|
|
247
223
|
.option('-y, --yes', 'Skip confirmation prompt')
|
|
248
224
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
249
|
-
void cmd;
|
|
225
|
+
void cmd;
|
|
250
226
|
const supabase = await createAuthenticatedClient();
|
|
251
227
|
const { data: { user }, } = await supabase.auth.getUser();
|
|
252
228
|
if (!user) {
|
|
@@ -256,16 +232,6 @@ export function buildInventoryCommand() {
|
|
|
256
232
|
if (isNaN(itemId)) {
|
|
257
233
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
|
|
258
234
|
}
|
|
259
|
-
// Verify ownership
|
|
260
|
-
const { data: existing, error: fetchError } = await supabase
|
|
261
|
-
.from('green_coffee_inv')
|
|
262
|
-
.select('id, catalog_id')
|
|
263
|
-
.eq('id', itemId)
|
|
264
|
-
.eq('user', user.id)
|
|
265
|
-
.single();
|
|
266
|
-
if (fetchError || !existing) {
|
|
267
|
-
throw new AuthError(`Inventory item ${id} not found or does not belong to you.`);
|
|
268
|
-
}
|
|
269
235
|
if (!opts.yes) {
|
|
270
236
|
const ok = await confirm(`Delete inventory item ${itemId}?`);
|
|
271
237
|
if (!ok) {
|
|
@@ -273,13 +239,7 @@ export function buildInventoryCommand() {
|
|
|
273
239
|
return;
|
|
274
240
|
}
|
|
275
241
|
}
|
|
276
|
-
|
|
277
|
-
.from('green_coffee_inv')
|
|
278
|
-
.delete()
|
|
279
|
-
.eq('id', itemId)
|
|
280
|
-
.eq('user', user.id);
|
|
281
|
-
if (deleteError)
|
|
282
|
-
throw deleteError;
|
|
242
|
+
await deleteInventory(supabase, user.id, itemId);
|
|
283
243
|
success(`Inventory item ${itemId} deleted.`);
|
|
284
244
|
}));
|
|
285
245
|
return inventory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"inventory.js","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAM3E,iFAAiF;AAEjF;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC;IAE7F,6EAA6E;IAC7E,SAAS;SACN,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,WAAW,EAAE,mCAAmC,CAAC;SACxD,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,IAAI,CAAC;SACxD,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,EAAE,CAAC;QAEnD,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,GACf,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;YAClD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACxC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC;SACvD,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,6EAA6E;IAC7E,SAAS;SACN,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,EAAU,EAAE,KAA8B,EAAE,GAAY,EAAE,EAAE;QACnF,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,EAAE,CAAC;QAEnD,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,GACf,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,6EAA6E;IAC7E,SAAS;SACN,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;SACrD,MAAM,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;SAClD,MAAM,CAAC,sBAAsB,EAAE,kCAAkC,CAAC;SAClE,MAAM,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;SACzD,MAAM,CAAC,8BAA8B,EAAE,mCAAmC,CAAC;SAC3E,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;SACzC,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,EAAE,CAAC;QAEnD,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,GACf,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QAED,sEAAsE;QACtE,iFAAiF;QACjF,MAAM,QAAQ,GACZ,IAAI,CAAC,IAAI;YACT,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QACpF,IAAI,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAEjC,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,GAAG;gBAChB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;oBACd,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;wBAAE,OAAO,4BAA4B,CAAC;gBAC9D,CAAC;aACF,CAAC,CAAC;YACH,WAAW,CAAC,MAAM,CAAC,CAAC;YAEpB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC3B,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;YACH,WAAW,CAAC,OAAO,CAAC,CAAC;YAErB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC;gBAC5B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;YACH,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACjE,WAAW,CAAC,SAAS,CAAC,CAAC;YAEvB,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAE9B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;gBACjD,SAAS,EAAE,WAAW,CAAC,EAAE;gBACzB,GAAG,EAAE,UAAU,CAAC,MAAM,CAAC;gBACvB,IAAI;gBACJ,KAAK;gBACL,YAAY,EAAE,QAAQ,EAAE;aACzB,CAAC,CAAC;YAEH,CAAC,CAAC,KAAK,CAAC,+BAA+B,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;YAC3D,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,sEAAsE;QACtE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,wDAAwD,CACzD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,iDAAiD,CAClD,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAmB,EAAE,EAAE,CAAC,CAAC;QACzD,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,0BAA0B,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,mBAAmB,IAAI,CAAC,GAAG,+BAA+B,CAC3D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,oBAAoB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAC9E,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5F,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5C,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,wBAAwB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACrF,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;YACjD,SAAS;YACT,GAAG;YACH,IAAI;YACJ,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAA2B;YACvC,YAAY,EAAG,IAAI,CAAC,YAAmC,IAAI,QAAQ,EAAE;SACtE,CAAC,CAAC;QAEH,OAAO,CAAC,kBAAkB,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QAC9C,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,6EAA6E;IAC7E,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,aAAa,EAAE,4BAA4B,CAAC;SACnD,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;SAC/C,MAAM,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;SAC3D,MAAM,CAAC,gBAAgB,EAAE,eAAe,CAAC;SACzC,MAAM,CAAC,kBAAkB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,EAAU,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QAClF,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,yBAAyB,EAAE,CAAC;QAEnD,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,GACf,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;QAC7E,CAAC;QAED,sCAAsC;QACtC,IAAI,GAAuB,CAAC;QAC5B,IAAI,IAAI,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC3B,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;gBACxB,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,mBAAmB,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9E,CAAC;QAED,IAAI,IAAwB,CAAC;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;YACvC,IAAI,KAAK,CAAC,IAAI,CAAC;gBACb,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,oBAAoB,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,OAA2B,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAiB,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,OAAO,CAAC;gBAChB,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,wBAAwB,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QACvF,CAAC;QAED,IAAI,OAA4B,CAAC;QACjC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAI,IAAI,CAAC,OAAkB,CAAC,WAAW,EAAE,CAAC;YAC1D,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBACpD,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,sCAAsC,CAAC,CAAC;YACnF,CAAC;YACD,OAAO,GAAG,UAAU,KAAK,MAAM,CAAC;QAClC,CAAC;QAED,IACE,GAAG,KAAK,SAAS;YACjB,IAAI,KAAK,SAAS;YAClB,OAAO,KAAK,SAAS;YACrB,IAAI,CAAC,KAAK,KAAK,SAAS;YACxB,OAAO,KAAK,SAAS,EACrB,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,iGAAiG,CAClG,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE;YAC5D,GAAG;YACH,IAAI;YACJ,OAAO;YACP,KAAK,EAAE,IAAI,CAAC,KAA2B;YACvC,OAAO;SACR,CAAC,CAAC;QAEH,OAAO,CAAC,kBAAkB,MAAM,WAAW,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,6EAA6E;IAC7E,SAAS;SACN,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,0CAA0C,CAAC;SACvD,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;SAC/C,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,EAAU,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QAClF,KAAK,GAAG,CAAC;QACT,MAAM,QAAQ,GAAG,MAAM,yBAAyB,EAAE,CAAC;QAEnD,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,GACf,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAElC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAClB,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,IAAI,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,yBAAyB,MAAM,GAAG,CAAC,CAAC;YAC7D,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,IAAI,CAAC,UAAU,CAAC,CAAC;gBACjB,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,CAAC,kBAAkB,MAAM,WAAW,CAAC,CAAC;IAC/C,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/commands/roast.d.ts
CHANGED
|
@@ -1,45 +1,6 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
batch_name: string | null;
|
|
5
|
-
coffee_id: number | null;
|
|
6
|
-
coffee_name: string | null;
|
|
7
|
-
roast_date: string | null;
|
|
8
|
-
oz_in: number | null;
|
|
9
|
-
oz_out: number | null;
|
|
10
|
-
weight_loss_percent: number | null;
|
|
11
|
-
roast_notes: string | null;
|
|
12
|
-
user: string;
|
|
13
|
-
last_updated: string;
|
|
14
|
-
roaster_type: string | null;
|
|
15
|
-
roaster_size: string | null;
|
|
16
|
-
temperature_unit: string | null;
|
|
17
|
-
charge_time: number | null;
|
|
18
|
-
drop_time: number | null;
|
|
19
|
-
fc_start_time: number | null;
|
|
20
|
-
fc_end_time: number | null;
|
|
21
|
-
fc_start_temp: number | null;
|
|
22
|
-
drop_temp: number | null;
|
|
23
|
-
charge_temp: number | null;
|
|
24
|
-
dry_percent: number | null;
|
|
25
|
-
maillard_percent: number | null;
|
|
26
|
-
development_percent: number | null;
|
|
27
|
-
total_roast_time: number | null;
|
|
28
|
-
data_source: string | null;
|
|
29
|
-
roast_uuid: string | null;
|
|
30
|
-
}
|
|
31
|
-
export interface TemperatureEntry {
|
|
32
|
-
roast_id: number;
|
|
33
|
-
time_seconds: number;
|
|
34
|
-
bean_temp: number | null;
|
|
35
|
-
environmental_temp: number | null;
|
|
36
|
-
}
|
|
37
|
-
export interface RoastEventEntry {
|
|
38
|
-
roast_id: number;
|
|
39
|
-
time_seconds: number;
|
|
40
|
-
event_type: number | null;
|
|
41
|
-
event_value: string | null;
|
|
42
|
-
}
|
|
2
|
+
import type { RoastProfile, TemperatureEntry, RoastEventEntry } from '../lib/roast.js';
|
|
3
|
+
export type { RoastProfile, TemperatureEntry, RoastEventEntry };
|
|
43
4
|
/**
|
|
44
5
|
* `purvey roast` — Browse and manage your roast profiles.
|
|
45
6
|
* Requires authentication.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roast.d.ts","sourceRoot":"","sources":["../../src/commands/roast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"roast.d.ts","sourceRoot":"","sources":["../../src/commands/roast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EAEhB,MAAM,iBAAiB,CAAC;AAOzB,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;AAIhE;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAqmB3C"}
|