scavio 0.28.1 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -4873,8 +4873,14 @@ interface HebSearchOptions {
4873
4873
  query: string;
4874
4874
  /** Results page, 1-based (1-100). */
4875
4875
  page?: number;
4876
- /** Results per page (1-60; server default 30). */
4876
+ /** Results per page (1-60; server default 60). */
4877
4877
  page_size?: number;
4878
+ /**
4879
+ * HEB store number from stores() (field store_number), e.g. "441". Prices,
4880
+ * stock, aisle location and assortment come from that store, echoed in
4881
+ * data.store. US only. Omit for HEB's default store.
4882
+ */
4883
+ store_id?: string | number;
4878
4884
  [key: string]: unknown;
4879
4885
  }
4880
4886
  interface HebProductOptions {
@@ -4884,10 +4890,19 @@ interface HebProductOptions {
4884
4890
  * Preferred over slug + product_id.
4885
4891
  */
4886
4892
  product_url?: string;
4887
- /** HEB product id (numeric id at the end of a product URL). Requires slug. */
4893
+ /**
4894
+ * HEB product id (numeric id at the end of a product URL). Requires slug,
4895
+ * unless store_id is set.
4896
+ */
4888
4897
  product_id?: string;
4889
- /** Product slug (readable part of the URL). Required with product_id. */
4898
+ /** Product slug (readable part of the URL). Required with product_id, unless store_id is set. */
4890
4899
  slug?: string;
4900
+ /**
4901
+ * HEB store number from stores() (field store_number), e.g. "441". Price,
4902
+ * stock and aisle location come from that store, echoed in data.store. US
4903
+ * only. Omit for HEB's default store.
4904
+ */
4905
+ store_id?: string | number;
4891
4906
  [key: string]: unknown;
4892
4907
  }
4893
4908
  interface HebStoresOptions {
@@ -4903,7 +4918,7 @@ declare class HebNamespace {
4903
4918
  /**
4904
4919
  * Search HEB grocery products by keyword: price (cents), sale status, unit
4905
4920
  * price, size, UPC, stock, EBT/SNAP eligibility, aisle location and product
4906
- * URL.
4921
+ * URL. Pass store_id for one store's prices, stock and assortment.
4907
4922
  *
4908
4923
  * Costs 2 credits.
4909
4924
  */
@@ -4911,7 +4926,8 @@ declare class HebNamespace {
4911
4926
  /**
4912
4927
  * Full HEB product detail: nutrition facts, ingredients, description, images,
4913
4928
  * similar products, coupons, EBT/SNAP eligibility and breadcrumbs. Pass
4914
- * product_url (from search()) or slug + product_id.
4929
+ * product_url (from search()) or slug + product_id, or product_id alone
4930
+ * with store_id.
4915
4931
  *
4916
4932
  * Costs 2 credits.
4917
4933
  */
@@ -5011,6 +5027,109 @@ declare class DecathlonNamespace {
5011
5027
  product(options: DecathlonProductOptions): Promise<Record<string, unknown>>;
5012
5028
  }
5013
5029
 
5030
+ interface TotalWineSearchOptions {
5031
+ /** Search keywords (1-200 characters). */
5032
+ query: string;
5033
+ /** Total Wine store number from stores(), e.g. "503". */
5034
+ store_id: string;
5035
+ /** Results page, 1-based (1-50). 24 results per page. */
5036
+ page?: number;
5037
+ [key: string]: unknown;
5038
+ }
5039
+ interface TotalWineProductOptions {
5040
+ /** Numeric product id from search() or the URL's /p/<id>, e.g. "96260175". */
5041
+ product_id?: string;
5042
+ /** Total Wine product URL ending in /p/<id>. */
5043
+ product_url?: string;
5044
+ /** Total Wine store number from stores(), e.g. "503". */
5045
+ store_id: string;
5046
+ [key: string]: unknown;
5047
+ }
5048
+ interface TotalWineStoresOptions {
5049
+ /** ZIP code, city, or "city, state", e.g. "78801". */
5050
+ query: string;
5051
+ /** Radius in miles (1-200). Defaults to 50. */
5052
+ radius?: number;
5053
+ [key: string]: unknown;
5054
+ }
5055
+ declare class TotalWineNamespace {
5056
+ private client;
5057
+ constructor(client: Scavio);
5058
+ /**
5059
+ * Search Total Wine at one store: that store's price (cents), units in
5060
+ * stock, purchase limit, aisle, size, rating and pickup/delivery/shipping
5061
+ * availability. When the store carries none of the matches, products is
5062
+ * empty and searched_all_stores is true.
5063
+ *
5064
+ * Costs 2 credits.
5065
+ */
5066
+ search(options: TotalWineSearchOptions): Promise<Record<string, unknown>>;
5067
+ /**
5068
+ * One Total Wine product at one store: price (cents), units in stock, aisle,
5069
+ * bay, shelf, last restock date, ABV, taste profile, characteristics and
5070
+ * breadcrumbs. Pass product_id or product_url.
5071
+ *
5072
+ * Costs 2 credits.
5073
+ */
5074
+ product(options: TotalWineProductOptions): Promise<Record<string, unknown>>;
5075
+ /**
5076
+ * Total Wine stores near a ZIP code or city, nearest first: store_id,
5077
+ * address, phone, coordinates, distance in miles and delivery availability.
5078
+ *
5079
+ * Costs 2 credits.
5080
+ */
5081
+ stores(options: TotalWineStoresOptions): Promise<Record<string, unknown>>;
5082
+ }
5083
+
5084
+ type SpecsRegion = "austin" | "corpus-christi" | "dallas" | "el-paso" | "fort-worth" | "houston" | "san-antonio";
5085
+ interface SpecsSearchOptions {
5086
+ /** Search keywords (1-200 characters). */
5087
+ query: string;
5088
+ /** Results page, 1-based (1-50). 24 results per page. */
5089
+ page?: number;
5090
+ [key: string]: unknown;
5091
+ }
5092
+ interface SpecsProductOptions {
5093
+ /** Product slug from search(), e.g. "titos-texas-vodka-5". */
5094
+ slug?: string;
5095
+ /** Spec's product URL, https://specsonline.com/shop/<type>/<slug>/. */
5096
+ product_url?: string;
5097
+ /** Spec's store number from stores(), e.g. "169". Puts that store's price on top. */
5098
+ store_id?: string;
5099
+ [key: string]: unknown;
5100
+ }
5101
+ interface SpecsStoresOptions {
5102
+ /** Store region. */
5103
+ region: SpecsRegion;
5104
+ [key: string]: unknown;
5105
+ }
5106
+ declare class SpecsNamespace {
5107
+ private client;
5108
+ constructor(client: Scavio);
5109
+ /**
5110
+ * Search Spec's: online price (cents), case price and quantity, promo and
5111
+ * Keyclub flags, stock, size, SKU, UPC and slug.
5112
+ *
5113
+ * Costs 1 credit.
5114
+ */
5115
+ search(options: SpecsSearchOptions): Promise<Record<string, unknown>>;
5116
+ /**
5117
+ * One Spec's product with every store's price and stock in store_prices,
5118
+ * the online price, and ABV, origin, region, vintage and tasting notes.
5119
+ * Pass slug or product_url.
5120
+ *
5121
+ * Costs 1 credit.
5122
+ */
5123
+ product(options: SpecsProductOptions): Promise<Record<string, unknown>>;
5124
+ /**
5125
+ * Spec's stores in a Texas region: store_id, name, status, address, phone,
5126
+ * coordinates and opening hours.
5127
+ *
5128
+ * Costs 1 credit.
5129
+ */
5130
+ stores(options: SpecsStoresOptions): Promise<Record<string, unknown>>;
5131
+ }
5132
+
5014
5133
  type TrustpilotReviewsDateRange = "last30days" | "last3months" | "last6months" | "last12months";
5015
5134
  type TrustpilotReviewsSort = "recency" | "relevance";
5016
5135
  type TrustpilotCategorySort = "most_relevant" | "reviews_count" | "latest_review";
@@ -6131,6 +6250,8 @@ declare class Scavio extends ScavioCore {
6131
6250
  readonly heb: HebNamespace;
6132
6251
  readonly kroger: KrogerNamespace;
6133
6252
  readonly decathlon: DecathlonNamespace;
6253
+ readonly totalwine: TotalWineNamespace;
6254
+ readonly specs: SpecsNamespace;
6134
6255
  readonly trustpilot: TrustpilotNamespace;
6135
6256
  readonly chatgpt: ChatgptNamespace;
6136
6257
  readonly gemini: GeminiNamespace;
package/dist/index.d.ts CHANGED
@@ -4873,8 +4873,14 @@ interface HebSearchOptions {
4873
4873
  query: string;
4874
4874
  /** Results page, 1-based (1-100). */
4875
4875
  page?: number;
4876
- /** Results per page (1-60; server default 30). */
4876
+ /** Results per page (1-60; server default 60). */
4877
4877
  page_size?: number;
4878
+ /**
4879
+ * HEB store number from stores() (field store_number), e.g. "441". Prices,
4880
+ * stock, aisle location and assortment come from that store, echoed in
4881
+ * data.store. US only. Omit for HEB's default store.
4882
+ */
4883
+ store_id?: string | number;
4878
4884
  [key: string]: unknown;
4879
4885
  }
4880
4886
  interface HebProductOptions {
@@ -4884,10 +4890,19 @@ interface HebProductOptions {
4884
4890
  * Preferred over slug + product_id.
4885
4891
  */
4886
4892
  product_url?: string;
4887
- /** HEB product id (numeric id at the end of a product URL). Requires slug. */
4893
+ /**
4894
+ * HEB product id (numeric id at the end of a product URL). Requires slug,
4895
+ * unless store_id is set.
4896
+ */
4888
4897
  product_id?: string;
4889
- /** Product slug (readable part of the URL). Required with product_id. */
4898
+ /** Product slug (readable part of the URL). Required with product_id, unless store_id is set. */
4890
4899
  slug?: string;
4900
+ /**
4901
+ * HEB store number from stores() (field store_number), e.g. "441". Price,
4902
+ * stock and aisle location come from that store, echoed in data.store. US
4903
+ * only. Omit for HEB's default store.
4904
+ */
4905
+ store_id?: string | number;
4891
4906
  [key: string]: unknown;
4892
4907
  }
4893
4908
  interface HebStoresOptions {
@@ -4903,7 +4918,7 @@ declare class HebNamespace {
4903
4918
  /**
4904
4919
  * Search HEB grocery products by keyword: price (cents), sale status, unit
4905
4920
  * price, size, UPC, stock, EBT/SNAP eligibility, aisle location and product
4906
- * URL.
4921
+ * URL. Pass store_id for one store's prices, stock and assortment.
4907
4922
  *
4908
4923
  * Costs 2 credits.
4909
4924
  */
@@ -4911,7 +4926,8 @@ declare class HebNamespace {
4911
4926
  /**
4912
4927
  * Full HEB product detail: nutrition facts, ingredients, description, images,
4913
4928
  * similar products, coupons, EBT/SNAP eligibility and breadcrumbs. Pass
4914
- * product_url (from search()) or slug + product_id.
4929
+ * product_url (from search()) or slug + product_id, or product_id alone
4930
+ * with store_id.
4915
4931
  *
4916
4932
  * Costs 2 credits.
4917
4933
  */
@@ -5011,6 +5027,109 @@ declare class DecathlonNamespace {
5011
5027
  product(options: DecathlonProductOptions): Promise<Record<string, unknown>>;
5012
5028
  }
5013
5029
 
5030
+ interface TotalWineSearchOptions {
5031
+ /** Search keywords (1-200 characters). */
5032
+ query: string;
5033
+ /** Total Wine store number from stores(), e.g. "503". */
5034
+ store_id: string;
5035
+ /** Results page, 1-based (1-50). 24 results per page. */
5036
+ page?: number;
5037
+ [key: string]: unknown;
5038
+ }
5039
+ interface TotalWineProductOptions {
5040
+ /** Numeric product id from search() or the URL's /p/<id>, e.g. "96260175". */
5041
+ product_id?: string;
5042
+ /** Total Wine product URL ending in /p/<id>. */
5043
+ product_url?: string;
5044
+ /** Total Wine store number from stores(), e.g. "503". */
5045
+ store_id: string;
5046
+ [key: string]: unknown;
5047
+ }
5048
+ interface TotalWineStoresOptions {
5049
+ /** ZIP code, city, or "city, state", e.g. "78801". */
5050
+ query: string;
5051
+ /** Radius in miles (1-200). Defaults to 50. */
5052
+ radius?: number;
5053
+ [key: string]: unknown;
5054
+ }
5055
+ declare class TotalWineNamespace {
5056
+ private client;
5057
+ constructor(client: Scavio);
5058
+ /**
5059
+ * Search Total Wine at one store: that store's price (cents), units in
5060
+ * stock, purchase limit, aisle, size, rating and pickup/delivery/shipping
5061
+ * availability. When the store carries none of the matches, products is
5062
+ * empty and searched_all_stores is true.
5063
+ *
5064
+ * Costs 2 credits.
5065
+ */
5066
+ search(options: TotalWineSearchOptions): Promise<Record<string, unknown>>;
5067
+ /**
5068
+ * One Total Wine product at one store: price (cents), units in stock, aisle,
5069
+ * bay, shelf, last restock date, ABV, taste profile, characteristics and
5070
+ * breadcrumbs. Pass product_id or product_url.
5071
+ *
5072
+ * Costs 2 credits.
5073
+ */
5074
+ product(options: TotalWineProductOptions): Promise<Record<string, unknown>>;
5075
+ /**
5076
+ * Total Wine stores near a ZIP code or city, nearest first: store_id,
5077
+ * address, phone, coordinates, distance in miles and delivery availability.
5078
+ *
5079
+ * Costs 2 credits.
5080
+ */
5081
+ stores(options: TotalWineStoresOptions): Promise<Record<string, unknown>>;
5082
+ }
5083
+
5084
+ type SpecsRegion = "austin" | "corpus-christi" | "dallas" | "el-paso" | "fort-worth" | "houston" | "san-antonio";
5085
+ interface SpecsSearchOptions {
5086
+ /** Search keywords (1-200 characters). */
5087
+ query: string;
5088
+ /** Results page, 1-based (1-50). 24 results per page. */
5089
+ page?: number;
5090
+ [key: string]: unknown;
5091
+ }
5092
+ interface SpecsProductOptions {
5093
+ /** Product slug from search(), e.g. "titos-texas-vodka-5". */
5094
+ slug?: string;
5095
+ /** Spec's product URL, https://specsonline.com/shop/<type>/<slug>/. */
5096
+ product_url?: string;
5097
+ /** Spec's store number from stores(), e.g. "169". Puts that store's price on top. */
5098
+ store_id?: string;
5099
+ [key: string]: unknown;
5100
+ }
5101
+ interface SpecsStoresOptions {
5102
+ /** Store region. */
5103
+ region: SpecsRegion;
5104
+ [key: string]: unknown;
5105
+ }
5106
+ declare class SpecsNamespace {
5107
+ private client;
5108
+ constructor(client: Scavio);
5109
+ /**
5110
+ * Search Spec's: online price (cents), case price and quantity, promo and
5111
+ * Keyclub flags, stock, size, SKU, UPC and slug.
5112
+ *
5113
+ * Costs 1 credit.
5114
+ */
5115
+ search(options: SpecsSearchOptions): Promise<Record<string, unknown>>;
5116
+ /**
5117
+ * One Spec's product with every store's price and stock in store_prices,
5118
+ * the online price, and ABV, origin, region, vintage and tasting notes.
5119
+ * Pass slug or product_url.
5120
+ *
5121
+ * Costs 1 credit.
5122
+ */
5123
+ product(options: SpecsProductOptions): Promise<Record<string, unknown>>;
5124
+ /**
5125
+ * Spec's stores in a Texas region: store_id, name, status, address, phone,
5126
+ * coordinates and opening hours.
5127
+ *
5128
+ * Costs 1 credit.
5129
+ */
5130
+ stores(options: SpecsStoresOptions): Promise<Record<string, unknown>>;
5131
+ }
5132
+
5014
5133
  type TrustpilotReviewsDateRange = "last30days" | "last3months" | "last6months" | "last12months";
5015
5134
  type TrustpilotReviewsSort = "recency" | "relevance";
5016
5135
  type TrustpilotCategorySort = "most_relevant" | "reviews_count" | "latest_review";
@@ -6131,6 +6250,8 @@ declare class Scavio extends ScavioCore {
6131
6250
  readonly heb: HebNamespace;
6132
6251
  readonly kroger: KrogerNamespace;
6133
6252
  readonly decathlon: DecathlonNamespace;
6253
+ readonly totalwine: TotalWineNamespace;
6254
+ readonly specs: SpecsNamespace;
6134
6255
  readonly trustpilot: TrustpilotNamespace;
6135
6256
  readonly chatgpt: ChatgptNamespace;
6136
6257
  readonly gemini: GeminiNamespace;
package/dist/index.js CHANGED
@@ -145,7 +145,7 @@ function parseRetryAfter(header) {
145
145
  var BASE_URL = "https://api.scavio.dev";
146
146
  var DEFAULT_TIMEOUT = 3e4;
147
147
  var DEFAULT_MAX_RETRIES = 2;
148
- var SDK_VERSION = true ? "0.28.1" : "0.0.0";
148
+ var SDK_VERSION = true ? "0.29.0" : "0.0.0";
149
149
  var USER_AGENT = `scavio-js/${SDK_VERSION}`;
150
150
  function isServerRuntime() {
151
151
  const g = globalThis;
@@ -2675,7 +2675,7 @@ var HebNamespace = class {
2675
2675
  /**
2676
2676
  * Search HEB grocery products by keyword: price (cents), sale status, unit
2677
2677
  * price, size, UPC, stock, EBT/SNAP eligibility, aisle location and product
2678
- * URL.
2678
+ * URL. Pass store_id for one store's prices, stock and assortment.
2679
2679
  *
2680
2680
  * Costs 2 credits.
2681
2681
  */
@@ -2685,7 +2685,8 @@ var HebNamespace = class {
2685
2685
  /**
2686
2686
  * Full HEB product detail: nutrition facts, ingredients, description, images,
2687
2687
  * similar products, coupons, EBT/SNAP eligibility and breadcrumbs. Pass
2688
- * product_url (from search()) or slug + product_id.
2688
+ * product_url (from search()) or slug + product_id, or product_id alone
2689
+ * with store_id.
2689
2690
  *
2690
2691
  * Costs 2 credits.
2691
2692
  */
@@ -2762,6 +2763,80 @@ var DecathlonNamespace = class {
2762
2763
  }
2763
2764
  };
2764
2765
 
2766
+ // src/namespaces/totalwine.ts
2767
+ var TotalWineNamespace = class {
2768
+ constructor(client) {
2769
+ this.client = client;
2770
+ }
2771
+ client;
2772
+ /**
2773
+ * Search Total Wine at one store: that store's price (cents), units in
2774
+ * stock, purchase limit, aisle, size, rating and pickup/delivery/shipping
2775
+ * availability. When the store carries none of the matches, products is
2776
+ * empty and searched_all_stores is true.
2777
+ *
2778
+ * Costs 2 credits.
2779
+ */
2780
+ async search(options) {
2781
+ return this.client._post("/api/v1/totalwine/search", options);
2782
+ }
2783
+ /**
2784
+ * One Total Wine product at one store: price (cents), units in stock, aisle,
2785
+ * bay, shelf, last restock date, ABV, taste profile, characteristics and
2786
+ * breadcrumbs. Pass product_id or product_url.
2787
+ *
2788
+ * Costs 2 credits.
2789
+ */
2790
+ async product(options) {
2791
+ return this.client._post("/api/v1/totalwine/product", options);
2792
+ }
2793
+ /**
2794
+ * Total Wine stores near a ZIP code or city, nearest first: store_id,
2795
+ * address, phone, coordinates, distance in miles and delivery availability.
2796
+ *
2797
+ * Costs 2 credits.
2798
+ */
2799
+ async stores(options) {
2800
+ return this.client._post("/api/v1/totalwine/stores", options);
2801
+ }
2802
+ };
2803
+
2804
+ // src/namespaces/specs.ts
2805
+ var SpecsNamespace = class {
2806
+ constructor(client) {
2807
+ this.client = client;
2808
+ }
2809
+ client;
2810
+ /**
2811
+ * Search Spec's: online price (cents), case price and quantity, promo and
2812
+ * Keyclub flags, stock, size, SKU, UPC and slug.
2813
+ *
2814
+ * Costs 1 credit.
2815
+ */
2816
+ async search(options) {
2817
+ return this.client._post("/api/v1/specs/search", options);
2818
+ }
2819
+ /**
2820
+ * One Spec's product with every store's price and stock in store_prices,
2821
+ * the online price, and ABV, origin, region, vintage and tasting notes.
2822
+ * Pass slug or product_url.
2823
+ *
2824
+ * Costs 1 credit.
2825
+ */
2826
+ async product(options) {
2827
+ return this.client._post("/api/v1/specs/product", options);
2828
+ }
2829
+ /**
2830
+ * Spec's stores in a Texas region: store_id, name, status, address, phone,
2831
+ * coordinates and opening hours.
2832
+ *
2833
+ * Costs 1 credit.
2834
+ */
2835
+ async stores(options) {
2836
+ return this.client._post("/api/v1/specs/stores", options);
2837
+ }
2838
+ };
2839
+
2765
2840
  // src/namespaces/trustpilot.ts
2766
2841
  var TrustpilotNamespace = class {
2767
2842
  constructor(client) {
@@ -3276,6 +3351,8 @@ var Scavio = class extends ScavioCore {
3276
3351
  heb;
3277
3352
  kroger;
3278
3353
  decathlon;
3354
+ totalwine;
3355
+ specs;
3279
3356
  trustpilot;
3280
3357
  chatgpt;
3281
3358
  gemini;
@@ -3338,6 +3415,8 @@ var Scavio = class extends ScavioCore {
3338
3415
  this.heb = new HebNamespace(this);
3339
3416
  this.kroger = new KrogerNamespace(this);
3340
3417
  this.decathlon = new DecathlonNamespace(this);
3418
+ this.totalwine = new TotalWineNamespace(this);
3419
+ this.specs = new SpecsNamespace(this);
3341
3420
  this.trustpilot = new TrustpilotNamespace(this);
3342
3421
  this.chatgpt = new ChatgptNamespace(this);
3343
3422
  this.gemini = new GeminiNamespace(this);