@purveyors/cli 0.25.0 → 0.30.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.
Files changed (92) hide show
  1. package/README.md +48 -45
  2. package/dist/commands/auth.d.ts +6 -2
  3. package/dist/commands/auth.d.ts.map +1 -1
  4. package/dist/commands/auth.js +119 -71
  5. package/dist/commands/auth.js.map +1 -1
  6. package/dist/commands/catalog.d.ts.map +1 -1
  7. package/dist/commands/catalog.js +11 -47
  8. package/dist/commands/catalog.js.map +1 -1
  9. package/dist/commands/inventory.d.ts.map +1 -1
  10. package/dist/commands/inventory.js +18 -45
  11. package/dist/commands/inventory.js.map +1 -1
  12. package/dist/commands/market.d.ts.map +1 -1
  13. package/dist/commands/market.js +4 -2
  14. package/dist/commands/market.js.map +1 -1
  15. package/dist/commands/roast.d.ts +5 -2
  16. package/dist/commands/roast.d.ts.map +1 -1
  17. package/dist/commands/roast.js +29 -28
  18. package/dist/commands/roast.js.map +1 -1
  19. package/dist/commands/sales.d.ts +17 -1
  20. package/dist/commands/sales.d.ts.map +1 -1
  21. package/dist/commands/sales.js +33 -26
  22. package/dist/commands/sales.js.map +1 -1
  23. package/dist/commands/tasting.d.ts.map +1 -1
  24. package/dist/commands/tasting.js +20 -9
  25. package/dist/commands/tasting.js.map +1 -1
  26. package/dist/lib/ai.d.ts +2 -2
  27. package/dist/lib/ai.d.ts.map +1 -1
  28. package/dist/lib/ai.js.map +1 -1
  29. package/dist/lib/auth-client.d.ts +33 -0
  30. package/dist/lib/auth-client.d.ts.map +1 -0
  31. package/dist/lib/auth-client.js +63 -0
  32. package/dist/lib/auth-client.js.map +1 -0
  33. package/dist/lib/auth-guard.d.ts +3 -3
  34. package/dist/lib/auth-guard.d.ts.map +1 -1
  35. package/dist/lib/auth-guard.js +16 -8
  36. package/dist/lib/auth-guard.js.map +1 -1
  37. package/dist/lib/catalog.d.ts +12 -14
  38. package/dist/lib/catalog.d.ts.map +1 -1
  39. package/dist/lib/catalog.js +177 -520
  40. package/dist/lib/catalog.js.map +1 -1
  41. package/dist/lib/config.d.ts.map +1 -1
  42. package/dist/lib/config.js +23 -2
  43. package/dist/lib/config.js.map +1 -1
  44. package/dist/lib/interactive/forms.d.ts +4 -5
  45. package/dist/lib/interactive/forms.d.ts.map +1 -1
  46. package/dist/lib/interactive/forms.js +18 -46
  47. package/dist/lib/interactive/forms.js.map +1 -1
  48. package/dist/lib/interactive/watch.d.ts +5 -2
  49. package/dist/lib/interactive/watch.d.ts.map +1 -1
  50. package/dist/lib/interactive/watch.js +35 -15
  51. package/dist/lib/interactive/watch.js.map +1 -1
  52. package/dist/lib/inventory.d.ts +8 -16
  53. package/dist/lib/inventory.d.ts.map +1 -1
  54. package/dist/lib/inventory.js +44 -227
  55. package/dist/lib/inventory.js.map +1 -1
  56. package/dist/lib/manifest.d.ts.map +1 -1
  57. package/dist/lib/manifest.js +20 -27
  58. package/dist/lib/manifest.js.map +1 -1
  59. package/dist/lib/market.d.ts +1 -1
  60. package/dist/lib/market.d.ts.map +1 -1
  61. package/dist/lib/parchment-base.d.ts +3 -0
  62. package/dist/lib/parchment-base.d.ts.map +1 -0
  63. package/dist/lib/parchment-base.js +9 -0
  64. package/dist/lib/parchment-base.js.map +1 -0
  65. package/dist/lib/parchment.d.ts +5 -5
  66. package/dist/lib/parchment.d.ts.map +1 -1
  67. package/dist/lib/parchment.js +9 -11
  68. package/dist/lib/parchment.js.map +1 -1
  69. package/dist/lib/roast.d.ts +16 -24
  70. package/dist/lib/roast.d.ts.map +1 -1
  71. package/dist/lib/roast.js +33 -224
  72. package/dist/lib/roast.js.map +1 -1
  73. package/dist/lib/sales.d.ts +18 -23
  74. package/dist/lib/sales.d.ts.map +1 -1
  75. package/dist/lib/sales.js +100 -156
  76. package/dist/lib/sales.js.map +1 -1
  77. package/dist/lib/tasting.d.ts +4 -5
  78. package/dist/lib/tasting.d.ts.map +1 -1
  79. package/dist/lib/tasting.js +14 -94
  80. package/dist/lib/tasting.js.map +1 -1
  81. package/dist/program.js +1 -1
  82. package/dist/types/index.d.ts +3 -3
  83. package/dist/types/index.d.ts.map +1 -1
  84. package/package.json +3 -5
  85. package/dist/lib/supabase.d.ts +0 -22
  86. package/dist/lib/supabase.d.ts.map +0 -1
  87. package/dist/lib/supabase.js +0 -103
  88. package/dist/lib/supabase.js.map +0 -1
  89. package/dist/types/database.types.d.ts +0 -13
  90. package/dist/types/database.types.d.ts.map +0 -1
  91. package/dist/types/database.types.js +0 -8
  92. package/dist/types/database.types.js.map +0 -1
