@rankwrangler/http-client 0.11.0 → 0.13.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 CHANGED
@@ -48,8 +48,7 @@ screen compact Products with market metrics. `keyword.results` preserves dated e
48
48
  evidence and can wait for collection under the existing 24-hour reuse policy.
49
49
 
50
50
  Product `get` returns the current Product. `getMany` returns basic listing data, and `history`
51
- returns compact rank and price series. Brand Analytics keyword `get`, `search`, and `history`
52
- remain separate from observed search results. Retryable `TIMEOUT` errors preserve retry hints.
51
+ returns compact rank and price series. Keyword `get` and `search` read the stored keyword directory, separately from observed search results. Retryable `TIMEOUT` errors preserve retry hints.
53
52
 
54
53
  ## Types
55
54
 
@@ -58,7 +57,7 @@ import type { PublicRouterInputs, PublicRouterOutputs } from '@rankwrangler/http
58
57
 
59
58
  type ProductGetInput = PublicRouterInputs['product']['get'];
60
59
  type ProductSearchOutput = PublicRouterOutputs['product']['search'];
61
- type KeywordHistoryOutput = PublicRouterOutputs['keyword']['history'];
60
+ type KeywordSearchOutput = PublicRouterOutputs['keyword']['search'];
62
61
  ```
63
62
 
64
63
  When the public router changes, regenerate and build the declarations:
@@ -198,82 +198,17 @@ export interface ContextRequest {
198
198
  host?: string;
199
199
  };
200
200
  }
201
- declare const TOP_SEARCH_TERMS_REPORT_PERIODS: readonly [
202
- "DAY",
203
- "WEEK"
201
+ declare const keywordStages: readonly [
202
+ "graduated",
203
+ "trial",
204
+ "dropped",
205
+ "untracked"
204
206
  ];
205
- declare const TOP_SEARCH_TERMS_REFRESH_TRIGGERS: readonly [
206
- "requested",
207
- "automatic"
207
+ declare const keywordFreshness: readonly [
208
+ "live",
209
+ "needsSync",
210
+ "syncing"
208
211
  ];
209
- export type TopSearchTermsReportPeriod = (typeof TOP_SEARCH_TERMS_REPORT_PERIODS)[number];
210
- export type TopSearchTermsRefreshTrigger = (typeof TOP_SEARCH_TERMS_REFRESH_TRIGGERS)[number];
211
- export type SearchTermsTrendDelta = {
212
- rankDelta: number | null;
213
- clickShareDelta: number | null;
214
- conversionShareDelta: number | null;
215
- };
216
- export type SearchTermsTrendDeltas = {
217
- d1: SearchTermsTrendDelta;
218
- d7: SearchTermsTrendDelta;
219
- d30: SearchTermsTrendDelta;
220
- };
221
- export interface KeywordEvidence {
222
- searchFrequencyRank: number;
223
- clickShareTop3: number;
224
- conversionShareTop3: number;
225
- topRowsCount: number;
226
- isMerchRelevant: boolean;
227
- merchReason: string;
228
- }
229
- export interface KeywordCurrent {
230
- keyword: string;
231
- marketplaceId: string;
232
- reportPeriod: TopSearchTermsReportPeriod;
233
- dataStartDate: string;
234
- dataEndDate: string;
235
- observedDate: string;
236
- fetchedAt: string;
237
- trigger: TopSearchTermsRefreshTrigger;
238
- evidence: KeywordEvidence;
239
- }
240
- export interface KeywordSearchItem extends KeywordEvidence {
241
- keyword: string;
242
- observedDate: string;
243
- trigger: TopSearchTermsRefreshTrigger;
244
- }
245
- export interface KeywordSearchSummary {
246
- marketplaceId: string;
247
- reportPeriod: TopSearchTermsReportPeriod;
248
- dataStartDate: string | null;
249
- dataEndDate: string | null;
250
- observedDate: string | null;
251
- fetchedAt: string | null;
252
- totalFiltered: number;
253
- }
254
- export interface KeywordSearchResponse {
255
- status: "ready" | "empty";
256
- items: KeywordSearchItem[];
257
- nextCursor: number | null;
258
- summary: KeywordSearchSummary;
259
- }
260
- export interface KeywordHistoryPoint {
261
- observedDate: string;
262
- searchFrequencyRank: number;
263
- clickShareTop3: number;
264
- conversionShareTop3: number;
265
- trigger: TopSearchTermsRefreshTrigger;
266
- }
267
- export interface KeywordHistoryResponse {
268
- keyword: string;
269
- marketplaceId: string;
270
- reportPeriod: TopSearchTermsReportPeriod;
271
- rangeDays: number;
272
- status: "ready" | "empty";
273
- latestObservedDate: string | null;
274
- points: KeywordHistoryPoint[];
275
- deltas: SearchTermsTrendDeltas;
276
- }
277
212
  export type PublicCutoutThumbnail = {
278
213
  status: "available";
279
214
  url: string;
@@ -505,15 +440,27 @@ export declare const publicAppRouter: import("@trpc/server").TRPCBuiltRouter<{
505
440
  get: import("@trpc/server").TRPCQueryProcedure<{
506
441
  input: {
507
442
  keyword: string;
508
- dataEndDate?: string | undefined;
509
- dataStartDate?: string | undefined;
510
- marketplaceId?: "ATVPDKIKX0DER" | undefined;
511
- reportPeriod?: "DAY" | "WEEK" | undefined;
512
443
  };
513
444
  output: {
514
445
  keyword: string;
515
- status: "ready" | "empty";
516
- current: KeywordCurrent | null;
446
+ data: {
447
+ createdAt: string;
448
+ lastCheckedAt: string | null;
449
+ nextCheckAt: string | null;
450
+ id: string;
451
+ queryId: string;
452
+ term: string;
453
+ stage: (typeof keywordStages)[number];
454
+ freshness: (typeof keywordFreshness)[number] | null;
455
+ retryScheduled: boolean;
456
+ heat: string;
457
+ score: number | null;
458
+ searchFrequencyRank: number | null;
459
+ sources: string[];
460
+ products: number;
461
+ merch: number;
462
+ intervalDays: number | null;
463
+ };
517
464
  };
518
465
  meta: object;
519
466
  }>;
@@ -525,30 +472,61 @@ export declare const publicAppRouter: import("@trpc/server").TRPCBuiltRouter<{
525
472
  output: KeywordResults;
526
473
  meta: object;
527
474
  }>;
528
- history: import("@trpc/server").TRPCQueryProcedure<{
529
- input: {
530
- keyword: string;
531
- marketplaceId?: "ATVPDKIKX0DER" | undefined;
532
- rangeDays?: number | undefined;
533
- reportPeriod?: "DAY" | "WEEK" | undefined;
534
- };
535
- output: KeywordHistoryResponse;
536
- meta: object;
537
- }>;
538
475
  search: import("@trpc/server").TRPCQueryProcedure<{
539
476
  input: {
540
477
  text: string;
541
- cursor?: number | undefined;
478
+ freshness?: "live" | "needsSync" | "syncing" | "all" | undefined;
479
+ sort?: "work" | "newest" | undefined;
480
+ stage?: "trial" | "graduated" | "dropped" | "untracked" | "all" | undefined;
542
481
  limit?: number | undefined;
543
- maxRank?: number | undefined;
544
- merchOnly?: boolean | undefined;
545
- minRank?: number | undefined;
546
- dataEndDate?: string | undefined;
547
- dataStartDate?: string | undefined;
548
- marketplaceId?: "ATVPDKIKX0DER" | undefined;
549
- reportPeriod?: "DAY" | "WEEK" | undefined;
482
+ heat?: "unrated" | "hot" | "warm" | "cold" | "all" | undefined;
483
+ cursor?: {
484
+ key: [
485
+ number,
486
+ number,
487
+ number,
488
+ number,
489
+ number,
490
+ number,
491
+ string
492
+ ];
493
+ asOf: string;
494
+ sort: "work" | "newest";
495
+ } | undefined;
496
+ };
497
+ output: {
498
+ items: {
499
+ createdAt: string;
500
+ lastCheckedAt: string | null;
501
+ nextCheckAt: string | null;
502
+ id: string;
503
+ queryId: string;
504
+ term: string;
505
+ stage: (typeof keywordStages)[number];
506
+ freshness: (typeof keywordFreshness)[number] | null;
507
+ retryScheduled: boolean;
508
+ heat: string;
509
+ score: number | null;
510
+ searchFrequencyRank: number | null;
511
+ sources: string[];
512
+ products: number;
513
+ merch: number;
514
+ intervalDays: number | null;
515
+ }[];
516
+ nextCursor: {
517
+ sort: "fresh" | "work" | "newest" | "score" | "medianBsr" | "merch";
518
+ asOf: string;
519
+ key: [
520
+ number,
521
+ number,
522
+ number,
523
+ number,
524
+ number,
525
+ number,
526
+ string
527
+ ];
528
+ } | null;
550
529
  };
551
- output: KeywordSearchResponse;
552
530
  meta: object;
553
531
  }>;
554
532
  }>>;
@@ -599,7 +577,7 @@ export declare const publicAppRouter: import("@trpc/server").TRPCBuiltRouter<{
599
577
  input: {
600
578
  marketplaceId: string;
601
579
  asin: string;
602
- bucket?: "auto" | "day" | "week" | "month" | undefined;
580
+ bucket?: "week" | "day" | "auto" | "month" | undefined;
603
581
  days?: unknown;
604
582
  endAt?: unknown;
605
583
  limit?: unknown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rankwrangler/http-client",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "Typed tRPC client for RankWrangler",
5
5
  "repository": {
6
6
  "type": "git",