@purveyors/cli 0.24.0 → 0.27.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/README.md +87 -19
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +11 -47
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +17 -44
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/market.d.ts +8 -0
- package/dist/commands/market.d.ts.map +1 -0
- package/dist/commands/market.js +190 -0
- package/dist/commands/market.js.map +1 -0
- package/dist/commands/roast.d.ts +3 -0
- package/dist/commands/roast.d.ts.map +1 -1
- package/dist/commands/roast.js +15 -11
- package/dist/commands/roast.js.map +1 -1
- package/dist/commands/sales.d.ts.map +1 -1
- package/dist/commands/sales.js +15 -11
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/tasting.d.ts.map +1 -1
- package/dist/commands/tasting.js +1 -2
- package/dist/commands/tasting.js.map +1 -1
- package/dist/lib/auth-guard.d.ts.map +1 -1
- package/dist/lib/auth-guard.js +14 -6
- package/dist/lib/auth-guard.js.map +1 -1
- package/dist/lib/catalog.d.ts +12 -14
- package/dist/lib/catalog.d.ts.map +1 -1
- package/dist/lib/catalog.js +177 -520
- package/dist/lib/catalog.js.map +1 -1
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/interactive/forms.d.ts +1 -1
- package/dist/lib/interactive/forms.d.ts.map +1 -1
- package/dist/lib/interactive/forms.js +3 -10
- package/dist/lib/interactive/forms.js.map +1 -1
- package/dist/lib/inventory.d.ts +8 -16
- package/dist/lib/inventory.d.ts.map +1 -1
- package/dist/lib/inventory.js +44 -227
- package/dist/lib/inventory.js.map +1 -1
- package/dist/lib/manifest.d.ts.map +1 -1
- package/dist/lib/manifest.js +91 -16
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/market.d.ts +239 -0
- package/dist/lib/market.d.ts.map +1 -0
- package/dist/lib/market.js +29 -0
- package/dist/lib/market.js.map +1 -0
- package/dist/lib/parchment-base.d.ts +3 -0
- package/dist/lib/parchment-base.d.ts.map +1 -0
- package/dist/lib/parchment-base.js +9 -0
- package/dist/lib/parchment-base.js.map +1 -0
- package/dist/lib/parchment.d.ts +10 -1
- package/dist/lib/parchment.d.ts.map +1 -1
- package/dist/lib/parchment.js +18 -7
- package/dist/lib/parchment.js.map +1 -1
- package/dist/lib/roast.d.ts +16 -24
- package/dist/lib/roast.d.ts.map +1 -1
- package/dist/lib/roast.js +33 -224
- package/dist/lib/roast.js.map +1 -1
- package/dist/lib/sales.d.ts +12 -6
- package/dist/lib/sales.d.ts.map +1 -1
- package/dist/lib/sales.js +13 -27
- package/dist/lib/sales.js.map +1 -1
- package/dist/lib/supabase.d.ts.map +1 -1
- package/dist/lib/supabase.js +14 -9
- package/dist/lib/supabase.js.map +1 -1
- package/dist/lib/tasting.d.ts +1 -1
- package/dist/lib/tasting.d.ts.map +1 -1
- package/dist/lib/tasting.js +5 -53
- package/dist/lib/tasting.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +6 -1
- package/dist/program.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Coffee intelligence from your terminal.
|
|
4
4
|
|
|
5
|
-
`purvey` is the official CLI for [purveyors.io](https://purveyors.io). It gives coffee professionals, developers, and AI agents direct access to the Purveyors platform from the terminal: catalog search, price-index snapshots, procurement brief reads, inventory tracking, roast logging, sales records, tasting notes, and Artisan `.alog` import.
|
|
5
|
+
`purvey` is the official CLI for [purveyors.io](https://purveyors.io). It gives coffee professionals, developers, and AI agents direct access to the Purveyors platform from the terminal: catalog search, Market Index intelligence, price-index snapshots, procurement brief reads, inventory tracking, roast logging, sales records, tasting notes, and Artisan `.alog` import.
|
|
6
6
|
|
|
7
7
|
Use `purvey --help` for quick command discovery, `purvey context` for the dense human-readable operator reference, `purvey manifest` for the preferred machine-readable contract, or `@purveyors/cli/manifest` in-process.
|
|
8
8
|
|
|
@@ -14,6 +14,7 @@ Use `purvey --help` for quick command discovery, `purvey context` for the dense
|
|
|
14
14
|
- No pre-existing session required: `auth`, `config`, `context`, `manifest`
|
|
15
15
|
- Viewer role required: `catalog` (excluding structured process filters on `catalog search`)
|
|
16
16
|
- Member role required: `price-index`, `procurement`, `inventory`, `roast`, `sales`, `tasting`
|
|
17
|
+
- Mixed public and entitled access: `market` public teaser slices are unauthenticated; filtered slices require Parchment Intelligence access
|
|
17
18
|
- Preferred machine-readable contract: `purvey manifest`
|
|
18
19
|
- Dense human-readable reference: `purvey context`
|
|
19
20
|
- Compatibility JSON alias: `purvey context --json`
|
|
@@ -79,16 +80,19 @@ purvey catalog search --origin "Ethiopia" --stocked --pretty
|
|
|
79
80
|
# Example with structured process filters and proof output
|
|
80
81
|
purvey catalog search --origin "Ethiopia" --processing-base-method "Washed" --include-proof --pretty
|
|
81
82
|
|
|
82
|
-
# 4.
|
|
83
|
+
# 4. Read a public Market Index teaser slice
|
|
84
|
+
purvey market signals --summary --pretty
|
|
85
|
+
|
|
86
|
+
# 5. Check inventory (requires member role)
|
|
83
87
|
purvey inventory list --stocked --pretty
|
|
84
88
|
|
|
85
|
-
#
|
|
89
|
+
# 6. Import a roast from Artisan
|
|
86
90
|
purvey roast import ~/artisan/my-roast.alog --coffee-id 7 --pretty
|
|
87
91
|
|
|
88
|
-
#
|
|
92
|
+
# 7. Get the machine-readable CLI contract
|
|
89
93
|
purvey manifest
|
|
90
94
|
|
|
91
|
-
#
|
|
95
|
+
# 8. Get the dense readable CLI reference
|
|
92
96
|
purvey context
|
|
93
97
|
```
|
|
94
98
|
|
|
@@ -109,6 +113,7 @@ The npm package is both a binary and a shared TypeScript product surface. `coffe
|
|
|
109
113
|
| -------------------------- | ------------------------------------------------------------------------------------ |
|
|
110
114
|
| `@purveyors/cli` | CLI entrypoint package root |
|
|
111
115
|
| `@purveyors/cli/catalog` | Catalog search, lookup, stats, premium ranking, supplier aggregates, similar coffees |
|
|
116
|
+
| `@purveyors/cli/market` | Market Index value signals, movement stats, and metadata trends |
|
|
112
117
|
| `@purveyors/cli/inventory` | Green coffee inventory operations |
|
|
113
118
|
| `@purveyors/cli/roast` | Roast profile operations |
|
|
114
119
|
| `@purveyors/cli/sales` | Sales record operations |
|
|
@@ -130,14 +135,21 @@ Export discipline:
|
|
|
130
135
|
|
|
131
136
|
No pre-existing session is required for `auth`, `config`, `context`, or `manifest`.
|
|
132
137
|
|
|
133
|
-
|
|
138
|
+
Remote data commands require either a valid authenticated session or, for canonical
|
|
139
|
+
Parchment API surfaces, an owner-bound API key with the required scope:
|
|
134
140
|
|
|
135
141
|
- `catalog` requires the `viewer` role by default
|
|
136
142
|
- `catalog search` structured process filters require the `member` role under the current session-authenticated CLI path
|
|
143
|
+
- `market` has public teaser slices for `signals --summary`, unfiltered retail `stats`, and process/retail/month `metadata`; all filtered or non-public slices require Parchment Intelligence access enforced server-side
|
|
137
144
|
- `price-index`, `procurement`, `inventory`, `roast`, `sales`, and `tasting` require the `member` role under the session-authenticated CLI path
|
|
138
145
|
|
|
139
146
|
`purvey` uses Google OAuth through purveyors.io.
|
|
140
147
|
|
|
148
|
+
Set `PARCHMENT_API_KEY` (or `PURVEYORS_API_KEY`) to authenticate SDK-backed catalog,
|
|
149
|
+
inventory, tasting-read, market, price-index, and procurement operations without using
|
|
150
|
+
the stored session JWT. API-key credentials take precedence. Roast, sales, and
|
|
151
|
+
`tasting rate` still use the session-backed migration path in this release.
|
|
152
|
+
|
|
141
153
|
Interactive login:
|
|
142
154
|
|
|
143
155
|
```bash
|
|
@@ -178,6 +190,8 @@ Credentials are stored at `~/.config/purvey/credentials.json`.
|
|
|
178
190
|
| `viewer` | `catalog search`, `catalog get`, `catalog stats`, excluding structured process filters |
|
|
179
191
|
| `member` | All viewer commands, `catalog similar`, structured process filters on `catalog search`, plus `price-index`, `procurement`, `inventory`, `roast`, `sales`, `tasting` under the session-authenticated CLI path |
|
|
180
192
|
|
|
193
|
+
Market Index teaser slices are public. Filtered `market signals`, origin/process/wholesale `market stats`, and non-public `market metadata` slices require Parchment Intelligence access; API-key and session-token denial is enforced by the canonical API.
|
|
194
|
+
|
|
181
195
|
`auth`, `config`, `context`, and `manifest` remain available without a pre-existing session.
|
|
182
196
|
|
|
183
197
|
Commands that require a higher role exit with code `3` on auth failure. That includes not being signed in, an expired session, or an insufficient role.
|
|
@@ -334,7 +348,6 @@ Notes:
|
|
|
334
348
|
|
|
335
349
|
- Fields: `supplier`, `country`, `processing_base_method`, `fermentation_type`, `drying_method`, `grade`, `wholesale`
|
|
336
350
|
- `--all`; use all visible catalog rows instead of the default stocked-only scope.
|
|
337
|
-
- `--sample-size <n>`; catalog rows to sample before counting, default `5000`, max `5000`
|
|
338
351
|
- `--limit <n>`; default `60`, max `100`
|
|
339
352
|
|
|
340
353
|
`catalog rank` options:
|
|
@@ -402,7 +415,7 @@ Notes:
|
|
|
402
415
|
- If you want proof output against an API-key deployment, set `PARCHMENT_API_KEY` or `PURVEYORS_API_KEY` before running the command. Otherwise the CLI uses your logged-in Purveyors session token.
|
|
403
416
|
- `catalog get` and `catalog similar` both take `coffee_catalog.catalog_id`.
|
|
404
417
|
- `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.
|
|
405
|
-
- `catalog facets` and `catalog rank` are generic agent/client intelligence surfaces.
|
|
418
|
+
- `catalog facets` and `catalog rank` are generic agent/client intelligence surfaces. Facet counts come from the canonical API across the selected stocked/all-visible scope; ranking responses include sample metadata so callers do not mistake sampled rarity for whole-catalog guarantees.
|
|
406
419
|
- Catalog intelligence responses include `meta.sample_limited`, `meta.sample_order`, `meta.truncated`, and rows-examined style metadata where relevant so agents can distinguish ranked samples from full supplier aggregates. Supplier aggregate responses also include `meta.rows_examined`.
|
|
407
420
|
- Supplier aggregate commands summarize catalog row counts, stocked counts, Purveyor Score coverage, average score, average confidence, price range, origin/process coverage, and representative top coffees with score qualifiers.
|
|
408
421
|
- `catalog similar` uses the beta canonical `/v1/catalog/{id}/similar` API contract, not the legacy direct RPC path.
|
|
@@ -440,6 +453,58 @@ Notes:
|
|
|
440
453
|
- Session-token use requires the local `member` role; API-key use is accepted via `PARCHMENT_API_KEY` or `PURVEYORS_API_KEY` and PPI entitlement is enforced server-side.
|
|
441
454
|
- `PARCHMENT_API_BASE_URL` overrides the canonical API base for this SDK-backed command. `PURVEYORS_BASE_URL` is also accepted for shared environment compatibility.
|
|
442
455
|
|
|
456
|
+
### market
|
|
457
|
+
|
|
458
|
+
- `purvey market signals`
|
|
459
|
+
- `purvey market stats`
|
|
460
|
+
- `purvey market metadata`
|
|
461
|
+
|
|
462
|
+
`market signals` filters:
|
|
463
|
+
|
|
464
|
+
- `--summary`; public counts-only teaser slice
|
|
465
|
+
- `--type <price_drop|below_market|value_quality>`; repeatable or comma-separated
|
|
466
|
+
- `--origin <origin>`
|
|
467
|
+
- `--process <method>`
|
|
468
|
+
- `--market <retail|wholesale|all>`
|
|
469
|
+
- `--min-discount <n>`
|
|
470
|
+
- `--min-score <n>`
|
|
471
|
+
- `--window <7d|30d>`
|
|
472
|
+
- `--limit <n>`
|
|
473
|
+
|
|
474
|
+
`market stats` filters:
|
|
475
|
+
|
|
476
|
+
- `--origin <origin>`
|
|
477
|
+
- `--process <method>`
|
|
478
|
+
- `--market <retail|wholesale|all>`
|
|
479
|
+
- `--window <7d|30d>`
|
|
480
|
+
- `--baseline-weeks <n>`; 8-52
|
|
481
|
+
|
|
482
|
+
`market metadata` filters:
|
|
483
|
+
|
|
484
|
+
- `--dimension <process|disclosure|score>`
|
|
485
|
+
- `--origin <origin>`
|
|
486
|
+
- `--market <retail|wholesale|all>`
|
|
487
|
+
- `--grain <week|month>`
|
|
488
|
+
- `--from <YYYY-MM-DD>`
|
|
489
|
+
- `--to <YYYY-MM-DD>`
|
|
490
|
+
|
|
491
|
+
Examples:
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
purvey market signals --summary --pretty
|
|
495
|
+
purvey market signals --type price_drop --origin "Ethiopia" --json
|
|
496
|
+
purvey market stats --pretty
|
|
497
|
+
purvey market metadata --dimension score --origin "Ethiopia" --grain month --json
|
|
498
|
+
PARCHMENT_API_KEY="$PURVEYORS_API_KEY" purvey market signals --market wholesale --json
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
Notes:
|
|
502
|
+
|
|
503
|
+
- `market` commands are backed by canonical Parchment API endpoints through `@purveyors/sdk`; the CLI does not compute Market Index intelligence locally.
|
|
504
|
+
- Public teaser slices: `signals --summary`, `stats` with no origin/process and `market=retail`, and `metadata` at dimension=process/no-origin/market=retail/grain=month.
|
|
505
|
+
- Any filtered or non-public market slice requires Parchment Intelligence access, enforced server-side for both API-key and session-token calls.
|
|
506
|
+
- `--json` returns the API response verbatim.
|
|
507
|
+
|
|
443
508
|
### procurement
|
|
444
509
|
|
|
445
510
|
- `purvey procurement list`
|
|
@@ -504,7 +569,6 @@ Notes:
|
|
|
504
569
|
|
|
505
570
|
`inventory delete <id>` options:
|
|
506
571
|
|
|
507
|
-
- `--force`; cascade dependent roasts and sales
|
|
508
572
|
- `--yes`; skip confirmation prompt
|
|
509
573
|
|
|
510
574
|
Examples:
|
|
@@ -519,9 +583,10 @@ purvey inventory delete 7 --yes
|
|
|
519
583
|
|
|
520
584
|
Notes:
|
|
521
585
|
|
|
522
|
-
- Inventory commands require an
|
|
586
|
+
- Inventory commands require a member session or an owner-bound API key with the
|
|
587
|
+
corresponding inventory scope.
|
|
523
588
|
- Inventory `id` is `green_coffee_inv.id`, not `catalog_id`.
|
|
524
|
-
- `inventory delete`
|
|
589
|
+
- `inventory delete` refuses to cascade. Delete dependent roasts or sales explicitly first.
|
|
525
590
|
|
|
526
591
|
### roast
|
|
527
592
|
|
|
@@ -617,7 +682,7 @@ Notes:
|
|
|
617
682
|
|
|
618
683
|
`sales list` filters:
|
|
619
684
|
|
|
620
|
-
- `--
|
|
685
|
+
- `--coffee-id <id>`; green coffee inventory ID
|
|
621
686
|
- `--date-start <YYYY-MM-DD>`
|
|
622
687
|
- `--date-end <YYYY-MM-DD>`
|
|
623
688
|
- `--buyer <name>`
|
|
@@ -699,9 +764,10 @@ purvey tasting rate --form
|
|
|
699
764
|
|
|
700
765
|
Notes:
|
|
701
766
|
|
|
702
|
-
- Tasting
|
|
767
|
+
- Tasting reads accept a member session or an owner-bound `tasting:read` API key.
|
|
703
768
|
- `tasting get` combines supplier notes with your own notes when available.
|
|
704
|
-
- `tasting rate` writes scores back to your inventory row
|
|
769
|
+
- `tasting rate` writes scores back to your inventory row through the remaining direct
|
|
770
|
+
Supabase path until the canonical tasting-write endpoint ships.
|
|
705
771
|
|
|
706
772
|
### config
|
|
707
773
|
|
|
@@ -814,7 +880,7 @@ Use the right ID for the right command.
|
|
|
814
880
|
|
|
815
881
|
- `catalog_id`: `coffee_catalog` rows; used by `catalog get`, `catalog similar`, `inventory add --catalog-id`, `tasting get`, `roast list --catalog-id`
|
|
816
882
|
- `inventory id`: `green_coffee_inv` rows; used by `inventory get/update/delete`, `roast --coffee-id`, `tasting rate`, `roast list --coffee-id`
|
|
817
|
-
- `roast_id`: `roast_data` rows; used by `roast get/delete`, `sales --roast-id`, `roast list --roast-id`
|
|
883
|
+
- `roast_id`: `roast_data` rows; used by `roast get/delete`, `sales record --roast-id`, `roast list --roast-id`
|
|
818
884
|
- `sales record` also supports resolving a roast from `inventory id` plus `--batch-name`; if that selector is ambiguous, use exact `roast_id`
|
|
819
885
|
- `sale id`: `coffee_sales` rows; used by `sales update/delete`
|
|
820
886
|
|
|
@@ -825,7 +891,7 @@ Use the right ID for the right command.
|
|
|
825
891
|
- `PURVEYORS_BASE_URL`: override the Purveyors web base URL
|
|
826
892
|
- `PURVEYORS_API_KEY`: API-key token used by API-backed catalog proof reads, paid-tier similarity reads, and SDK-backed Parchment commands when you want to call canonical API contracts without relying on the local OAuth session
|
|
827
893
|
- `PARCHMENT_API_KEY`: preferred API-key variable for SDK-backed Parchment commands; also accepted for API-backed proof and paid-tier similarity paths
|
|
828
|
-
- `PARCHMENT_API_BASE_URL`: override the SDK-backed Parchment API base URL for `price-index
|
|
894
|
+
- `PARCHMENT_API_BASE_URL`: override the SDK-backed Parchment API base URL for `market`, `price-index`, and `procurement` commands
|
|
829
895
|
- `PURVEY_DEBUG`: enable verbose error output
|
|
830
896
|
|
|
831
897
|
## For AI agents
|
|
@@ -858,10 +924,10 @@ Agent integration rules of thumb:
|
|
|
858
924
|
|
|
859
925
|
- Discover first with `purvey manifest`, then call the narrowest command or package subpath that fits the job.
|
|
860
926
|
- Use `purvey context` when a human-readable operator summary is useful before tool selection.
|
|
861
|
-
- Prefer OAuth session tokens for normal user workflows; use `PURVEYORS_API_KEY` or `PARCHMENT_API_KEY` only when you intentionally need an API-key-backed Parchment path such as catalog proof, paid-tier similarity, price-index, or procurement reads.
|
|
927
|
+
- Prefer OAuth session tokens for normal user workflows; use `PURVEYORS_API_KEY` or `PARCHMENT_API_KEY` only when you intentionally need an API-key-backed Parchment path such as catalog proof, paid-tier similarity, market intelligence, price-index, or procurement reads.
|
|
862
928
|
- Treat `--include-proof` as API output, not a local scoring feature. If a filter cannot round-trip through `/v1/catalog?include=proof`, the CLI rejects that invocation instead of returning misleading proof data.
|
|
863
929
|
- 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.
|
|
864
|
-
- Treat `price-index
|
|
930
|
+
- 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.
|
|
865
931
|
|
|
866
932
|
## Troubleshooting
|
|
867
933
|
|
|
@@ -894,7 +960,9 @@ purvey inventory list --limit 20 --offset 40
|
|
|
894
960
|
**`inventory delete` fails with dependency conflict**
|
|
895
961
|
|
|
896
962
|
```bash
|
|
897
|
-
purvey
|
|
963
|
+
purvey roast delete <roast-id> --yes
|
|
964
|
+
purvey sales delete <sale-id> --yes
|
|
965
|
+
purvey inventory delete 7 --yes
|
|
898
966
|
```
|
|
899
967
|
|
|
900
968
|
**Enable verbose error output**
|
|
@@ -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;
|
|
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,EAKpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAIrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAyDpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAyqB7C"}
|
package/dist/commands/catalog.js
CHANGED
|
@@ -1,26 +1,8 @@
|
|
|
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 { requireAuth } from '../lib/auth-guard.js';
|
|
5
4
|
import { searchCatalog, getCatalog, getCatalogStats, getCatalogSimilarity, listCatalogFacets, rankCatalog, catalogRankPremium, supplierList, supplierDetail, supplierRank, computeCatalogStats, sanitizeFilterValue, catalogSortFields, catalogFacetFields, catalogRankObjectives, catalogSimilarityModes, } from '../lib/catalog.js';
|
|
6
5
|
export { sanitizeFilterValue, computeCatalogStats };
|
|
7
|
-
function hasCatalogApiKeyEnv() {
|
|
8
|
-
return Boolean(process.env.PARCHMENT_API_KEY || process.env.PURVEYORS_API_KEY);
|
|
9
|
-
}
|
|
10
|
-
function createApiKeyOnlyCatalogClient() {
|
|
11
|
-
return {
|
|
12
|
-
auth: {
|
|
13
|
-
getSession: async () => ({ data: { session: null }, error: null }),
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
async function resolveCatalogReadClient(requiredRole, useApiKeyWithoutSession) {
|
|
18
|
-
if (useApiKeyWithoutSession && hasCatalogApiKeyEnv()) {
|
|
19
|
-
return createApiKeyOnlyCatalogClient();
|
|
20
|
-
}
|
|
21
|
-
const { supabase } = await requireAuth(requiredRole);
|
|
22
|
-
return supabase;
|
|
23
|
-
}
|
|
24
6
|
function parseFiniteNumberArg(rawValue, message) {
|
|
25
7
|
const trimmed = rawValue.trim();
|
|
26
8
|
if (trimmed.length === 0) {
|
|
@@ -176,15 +158,8 @@ Notes:
|
|
|
176
158
|
? parseNonNegativeIntegerArg(opts.offset, `Invalid --offset: "${opts.offset}". Must be a non-negative integer.`)
|
|
177
159
|
: undefined;
|
|
178
160
|
const limit = parsePositiveIntegerArg(opts.limit, `Invalid --limit: "${opts.limit}". Must be a positive integer.`);
|
|
179
|
-
const hasStructuredProcessFilters = opts.processingBaseMethod !== undefined ||
|
|
180
|
-
opts.fermentationType !== undefined ||
|
|
181
|
-
opts.processAdditive !== undefined ||
|
|
182
|
-
opts.processingDisclosureLevel !== undefined ||
|
|
183
|
-
opts.processingConfidenceMin !== undefined;
|
|
184
|
-
const requiredRole = hasStructuredProcessFilters ? 'member' : 'viewer';
|
|
185
161
|
const includeProof = opts.includeProof ? true : undefined;
|
|
186
|
-
const
|
|
187
|
-
const data = await searchCatalog(supabase, {
|
|
162
|
+
const data = await searchCatalog({
|
|
188
163
|
origin: opts.origin,
|
|
189
164
|
process: opts.process,
|
|
190
165
|
priceMin,
|
|
@@ -236,8 +211,7 @@ Notes:
|
|
|
236
211
|
const globalOpts = cmd.optsWithGlobals();
|
|
237
212
|
const catalogId = parsePositiveIntegerArg(id, `Invalid ID: "${id}". Please provide a numeric coffee_catalog ID.`);
|
|
238
213
|
const includeProof = opts.includeProof ? true : undefined;
|
|
239
|
-
const
|
|
240
|
-
const data = await getCatalog(supabase, catalogId, {
|
|
214
|
+
const data = await getCatalog(catalogId, {
|
|
241
215
|
includeProof,
|
|
242
216
|
});
|
|
243
217
|
outputData(data, globalOpts);
|
|
@@ -259,8 +233,7 @@ Notes:
|
|
|
259
233
|
`)
|
|
260
234
|
.action(withErrorHandling(async (_opts, cmd) => {
|
|
261
235
|
const globalOpts = cmd.optsWithGlobals();
|
|
262
|
-
const
|
|
263
|
-
const stats = await getCatalogStats(supabase);
|
|
236
|
+
const stats = await getCatalogStats();
|
|
264
237
|
outputData(stats, globalOpts);
|
|
265
238
|
}));
|
|
266
239
|
// ── catalog facets ───────────────────────────────────────────────────────
|
|
@@ -268,7 +241,6 @@ Notes:
|
|
|
268
241
|
.command('facets <field>')
|
|
269
242
|
.description('List distinct catalog facet values with counts')
|
|
270
243
|
.option('--all', 'Use all visible catalog rows instead of default stocked-only scope')
|
|
271
|
-
.option('--sample-size <n>', 'Catalog rows to sample before counting (1-5000)', '5000')
|
|
272
244
|
.option('--limit <n>', 'Maximum facet values to return (1-100)', '60')
|
|
273
245
|
.addHelpText('after', `
|
|
274
246
|
Examples:
|
|
@@ -282,7 +254,7 @@ Fields:
|
|
|
282
254
|
Notes:
|
|
283
255
|
Facet counts are computed from catalog rows visible to the current client.
|
|
284
256
|
By default only currently stocked catalog rows are included; use --all for all visible rows.
|
|
285
|
-
meta.stocked_only/scope, meta.rows_examined, and meta.truncated describe
|
|
257
|
+
meta.stocked_only/scope, meta.rows_examined, and meta.truncated describe the canonical counted scope.
|
|
286
258
|
Requires an authenticated viewer session.
|
|
287
259
|
`)
|
|
288
260
|
.action(withErrorHandling(async (field, opts, cmd) => {
|
|
@@ -293,11 +265,9 @@ Notes:
|
|
|
293
265
|
const input = {
|
|
294
266
|
field: field,
|
|
295
267
|
stockedOnly: opts.all ? false : true,
|
|
296
|
-
sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
|
|
297
268
|
limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 100),
|
|
298
269
|
};
|
|
299
|
-
const
|
|
300
|
-
const data = await listCatalogFacets(supabase, input);
|
|
270
|
+
const data = await listCatalogFacets(input);
|
|
301
271
|
outputData(data, globalOpts);
|
|
302
272
|
}));
|
|
303
273
|
// ── catalog rank ─────────────────────────────────────────────────────────
|
|
@@ -350,8 +320,7 @@ Notes:
|
|
|
350
320
|
sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
|
|
351
321
|
limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 50),
|
|
352
322
|
};
|
|
353
|
-
const
|
|
354
|
-
const data = await rankCatalog(supabase, input);
|
|
323
|
+
const data = await rankCatalog(input);
|
|
355
324
|
outputData(data, globalOpts);
|
|
356
325
|
}));
|
|
357
326
|
// ── catalog rank-premium ─────────────────────────────────────────────────
|
|
@@ -396,8 +365,7 @@ Notes:
|
|
|
396
365
|
sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
|
|
397
366
|
limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 50),
|
|
398
367
|
};
|
|
399
|
-
const
|
|
400
|
-
const data = await catalogRankPremium(supabase, input);
|
|
368
|
+
const data = await catalogRankPremium(input);
|
|
401
369
|
outputData(data, globalOpts);
|
|
402
370
|
}));
|
|
403
371
|
// ── catalog supplier aggregates ──────────────────────────────────────────
|
|
@@ -429,8 +397,7 @@ Notes:
|
|
|
429
397
|
sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
|
|
430
398
|
limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 100),
|
|
431
399
|
};
|
|
432
|
-
const
|
|
433
|
-
const data = await supplierList(supabase, input);
|
|
400
|
+
const data = await supplierList(input);
|
|
434
401
|
outputData(data, globalOpts);
|
|
435
402
|
}));
|
|
436
403
|
catalog
|
|
@@ -460,8 +427,7 @@ Notes:
|
|
|
460
427
|
topCoffees: parseBoundedPositiveIntegerArg(opts.topCoffees, '--top-coffees', 1, 25),
|
|
461
428
|
sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
|
|
462
429
|
};
|
|
463
|
-
const
|
|
464
|
-
const data = await supplierDetail(supabase, input);
|
|
430
|
+
const data = await supplierDetail(input);
|
|
465
431
|
outputData(data, globalOpts);
|
|
466
432
|
}));
|
|
467
433
|
catalog
|
|
@@ -492,8 +458,7 @@ Notes:
|
|
|
492
458
|
sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
|
|
493
459
|
limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 100),
|
|
494
460
|
};
|
|
495
|
-
const
|
|
496
|
-
const data = await supplierRank(supabase, input);
|
|
461
|
+
const data = await supplierRank(input);
|
|
497
462
|
outputData(data, globalOpts);
|
|
498
463
|
}));
|
|
499
464
|
// ── catalog similar <id> ──────────────────────────────────────────────────
|
|
@@ -539,8 +504,7 @@ Notes:
|
|
|
539
504
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --mode: "${mode}". Must be one of: ${catalogSimilarityModes.join(', ')}.`);
|
|
540
505
|
}
|
|
541
506
|
const stockedOnly = Boolean(opts.stockedOnly);
|
|
542
|
-
const
|
|
543
|
-
const response = await getCatalogSimilarity(supabase, {
|
|
507
|
+
const response = await getCatalogSimilarity({
|
|
544
508
|
coffee_id: coffeeId,
|
|
545
509
|
threshold,
|
|
546
510
|
limit,
|
|
@@ -1 +1 @@
|
|
|
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,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,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,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAEpD,SAAS,mBAAmB;IAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,6BAA6B;IACpC,OAAO;QACL,IAAI,EAAE;YACJ,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACnE;KAC2B,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,YAAiC,EACjC,uBAAgC;IAEhC,IAAI,uBAAuB,IAAI,mBAAmB,EAAE,EAAE,CAAC;QACrD,OAAO,6BAA6B,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC,CAAC;IACrD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,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,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAC7C,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,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,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,qDAAqD,CAAC;SAClE,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,qBAAqB,EAAE,2DAA2D,CAAC;SAC1F,MAAM,CAAC,eAAe,EAAE,yDAAyD,CAAC;SAClF,MAAM,CAAC,mBAAmB,EAAE,kEAAkE,CAAC;SAC/F,MAAM,CAAC,iBAAiB,EAAE,6DAA6D,CAAC;SACxF,MAAM,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;SAC/E,MAAM,CAAC,wBAAwB,EAAE,yCAAyC,CAAC;SAC3E,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,CAAC,aAAa,EAAE,2BAA2B,EAAE,IAAI,CAAC;SACxD,MAAM,CAAC,iBAAiB,EAAE,4DAA4D,CAAC;SACvF,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDL,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,uBAAuB,CACrB,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,uBAAuB,CACnC,IAAI,CAAC,KAAe,EACpB,qBAAqB,IAAI,CAAC,KAAK,gCAAgC,CAChE,CAAC;QAEF,MAAM,2BAA2B,GAC/B,IAAI,CAAC,oBAAoB,KAAK,SAAS;YACvC,IAAI,CAAC,gBAAgB,KAAK,SAAS;YACnC,IAAI,CAAC,eAAe,KAAK,SAAS;YAClC,IAAI,CAAC,yBAAyB,KAAK,SAAS;YAC5C,IAAI,CAAC,uBAAuB,KAAK,SAAS,CAAC;QAC7C,MAAM,YAAY,GAAG,2BAA2B,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAErF,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE;YACzC,MAAM,EAAE,IAAI,CAAC,MAA4B;YACzC,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,QAAQ;YACR,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,MAA4B;YACzC,IAAI,EAAE,IAAI,CAAC,IAA0B;YACrC,QAAQ,EAAE,IAAI,CAAC,QAA8B;YAC7C,GAAG,EAAE,SAAS;YACd,OAAO,EAAE,IAAI,CAAC,OAA6B;YAC3C,YAAY,EAAE,IAAI,CAAC,YAAkC;YACrD,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,uBAAuB,CACvC,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,QAAQ,GAAG,MAAM,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE;YACjD,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,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC9C,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,mBAAmB,EAAE,iDAAiD,EAAE,MAAM,CAAC;SACtF,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,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,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEtD,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,mBAAmB,EAAE,gCAAgC,CAAC;SAC7D,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,QAAQ,EAAE,IAAI,CAAC,QAA8B;YAC7C,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,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEhD,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,mBAAmB,EAAE,gCAAgC,CAAC;SAC7D,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;;;;;;;;;;;CAWL,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,QAAQ,EAAE,IAAI,CAAC,QAA8B;YAC7C,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,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEvD,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,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEjD,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,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEnD,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,CAAC,mBAAmB,EAAE,4CAA4C,EAAE,GAAG,CAAC;SAC9E,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,uBAAuB,CACjC,IAAI,CAAC,UAAoB,EACzB,2BAA2B,IAAI,CAAC,UAAU,gCAAgC,CAC3E;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,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAEjD,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,uBAAuB,CACtC,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,uBAAuB,CACnC,IAAI,CAAC,KAAe,EACpB,qBAAqB,IAAI,CAAC,KAAK,gCAAgC,CAChE,CAAC;QACF,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,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,QAAQ,EAAE;YACpD,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
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAKhF,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,
|
|
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;AAKhF,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CA2X/C"}
|
|
@@ -2,7 +2,7 @@ import { Command } from 'commander';
|
|
|
2
2
|
import * as p from '@clack/prompts';
|
|
3
3
|
import { getConfigValue } from '../lib/config.js';
|
|
4
4
|
import { outputData, info, success } from '../lib/output.js';
|
|
5
|
-
import { withErrorHandling, PrvrsError } from '../lib/errors.js';
|
|
5
|
+
import { withErrorHandling, AuthError, PrvrsError } from '../lib/errors.js';
|
|
6
6
|
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';
|
|
@@ -46,7 +46,6 @@ Notes:
|
|
|
46
46
|
`)
|
|
47
47
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
48
48
|
const globalOpts = cmd.optsWithGlobals();
|
|
49
|
-
const { supabase, userId } = await requireAuth('member');
|
|
50
49
|
let catalogId;
|
|
51
50
|
if (opts.catalogId !== undefined) {
|
|
52
51
|
catalogId = parseInt(opts.catalogId, 10);
|
|
@@ -55,7 +54,7 @@ Notes:
|
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
const offsetVal = parseInt(opts.offset, 10);
|
|
58
|
-
const data = await listInventory(
|
|
57
|
+
const data = await listInventory({
|
|
59
58
|
stocked_only: opts.stocked ? true : undefined,
|
|
60
59
|
limit: Math.max(1, parseInt(opts.limit, 10)),
|
|
61
60
|
offset: isNaN(offsetVal) || offsetVal < 0 ? 0 : offsetVal,
|
|
@@ -86,8 +85,7 @@ Notes:
|
|
|
86
85
|
`)
|
|
87
86
|
.action(withErrorHandling(async (id, _opts, cmd) => {
|
|
88
87
|
const globalOpts = cmd.optsWithGlobals();
|
|
89
|
-
const
|
|
90
|
-
const data = await getInventory(supabase, userId, parseInt(id, 10));
|
|
88
|
+
const data = await getInventory(parseInt(id, 10));
|
|
91
89
|
outputData(data, globalOpts);
|
|
92
90
|
}));
|
|
93
91
|
// ── inventory add ─────────────────────────────────────────────────────────
|
|
@@ -115,12 +113,12 @@ Required flags: --catalog-id, --qty
|
|
|
115
113
|
`)
|
|
116
114
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
117
115
|
const globalOpts = cmd.optsWithGlobals();
|
|
118
|
-
const { supabase, userId } = await requireAuth('member');
|
|
119
116
|
// ── Interactive form mode ──────────────────────────────────────────
|
|
120
117
|
// Auto-enter form mode if config form-mode is true and required args are missing
|
|
121
118
|
const formMode = opts.form ||
|
|
122
119
|
(!(opts.catalogId && opts.qty) && (await getConfigValue('form-mode')) === 'true');
|
|
123
120
|
if (formMode) {
|
|
121
|
+
const { supabase } = await requireAuth('member');
|
|
124
122
|
p.intro('Add Bean to Inventory');
|
|
125
123
|
const catalogItem = await pickCatalogItem(supabase);
|
|
126
124
|
const qtyRaw = await p.text({
|
|
@@ -156,13 +154,17 @@ Required flags: --catalog-id, --qty
|
|
|
156
154
|
const qtyStr = String(qtyRaw);
|
|
157
155
|
const spin = p.spinner();
|
|
158
156
|
spin.start('Adding bean to inventory...');
|
|
159
|
-
const data = await
|
|
157
|
+
const { data: { session: formSession }, } = await supabase.auth.getSession();
|
|
158
|
+
if (!formSession?.access_token) {
|
|
159
|
+
throw new AuthError('Session expired mid-form. Run `purvey auth login` and retry.');
|
|
160
|
+
}
|
|
161
|
+
const data = await addInventory({
|
|
160
162
|
catalogId: catalogItem.id,
|
|
161
163
|
qty: parseFloat(qtyStr),
|
|
162
164
|
cost,
|
|
163
165
|
notes,
|
|
164
166
|
purchaseDate: todayIso(),
|
|
165
|
-
});
|
|
167
|
+
}, formSession.access_token);
|
|
166
168
|
spin.stop('Done');
|
|
167
169
|
p.outro(`Bean added! Inventory item #${data.id} created.`);
|
|
168
170
|
outputData(data, globalOpts);
|
|
@@ -191,7 +193,7 @@ Required flags: --catalog-id, --qty
|
|
|
191
193
|
if (taxShip !== undefined && isNaN(taxShip)) {
|
|
192
194
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --tax-ship: "${opts.taxShip}".`);
|
|
193
195
|
}
|
|
194
|
-
const data = await addInventory(
|
|
196
|
+
const data = await addInventory({
|
|
195
197
|
catalogId,
|
|
196
198
|
qty,
|
|
197
199
|
cost,
|
|
@@ -225,7 +227,6 @@ Notes:
|
|
|
225
227
|
`)
|
|
226
228
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
227
229
|
const globalOpts = cmd.optsWithGlobals();
|
|
228
|
-
const { supabase, userId } = await requireAuth('member');
|
|
229
230
|
const itemId = parseInt(id, 10);
|
|
230
231
|
if (isNaN(itemId)) {
|
|
231
232
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
|
|
@@ -264,7 +265,7 @@ Notes:
|
|
|
264
265
|
stocked === undefined) {
|
|
265
266
|
throw new PrvrsError('INVALID_ARGUMENT', 'No update fields provided. Pass at least one of: --qty, --cost, --tax-ship, --notes, --stocked.');
|
|
266
267
|
}
|
|
267
|
-
const data = await updateInventory(
|
|
268
|
+
const data = await updateInventory(itemId, {
|
|
268
269
|
qty,
|
|
269
270
|
cost,
|
|
270
271
|
taxShip,
|
|
@@ -279,61 +280,33 @@ Notes:
|
|
|
279
280
|
.command('delete <id>')
|
|
280
281
|
.description('Delete an inventory item (must be yours)')
|
|
281
282
|
.option('-y, --yes', 'Skip confirmation prompt')
|
|
282
|
-
.option('-f, --force', 'Cascade delete dependent roast profiles and sales records')
|
|
283
283
|
.addHelpText('after', `
|
|
284
284
|
Examples:
|
|
285
285
|
purvey inventory delete 7 # prompts for confirmation
|
|
286
286
|
purvey inventory delete 7 --yes # skip confirmation (use in scripts)
|
|
287
|
-
purvey inventory delete 7 --force # cascade delete dependents, prompts for confirmation
|
|
288
|
-
purvey inventory delete 7 --force --yes # cascade delete, no prompt (agent/script use)
|
|
289
287
|
|
|
290
288
|
Notes:
|
|
291
289
|
Permanently deletes the inventory row. Cannot be undone.
|
|
292
|
-
If the item has dependent roast profiles or sales records, the
|
|
293
|
-
|
|
294
|
-
With --force, all dependent sales and roast profiles are deleted first, then
|
|
295
|
-
the inventory item is removed. A summary of what was deleted is shown.
|
|
290
|
+
If the item has dependent roast profiles or sales records, the canonical API
|
|
291
|
+
returns DEPENDENCY_CONFLICT. Delete those records explicitly before retrying.
|
|
296
292
|
Row-level security: only items belonging to you can be deleted.
|
|
297
293
|
Requires authentication (member role).
|
|
298
294
|
`)
|
|
299
295
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
300
296
|
const globalOpts = cmd.optsWithGlobals();
|
|
301
|
-
const { supabase, userId } = await requireAuth('member');
|
|
302
297
|
const itemId = parseInt(id, 10);
|
|
303
298
|
if (isNaN(itemId)) {
|
|
304
299
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
|
|
305
300
|
}
|
|
306
|
-
|
|
307
|
-
// When --force is requested, show a pre-delete dependency summary if
|
|
308
|
-
// the user hasn't suppressed prompts via --yes.
|
|
309
|
-
if (force && !opts.yes) {
|
|
310
|
-
const ok = await confirm(`Delete inventory item ${itemId} and all its dependent roast profiles and sales records?`);
|
|
311
|
-
if (!ok) {
|
|
312
|
-
info('Aborted.');
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
else if (!opts.yes) {
|
|
301
|
+
if (!opts.yes) {
|
|
317
302
|
const ok = await confirm(`Delete inventory item ${itemId}?`);
|
|
318
303
|
if (!ok) {
|
|
319
304
|
info('Aborted.');
|
|
320
305
|
return;
|
|
321
306
|
}
|
|
322
307
|
}
|
|
323
|
-
const result = await deleteInventory(
|
|
324
|
-
|
|
325
|
-
});
|
|
326
|
-
if (force && (result.deletedRoasts > 0 || result.deletedSales > 0)) {
|
|
327
|
-
const parts = [];
|
|
328
|
-
if (result.deletedRoasts > 0)
|
|
329
|
-
parts.push(`${result.deletedRoasts} roast profile${result.deletedRoasts === 1 ? '' : 's'}`);
|
|
330
|
-
if (result.deletedSales > 0)
|
|
331
|
-
parts.push(`${result.deletedSales} sale record${result.deletedSales === 1 ? '' : 's'}`);
|
|
332
|
-
success(`Inventory item ${itemId} deleted (also removed: ${parts.join(', ')}).`);
|
|
333
|
-
}
|
|
334
|
-
else {
|
|
335
|
-
success(`Inventory item ${itemId} deleted.`);
|
|
336
|
-
}
|
|
308
|
+
const result = await deleteInventory(itemId);
|
|
309
|
+
success(`Inventory item ${itemId} deleted.`);
|
|
337
310
|
if (globalOpts.json || globalOpts.pretty) {
|
|
338
311
|
outputData(result, globalOpts);
|
|
339
312
|
}
|