package/dist/lib/roast.js CHANGED
@@ -1,10 +1,6 @@
1
1
  import { z } from 'zod';
2
- import { AuthError, PrvrsError } from './errors.js';
3
- import { sanitizeFilterValue } from './catalog.js';
4
- // ─── Shared select columns ────────────────────────────────────────────────────
5
- const MILESTONE_FIELDS = 'fc_start_time, fc_start_temp, fc_end_time, fc_end_temp, drop_time, drop_temp, charge_temp, charge_time, tp_time, tp_temp, total_ror, dry_percent, maillard_percent, auc, dry_phase_ror, mid_phase_ror, finish_phase_ror, dry_phase_delta_temp';
6
- const ROAST_LIST_SELECT = `roast_id, batch_name, coffee_id, coffee_name, roast_date, oz_in, oz_out, weight_loss_percent, roast_notes, roast_targets, roaster_type, roaster_size, temperature_unit, total_roast_time, development_percent, data_source, last_updated, roast_uuid, ${MILESTONE_FIELDS}`;
7
- const ROAST_DETAIL_SELECT = `roast_id, batch_name, coffee_id, coffee_name, roast_date, oz_in, oz_out, weight_loss_percent, roast_notes, roast_targets, roaster_type, roaster_size, temperature_unit, total_roast_time, development_percent, data_source, last_updated, roast_uuid, ${MILESTONE_FIELDS}`;
2
+ import { randomUUID } from 'node:crypto';
3
+ import { createParchmentClient, unwrapParchment } from './parchment.js';
8
4
  // ─── Zod schemas ──────────────────────────────────────────────────────────────
9
5
  const DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
10
6
  export const listRoastsSchema = z.object({
@@ -65,234 +61,47 @@ export const updateRoastSchema = z
65
61
  message: 'No update fields provided. Pass at least one of: notes, ozOut, batchName, targets.',
66
62
  });
67
63
  // ─── Pure lib functions ───────────────────────────────────────────────────────
