@purveyors/cli 0.32.2 → 0.33.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/README.md +22 -27
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +23 -32
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +46 -36
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/market.d.ts.map +1 -1
- package/dist/commands/market.js +9 -6
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/price-index.d.ts.map +1 -1
- package/dist/commands/price-index.js +9 -6
- package/dist/commands/price-index.js.map +1 -1
- package/dist/commands/procurement.d.ts.map +1 -1
- package/dist/commands/procurement.js +9 -6
- package/dist/commands/procurement.js.map +1 -1
- package/dist/commands/roast.d.ts.map +1 -1
- package/dist/commands/roast.js +83 -83
- package/dist/commands/roast.js.map +1 -1
- package/dist/commands/sales.d.ts.map +1 -1
- package/dist/commands/sales.js +29 -30
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/tasting.d.ts.map +1 -1
- package/dist/commands/tasting.js +22 -16
- package/dist/commands/tasting.js.map +1 -1
- package/dist/lib/ai.d.ts +5 -43
- package/dist/lib/ai.d.ts.map +1 -1
- package/dist/lib/ai.js +4 -84
- package/dist/lib/ai.js.map +1 -1
- package/dist/lib/catalog.d.ts +8 -25
- package/dist/lib/catalog.d.ts.map +1 -1
- package/dist/lib/catalog.js +44 -129
- package/dist/lib/catalog.js.map +1 -1
- package/dist/lib/cherry.d.ts +46 -0
- package/dist/lib/cherry.d.ts.map +1 -0
- package/dist/lib/cherry.js +87 -0
- package/dist/lib/cherry.js.map +1 -0
- package/dist/lib/interactive/forms.d.ts.map +1 -1
- package/dist/lib/interactive/forms.js +16 -10
- package/dist/lib/interactive/forms.js.map +1 -1
- package/dist/lib/interactive/watch.js +1 -1
- package/dist/lib/interactive/watch.js.map +1 -1
- package/dist/lib/inventory.d.ts.map +1 -1
- package/dist/lib/inventory.js +11 -4
- package/dist/lib/inventory.js.map +1 -1
- package/dist/lib/manifest.d.ts +2 -0
- package/dist/lib/manifest.d.ts.map +1 -1
- package/dist/lib/manifest.js +39 -14
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/market.d.ts.map +1 -1
- package/dist/lib/numeric-contracts.d.ts +24 -0
- package/dist/lib/numeric-contracts.d.ts.map +1 -0
- package/dist/lib/numeric-contracts.js +9 -0
- package/dist/lib/numeric-contracts.js.map +1 -0
- package/dist/lib/roast.d.ts.map +1 -1
- package/dist/lib/roast.js +21 -7
- package/dist/lib/roast.js.map +1 -1
- package/dist/lib/sales.d.ts.map +1 -1
- package/dist/lib/sales.js +7 -4
- package/dist/lib/sales.js.map +1 -1
- package/dist/lib/strict-number.d.ts +20 -0
- package/dist/lib/strict-number.d.ts.map +1 -0
- package/dist/lib/strict-number.js +41 -0
- package/dist/lib/strict-number.js.map +1 -0
- package/dist/lib/tasting.d.ts.map +1 -1
- package/dist/lib/tasting.js +6 -4
- package/dist/lib/tasting.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -112,18 +112,19 @@ The npm package is both a binary and a reusable TypeScript surface for Node.js c
|
|
|
112
112
|
|
|
113
113
|
`coffee-app` also consumes `@purveyors/sdk` directly. It does not depend on `@purveyors/cli`; the website chat tools and the CLI are separate adapters over the same API contract. Shared data behavior belongs in Parchment and its OpenAPI contract, while terminal concerns such as local credentials, flags, output modes, exit codes, Artisan file handling, and watch mode belong in this package.
|
|
114
114
|
|
|
115
|
-
| Import path | Use it for
|
|
116
|
-
| -------------------------- |
|
|
117
|
-
| `@purveyors/cli` | CLI entrypoint package root
|
|
118
|
-
| `@purveyors/cli/catalog` | Catalog search, lookup, stats, premium ranking, supplier aggregates, similar coffees
|
|
119
|
-
| `@purveyors/cli/market` | Market Index value signals, movement stats, and metadata trends
|
|
120
|
-
| `@purveyors/cli/inventory` | Green coffee inventory operations
|
|
121
|
-
| `@purveyors/cli/roast` | Roast profile operations
|
|
122
|
-
| `@purveyors/cli/sales` | Sales record operations
|
|
123
|
-
| `@purveyors/cli/tasting` | Tasting note and rating operations
|
|
124
|
-
| `@purveyors/cli/lib` | Shared library helpers
|
|
125
|
-
| `@purveyors/cli/manifest` | Stable machine-readable CLI manifest
|
|
126
|
-
| `@purveyors/cli/
|
|
115
|
+
| Import path | Use it for |
|
|
116
|
+
| -------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
117
|
+
| `@purveyors/cli` | CLI entrypoint package root |
|
|
118
|
+
| `@purveyors/cli/catalog` | Catalog search, lookup, stats, premium ranking, supplier aggregates, similar coffees |
|
|
119
|
+
| `@purveyors/cli/market` | Market Index value signals, movement stats, and metadata trends |
|
|
120
|
+
| `@purveyors/cli/inventory` | Green coffee inventory operations |
|
|
121
|
+
| `@purveyors/cli/roast` | Roast profile operations |
|
|
122
|
+
| `@purveyors/cli/sales` | Sales record operations |
|
|
123
|
+
| `@purveyors/cli/tasting` | Tasting note and rating operations |
|
|
124
|
+
| `@purveyors/cli/lib` | Shared library helpers |
|
|
125
|
+
| `@purveyors/cli/manifest` | Stable machine-readable CLI manifest |
|
|
126
|
+
| `@purveyors/cli/cherry` | Primary Cherry roast-classification helper |
|
|
127
|
+
| `@purveyors/cli/ai` | Deprecated compatibility re-export of `@purveyors/cli/cherry`; existing consumers keep working |
|
|
127
128
|
|
|
128
129
|
Shell integrations should usually start with `purvey manifest`. Node.js agents that specifically need CLI semantics may import the smallest relevant CLI subpath instead of shelling out. Application integrations should normally use `@purveyors/sdk` directly so the API contract, rather than the CLI package, remains the cross-surface boundary.
|
|
129
130
|
|
|
@@ -325,17 +326,14 @@ Notes:
|
|
|
325
326
|
- `--processing-confidence-min <n>`; minimum structured process confidence from `0` to `1`
|
|
326
327
|
- `--price-min <n>`; minimum USD/lb
|
|
327
328
|
- `--price-max <n>`; maximum USD/lb
|
|
328
|
-
- `--flavor <keywords>`; comma-separated flavor terms
|
|
329
329
|
- `--name <text>`; partial coffee name match
|
|
330
|
-
- `--supplier <name>`; partial supplier match
|
|
331
330
|
- `--ids <n,n,...>`; fetch specific catalog IDs, ignores limit and offset
|
|
332
331
|
- `--variety <text>`; partial cultivar match
|
|
333
|
-
- `--drying-method <text>`; partial drying method match
|
|
334
332
|
- `--stocked-days <n>`; stocked within N days
|
|
335
333
|
- `--stocked`; only currently stocked coffees
|
|
336
|
-
- `--sort <price|price-desc|name|origin
|
|
334
|
+
- `--sort <price|price-desc|name|origin>`
|
|
337
335
|
- `--offset <n>`; pagination offset
|
|
338
|
-
- `--limit <n>`; default `10`
|
|
336
|
+
- `--limit <n>`; default `10`, min `1`, max `1000`
|
|
339
337
|
- `--include-proof`; request canonical proof summaries from `/v1/catalog?include=proof`
|
|
340
338
|
|
|
341
339
|
`catalog similar <id>` options:
|
|
@@ -356,7 +354,6 @@ Notes:
|
|
|
356
354
|
- `--objective <premium|value|fresh_arrival|rare_origin>`; default `premium`
|
|
357
355
|
- `--country <country>`; optional country filter
|
|
358
356
|
- `--process <method>`; optional process filter
|
|
359
|
-
- `--supplier <name>`; optional supplier filter
|
|
360
357
|
- `--stocked`; only include currently stocked coffees. This is the default unless `--all` is passed.
|
|
361
358
|
- `--all`; use all visible catalog rows instead of the default stocked-only scope
|
|
362
359
|
- `--price-max <n>`; maximum USD/lb
|
|
@@ -369,7 +366,6 @@ Notes:
|
|
|
369
366
|
|
|
370
367
|
- `--origin <origin>`; optional origin filter
|
|
371
368
|
- `--process <method>`; optional process filter
|
|
372
|
-
- `--supplier <name>`; optional supplier filter
|
|
373
369
|
- `--stocked`; only include currently stocked coffees
|
|
374
370
|
- `--price-max <n>`; maximum USD/lb
|
|
375
371
|
- `--min-score <n>`; minimum Purveyor Score
|
|
@@ -381,7 +377,7 @@ Notes:
|
|
|
381
377
|
|
|
382
378
|
- `supplier-list`: `--country <country>`, `--stocked`, `--non-wholesale-only`, `--sample-size <n>` (catalog rows per fetch page, default `5000`, max `5000`), `--limit <n>`
|
|
383
379
|
- `supplier-detail <supplier>`: `--country <country>`, `--stocked`, `--non-wholesale-only`, `--top-coffees <n>`, `--sample-size <n>` (catalog rows per fetch page, default `5000`, max `5000`)
|
|
384
|
-
- `supplier-rank`: `--country <country>`, `--stocked`, `--non-wholesale-only`, `--min-coffees <n
|
|
380
|
+
- `supplier-rank`: `--country <country>`, `--stocked`, `--non-wholesale-only`, `--min-coffees <n>` (min `1`, max `100`), `--sample-size <n>` (catalog rows per fetch page, default `5000`, max `5000`), `--limit <n>`
|
|
385
381
|
|
|
386
382
|
Examples:
|
|
387
383
|
|
|
@@ -389,7 +385,7 @@ Examples:
|
|
|
389
385
|
purvey catalog search --origin "Ethiopia" --pretty
|
|
390
386
|
purvey catalog search --processing-base-method "Natural" --fermentation-type "Anaerobic" --pretty
|
|
391
387
|
purvey catalog search --process-additive "hops" --processing-confidence-min 0.8 --pretty
|
|
392
|
-
purvey catalog search --
|
|
388
|
+
purvey catalog search --name "Gesha" --stocked --pretty
|
|
393
389
|
purvey catalog search --ids "1182,1183,1200"
|
|
394
390
|
purvey catalog search --stocked --sort price --offset 10 --limit 10
|
|
395
391
|
purvey catalog search --origin "Ethiopia" --include-proof --json
|
|
@@ -412,7 +408,6 @@ Notes:
|
|
|
412
408
|
- Structured process filters on `catalog search` require an authenticated `member` role.
|
|
413
409
|
- Structured process filters use the canonical `/v1/catalog` query contract names while preserving the legacy `--process` label filter.
|
|
414
410
|
- `--include-proof` is an opt-in API-backed catalog read. It consumes the canonical proof summary returned by `/v1/catalog?include=proof`; the CLI does not compute proof fields locally or duplicate web/API proof logic.
|
|
415
|
-
- `--include-proof` rejects CLI-only filters that `/v1/catalog` cannot yet preserve exactly, such as `--flavor`, `--supplier`, `--drying-method`, and `--sort newest`.
|
|
416
411
|
- If you want proof output against a specific API-key deployment, set `PARCHMENT_API_KEY` or `PURVEYORS_API_KEY`. Otherwise the CLI uses the key created by `purvey auth login`.
|
|
417
412
|
- `catalog get` and `catalog similar` both take `coffee_catalog.catalog_id`.
|
|
418
413
|
- `catalog rank` and `catalog rank-premium` read `coffee_catalog.purveyor_score` as the canonical quality signal; the CLI does not recompute the upstream Purveyor Score model.
|
|
@@ -438,7 +433,7 @@ Notes:
|
|
|
438
433
|
- `--to <YYYY-MM-DD>`
|
|
439
434
|
- `--wholesale <true|false>`
|
|
440
435
|
- `--page <n>`; 1-based page number
|
|
441
|
-
- `--limit <n>`; results per page
|
|
436
|
+
- `--limit <n>`; results per page, min `1`, max `100`
|
|
442
437
|
|
|
443
438
|
Examples:
|
|
444
439
|
|
|
@@ -470,7 +465,7 @@ Notes:
|
|
|
470
465
|
- `--min-discount <n>`
|
|
471
466
|
- `--min-score <n>`
|
|
472
467
|
- `--window <7d|30d>`
|
|
473
|
-
- `--limit <n
|
|
468
|
+
- `--limit <n>`; min `1`, max `100`
|
|
474
469
|
|
|
475
470
|
`market stats` filters:
|
|
476
471
|
|
|
@@ -515,7 +510,7 @@ Notes:
|
|
|
515
510
|
`procurement matches <id>` options:
|
|
516
511
|
|
|
517
512
|
- `--page <n>`; 1-based page number
|
|
518
|
-
- `--limit <n>`; matches per page
|
|
513
|
+
- `--limit <n>`; matches per page, min `1`, max `100`
|
|
519
514
|
|
|
520
515
|
Examples:
|
|
521
516
|
|
|
@@ -671,7 +666,7 @@ Notes:
|
|
|
671
666
|
- `--coffee-id` uses inventory IDs.
|
|
672
667
|
- `roast import` and `roast watch` normalize pasted paths by trimming whitespace, removing one layer of matching quotes, and accepting common shell-escaped characters.
|
|
673
668
|
- `roast watch --auto-match` is mutually exclusive with `--coffee-id`.
|
|
674
|
-
- `roast watch --auto-match`
|
|
669
|
+
- `roast watch --auto-match` uses the `@purveyors/cli/cherry` helper to send roast metadata and the current stocked-inventory candidates to the canonical Parchment `POST /v1/roasts/classify` endpoint via `@purveyors/sdk`; it never calls an AI provider directly.
|
|
675
670
|
- `roast watch --commit-mode` defaults to `batch`.
|
|
676
671
|
|
|
677
672
|
### sales
|
|
@@ -923,7 +918,7 @@ Agent integration rules of thumb:
|
|
|
923
918
|
- Discover first with `purvey manifest`, then call the narrowest command or package subpath that fits the job.
|
|
924
919
|
- Use `purvey context` when a human-readable operator summary is useful before tool selection.
|
|
925
920
|
- Use `purvey auth login` for normal user workflows. Parchment coordinates browser approval and returns a machine-scoped API key; the CLI stores no web session, request token, or PKCE verifier. Environment `PURVEYORS_API_KEY` or `PARCHMENT_API_KEY` values remain available for explicit automation overrides.
|
|
926
|
-
- Treat `--include-proof` as API output, not a local scoring feature.
|
|
921
|
+
- Treat `--include-proof` as API output, not a local scoring feature. Every `catalog search` filter round-trips through the canonical `/v1/catalog` query contract, so proof output always matches the same server-side result set.
|
|
927
922
|
- Treat `catalog similar` as the canonical `/v1/catalog/{id}/similar` contract. Preserve the distinction between `canonical_candidates` and `similar_recommendations`; do not flatten or re-sort grouped results unless you have a specific downstream reason.
|
|
928
923
|
- Treat `market`, `price-index`, and `procurement` as SDK-backed canonical API reads. Do not add procurement create/write behavior to this command group until the Phase 2 write contract ships.
|
|
929
924
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAWL,mBAAmB,EACnB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAWL,mBAAmB,EACnB,mBAAmB,EAOpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAUrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAkEpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAgqB7C"}
|
package/dist/commands/catalog.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { outputData, info } from '../lib/output.js';
|
|
3
3
|
import { withErrorHandling, PrvrsError } from '../lib/errors.js';
|
|
4
|
-
import { searchCatalog, getCatalog, getCatalogStats, getCatalogSimilarity, listCatalogFacets, rankCatalog, catalogRankPremium, supplierList, supplierDetail, supplierRank, computeCatalogStats, sanitizeFilterValue, catalogSortFields, catalogFacetFields, catalogRankObjectives, catalogSimilarityModes, } from '../lib/catalog.js';
|
|
4
|
+
import { searchCatalog, getCatalog, getCatalogStats, getCatalogSimilarity, listCatalogFacets, rankCatalog, catalogRankPremium, supplierList, supplierDetail, supplierRank, computeCatalogStats, sanitizeFilterValue, catalogSortFields, CATALOG_SEARCH_MAX_LIMIT, SUPPLIER_MIN_COFFEES_MAX, catalogFacetFields, catalogRankObjectives, catalogSimilarityModes, } from '../lib/catalog.js';
|
|
5
|
+
import { CLI_NUMERIC_BOUNDS } from '../lib/numeric-contracts.js';
|
|
6
|
+
import { parseStrictInt4Id, parseStrictOffset, parseStrictPositiveCount, } from '../lib/strict-number.js';
|
|
5
7
|
export { sanitizeFilterValue, computeCatalogStats };
|
|
6
8
|
function parseFiniteNumberArg(rawValue, message) {
|
|
7
9
|
const trimmed = rawValue.trim();
|
|
@@ -15,8 +17,15 @@ function parseFiniteNumberArg(rawValue, message) {
|
|
|
15
17
|
return parsed;
|
|
16
18
|
}
|
|
17
19
|
function parsePositiveIntegerArg(rawValue, message) {
|
|
18
|
-
const parsed =
|
|
19
|
-
if (!Number.
|
|
20
|
+
const parsed = parseStrictPositiveCount(rawValue);
|
|
21
|
+
if (!Number.isFinite(parsed)) {
|
|
22
|
+
throw new PrvrsError('INVALID_ARGUMENT', message);
|
|
23
|
+
}
|
|
24
|
+
return parsed;
|
|
25
|
+
}
|
|
26
|
+
function parseInt4IdArg(rawValue, message) {
|
|
27
|
+
const parsed = parseStrictInt4Id(rawValue);
|
|
28
|
+
if (!Number.isFinite(parsed)) {
|
|
20
29
|
throw new PrvrsError('INVALID_ARGUMENT', message);
|
|
21
30
|
}
|
|
22
31
|
return parsed;
|
|
@@ -29,8 +38,8 @@ function parseBoundedPositiveIntegerArg(rawValue, flag, min, max) {
|
|
|
29
38
|
return parsed;
|
|
30
39
|
}
|
|
31
40
|
function parseNonNegativeIntegerArg(rawValue, message) {
|
|
32
|
-
const parsed =
|
|
33
|
-
if (!Number.
|
|
41
|
+
const parsed = parseStrictOffset(rawValue);
|
|
42
|
+
if (!Number.isFinite(parsed)) {
|
|
34
43
|
throw new PrvrsError('INVALID_ARGUMENT', message);
|
|
35
44
|
}
|
|
36
45
|
return parsed;
|
|
@@ -47,7 +56,7 @@ export function buildCatalogCommand() {
|
|
|
47
56
|
// ── catalog search ────────────────────────────────────────────────────────
|
|
48
57
|
catalog
|
|
49
58
|
.command('search')
|
|
50
|
-
.description('Search coffees by origin, process, price, or
|
|
59
|
+
.description('Search coffees by origin, process, price, or catalog metadata')
|
|
51
60
|
.option('--origin <origin>', 'Filter by origin (country, continent, or region)')
|
|
52
61
|
.option('--process <method>', 'Filter by processing method (e.g. natural, washed)')
|
|
53
62
|
.option('--processing-base-method <method>', 'Filter by canonical process base method')
|
|
@@ -57,36 +66,29 @@ export function buildCatalogCommand() {
|
|
|
57
66
|
.option('--processing-confidence-min <n>', 'Minimum process metadata confidence (0-1)')
|
|
58
67
|
.option('--price-min <n>', 'Minimum price per lb (USD)')
|
|
59
68
|
.option('--price-max <n>', 'Maximum price per lb (USD)')
|
|
60
|
-
.option('--flavor <keywords>', 'Flavor keywords, comma-separated (e.g. "berry,chocolate")')
|
|
61
69
|
.option('--name <text>', 'Filter by coffee name (partial match, case-insensitive)')
|
|
62
|
-
.option('--supplier <name>', 'Filter by supplier/source name (partial match, case-insensitive)')
|
|
63
70
|
.option('--ids <n,n,...>', 'Fetch specific catalog IDs (comma-separated, ignores limit)')
|
|
64
71
|
.option('--variety <text>', 'Filter by coffee variety/cultivar (partial match)')
|
|
65
|
-
.option('--drying-method <text>', 'Filter by drying method (partial match)')
|
|
66
72
|
.option('--stocked-days <n>', 'Only show coffees stocked within N days')
|
|
67
73
|
.option('--stocked', 'Only show currently stocked coffees')
|
|
68
74
|
.option('--sort <field>', `Sort results by: ${catalogSortFields.join(', ')}`)
|
|
69
75
|
.option('--offset <n>', 'Skip N results (for pagination)', '0')
|
|
70
|
-
.option('--limit <n>',
|
|
76
|
+
.option('--limit <n>', `Maximum results to return (${CLI_NUMERIC_BOUNDS.catalogSearchLimit.minimum}-${CLI_NUMERIC_BOUNDS.catalogSearchLimit.maximum})`, '10')
|
|
71
77
|
.option('--include-proof', 'Request canonical catalog proof summaries from /v1/catalog')
|
|
72
78
|
.addHelpText('after', `
|
|
73
79
|
Examples:
|
|
74
80
|
purvey catalog search --origin "Ethiopia" --pretty
|
|
75
81
|
purvey catalog search --origin "Colombia" --process "honey" --pretty
|
|
76
|
-
purvey catalog search --process "natural" --flavor "blueberry,citrus" --stocked
|
|
77
82
|
purvey catalog search --processing-base-method "Natural" --fermentation-type "Anaerobic" --pretty
|
|
78
83
|
purvey catalog search --process-additive "hops" --processing-confidence-min 0.8 --pretty
|
|
79
84
|
purvey catalog search --price-min 5 --price-max 12 --stocked --limit 20
|
|
80
85
|
purvey catalog search --stocked --sort price --pretty
|
|
81
|
-
purvey catalog search --sort newest --limit 20
|
|
82
86
|
purvey catalog search --stocked --limit 10 --offset 10 # page 2
|
|
83
87
|
purvey catalog search --origin "Ethiopia" --csv > ethiopia.csv
|
|
84
88
|
purvey catalog search --stocked --limit 50 | jq '.[].name'
|
|
85
89
|
purvey catalog search --name "Guji" --pretty
|
|
86
|
-
purvey catalog search --supplier "Royal Coffee" --stocked --pretty
|
|
87
90
|
purvey catalog search --ids "1182,1183,1200"
|
|
88
91
|
purvey catalog search --variety "gesha" --stocked --pretty
|
|
89
|
-
purvey catalog search --drying-method "sun" --origin "Ethiopia" --pretty
|
|
90
92
|
purvey catalog search --stocked-days 30 --pretty
|
|
91
93
|
purvey catalog search --origin "Ethiopia" --include-proof --json
|
|
92
94
|
|
|
@@ -95,7 +97,6 @@ Sort fields:
|
|
|
95
97
|
price-desc most expensive first
|
|
96
98
|
name alphabetical by name
|
|
97
99
|
origin alphabetical by country
|
|
98
|
-
newest most recently updated first
|
|
99
100
|
|
|
100
101
|
Notes:
|
|
101
102
|
All filters are optional. Without flags, returns up to --limit results.
|
|
@@ -108,9 +109,7 @@ Notes:
|
|
|
108
109
|
--processing-base-method, --fermentation-type, --process-additive, and
|
|
109
110
|
--processing-disclosure-level require exact structured metadata matches.
|
|
110
111
|
--processing-confidence-min accepts a decimal from 0 to 1.
|
|
111
|
-
--name and --supplier accept partial matches (case-insensitive).
|
|
112
112
|
--variety filters on cultivar_detail (partial match, case-insensitive).
|
|
113
|
-
--drying-method filters on drying_method (partial match, case-insensitive).
|
|
114
113
|
--stocked-days N shows only coffees stocked within the last N days.
|
|
115
114
|
--ids fetches specific catalog items by ID, ignoring --limit and --offset.
|
|
116
115
|
--offset + --limit enables pagination through large result sets.
|
|
@@ -134,7 +133,7 @@ Notes:
|
|
|
134
133
|
.filter(Boolean);
|
|
135
134
|
const nums = [];
|
|
136
135
|
for (const token of raw) {
|
|
137
|
-
nums.push(
|
|
136
|
+
nums.push(parseInt4IdArg(token, `Invalid --ids value: "${token}". Each ID must be a positive integer.`));
|
|
138
137
|
}
|
|
139
138
|
parsedIds = nums;
|
|
140
139
|
}
|
|
@@ -157,19 +156,16 @@ Notes:
|
|
|
157
156
|
const offset = opts.offset !== undefined
|
|
158
157
|
? parseNonNegativeIntegerArg(opts.offset, `Invalid --offset: "${opts.offset}". Must be a non-negative integer.`)
|
|
159
158
|
: undefined;
|
|
160
|
-
const limit =
|
|
159
|
+
const limit = parseBoundedPositiveIntegerArg(opts.limit, '--limit', CLI_NUMERIC_BOUNDS.catalogSearchLimit.minimum, CATALOG_SEARCH_MAX_LIMIT);
|
|
161
160
|
const includeProof = opts.includeProof ? true : undefined;
|
|
162
161
|
const data = await searchCatalog({
|
|
163
162
|
origin: opts.origin,
|
|
164
163
|
process: opts.process,
|
|
165
164
|
priceMin,
|
|
166
165
|
priceMax,
|
|
167
|
-
flavor: opts.flavor,
|
|
168
166
|
name: opts.name,
|
|
169
|
-
supplier: opts.supplier,
|
|
170
167
|
ids: parsedIds,
|
|
171
168
|
variety: opts.variety,
|
|
172
|
-
dryingMethod: opts.dryingMethod,
|
|
173
169
|
stockedDays,
|
|
174
170
|
processingBaseMethod: opts.processingBaseMethod,
|
|
175
171
|
fermentationType: opts.fermentationType,
|
|
@@ -209,7 +205,7 @@ Notes:
|
|
|
209
205
|
`)
|
|
210
206
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
211
207
|
const globalOpts = cmd.optsWithGlobals();
|
|
212
|
-
const catalogId =
|
|
208
|
+
const catalogId = parseInt4IdArg(id, `Invalid ID: "${id}". Please provide a numeric coffee_catalog ID.`);
|
|
213
209
|
const includeProof = opts.includeProof ? true : undefined;
|
|
214
210
|
const data = await getCatalog(catalogId, {
|
|
215
211
|
includeProof,
|
|
@@ -277,7 +273,6 @@ Notes:
|
|
|
277
273
|
.option('--objective <objective>', `Ranking objective: ${catalogRankObjectives.join(', ')}`, 'premium')
|
|
278
274
|
.option('--country <country>', 'Filter by country')
|
|
279
275
|
.option('--process <method>', 'Filter by processing method')
|
|
280
|
-
.option('--supplier <name>', 'Filter by supplier/source name')
|
|
281
276
|
.option('--stocked', 'Only include currently stocked coffees')
|
|
282
277
|
.option('--all', 'Use all visible catalog rows instead of default stocked-only scope')
|
|
283
278
|
.option('--price-max <n>', 'Maximum price per lb (USD)')
|
|
@@ -308,7 +303,6 @@ Notes:
|
|
|
308
303
|
objective: objective,
|
|
309
304
|
country: opts.country,
|
|
310
305
|
process: opts.process,
|
|
311
|
-
supplier: opts.supplier,
|
|
312
306
|
stockedOnly: opts.all ? false : opts.stocked ? true : true,
|
|
313
307
|
priceMax: opts.priceMax !== undefined
|
|
314
308
|
? parseFiniteNumberArg(opts.priceMax, `Invalid --price-max: "${opts.priceMax}". Must be a number.`)
|
|
@@ -329,7 +323,6 @@ Notes:
|
|
|
329
323
|
.description('Rank premium catalog candidates by Purveyor Score')
|
|
330
324
|
.option('--origin <origin>', 'Filter by origin (country, continent, or region)')
|
|
331
325
|
.option('--process <method>', 'Filter by processing method')
|
|
332
|
-
.option('--supplier <name>', 'Filter by supplier/source name')
|
|
333
326
|
.option('--stocked', 'Only include currently stocked coffees')
|
|
334
327
|
.option('--price-max <n>', 'Maximum price per lb (USD)')
|
|
335
328
|
.option('--min-score <n>', 'Minimum Purveyor Score')
|
|
@@ -340,7 +333,6 @@ Notes:
|
|
|
340
333
|
Examples:
|
|
341
334
|
purvey catalog rank-premium --stocked --limit 10 --pretty
|
|
342
335
|
purvey catalog rank-premium --origin Ethiopia --min-score 88 --json
|
|
343
|
-
purvey catalog rank-premium --supplier "Royal Coffee" --price-max 12 --pretty
|
|
344
336
|
|
|
345
337
|
Notes:
|
|
346
338
|
Ranks by coffee_catalog.score_value, exposed as purveyor_score in output.
|
|
@@ -353,7 +345,6 @@ Notes:
|
|
|
353
345
|
const input = {
|
|
354
346
|
origin: opts.origin,
|
|
355
347
|
process: opts.process,
|
|
356
|
-
supplier: opts.supplier,
|
|
357
348
|
stocked: opts.stocked ? true : undefined,
|
|
358
349
|
priceMax: opts.priceMax !== undefined
|
|
359
350
|
? parseFiniteNumberArg(opts.priceMax, `Invalid --price-max: "${opts.priceMax}". Must be a number.`)
|
|
@@ -436,7 +427,7 @@ Notes:
|
|
|
436
427
|
.option('--country <country>', 'Filter by country')
|
|
437
428
|
.option('--stocked', 'Only include currently stocked coffees')
|
|
438
429
|
.option('--non-wholesale-only', 'Exclude wholesale listings before aggregation')
|
|
439
|
-
.option('--min-coffees <n>',
|
|
430
|
+
.option('--min-coffees <n>', `Minimum catalog rows required per supplier (${CLI_NUMERIC_BOUNDS.supplierMinCoffees.minimum}-${CLI_NUMERIC_BOUNDS.supplierMinCoffees.maximum})`, '1')
|
|
440
431
|
.option('--sample-size <n>', 'Catalog rows to fetch per page before aggregation (1-5000)', '5000')
|
|
441
432
|
.option('--limit <n>', 'Maximum suppliers to return (1-100)', '25')
|
|
442
433
|
.addHelpText('after', `
|
|
@@ -454,7 +445,7 @@ Notes:
|
|
|
454
445
|
country: opts.country,
|
|
455
446
|
stocked: opts.stocked ? true : undefined,
|
|
456
447
|
nonWholesaleOnly: opts.nonWholesaleOnly ? true : undefined,
|
|
457
|
-
minCoffees:
|
|
448
|
+
minCoffees: parseBoundedPositiveIntegerArg(opts.minCoffees, '--min-coffees', CLI_NUMERIC_BOUNDS.supplierMinCoffees.minimum, SUPPLIER_MIN_COFFEES_MAX),
|
|
458
449
|
sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
|
|
459
450
|
limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 100),
|
|
460
451
|
};
|
|
@@ -490,9 +481,9 @@ Notes:
|
|
|
490
481
|
`)
|
|
491
482
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
492
483
|
const globalOpts = cmd.optsWithGlobals();
|
|
493
|
-
const coffeeId =
|
|
484
|
+
const coffeeId = parseInt4IdArg(id, `Invalid ID: "${id}". Please provide a numeric coffee_catalog ID.`);
|
|
494
485
|
const threshold = parseFiniteNumberArg(opts.threshold, `Invalid --threshold: "${opts.threshold}". Must be a number between 0 and 1.`);
|
|
495
|
-
const limit =
|
|
486
|
+
const limit = parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 25);
|
|
496
487
|
if (threshold < 0.5 || threshold > 0.99) {
|
|
497
488
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --threshold: "${opts.threshold}". Must be a number between 0.5 and 0.99.`);
|
|
498
489
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EACL,aAAa,EACb,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAKjC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAEpD,SAAS,oBAAoB,CAAC,QAAgB,EAAE,OAAe;IAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB,EAAE,OAAe;IAChE,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,QAAgB,EAAE,OAAe;IACvD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,8BAA8B,CACrC,QAAgB,EAChB,IAAY,EACZ,GAAW,EACX,GAAW;IAEX,MAAM,MAAM,GAAG,uBAAuB,CACpC,QAAQ,EACR,WAAW,IAAI,MAAM,QAAQ,gCAAgC,CAC9D,CAAC;IAEF,IAAI,MAAM,GAAG,GAAG,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,WAAW,IAAI,MAAM,QAAQ,sBAAsB,GAAG,QAAQ,GAAG,GAAG,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAgB,EAAE,OAAe;IACnE,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAEhF,6EAA6E;IAC7E,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,mBAAmB,EAAE,kDAAkD,CAAC;SAC/E,MAAM,CAAC,oBAAoB,EAAE,oDAAoD,CAAC;SAClF,MAAM,CAAC,mCAAmC,EAAE,yCAAyC,CAAC;SACtF,MAAM,CAAC,4BAA4B,EAAE,wCAAwC,CAAC;SAC9E,MAAM,CAAC,+BAA+B,EAAE,sCAAsC,CAAC;SAC/E,MAAM,CAAC,uCAAuC,EAAE,oCAAoC,CAAC;SACrF,MAAM,CAAC,iCAAiC,EAAE,2CAA2C,CAAC;SACtF,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,yDAAyD,CAAC;SAClF,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;SACxF,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;SAC/E,MAAM,CAAC,oBAAoB,EAAE,yCAAyC,CAAC;SACvE,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;SAC1D,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SAC5E,MAAM,CAAC,cAAc,EAAE,iCAAiC,EAAE,GAAG,CAAC;SAC9D,MAAM,CACL,aAAa,EACb,8BAA8B,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAC/H,IAAI,CACL;SACA,MAAM,CAAC,iBAAiB,EAAE,4DAA4D,CAAC;SACvF,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAE1D,8BAA8B;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,IAA0B,CAAC;QAClD,IAAI,SAAS,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAA6B,CAAC,EAAE,CAAC;YAC5E,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,0BAA0B,SAAS,sBAAsB,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,SAA+B,CAAC;QACpC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAI,IAAI,CAAC,GAAc;iBAC7B,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,CACP,cAAc,CACZ,KAAK,EACL,yBAAyB,KAAK,wCAAwC,CACvE,CACF,CAAC;YACJ,CAAC;YACD,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,SAAS;YACzB,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,QAAkB,EACvB,yBAAyB,IAAI,CAAC,QAAQ,sBAAsB,CAC7D;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,SAAS;YACzB,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,QAAkB,EACvB,yBAAyB,IAAI,CAAC,QAAQ,sBAAsB,CAC7D;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,WAAW,GACf,IAAI,CAAC,WAAW,KAAK,SAAS;YAC5B,CAAC,CAAC,uBAAuB,CACrB,IAAI,CAAC,WAAqB,EAC1B,4BAA4B,IAAI,CAAC,WAAW,gCAAgC,CAC7E;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,uBAAuB,GAC3B,IAAI,CAAC,uBAAuB,KAAK,SAAS;YACxC,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,uBAAiC,EACtC,yCAAyC,IAAI,CAAC,uBAAuB,kCAAkC,CACxG;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,IACE,uBAAuB,KAAK,SAAS;YACrC,CAAC,uBAAuB,GAAG,CAAC,IAAI,uBAAuB,GAAG,CAAC,CAAC,EAC5D,CAAC;YACD,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,yCAAyC,IAAI,CAAC,uBAAuB,kCAAkC,CACxG,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,KAAK,SAAS;YACvB,CAAC,CAAC,0BAA0B,CACxB,IAAI,CAAC,MAAgB,EACrB,sBAAsB,IAAI,CAAC,MAAM,oCAAoC,CACtE;YACH,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,KAAK,GAAG,8BAA8B,CAC1C,IAAI,CAAC,KAAe,EACpB,SAAS,EACT,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,EAC7C,wBAAwB,CACzB,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,MAA4B;YACzC,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,QAAQ;YACR,QAAQ;YACR,IAAI,EAAE,IAAI,CAAC,IAA0B;YACrC,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,WAAW;YACX,oBAAoB,EAAE,IAAI,CAAC,oBAA0C;YACrE,gBAAgB,EAAE,IAAI,CAAC,gBAAsC;YAC7D,eAAe,EAAE,IAAI,CAAC,eAAqC;YAC3D,yBAAyB,EAAE,IAAI,CAAC,yBAA+C;YAC/E,uBAAuB;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACxC,IAAI,EAAE,SAAyC;YAC/C,MAAM;YACN,KAAK;YACL,YAAY;SACb,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,0CAA0C,CAAC,CAAC;YACjD,OAAO;QACT,CAAC;QAED,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,6EAA6E;IAC7E,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,iBAAiB,EAAE,8DAA8D,CAAC;SACzF,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;CAaL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,EAAU,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QAClF,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,SAAS,GAAG,cAAc,CAC9B,EAAE,EACF,gBAAgB,EAAE,gDAAgD,CACnE,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,SAAS,EAAE;YACvC,YAAY;SACb,CAAC,CAAC;QACH,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,6EAA6E;IAC7E,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,WAAW,CACV,OAAO,EACP;;;;;;;;;;CAUL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,KAA8B,EAAE,GAAY,EAAE,EAAE;QACvE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;QACtC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC,CAAC,CACH,CAAC;IAEJ,4EAA4E;IAC5E,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,OAAO,EAAE,oEAAoE,CAAC;SACrF,MAAM,CAAC,aAAa,EAAE,wCAAwC,EAAE,IAAI,CAAC;SACrE,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;CAcL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,KAAa,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACrF,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAA4C,CAAC,EAAE,CAAC;YAC/E,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,mBAAmB,KAAK,sBAAsB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC/E,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG;YACZ,KAAK,EAAE,KAA4C;YACnD,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACpC,KAAK,EAAE,8BAA8B,CAAC,IAAI,CAAC,KAAe,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;SAC/E,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAE5C,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,4EAA4E;IAC5E,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CACL,yBAAyB,EACzB,sBAAsB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACxD,SAAS,CACV;SACA,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;SAClD,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;SAC3D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,OAAO,EAAE,oEAAoE,CAAC;SACrF,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACnD,MAAM,CAAC,sBAAsB,EAAE,4CAA4C,CAAC;SAC5E,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,MAAM,CAAC;SAC7E,MAAM,CAAC,aAAa,EAAE,yCAAyC,EAAE,IAAI,CAAC;SACtE,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;CAYL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAmB,CAAC;QAC3C,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAmD,CAAC,EAAE,CAAC;YACzF,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,yBAAyB,SAAS,sBAAsB,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5F,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG;YACZ,SAAS,EAAE,SAAmD;YAC9D,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YAC1D,QAAQ,EACN,IAAI,CAAC,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,QAAkB,EACvB,yBAAyB,IAAI,CAAC,QAAQ,sBAAsB,CAC7D;gBACH,CAAC,CAAC,SAAS;YACf,QAAQ,EACN,IAAI,CAAC,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,QAAkB,EACvB,yBAAyB,IAAI,CAAC,QAAQ,sBAAsB,CAC7D;gBACH,CAAC,CAAC,SAAS;YACf,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC1D,UAAU,EAAE,8BAA8B,CACxC,IAAI,CAAC,UAAoB,EACzB,eAAe,EACf,CAAC,EACD,IAAI,CACL;YACD,KAAK,EAAE,8BAA8B,CAAC,IAAI,CAAC,KAAe,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;SAC9E,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;QAEtC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,4EAA4E;IAC5E,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,mBAAmB,EAAE,kDAAkD,CAAC;SAC/E,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;SAC3D,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,CAAC;SACvD,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACnD,MAAM,CAAC,oBAAoB,EAAE,iDAAiD,CAAC;SAC/E,MAAM,CAAC,mBAAmB,EAAE,wCAAwC,EAAE,KAAK,CAAC;SAC5E,MAAM,CAAC,aAAa,EAAE,yCAAyC,EAAE,IAAI,CAAC;SACtE,WAAW,CACV,OAAO,EACP;;;;;;;;;;CAUL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,KAAK,GAAG;YACZ,MAAM,EAAE,IAAI,CAAC,MAA4B;YACzC,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACxC,QAAQ,EACN,IAAI,CAAC,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,QAAkB,EACvB,yBAAyB,IAAI,CAAC,QAAQ,sBAAsB,CAC7D;gBACH,CAAC,CAAC,SAAS;YACf,QAAQ,EACN,IAAI,CAAC,QAAQ,KAAK,SAAS;gBACzB,CAAC,CAAC,oBAAoB,CAClB,IAAI,CAAC,QAAkB,EACvB,yBAAyB,IAAI,CAAC,QAAQ,sBAAsB,CAC7D;gBACH,CAAC,CAAC,SAAS;YACf,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACxD,UAAU,EAAE,8BAA8B,CACxC,IAAI,CAAC,UAAoB,EACzB,eAAe,EACf,CAAC,EACD,IAAI,CACL;YACD,KAAK,EAAE,8BAA8B,CAAC,IAAI,CAAC,KAAe,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;SAC9E,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAE7C,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,4EAA4E;IAC5E,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;SAClD,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,sBAAsB,EAAE,+CAA+C,CAAC;SAC/E,MAAM,CACL,mBAAmB,EACnB,4DAA4D,EAC5D,MAAM,CACP;SACA,MAAM,CAAC,aAAa,EAAE,qCAAqC,EAAE,IAAI,CAAC;SAClE,WAAW,CACV,OAAO,EACP;;;;;;;;;;CAUL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACxC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC1D,UAAU,EAAE,8BAA8B,CACxC,IAAI,CAAC,UAAoB,EACzB,eAAe,EACf,CAAC,EACD,IAAI,CACL;YACD,KAAK,EAAE,8BAA8B,CAAC,IAAI,CAAC,KAAe,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;SAC/E,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAEvC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO;SACJ,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;SAClD,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,sBAAsB,EAAE,+CAA+C,CAAC;SAC/E,MAAM,CAAC,mBAAmB,EAAE,8CAA8C,EAAE,GAAG,CAAC;SAChF,MAAM,CACL,mBAAmB,EACnB,4DAA4D,EAC5D,MAAM,CACP;SACA,WAAW,CACV,OAAO,EACP;;;;;;;;CAQL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,QAAgB,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACxF,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,KAAK,GAAG;YACZ,QAAQ;YACR,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACxC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC1D,UAAU,EAAE,8BAA8B,CACxC,IAAI,CAAC,UAAoB,EACzB,eAAe,EACf,CAAC,EACD,EAAE,CACH;YACD,UAAU,EAAE,8BAA8B,CACxC,IAAI,CAAC,UAAoB,EACzB,eAAe,EACf,CAAC,EACD,IAAI,CACL;SACF,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAEzC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;SAClD,MAAM,CAAC,WAAW,EAAE,wCAAwC,CAAC;SAC7D,MAAM,CAAC,sBAAsB,EAAE,+CAA+C,CAAC;SAC/E,MAAM,CACL,mBAAmB,EACnB,+CAA+C,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,GAAG,EAChJ,GAAG,CACJ;SACA,MAAM,CACL,mBAAmB,EACnB,4DAA4D,EAC5D,MAAM,CACP;SACA,MAAM,CAAC,aAAa,EAAE,qCAAqC,EAAE,IAAI,CAAC;SAClE,WAAW,CACV,OAAO,EACP;;;;;;;;CAQL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAC1D,MAAM,KAAK,GAAG;YACZ,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACxC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YAC1D,UAAU,EAAE,8BAA8B,CACxC,IAAI,CAAC,UAAoB,EACzB,eAAe,EACf,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,EAC7C,wBAAwB,CACzB;YACD,UAAU,EAAE,8BAA8B,CACxC,IAAI,CAAC,UAAoB,EACzB,eAAe,EACf,CAAC,EACD,IAAI,CACL;YACD,KAAK,EAAE,8BAA8B,CAAC,IAAI,CAAC,KAAe,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC;SAC/E,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAEvC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC,CAAC,CACH,CAAC;IAEJ,6EAA6E;IAC7E,OAAO;SACJ,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,4EAA4E,CAAC;SACzF,MAAM,CAAC,qBAAqB,EAAE,mDAAmD,EAAE,MAAM,CAAC;SAC1F,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;SAC7D,MAAM,CACL,eAAe,EACf,oCAAoC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvE,KAAK,CACN;SACA,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;CAkBL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,EAAU,EAAE,IAA6B,EAAE,GAAY,EAAE,EAAE;QAClF,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QAE1D,MAAM,QAAQ,GAAG,cAAc,CAC7B,EAAE,EACF,gBAAgB,EAAE,gDAAgD,CACnE,CAAC;QAEF,MAAM,SAAS,GAAG,oBAAoB,CACpC,IAAI,CAAC,SAAmB,EACxB,yBAAyB,IAAI,CAAC,SAAS,sCAAsC,CAC9E,CAAC;QACF,MAAM,KAAK,GAAG,8BAA8B,CAAC,IAAI,CAAC,KAAe,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,IAAI,SAAS,GAAG,GAAG,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,yBAAyB,IAAI,CAAC,SAAS,2CAA2C,CACnF,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,qBAAqB,IAAI,CAAC,KAAK,yCAAyC,CACzE,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;QACjC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAA+C,CAAC,EAAE,CAAC;YACtF,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,oBAAoB,IAAI,sBAAsB,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACnF,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC;YAC1C,SAAS,EAAE,QAAQ;YACnB,SAAS;YACT,KAAK;YACL,WAAW;YACX,IAAI,EAAE,IAA+C;SACtD,CAAC,CAAC;QAEH,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CACH,CAAC;IAEJ,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AAWhF,YAAY,EAAE,aAAa,EAAE,CAAC;AAwB9B;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAqX/C"}
|
|
@@ -7,6 +7,22 @@ import { requireAuth } from '../lib/auth-guard.js';
|
|
|
7
7
|
import { confirm, todayIso } from '../lib/prompts.js';
|
|
8
8
|
import { listInventory, getInventory, addInventory, updateInventory, deleteInventory, } from '../lib/inventory.js';
|
|
9
9
|
import { pickCatalogItem, guardCancel } from '../lib/interactive/forms.js';
|
|
10
|
+
import { parseStrictFiniteNumber, parseStrictInt4Id, parseStrictOffset, parseStrictPositiveCount, } from '../lib/strict-number.js';
|
|
11
|
+
function parseInventoryId(value, label) {
|
|
12
|
+
const parsed = parseStrictInt4Id(value);
|
|
13
|
+
if (!Number.isFinite(parsed)) {
|
|
14
|
+
throw new PrvrsError('INVALID_ARGUMENT', `Invalid ${label}: "${value}".`);
|
|
15
|
+
}
|
|
16
|
+
return parsed;
|
|
17
|
+
}
|
|
18
|
+
function parseListCount(value, flag) {
|
|
19
|
+
const parsed = flag === '--offset' ? parseStrictOffset(value) : parseStrictPositiveCount(value);
|
|
20
|
+
if (!Number.isFinite(parsed)) {
|
|
21
|
+
const requirement = flag === '--offset' ? 'a non-negative integer' : 'a positive integer';
|
|
22
|
+
throw new PrvrsError('INVALID_ARGUMENT', `Invalid ${flag}: "${value}". Must be ${requirement}.`);
|
|
23
|
+
}
|
|
24
|
+
return parsed;
|
|
25
|
+
}
|
|
10
26
|
// ─── Command builder ──────────────────────────────────────────────────────────
|
|
11
27
|
/**
|
|
12
28
|
* `purvey inventory` — Manage your green coffee inventory.
|
|
@@ -48,16 +64,12 @@ Notes:
|
|
|
48
64
|
const globalOpts = cmd.optsWithGlobals();
|
|
49
65
|
let catalogId;
|
|
50
66
|
if (opts.catalogId !== undefined) {
|
|
51
|
-
catalogId =
|
|
52
|
-
if (isNaN(catalogId)) {
|
|
53
|
-
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --catalog-id: "${opts.catalogId}".`);
|
|
54
|
-
}
|
|
67
|
+
catalogId = parseInventoryId(opts.catalogId, '--catalog-id');
|
|
55
68
|
}
|
|
56
|
-
const offsetVal = parseInt(opts.offset, 10);
|
|
57
69
|
const data = await listInventory({
|
|
58
70
|
stocked_only: opts.stocked ? true : undefined,
|
|
59
|
-
limit:
|
|
60
|
-
offset:
|
|
71
|
+
limit: parseListCount(opts.limit, '--limit'),
|
|
72
|
+
offset: parseListCount(opts.offset, '--offset'),
|
|
61
73
|
catalogId,
|
|
62
74
|
purchaseDateStart: opts.purchaseDateStart,
|
|
63
75
|
purchaseDateEnd: opts.purchaseDateEnd,
|
|
@@ -85,7 +97,7 @@ Notes:
|
|
|
85
97
|
`)
|
|
86
98
|
.action(withErrorHandling(async (id, _opts, cmd) => {
|
|
87
99
|
const globalOpts = cmd.optsWithGlobals();
|
|
88
|
-
const data = await getInventory(
|
|
100
|
+
const data = await getInventory(parseInventoryId(id, 'inventory ID'));
|
|
89
101
|
outputData(data, globalOpts);
|
|
90
102
|
}));
|
|
91
103
|
// ── inventory add ─────────────────────────────────────────────────────────
|
|
@@ -125,8 +137,8 @@ Required flags: --catalog-id, --qty
|
|
|
125
137
|
message: 'Quantity (lbs)',
|
|
126
138
|
placeholder: '5',
|
|
127
139
|
validate: (v) => {
|
|
128
|
-
const n =
|
|
129
|
-
if (
|
|
140
|
+
const n = parseStrictFiniteNumber(String(v));
|
|
141
|
+
if (!Number.isFinite(n) || n <= 0)
|
|
130
142
|
return 'Must be a positive number.';
|
|
131
143
|
},
|
|
132
144
|
});
|
|
@@ -134,6 +146,13 @@ Required flags: --catalog-id, --qty
|
|
|
134
146
|
const costRaw = await p.text({
|
|
135
147
|
message: 'Cost per lb ($)',
|
|
136
148
|
placeholder: 'optional',
|
|
149
|
+
validate: (v) => {
|
|
150
|
+
if (!v || v.trim() === '')
|
|
151
|
+
return;
|
|
152
|
+
const n = parseStrictFiniteNumber(v);
|
|
153
|
+
if (!Number.isFinite(n))
|
|
154
|
+
return 'Must be a number.';
|
|
155
|
+
},
|
|
137
156
|
});
|
|
138
157
|
guardCancel(costRaw);
|
|
139
158
|
const notesRaw = await p.text({
|
|
@@ -148,7 +167,7 @@ Required flags: --catalog-id, --qty
|
|
|
148
167
|
return;
|
|
149
168
|
}
|
|
150
169
|
const costStr = String(costRaw).trim();
|
|
151
|
-
const cost = costStr !== '' ?
|
|
170
|
+
const cost = costStr !== '' ? parseStrictFiniteNumber(costStr) : undefined;
|
|
152
171
|
const notesStr = String(notesRaw).trim();
|
|
153
172
|
const notes = notesStr !== '' ? notesStr : undefined;
|
|
154
173
|
const qtyStr = String(qtyRaw);
|
|
@@ -160,7 +179,7 @@ Required flags: --catalog-id, --qty
|
|
|
160
179
|
}
|
|
161
180
|
const data = await addInventory({
|
|
162
181
|
catalogId: catalogItem.id,
|
|
163
|
-
qty:
|
|
182
|
+
qty: parseStrictFiniteNumber(qtyStr),
|
|
164
183
|
cost,
|
|
165
184
|
notes,
|
|
166
185
|
purchaseDate: todayIso(),
|
|
@@ -177,20 +196,17 @@ Required flags: --catalog-id, --qty
|
|
|
177
196
|
if (!opts.qty) {
|
|
178
197
|
throw new PrvrsError('INVALID_ARGUMENT', 'Missing --qty. Use --form for interactive mode.');
|
|
179
198
|
}
|
|
180
|
-
const catalogId =
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
}
|
|
184
|
-
const qty = parseFloat(opts.qty);
|
|
185
|
-
if (isNaN(qty) || qty <= 0) {
|
|
199
|
+
const catalogId = parseInventoryId(opts.catalogId, '--catalog-id');
|
|
200
|
+
const qty = parseStrictFiniteNumber(opts.qty);
|
|
201
|
+
if (!Number.isFinite(qty) || qty <= 0) {
|
|
186
202
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --qty: "${opts.qty}". Must be a positive number.`);
|
|
187
203
|
}
|
|
188
|
-
const cost = opts.cost !== undefined ?
|
|
189
|
-
if (cost !== undefined &&
|
|
204
|
+
const cost = opts.cost !== undefined ? parseStrictFiniteNumber(opts.cost) : undefined;
|
|
205
|
+
if (cost !== undefined && !Number.isFinite(cost)) {
|
|
190
206
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --cost: "${opts.cost}".`);
|
|
191
207
|
}
|
|
192
|
-
const taxShip = opts.taxShip !== undefined ?
|
|
193
|
-
if (taxShip !== undefined &&
|
|
208
|
+
const taxShip = opts.taxShip !== undefined ? parseStrictFiniteNumber(opts.taxShip) : undefined;
|
|
209
|
+
if (taxShip !== undefined && !Number.isFinite(taxShip)) {
|
|
194
210
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --tax-ship: "${opts.taxShip}".`);
|
|
195
211
|
}
|
|
196
212
|
const data = await addInventory({
|
|
@@ -227,27 +243,24 @@ Notes:
|
|
|
227
243
|
`)
|
|
228
244
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
229
245
|
const globalOpts = cmd.optsWithGlobals();
|
|
230
|
-
const itemId =
|
|
231
|
-
if (isNaN(itemId)) {
|
|
232
|
-
throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
|
|
233
|
-
}
|
|
246
|
+
const itemId = parseInventoryId(id, 'inventory ID');
|
|
234
247
|
// Parse CLI strings into typed values
|
|
235
248
|
let qty;
|
|
236
249
|
if (opts.qty !== undefined) {
|
|
237
|
-
qty =
|
|
238
|
-
if (
|
|
250
|
+
qty = parseStrictFiniteNumber(opts.qty);
|
|
251
|
+
if (!Number.isFinite(qty) || qty <= 0)
|
|
239
252
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --qty: "${opts.qty}".`);
|
|
240
253
|
}
|
|
241
254
|
let cost;
|
|
242
255
|
if (opts.cost !== undefined) {
|
|
243
|
-
cost =
|
|
244
|
-
if (
|
|
256
|
+
cost = parseStrictFiniteNumber(opts.cost);
|
|
257
|
+
if (!Number.isFinite(cost))
|
|
245
258
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --cost: "${opts.cost}".`);
|
|
246
259
|
}
|
|
247
260
|
let taxShip;
|
|
248
261
|
if (opts.taxShip !== undefined) {
|
|
249
|
-
taxShip =
|
|
250
|
-
if (
|
|
262
|
+
taxShip = parseStrictFiniteNumber(opts.taxShip);
|
|
263
|
+
if (!Number.isFinite(taxShip))
|
|
251
264
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --tax-ship: "${opts.taxShip}".`);
|
|
252
265
|
}
|
|
253
266
|
let stocked;
|
|
@@ -294,10 +307,7 @@ Notes:
|
|
|
294
307
|
`)
|
|
295
308
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
296
309
|
const globalOpts = cmd.optsWithGlobals();
|
|
297
|
-
const itemId =
|
|
298
|
-
if (isNaN(itemId)) {
|
|
299
|
-
throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
|
|
300
|
-
}
|
|
310
|
+
const itemId = parseInventoryId(id, 'inventory ID');
|
|
301
311
|
if (!opts.yes) {
|
|
302
312
|
const ok = await confirm(`Delete inventory item ${itemId}?`);
|
|
303
313
|
if (!ok) {
|