68
- /**
69
- * List roast profiles for a user.
70
- */
71
- export async function listRoasts(supabase, userId, opts) {
64
+ export async function listRoasts(opts, tokenOverride) {
72
65
  const parsed = listRoastsSchema.parse(opts);
73
- let query = supabase.from('roast_profiles').select(ROAST_LIST_SELECT).eq('user', userId);
74
- if (parsed.coffee_id !== undefined) {
75
- query = query.eq('coffee_id', parsed.coffee_id);
76
- }
77
- if (parsed.roast_id !== undefined) {
78
- query = query.eq('roast_id', parsed.roast_id);
79
- }
80
- if (parsed.batch_name) {
81
- const safe = sanitizeFilterValue(parsed.batch_name);
82
- query = query.ilike('batch_name', `%${safe}%`);
83
- }
84
- if (parsed.coffee_name) {
85
- const safe = sanitizeFilterValue(parsed.coffee_name);
86
- query = query.ilike('coffee_name', `%${safe}%`);
87
- }
88
- if (parsed.date_start) {
89
- query = query.gte('roast_date', parsed.date_start);
90
- }
91
- if (parsed.date_end) {
92
- query = query.lte('roast_date', parsed.date_end);
93
- }
94
- // stocked_only and catalog_id require filtering through the green_coffee_inv FK.
95
- // Use Supabase's inner-join filter: select from roast_profiles with
96
- // green_coffee_inv!coffee_id!inner(...) to restrict to matching inventory rows.
97
- if (parsed.stocked_only === true || parsed.catalog_id !== undefined) {
98
- // Build a joined select to filter on green_coffee_inv columns.
99
- // We fetch inventory IDs matching the criteria, then filter roast_profiles.
100
- let invQuery = supabase.from('green_coffee_inv').select('id').eq('user', userId);
101
- if (parsed.stocked_only === true) {
102
- invQuery = invQuery.eq('stocked', true);
103
- }
104
- if (parsed.catalog_id !== undefined) {
105
- invQuery = invQuery.eq('catalog_id', parsed.catalog_id);
106
- }
107
- const { data: invRows, error: invError } = await invQuery;
108
- if (invError)
109
- throw invError;
110
- const invIds = (invRows ?? []).map((r) => r.id);
111
- if (invIds.length === 0) {
112
- // No matching inventory items; return empty
113
- return [];
114
- }
115
- query = query.in('coffee_id', invIds);
116
- }
117
- const offset = parsed.offset ?? 0;
118
- const { data, error } = await query
119
- .order('roast_date', { ascending: false })
120
- .range(offset, offset + parsed.limit - 1);
121
- if (error)
122
- throw error;
123
- return (data ?? []);
66
+ const client = await createParchmentClient('member', tokenOverride);
67
+ const envelope = unwrapParchment(await client.roasts.list(parsed), 'Roast list');
68
+ return envelope.data;
124
69
  }
125
- /**
126
- * Fetch a single roast profile by ID (must belong to userId).
127
- * Optionally includes temperature curve and roast events.
128
- */
129
- export async function getRoast(supabase, userId, id, opts = {}) {
70
+ export async function getRoast(id, opts = {}, tokenOverride) {
130
71
  getRoastSchema.parse({ id, ...opts });
131
- const { data: profile, error: profileError } = await supabase
132
- .from('roast_profiles')
133
- .select('*')
134
- .eq('roast_id', id)
135
- .eq('user', userId)
136
- .single();
137
- if (profileError) {
138
- if (profileError.code === 'PGRST116') {
139
- throw new AuthError(`Roast profile ${id} not found or does not belong to you.`);
140
- }
141
- throw profileError;
142
- }
143
- const result = { ...profile };
144
- if (opts.includeTemps) {
145
- const { data: temps, error: tempError } = await supabase
146
- .from('roast_temperatures')
147
- .select('roast_id, time_seconds, bean_temp, environmental_temp')
148
- .eq('roast_id', id)
149
- .order('time_seconds', { ascending: true });
150
- if (tempError)
151
- throw tempError;
152
- result.temperatures = (temps ?? []);
153
- }
154
- if (opts.includeEvents) {
155
- const { data: events, error: eventsError } = await supabase
156
- .from('roast_events')
157
- .select('roast_id, time_seconds, event_type, event_value')
158
- .eq('roast_id', id)
159
- .order('time_seconds', { ascending: true });
160
- if (eventsError)
161
- throw eventsError;
162
- result.events = (events ?? []);
163
- }
164
- return result;
72
+ const client = await createParchmentClient('member', tokenOverride);
73
+ const envelope = unwrapParchment(await client.roasts.get(String(id), opts), `Roast ${id}`);
74
+ return envelope.data;
165
75
  }
166
- /**
167
- * Create a new roast profile (coffeeId must be an inventory item belonging to userId).
168
- */
169
- export async function createRoast(supabase, userId, input) {
76
+ export async function createRoast(input, tokenOverride) {
170
77
  const parsed = createRoastSchema.parse(input);
171
- const todayIso = () => new Date().toISOString().slice(0, 10);
172
- // Verify ownership of the inventory item and get coffee name for default batch name
173
- const { data: invItem, error: invError } = await supabase
174
- .from('green_coffee_inv')
175
- .select('id, coffee_catalog!catalog_id (name)')
176
- .eq('id', parsed.coffeeId)
177
- .eq('user', userId)
178
- .single();
179
- if (invError || !invItem) {
180
- throw new AuthError(`Inventory item ${parsed.coffeeId} not found or does not belong to you.`);
181
- }
182
- const roastDate = parsed.roastDate ?? todayIso();
183
- let batchName = parsed.batchName;
184
- if (!batchName) {
185
- const catalogRaw = invItem.coffee_catalog;
186
- const catalog = Array.isArray(catalogRaw) ? (catalogRaw[0] ?? null) : catalogRaw;
187
- const coffeeName = catalog?.name ?? `Coffee #${parsed.coffeeId}`;
188
- batchName = `${coffeeName} — ${roastDate}`;
189
- }
190
- const insertPayload = {
191
- user: userId,
192
- coffee_id: parsed.coffeeId,
193
- batch_name: batchName,
194
- roast_date: roastDate,
195
- };
196
- if (parsed.ozIn !== undefined)
197
- insertPayload.oz_in = parsed.ozIn;
198
- if (parsed.ozOut !== undefined)
199
- insertPayload.oz_out = parsed.ozOut;
200
- if (parsed.notes !== undefined)
201
- insertPayload.roast_notes = parsed.notes;
202
- const { data: inserted, error: insertError } = await supabase
203
- .from('roast_profiles')
204
- .insert(insertPayload)
205
- .select('roast_id')
206
- .single();
207
- if (insertError)
208
- throw insertError;
209
- // Re-fetch the full row
210
- const { data, error } = await supabase
211
- .from('roast_profiles')
212
- .select(ROAST_DETAIL_SELECT)
213
- .eq('roast_id', inserted.roast_id)
214
- .single();
215
- if (error)
216
- throw error;
217
- return data;
78
+ const client = await createParchmentClient('member', tokenOverride);
79
+ const envelope = unwrapParchment(await client.roasts.create(parsed, { idempotencyKey: randomUUID() }), 'Roast create');
80
+ return envelope.data;
218
81
  }
219
- /**
220
- * Delete a roast profile (must belong to userId).
221
- */
222
- export async function deleteRoast(supabase, userId, id) {
82
+ export async function deleteRoast(id, tokenOverride) {
223
83
  deleteRoastSchema.parse({ id });
224
- if (isNaN(id)) {
225
- throw new PrvrsError('INVALID_ARGUMENT', `Invalid roast ID: "${id}".`);
226
- }
227
- // Verify ownership
228
- const { data: existing, error: fetchError } = await supabase
229
- .from('roast_profiles')
230
- .select('roast_id')
231
- .eq('roast_id', id)
232
- .eq('user', userId)
233
- .single();
234
- if (fetchError || !existing) {
235
- throw new AuthError(`Roast profile ${id} not found or does not belong to you.`);
236
- }
237
- const { error: deleteError } = await supabase
238
- .from('roast_profiles')
239
- .delete()
240
- .eq('roast_id', id)
241
- .eq('user', userId);
242
- if (deleteError)
243
- throw deleteError;
84
+ const client = await createParchmentClient('member', tokenOverride);
85
+ unwrapParchment(await client.roasts.delete(id), `Roast ${id} delete`);
244
86
  }
245
- /**
246
- * Update an existing roast profile (must belong to userId).
247
- * If ozOut is provided and the roast has oz_in, weight_loss_percent is recalculated.
248
- */
249
- export async function updateRoast(supabase, userId, id, input) {
87
+ export async function updateRoast(id, input, tokenOverride) {
250
88
  deleteRoastSchema.parse({ id });
251
89
  const parsed = updateRoastSchema.parse(input);
252
- // Verify ownership and get current profile (need oz_in for weight loss calc)
253
- const { data: existing, error: fetchError } = await supabase
254
- .from('roast_profiles')
255
- .select('roast_id, oz_in')
256
- .eq('roast_id', id)
257
- .eq('user', userId)
258
- .single();
259
- if (fetchError || !existing) {
260
- throw new AuthError(`Roast profile ${id} not found or does not belong to you.`);
261
- }
262
- const updates = {};
263
- if (parsed.notes !== undefined)
264
- updates.roast_notes = parsed.notes;
265
- if (parsed.batchName !== undefined)
266
- updates.batch_name = parsed.batchName;
267
- if (parsed.targets !== undefined)
268
- updates.roast_targets = parsed.targets;
269
- if (parsed.ozOut !== undefined) {
270
- updates.oz_out = parsed.ozOut;
271
- // Recalculate weight_loss_percent if oz_in exists
272
- const ozIn = existing.oz_in;
273
- if (ozIn != null && ozIn > 0) {
274
- updates.weight_loss_percent = Math.round(((ozIn - parsed.ozOut) / ozIn) * 10000) / 100;
275
- }
276
- }
277
- if (Object.keys(updates).length === 0) {
278
- throw new PrvrsError('INVALID_ARGUMENT', 'No update fields provided. Pass at least one of: --notes, --oz-out, --batch-name, --targets.');
279
- }
280
- const { error: updateError } = await supabase
281
- .from('roast_profiles')
282
- .update(updates)
283
- .eq('roast_id', id)
284
- .eq('user', userId);
285
- if (updateError)
286
- throw updateError;
287
- // Re-fetch the updated row
288
- const { data, error } = await supabase
289
- .from('roast_profiles')
290
- .select(ROAST_DETAIL_SELECT)
291
- .eq('roast_id', id)
292
- .single();
293
- if (error)
294
- throw error;
295
- return data;
90
+ const client = await createParchmentClient('member', tokenOverride);
91
+ const envelope = unwrapParchment(await client.roasts.update(id, parsed), `Roast ${id} update`);
92
+ return envelope.data;
93
+ }
94
+ export async function replaceRoastArtisanImport(id, input, tokenOverride) {
95
+ deleteRoastSchema.parse({ id });
96
+ const client = await createParchmentClient('member', tokenOverride);
97
+ const envelope = unwrapParchment(await client.roasts.replaceArtisanImport(id, input), `Roast ${id} Artisan import replace`);
98
+ return envelope.data.roast;
99
+ }
100
+ export async function clearRoastArtisanImport(id, tokenOverride) {
101
+ deleteRoastSchema.parse({ id });
102
+ const client = await createParchmentClient('member', tokenOverride);
103
+ const envelope = unwrapParchment(await client.roasts.clearArtisanImport(id), `Roast ${id} Artisan import clear`);
104
+ return envelope.data;
296
105
  }
297
106
  // ─── Roast import from .alog file ─────────────────────────────────────────────
298
107
  export const importRoastSchema = z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"roast.js","sourceRoot":"","sources":["../../src/lib/roast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA6DnD,iFAAiF;AAEjF,MAAM,gBAAgB,GACpB,+OAA+O,CAAC;AAElP,MAAM,iBAAiB,GAAG,yPAAyP,gBAAgB,EAAE,CAAC;AAEtS,MAAM,mBAAmB,GAAG,yPAAyP,gBAAgB,EAAE,CAAC;AAExS,iFAAiF;AAEjF,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAEzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACjG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvF,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,wDAAwD,CAAC;IACrE,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uDAAuD,CAAC;IACpE,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,KAAK,CAAC,UAAU,EAAE,2BAA2B,CAAC;SAC9C,QAAQ,EAAE;SACV,QAAQ,CAAC,wCAAwC,CAAC;IACrD,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,KAAK,CAAC,UAAU,EAAE,2BAA2B,CAAC;SAC9C,QAAQ,EAAE;SACV,QAAQ,CAAC,yCAAyC,CAAC;IACtD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IAC7F,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,mEAAmE,CAAC;IAChF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAChF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;CACvF,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAC/B,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAmB,CAAC,KAAK,SAAS,CAAC,EAAE;IAC/E,OAAO,EAAE,oFAAoF;CAC9F,CAAC,CAAC;AAIL,iFAAiF;AAEjF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAwB,EACxB,MAAc,EACd,IAAqB;IAErB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE5C,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEzF,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACrD,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED,iFAAiF;IACjF,oEAAoE;IACpE,gFAAgF;IAChF,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpE,+DAA+D;QAC/D,4EAA4E;QAC5E,IAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEjF,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YACjC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ,CAAC;QAC1D,IAAI,QAAQ;YAAE,MAAM,QAAQ,CAAC;QAE7B,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAE,CAAoB,CAAC,EAAE,CAAC,CAAC;QAEpE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,4CAA4C;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAClC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,KAAK;SAChC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;SACzC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAE5C,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IAEvB,OAAO,CAAC,IAAI,IAAI,EAAE,CAAmB,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAwB,EACxB,MAAc,EACd,EAAU,EACV,OAA4D,EAAE;IAE9D,cAAc,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IAEtC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,MAAM,QAAQ;SAC1D,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC,GAAG,CAAC;SACX,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;SAClB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SAClB,MAAM,EAAE,CAAC;IAEZ,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,YAAY,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,uCAAuC,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,YAAY,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;IAE5C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ;aACrD,IAAI,CAAC,oBAAoB,CAAC;aAC1B,MAAM,CAAC,uDAAuD,CAAC;aAC/D,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;aAClB,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,IAAI,SAAS;YAAE,MAAM,SAAS,CAAC;QAC/B,MAAM,CAAC,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE,CAAuB,CAAC;IAC5D,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ;aACxD,IAAI,CAAC,cAAc,CAAC;aACpB,MAAM,CAAC,iDAAiD,CAAC;aACzD,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;aAClB,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,IAAI,WAAW;YAAE,MAAM,WAAW,CAAC;QACnC,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,IAAI,EAAE,CAAsB,CAAC;IACtD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAwB,EACxB,MAAc,EACd,KAAuB;IAEvB,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE9C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE7D,oFAAoF;IACpF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,QAAQ;SACtD,IAAI,CAAC,kBAAkB,CAAC;SACxB,MAAM,CAAC,sCAAsC,CAAC;SAC9C,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC;SACzB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SAClB,MAAM,EAAE,CAAC;IAEZ,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CAAC,kBAAkB,MAAM,CAAC,QAAQ,uCAAuC,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,QAAQ,EAAE,CAAC;IAEjD,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,OAAO,CAAC,cAGnB,CAAC;QACT,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QACjF,MAAM,UAAU,GAAG,OAAO,EAAE,IAAI,IAAI,WAAW,MAAM,CAAC,QAAQ,EAAE,CAAC;QACjE,SAAS,GAAG,GAAG,UAAU,MAAM,SAAS,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,aAAa,GAA4B;QAC7C,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,UAAU,EAAE,SAAS;QACrB,UAAU,EAAE,SAAS;KACtB,CAAC;IAEF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IACjE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;IACpE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,aAAa,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IAEzE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ;SAC1D,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,UAAU,CAAC;SAClB,MAAM,EAAE,CAAC;IAEZ,IAAI,WAAW;QAAE,MAAM,WAAW,CAAC;IAEnC,wBAAwB;IACxB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;SACnC,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC,mBAAmB,CAAC;SAC3B,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,CAAC;SACjC,MAAM,EAAE,CAAC;IAEZ,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IAEvB,OAAO,IAAoB,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAwB,EACxB,MAAc,EACd,EAAU;IAEV,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED,mBAAmB;IACnB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ;SACzD,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC,UAAU,CAAC;SAClB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;SAClB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SAClB,MAAM,EAAE,CAAC;IAEZ,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,uCAAuC,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ;SAC1C,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,EAAE;SACR,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;SAClB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtB,IAAI,WAAW;QAAE,MAAM,WAAW,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAwB,EACxB,MAAc,EACd,EAAU,EACV,KAAuB;IAEvB,iBAAiB,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAE9C,6EAA6E;IAC7E,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ;SACzD,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC,iBAAiB,CAAC;SACzB,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;SAClB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;SAClB,MAAM,EAAE,CAAC;IAEZ,IAAI,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,SAAS,CAAC,iBAAiB,EAAE,uCAAuC,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IACnE,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;IAC1E,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;IACzE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,kDAAkD;QAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAsB,CAAC;QAC7C,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC;QACzF,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,8FAA8F,CAC/F,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,QAAQ;SAC1C,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;SAClB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtB,IAAI,WAAW;QAAE,MAAM,WAAW,CAAC;IAEnC,2BAA2B;IAC3B,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;SACnC,IAAI,CAAC,gBAAgB,CAAC;SACtB,MAAM,CAAC,mBAAmB,CAAC;SAC3B,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC;SAClB,MAAM,EAAE,CAAC;IAEZ,IAAI,KAAK;QAAE,MAAM,KAAK,CAAC;IAEvB,OAAO,IAAoB,CAAC;AAC9B,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACrC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAmBH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA4C;IAE5C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7E,MAAM,CAAC,WAAW,EAAE,AAAD,EAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1E,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACrC,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;QAC7F,OAAO,WAAW,GAAG,OAAO,CAAC;IAC/B,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC1E,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,UAAU,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;QAChF,OAAO,WAAW,GAAG,MAAM,CAAC;IAC9B,CAAC;IACD,IACE,SAAS,KAAK,IAAI;QAClB,SAAS,KAAK,KAAK;QACnB,SAAS,KAAK,OAAO;QACrB,SAAS,KAAK,QAAQ,EACtB,CAAC;QACD,OAAO,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IACD,6DAA6D;IAC7D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,OAAe;IAClE,OAAO,GAAG,UAAU,IAAI,OAAO,EAAE,CAAC;AACpC,CAAC;AAED,yEAAyE;AACzE,gFAAgF;AAChF,iFAAiF;AACjF,sEAAsE;AACtE,iEAAiE;AACjE,4EAA4E"}
1
+ {"version":3,"file":"roast.js","sourceRoot":"","sources":["../../src/lib/roast.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,23 @@
1
1
  import { z } from 'zod';
2
- import type { SupabaseClient } from '@supabase/supabase-js';
3
2
  export interface Sale {
4
3
  id: number;
5
- roast_id: number | null;
4
+ roast_id?: number | null;
5
+ green_coffee_inv_id?: number;
6
+ batch_name?: string | null;
7
+ coffee_name?: string | null;
6
8
  oz_sold: number | null;
7
- sale_price: number | null;
9
+ sale_price?: number | null;
10
+ price?: number | null;
11
+ purchase_date?: string | null;
8
12
  buyer: string | null;
9
13
  sell_date: string | null;
10
- user: string;
11
- last_updated: string;
14
+ user: string | null;
15
+ last_updated?: string;
16
+ wholesale?: boolean;
12
17
  }
13
18
  export interface ResolvedSaleTarget {
19
+ greenCoffeeInvId?: number;
20
+ batchName?: string;
14
21
  roastId: number;
15
22
  mode: 'exact' | 'resolved';
16
23
  }
@@ -18,7 +25,7 @@ export declare const SALE_SELECT = "id, roast_id, oz_sold, sale_price, buyer, se
18
25
  export declare const listSalesSchema: z.ZodObject<{
19
26
  limit: z.ZodDefault<z.ZodNumber>;
20
27
  offset: z.ZodOptional<z.ZodNumber>;
21
- roastId: z.ZodOptional<z.ZodNumber>;
28
+ greenCoffeeInvId: z.ZodOptional<z.ZodNumber>;
22
29
  dateStart: z.ZodOptional<z.ZodString>;
23
30
  dateEnd: z.ZodOptional<z.ZodString>;
24
31
  buyer: z.ZodOptional<z.ZodString>;
@@ -51,21 +58,9 @@ export declare const deleteSaleSchema: z.ZodObject<{
51
58
  id: z.ZodNumber;
52
59
  }, z.core.$strip>;
53
60
  export type DeleteSaleInput = z.input<typeof deleteSaleSchema>;
54
- /**
55
- * List sales for a user (newest first, with roast profile join).
56
- */
57
- export declare function listSales(supabase: SupabaseClient, userId: string, opts?: ListSalesInput): Promise<Sale[]>;
58
- export declare function resolveSaleRoast(supabase: SupabaseClient, userId: string, input: SaleTargetSelectorInput): Promise<ResolvedSaleTarget>;
59
- /**
60
- * Record a new sale (target roast must belong to userId).
61
- */
62
- export declare function recordSale(supabase: SupabaseClient, userId: string, input: RecordSaleInput): Promise<Sale>;
63
- /**
64
- * Update an existing sale (must belong to userId).
65
- */
66
- export declare function updateSale(supabase: SupabaseClient, userId: string, id: number, input: UpdateSaleInput): Promise<Sale>;
67
- /**
68
- * Delete a sale (must belong to userId).
69
- */
70
- export declare function deleteSale(supabase: SupabaseClient, userId: string, id: number): Promise<void>;
61
+ export declare function listSales(opts?: ListSalesInput, tokenOverride?: string): Promise<Sale[]>;
62
+ export declare function resolveSaleRoast(input: SaleTargetSelectorInput, tokenOverride?: string): Promise<ResolvedSaleTarget>;
63
+ export declare function recordSale(input: RecordSaleInput, tokenOverride?: string): Promise<Sale>;
64
+ export declare function updateSale(id: number, input: UpdateSaleInput, tokenOverride?: string): Promise<Sale>;
65
+ export declare function deleteSale(id: number, tokenOverride?: string): Promise<void>;
71
66
  //# sourceMappingURL=sales.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sales.d.ts","sourceRoot":"","sources":["../../src/lib/sales.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAM5D,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;CAC5B;AAID,eAAO,MAAM,WAAW,4EACmD,CAAC;AAI5E,eAAO,MAAM,eAAe;;;;;;;iBAO1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AA2C7D,eAAO,MAAM,wBAAwB;;;;iBAEK,CAAC;AAE3C,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,eAAO,MAAM,gBAAgB;;;;;;;;iBAQa,CAAC;AAE3C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,eAAO,MAAM,gBAAgB;;;;;iBASzB,CAAC;AAEL,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI/D;;GAEG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,IAAI,EAAE,CAAC,CAiCjB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,kBAAkB,CAAC,CA8C7B;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAsBf"}
1
+ {"version":3,"file":"sales.d.ts","sourceRoot":"","sources":["../../src/lib/sales.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;CAC5B;AAED,eAAO,MAAM,WAAW,4EACmD,CAAC;AAE5E,eAAO,MAAM,eAAe;;;;;;;iBAO1B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAwC7D,eAAO,MAAM,wBAAwB;;;;iBAEK,CAAC;AAC3C,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,eAAO,MAAM,gBAAgB;;;;;;;;iBAQa,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,eAAO,MAAM,gBAAgB;;;;;iBASzB,CAAC;AACL,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,eAAO,MAAM,gBAAgB;;iBAAgD,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAgD/D,wBAAsB,SAAS,CAC7B,IAAI,GAAE,cAAmB,EACzB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,EAAE,CAAC,CAejB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,uBAAuB,EAC9B,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAoD7B;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB9F;AAED,wBAAsB,UAAU,CAC9B,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,eAAe,EACtB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC,CAef;AAED,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOlF"}