@depict-ai/ui 3.0.1 → 3.0.2
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/ES10/index.cjs +23 -80
- package/ES10/index.d.ts +15 -81
- package/ES10/index.js +23 -80
- package/latest/index.cjs +23 -77
- package/latest/index.d.ts +15 -81
- package/latest/index.js +23 -77
- package/package.json +1 -1
- package/server/ES10/index.cjs +23 -80
- package/server/ES10/index.d.ts +15 -81
- package/server/ES10/index.js +23 -80
- package/server/latest/index.cjs +23 -77
- package/server/latest/index.d.ts +15 -81
- package/server/latest/index.js +23 -77
package/server/latest/index.cjs
CHANGED
|
@@ -77,7 +77,7 @@ $parcel$export(module.exports, "defaultColsAtSize", () => $a3280f0aad997933$expo
|
|
|
77
77
|
$parcel$export(module.exports, "defaultCategoryTitlePlugin", () => $a3280f0aad997933$export$7bf543b9d9be2c22);
|
|
78
78
|
$parcel$export(module.exports, "version", () => $b757f75811f3261f$export$83d89fbfd8236492);
|
|
79
79
|
/*! Depict.ai search and product listing SDK */
|
|
80
|
-
const $b757f75811f3261f$export$83d89fbfd8236492 = "3.0.
|
|
80
|
+
const $b757f75811f3261f$export$83d89fbfd8236492 = "3.0.2";
|
|
81
81
|
const $0f313083912e447a$var$_tmpl$ = ["<svg", ' xmlns="http://www.w3.org/2000/svg"', ' viewBox="0 0 14 26"><path d="M2 24.656c-.078 0-.156-.016-.234-.047s-.133-.066-.187-.129c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422l10.371-10.371L1.578 2.883c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422.258-.176.422-.176.305.059.422.176l10.805 10.793a.59.59 0 0 1 .176.434c0 .172-.059.305-.176.422L2.422 24.48a.42.42 0 0 1-.199.129.54.54 0 0 1-.223.047zm0 0" fill="#0f0f0f"></path></svg>'];
|
|
82
82
|
function $0f313083912e447a$export$8be2714ec7f169ee(props = {}) {
|
|
83
83
|
return $5vyXB$solidjsweb.ssr($0f313083912e447a$var$_tmpl$, $5vyXB$solidjsweb.ssrHydrationKey(), $5vyXB$solidjsweb.ssrAttribute("width", $5vyXB$solidjsweb.escape(props.width_, true) ?? 14, false) + $5vyXB$solidjsweb.ssrAttribute("height", $5vyXB$solidjsweb.escape(props.height_, true) ?? 26, false));
|
|
@@ -4475,100 +4475,54 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
4475
4475
|
};
|
|
4476
4476
|
#get_metadata;
|
|
4477
4477
|
#get_session_id;
|
|
4478
|
-
#guard_url_creator_length(expected, received) {
|
|
4479
|
-
if (expected.length !== received.length) {
|
|
4480
|
-
const e = new Error("displayTransformer returned wrong number of page URLs, got " + received.length + ", expected " + expected.length);
|
|
4481
|
-
queueMicrotask(() => {
|
|
4482
|
-
throw e;
|
|
4483
|
-
});
|
|
4484
|
-
throw e;
|
|
4485
|
-
}
|
|
4486
|
-
}
|
|
4487
4478
|
async #run_url_creator_for_suggest(merchant, market, response) {
|
|
4488
|
-
const page_url_creator = this.page_url_creator;
|
|
4489
4479
|
const category_transformer = this.display_transformers?.categories;
|
|
4490
|
-
if (!
|
|
4480
|
+
if (!category_transformer) return response;
|
|
4491
4481
|
// find category suggestions, run thing with them, and then replace them
|
|
4492
4482
|
const category_suggestions = response.suggestions.filter(suggestion => suggestion.type === "category");
|
|
4493
|
-
const
|
|
4483
|
+
const transformed_category_suggestions = await category_transformer({
|
|
4494
4484
|
market: market,
|
|
4495
4485
|
merchant: merchant,
|
|
4496
|
-
data: [...category_suggestions]
|
|
4497
|
-
...(page_url_creator ? {
|
|
4498
|
-
type: "categories"
|
|
4499
|
-
} : {})
|
|
4486
|
+
data: [...category_suggestions]
|
|
4500
4487
|
});
|
|
4501
|
-
|
|
4502
|
-
while (page_urls.length)
|
|
4503
|
-
// Copy over getters so we sneakily can make this reactive
|
|
4504
|
-
Object.defineProperties(category_suggestions.pop(), Object.getOwnPropertyDescriptors(page_urls.pop()));
|
|
4488
|
+
response.suggestions = transformed_category_suggestions;
|
|
4505
4489
|
return response;
|
|
4506
4490
|
}
|
|
4507
4491
|
async #run_display_transformers_for_rest(merchant, market, input_data) {
|
|
4508
4492
|
const {
|
|
4509
|
-
page_url_creator: page_url_creator,
|
|
4510
4493
|
display_transformers: display_transformers
|
|
4511
4494
|
} = this;
|
|
4512
|
-
if (!
|
|
4495
|
+
if (!display_transformers) return input_data;
|
|
4513
4496
|
const product_transformer = display_transformers?.products;
|
|
4514
4497
|
const category_transformer = display_transformers?.categories;
|
|
4515
4498
|
const content_result_transformer = display_transformers?.contentResults;
|
|
4516
4499
|
const displays = input_data.displays;
|
|
4517
|
-
const owner = $5vyXB$solidjs.getOwner();
|
|
4518
4500
|
const {
|
|
4519
|
-
breadcrumbs: breadcrumbs,
|
|
4520
|
-
quick_links: quick_links,
|
|
4521
4501
|
content_search_links: content_search_links
|
|
4522
4502
|
} = input_data;
|
|
4523
|
-
if (displays &&
|
|
4524
|
-
const
|
|
4503
|
+
if (displays && product_transformer) {
|
|
4504
|
+
const transformed_displays = await product_transformer({
|
|
4525
4505
|
merchant: merchant,
|
|
4526
4506
|
market: market,
|
|
4527
|
-
displays: [...
|
|
4528
|
-
...(page_url_creator ? {
|
|
4529
|
-
type: "products"
|
|
4530
|
-
} : {})
|
|
4507
|
+
displays: [...displays]
|
|
4531
4508
|
});
|
|
4532
|
-
|
|
4533
|
-
for (let i = 0; i < displays.length; i++) {
|
|
4534
|
-
const new_display_or_page_url = page_urls[i];
|
|
4535
|
-
const old_display = displays[i];
|
|
4536
|
-
if ("page_url" in new_display_or_page_url && Object.keys(new_display_or_page_url).length === 1) {
|
|
4537
|
-
// they only returned page_url, let's put it into the display
|
|
4538
|
-
const old_display_was_modern = ("variant_index" in old_display);
|
|
4539
|
-
if (old_display_was_modern) {
|
|
4540
|
-
const variant_displays = old_display.variant_displays;
|
|
4541
|
-
for (let i = 0; i < variant_displays.length; i++) variant_displays[i].page_url = new_display_or_page_url.page_url;
|
|
4542
|
-
} else old_display.page_url = new_display_or_page_url.page_url;
|
|
4543
|
-
} else
|
|
4544
|
-
// We got a whole new display, let's replace it
|
|
4545
|
-
displays[i] = new_display_or_page_url;
|
|
4546
|
-
}
|
|
4509
|
+
input_data.displays = transformed_displays;
|
|
4547
4510
|
}
|
|
4548
|
-
if (
|
|
4511
|
+
if (category_transformer) for (const key of ["breadcrumbs", "quick_links"]) {
|
|
4512
|
+
const category_display_array = input_data[key];
|
|
4549
4513
|
if (!category_display_array) continue;
|
|
4550
|
-
const
|
|
4514
|
+
const transformed_category_displays = await category_transformer({
|
|
4551
4515
|
merchant: merchant,
|
|
4552
4516
|
market: market,
|
|
4553
|
-
data: [...category_display_array]
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
} : {})
|
|
4557
|
-
}));
|
|
4558
|
-
this.#guard_url_creator_length(category_display_array, page_urls);
|
|
4559
|
-
for (let i = 0; i < category_display_array.length; i++)
|
|
4560
|
-
// Copy over getters so we sneakily can make this reactive
|
|
4561
|
-
Object.defineProperties(category_display_array[i], Object.getOwnPropertyDescriptors(page_urls[i]));
|
|
4562
|
-
}
|
|
4563
|
-
if (content_search_links?.length && content_result_transformer) {
|
|
4564
|
-
const result = await $5vyXB$solidjs.runWithOwner(owner, () => content_result_transformer({
|
|
4565
|
-
merchant: merchant,
|
|
4566
|
-
market: market,
|
|
4567
|
-
data: [...content_search_links]
|
|
4568
|
-
}));
|
|
4569
|
-
this.#guard_url_creator_length(content_search_links, result);
|
|
4570
|
-
input_data.content_search_links = result;
|
|
4517
|
+
data: [...category_display_array]
|
|
4518
|
+
});
|
|
4519
|
+
input_data[key] = transformed_category_displays;
|
|
4571
4520
|
}
|
|
4521
|
+
if (content_search_links?.length && content_result_transformer) input_data.content_search_links = await content_result_transformer({
|
|
4522
|
+
merchant: merchant,
|
|
4523
|
+
market: market,
|
|
4524
|
+
data: [...content_search_links]
|
|
4525
|
+
});
|
|
4572
4526
|
return input_data;
|
|
4573
4527
|
}
|
|
4574
4528
|
async #cached_request({
|
|
@@ -4580,7 +4534,6 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
4580
4534
|
}) {
|
|
4581
4535
|
const cache_obj = this.#get_cache_obj_for_endpoint(endpoint_);
|
|
4582
4536
|
const with_ids = this.#add_ids_to_request(input_req_);
|
|
4583
|
-
const owner = $5vyXB$solidjs.getOwner();
|
|
4584
4537
|
const metaData = await this.#get_metadata?.();
|
|
4585
4538
|
const request = metaData ? Object.assign(with_ids, {
|
|
4586
4539
|
metadata: metaData
|
|
@@ -4608,7 +4561,7 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
4608
4561
|
let result;
|
|
4609
4562
|
try {
|
|
4610
4563
|
const unmodified_result = await api_response.json();
|
|
4611
|
-
result = await
|
|
4564
|
+
result = await this.#run_display_transformers_for_rest(input_req_.merchant, input_req_.market, unmodified_result);
|
|
4612
4565
|
} catch (e) {
|
|
4613
4566
|
$5vyXB$depictaiutilishared.dwarn("displayTransformer or json decoding failed", e);
|
|
4614
4567
|
break return_successfully;
|
|
@@ -4639,17 +4592,14 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
4639
4592
|
const {
|
|
4640
4593
|
get_metadata: get_metadata,
|
|
4641
4594
|
get_session_id: get_session_id,
|
|
4642
|
-
page_url_creator: page_url_creator,
|
|
4643
4595
|
display_transformers: display_transformers
|
|
4644
4596
|
} = options ?? {};
|
|
4645
4597
|
this.#get_metadata = get_metadata;
|
|
4646
4598
|
this.#get_session_id = get_session_id;
|
|
4647
|
-
this.page_url_creator = page_url_creator;
|
|
4648
4599
|
this.display_transformers = display_transformers;
|
|
4649
4600
|
}
|
|
4650
4601
|
async suggest(input_req) {
|
|
4651
4602
|
const with_ids = this.#add_ids_to_request(input_req);
|
|
4652
|
-
const owner = $5vyXB$solidjs.getOwner();
|
|
4653
4603
|
const metaData = await this.#get_metadata?.();
|
|
4654
4604
|
const request = metaData ? Object.assign(with_ids, {
|
|
4655
4605
|
metadata: JSON.stringify(metaData)
|
|
@@ -4661,7 +4611,7 @@ class $e1d6c0f3d89d531c$export$e015ed2f2950f2e3 {
|
|
|
4661
4611
|
const decoded_json = await results.json();
|
|
4662
4612
|
if (!Array.isArray(decoded_json?.suggestions)) break attempt_to_return_api_response;
|
|
4663
4613
|
try {
|
|
4664
|
-
return await
|
|
4614
|
+
return await this.#run_url_creator_for_suggest(input_req.merchant, input_req.market, decoded_json);
|
|
4665
4615
|
} catch (e) {
|
|
4666
4616
|
$5vyXB$depictaiutilishared.dwarn("displayTransformer failed", e);
|
|
4667
4617
|
}
|
|
@@ -7328,7 +7278,6 @@ class $48567ac5b39bac56$export$f34314aa9505732e {
|
|
|
7328
7278
|
constructor({
|
|
7329
7279
|
api: api,
|
|
7330
7280
|
on_navigation: on_navigation,
|
|
7331
|
-
page_url_creator: page_url_creator,
|
|
7332
7281
|
display_transformers: display_transformers,
|
|
7333
7282
|
unique_instance_key_for_state = "",
|
|
7334
7283
|
listing_id_state_key: listing_id_state_key,
|
|
@@ -7379,7 +7328,6 @@ class $48567ac5b39bac56$export$f34314aa9505732e {
|
|
|
7379
7328
|
reset_history_state_: reset_history_state_,
|
|
7380
7329
|
// @ts-ignore
|
|
7381
7330
|
depict_api_: api ?? new (0, $e1d6c0f3d89d531c$export$e015ed2f2950f2e3)({
|
|
7382
|
-
page_url_creator: page_url_creator,
|
|
7383
7331
|
display_transformers: display_transformers
|
|
7384
7332
|
}),
|
|
7385
7333
|
router_: this.#router,
|
|
@@ -9649,7 +9597,6 @@ class $2c61e4cd8229c49a$export$ac6237957a15b3f0 {
|
|
|
9649
9597
|
url_transformer: url_transformer,
|
|
9650
9598
|
on_navigation: on_navigation,
|
|
9651
9599
|
enable_category_suggestions = true,
|
|
9652
|
-
page_url_creator: page_url_creator,
|
|
9653
9600
|
display_transformers: display_transformers,
|
|
9654
9601
|
api: api,
|
|
9655
9602
|
// Stuff needed for non-standard customer deployments that we shouldn't actually expose
|
|
@@ -9701,7 +9648,6 @@ class $2c61e4cd8229c49a$export$ac6237957a15b3f0 {
|
|
|
9701
9648
|
});
|
|
9702
9649
|
// @ts-ignore
|
|
9703
9650
|
const depict_api_ = api ?? new (0, $e1d6c0f3d89d531c$export$e015ed2f2950f2e3)({
|
|
9704
|
-
page_url_creator: page_url_creator,
|
|
9705
9651
|
display_transformers: display_transformers
|
|
9706
9652
|
});
|
|
9707
9653
|
const previous_searches = $2b7a005a65221045$export$84bba84a7b837187(get_search_query_);
|
package/server/latest/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ import { ProductListingRequestV3 } from "@depict-ai/types/api/ProductListingRequ
|
|
|
11
11
|
import { GetListingRequest } from "@depict-ai/types/api/GetListingRequest";
|
|
12
12
|
import { BaseSearchRequestV3 } from "@depict-ai/types/api/BaseSearchRequestV3";
|
|
13
13
|
import { SearchFilter as _SearchFilter2 } from "@depict-ai/types/api/SearchRequestV2";
|
|
14
|
-
export const version = "3.0.
|
|
14
|
+
export const version = "3.0.2";
|
|
15
15
|
/** @jsxImportSource solid-js */
|
|
16
16
|
export function GenericSliderArrowButton(props?: {
|
|
17
17
|
width_?: number;
|
|
@@ -603,56 +603,23 @@ export type DisplayTransformers<InputDisplay extends ModernDisplay, OutputDispla
|
|
|
603
603
|
products?: (options: DisplayTransformerAlwaysThereData & {
|
|
604
604
|
displays: InputDisplay[];
|
|
605
605
|
}) => CanBePromiseWrapped<OutputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<OutputDisplay>[] : never>;
|
|
606
|
-
categories?: (options: DisplayTransformerAlwaysThereData & {
|
|
607
|
-
data:
|
|
608
|
-
}) => CanBePromiseWrapped<{
|
|
606
|
+
categories?: <T extends Breadcrumb | Quicklink | CategorySuggestion>(options: DisplayTransformerAlwaysThereData & {
|
|
607
|
+
data: T[];
|
|
608
|
+
}) => CanBePromiseWrapped<(T & {
|
|
609
609
|
page_url: string;
|
|
610
|
-
}[]>;
|
|
610
|
+
})[]>;
|
|
611
611
|
contentResults?: (options: DisplayTransformerAlwaysThereData & {
|
|
612
612
|
data: ContentLink[];
|
|
613
613
|
}) => CanBePromiseWrapped<ContentLink[]>;
|
|
614
614
|
};
|
|
615
|
-
export type
|
|
616
|
-
page_url_creator?: PageURLCreator<InputDisplay, OutputDisplay>;
|
|
617
|
-
display_transformers?: never;
|
|
618
|
-
} | {
|
|
619
|
-
page_url_creator?: never;
|
|
615
|
+
export type SomethingTakingADisplayTransformers<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = InputDisplay extends ModernDisplay ? "page_url" extends keyof InputDisplay["variant_displays"][number] ? {
|
|
620
616
|
display_transformers: DisplayTransformers<InputDisplay, OutputDisplay>;
|
|
621
617
|
} : {
|
|
622
|
-
page_url_creator: PageURLCreator<InputDisplay, OutputDisplay>;
|
|
623
|
-
display_transformers?: never;
|
|
624
|
-
} | {
|
|
625
618
|
display_transformers: DisplayTransformers<InputDisplay, OutputDisplay>;
|
|
626
|
-
page_url_creator?: never;
|
|
627
619
|
} : {
|
|
628
620
|
page_url_creator?: never;
|
|
629
621
|
display_transformers?: never;
|
|
630
622
|
};
|
|
631
|
-
type PageURLCreatorAlwaysThereData = {
|
|
632
|
-
merchant: string;
|
|
633
|
-
market: string;
|
|
634
|
-
};
|
|
635
|
-
type PageURLCreatorCategoryData = {
|
|
636
|
-
type: "categories";
|
|
637
|
-
data: (Breadcrumb | Quicklink | CategorySuggestion)[];
|
|
638
|
-
};
|
|
639
|
-
type PageURLCreatorProductData<T extends ModernDisplay> = {
|
|
640
|
-
displays: T[];
|
|
641
|
-
type: "products";
|
|
642
|
-
};
|
|
643
|
-
type PageURLCreatorOptions<InputDisplay extends ModernDisplay> = PageURLCreatorAlwaysThereData & (PageURLCreatorCategoryData | PageURLCreatorProductData<InputDisplay>);
|
|
644
|
-
/**
|
|
645
|
-
* @deprecated use DisplayTransformers instead
|
|
646
|
-
* PageUrlCreator is, in its most basic form, a function that takes in a list of categories or products and returns a list of page_urls for the provided categories or products.
|
|
647
|
-
* It's main use case is to allow for the creation of links to the product or category pages on the merchant's site.
|
|
648
|
-
* It can also be used for the depict customers which already have links to change those links (i.e. for staging sites).
|
|
649
|
-
* Also, it can be used to enrich the data for each product card in a batched way, which is why it can be an async function and return a whole display in the case of products.
|
|
650
|
-
*/
|
|
651
|
-
export type PageURLCreator<InputDisplay extends ModernDisplay, OutputDisplay extends ModernDisplay | never> = (options: PageURLCreatorOptions<InputDisplay>) => (typeof options)["type"] extends "categories" ? CanBePromiseWrapped<{
|
|
652
|
-
page_url: string;
|
|
653
|
-
}[]> : CanBePromiseWrapped<{
|
|
654
|
-
page_url: string;
|
|
655
|
-
}[]> | CanBePromiseWrapped<OutputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<OutputDisplay>[] : never>;
|
|
656
623
|
export type ExclusiveId = {
|
|
657
624
|
categoryId: string;
|
|
658
625
|
productId?: undefined;
|
|
@@ -731,21 +698,21 @@ type SearchSuggestionsResponseAfterURLCreator = { [K in keyof SearchSuggestionsR
|
|
|
731
698
|
type AddPageUrlToDisplay<T extends any[]> = (T[number] & {
|
|
732
699
|
page_url: string;
|
|
733
700
|
})[];
|
|
734
|
-
type
|
|
701
|
+
type SearchResponseAfterDisplayTransformer = { [K in keyof SearchResponse]: K extends "displays" ? AddPageUrlToDisplay<SearchResponse[K]> : K extends "filters" ? AddActualFieldToFilters<SearchResponse[K]> : SearchResponse[K] };
|
|
735
702
|
type QuicklinksOrBreadCrumbsWithPageURL<T extends Breadcrumb | Quicklink> = T & {
|
|
736
703
|
page_url: string;
|
|
737
704
|
};
|
|
738
705
|
type _AddPageUrlToDisplay1<T extends any[]> = (T[number] & {
|
|
739
706
|
page_url: string;
|
|
740
707
|
})[];
|
|
741
|
-
type
|
|
742
|
-
type
|
|
708
|
+
type ProductListingResponseAfterDisplayTransformer = { [K in keyof ProductListingResponseV3]: K extends "displays" ? _AddPageUrlToDisplay1<ProductListingResponseV3[K]> : K extends "filters" ? AddActualFieldToFilters<ProductListingResponseV3[K]> : ProductListingResponseV3[K] };
|
|
709
|
+
type GetListingResponseAfterDisplayTransformer = { [K in keyof GetListingResponse]: K extends "breadcrumbs" ? QuicklinksOrBreadCrumbsWithPageURL<Breadcrumb>[] : K extends "quick_links" ? QuicklinksOrBreadCrumbsWithPageURL<Quicklink>[] : GetListingResponse[K] };
|
|
743
710
|
type DepictAPIConstructorOptions<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = {
|
|
744
711
|
get_metadata?: () => Promise<{
|
|
745
712
|
[k: string]: string;
|
|
746
713
|
} | undefined>;
|
|
747
714
|
get_session_id?: () => string | undefined;
|
|
748
|
-
} &
|
|
715
|
+
} & SomethingTakingADisplayTransformers<InputDisplay, OutputDisplay>;
|
|
749
716
|
interface GetListingOptions extends GetListingRequest {
|
|
750
717
|
listing_id: string;
|
|
751
718
|
session_id?: string;
|
|
@@ -757,21 +724,20 @@ interface GetListingOptions extends GetListingRequest {
|
|
|
757
724
|
*/
|
|
758
725
|
export class DepictAPI<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never = InputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<InputDisplay> : never> {
|
|
759
726
|
#private;
|
|
760
|
-
page_url_creator: PageURLCreator<ModernDisplay, OutputDisplay> | undefined;
|
|
761
727
|
display_transformers: DisplayTransformers<ModernDisplay, OutputDisplay> | undefined;
|
|
762
728
|
constructor(options: DepictAPIConstructorOptions<InputDisplay, OutputDisplay>);
|
|
763
729
|
suggest(input_req: SearchSuggestionsRequestV3): Promise<SearchSuggestionsResponseAfterURLCreator & {
|
|
764
730
|
failed?: true;
|
|
765
731
|
}>;
|
|
766
|
-
query(input_req: SearchRequestV3): Promise<
|
|
732
|
+
query(input_req: SearchRequestV3): Promise<SearchResponseAfterDisplayTransformer & {
|
|
767
733
|
failed?: true;
|
|
768
734
|
}>;
|
|
769
|
-
get_listing(input_req: GetListingOptions): Promise<
|
|
735
|
+
get_listing(input_req: GetListingOptions): Promise<GetListingResponseAfterDisplayTransformer & {
|
|
770
736
|
failed?: true;
|
|
771
737
|
}>;
|
|
772
738
|
get_listing_products(input_req: ProductListingRequestV3 & {
|
|
773
739
|
listing_id: string;
|
|
774
|
-
}): Promise<
|
|
740
|
+
}): Promise<ProductListingResponseAfterDisplayTransformer & {
|
|
775
741
|
failed?: true;
|
|
776
742
|
}>;
|
|
777
743
|
get_recommended<T extends Display>(input_req: BaseSearchRequestV3): Promise<{
|
|
@@ -823,7 +789,7 @@ type CategoryConstructorOptionsWithApi<InputDisplay extends Display, OutputDispl
|
|
|
823
789
|
};
|
|
824
790
|
type CategoryConstructorOptionsWithoutApi<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = GeneralCategoryListingOptions & {
|
|
825
791
|
api?: never;
|
|
826
|
-
} &
|
|
792
|
+
} & SomethingTakingADisplayTransformers<InputDisplay, OutputDisplay>;
|
|
827
793
|
type DepictCategoryConstructorOptions<InputDisplay extends Display, OutputDisplay extends ModernDisplay> = CategoryConstructorOptionsWithApi<InputDisplay, OutputDisplay> | CategoryConstructorOptionsWithoutApi<InputDisplay, OutputDisplay>;
|
|
828
794
|
export class DepictCategory<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never = InputDisplay extends ModernDisplay ? ModernDisplayWithPageUrl<InputDisplay> : never> {
|
|
829
795
|
#private;
|
|
@@ -844,7 +810,6 @@ export class DepictCategory<InputDisplay extends Display, OutputDisplay extends
|
|
|
844
810
|
constructor({
|
|
845
811
|
api,
|
|
846
812
|
on_navigation,
|
|
847
|
-
page_url_creator,
|
|
848
813
|
display_transformers,
|
|
849
814
|
unique_instance_key_for_state,
|
|
850
815
|
listing_id_state_key,
|
|
@@ -929,7 +894,7 @@ type ConstructorOptionsWithApi<InputDisplay extends Display, OutputDisplay exten
|
|
|
929
894
|
};
|
|
930
895
|
type ConstructorOptionsWithoutAPI<InputDisplay extends Display, OutputDisplay extends ModernDisplay | never> = GeneralConstructorOptions<InputDisplay, OutputDisplay> & {
|
|
931
896
|
api?: never;
|
|
932
|
-
} &
|
|
897
|
+
} & SomethingTakingADisplayTransformers<InputDisplay, OutputDisplay>;
|
|
933
898
|
type ConstructorOptions<InputDisplay extends Display, OutputDisplay extends ModernDisplay> = ConstructorOptionsWithApi<InputDisplay, OutputDisplay> | ConstructorOptionsWithoutAPI<InputDisplay, OutputDisplay>;
|
|
934
899
|
export type OpenModalArguments = [options_for_modal?: {
|
|
935
900
|
style_props_?: Signal<JSX.CSSProperties>;
|
|
@@ -947,7 +912,6 @@ export class DepictSearch<InputDisplay extends Display, OutputDisplay extends Mo
|
|
|
947
912
|
url_transformer,
|
|
948
913
|
on_navigation,
|
|
949
914
|
enable_category_suggestions,
|
|
950
|
-
page_url_creator,
|
|
951
915
|
display_transformers,
|
|
952
916
|
api,
|
|
953
917
|
disable_scrolling_during_modal,
|
|
@@ -1024,46 +988,16 @@ export type BaseProviderConfig<InputDisplay extends Display, PossibleTransformed
|
|
|
1024
988
|
*/
|
|
1025
989
|
uniqueInstanceKeyForState?: string;
|
|
1026
990
|
} & (InputDisplay extends ModernDisplay ? "page_url" extends keyof InputDisplay["variant_displays"][number] ? {
|
|
1027
|
-
/**
|
|
1028
|
-
* @deprecated use displayTransformers instead
|
|
1029
|
-
*/
|
|
1030
|
-
pageURLCreator?: PageURLCreator<InputDisplay, PossibleTransformedDisplay>;
|
|
1031
|
-
/**
|
|
1032
|
-
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1033
|
-
*/
|
|
1034
|
-
displayTransformers?: never;
|
|
1035
|
-
} | {
|
|
1036
|
-
/**
|
|
1037
|
-
* @deprecated use displayTransformers instead
|
|
1038
|
-
*/
|
|
1039
|
-
pageURLCreator?: never;
|
|
1040
991
|
/**
|
|
1041
992
|
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1042
993
|
*/
|
|
1043
994
|
displayTransformers: DisplayTransformers<InputDisplay, PossibleTransformedDisplay>;
|
|
1044
995
|
} : {
|
|
1045
|
-
/**
|
|
1046
|
-
* @deprecated use displayTransformers instead
|
|
1047
|
-
*/
|
|
1048
|
-
pageURLCreator: PageURLCreator<InputDisplay, PossibleTransformedDisplay>;
|
|
1049
|
-
/**
|
|
1050
|
-
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1051
|
-
*/
|
|
1052
|
-
displayTransformers?: never;
|
|
1053
|
-
} | {
|
|
1054
996
|
/**
|
|
1055
997
|
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1056
998
|
*/
|
|
1057
999
|
displayTransformers: DisplayTransformers<InputDisplay, PossibleTransformedDisplay>;
|
|
1058
|
-
/**
|
|
1059
|
-
* @deprecated use displayTransformers instead
|
|
1060
|
-
*/
|
|
1061
|
-
pageURLCreator?: never;
|
|
1062
1000
|
} : {
|
|
1063
|
-
/**
|
|
1064
|
-
* @deprecated use displayTransformers instead
|
|
1065
|
-
*/
|
|
1066
|
-
pageURLCreator?: never;
|
|
1067
1001
|
/**
|
|
1068
1002
|
* Functions that take in a list of categories, content search results or products and then can transform or enrich the data for each category, content search result or product card in a batched way.
|
|
1069
1003
|
*/
|
package/server/latest/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { createStore as $i7OB2$createStore, reconcile as $i7OB2$reconcile } from
|
|
|
7
7
|
/*! Depict.ai search and product listing SDK */
|
|
8
8
|
import { register_es_version } from "../../multi_import_deduplicator.mjs";
|
|
9
9
|
register_es_version("ui", "latest");
|
|
10
|
-
const $ec291e0010116877$export$83d89fbfd8236492 = "3.0.
|
|
10
|
+
const $ec291e0010116877$export$83d89fbfd8236492 = "3.0.2";
|
|
11
11
|
const $fbbadcb080ad1d4a$var$_tmpl$ = ["<svg", ' xmlns="http://www.w3.org/2000/svg"', ' viewBox="0 0 14 26"><path d="M2 24.656c-.078 0-.156-.016-.234-.047s-.133-.066-.187-.129c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422l10.371-10.371L1.578 2.883c-.117-.117-.176-.258-.176-.422s.059-.305.176-.422.258-.176.422-.176.305.059.422.176l10.805 10.793a.59.59 0 0 1 .176.434c0 .172-.059.305-.176.422L2.422 24.48a.42.42 0 0 1-.199.129.54.54 0 0 1-.223.047zm0 0" fill="#0f0f0f"></path></svg>'];
|
|
12
12
|
function $fbbadcb080ad1d4a$export$8be2714ec7f169ee(props = {}) {
|
|
13
13
|
return $i7OB2$ssr($fbbadcb080ad1d4a$var$_tmpl$, $i7OB2$ssrHydrationKey(), $i7OB2$ssrAttribute("width", $i7OB2$escape(props.width_, true) ?? 14, false) + $i7OB2$ssrAttribute("height", $i7OB2$escape(props.height_, true) ?? 26, false));
|
|
@@ -4405,100 +4405,54 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
4405
4405
|
};
|
|
4406
4406
|
#get_metadata;
|
|
4407
4407
|
#get_session_id;
|
|
4408
|
-
#guard_url_creator_length(expected, received) {
|
|
4409
|
-
if (expected.length !== received.length) {
|
|
4410
|
-
const e = new Error("displayTransformer returned wrong number of page URLs, got " + received.length + ", expected " + expected.length);
|
|
4411
|
-
queueMicrotask(() => {
|
|
4412
|
-
throw e;
|
|
4413
|
-
});
|
|
4414
|
-
throw e;
|
|
4415
|
-
}
|
|
4416
|
-
}
|
|
4417
4408
|
async #run_url_creator_for_suggest(merchant, market, response) {
|
|
4418
|
-
const page_url_creator = this.page_url_creator;
|
|
4419
4409
|
const category_transformer = this.display_transformers?.categories;
|
|
4420
|
-
if (!
|
|
4410
|
+
if (!category_transformer) return response;
|
|
4421
4411
|
// find category suggestions, run thing with them, and then replace them
|
|
4422
4412
|
const category_suggestions = response.suggestions.filter(suggestion => suggestion.type === "category");
|
|
4423
|
-
const
|
|
4413
|
+
const transformed_category_suggestions = await category_transformer({
|
|
4424
4414
|
market: market,
|
|
4425
4415
|
merchant: merchant,
|
|
4426
|
-
data: [...category_suggestions]
|
|
4427
|
-
...(page_url_creator ? {
|
|
4428
|
-
type: "categories"
|
|
4429
|
-
} : {})
|
|
4416
|
+
data: [...category_suggestions]
|
|
4430
4417
|
});
|
|
4431
|
-
|
|
4432
|
-
while (page_urls.length)
|
|
4433
|
-
// Copy over getters so we sneakily can make this reactive
|
|
4434
|
-
Object.defineProperties(category_suggestions.pop(), Object.getOwnPropertyDescriptors(page_urls.pop()));
|
|
4418
|
+
response.suggestions = transformed_category_suggestions;
|
|
4435
4419
|
return response;
|
|
4436
4420
|
}
|
|
4437
4421
|
async #run_display_transformers_for_rest(merchant, market, input_data) {
|
|
4438
4422
|
const {
|
|
4439
|
-
page_url_creator: page_url_creator,
|
|
4440
4423
|
display_transformers: display_transformers
|
|
4441
4424
|
} = this;
|
|
4442
|
-
if (!
|
|
4425
|
+
if (!display_transformers) return input_data;
|
|
4443
4426
|
const product_transformer = display_transformers?.products;
|
|
4444
4427
|
const category_transformer = display_transformers?.categories;
|
|
4445
4428
|
const content_result_transformer = display_transformers?.contentResults;
|
|
4446
4429
|
const displays = input_data.displays;
|
|
4447
|
-
const owner = $i7OB2$getOwner();
|
|
4448
4430
|
const {
|
|
4449
|
-
breadcrumbs: breadcrumbs,
|
|
4450
|
-
quick_links: quick_links,
|
|
4451
4431
|
content_search_links: content_search_links
|
|
4452
4432
|
} = input_data;
|
|
4453
|
-
if (displays &&
|
|
4454
|
-
const
|
|
4433
|
+
if (displays && product_transformer) {
|
|
4434
|
+
const transformed_displays = await product_transformer({
|
|
4455
4435
|
merchant: merchant,
|
|
4456
4436
|
market: market,
|
|
4457
|
-
displays: [...
|
|
4458
|
-
...(page_url_creator ? {
|
|
4459
|
-
type: "products"
|
|
4460
|
-
} : {})
|
|
4437
|
+
displays: [...displays]
|
|
4461
4438
|
});
|
|
4462
|
-
|
|
4463
|
-
for (let i = 0; i < displays.length; i++) {
|
|
4464
|
-
const new_display_or_page_url = page_urls[i];
|
|
4465
|
-
const old_display = displays[i];
|
|
4466
|
-
if ("page_url" in new_display_or_page_url && Object.keys(new_display_or_page_url).length === 1) {
|
|
4467
|
-
// they only returned page_url, let's put it into the display
|
|
4468
|
-
const old_display_was_modern = ("variant_index" in old_display);
|
|
4469
|
-
if (old_display_was_modern) {
|
|
4470
|
-
const variant_displays = old_display.variant_displays;
|
|
4471
|
-
for (let i = 0; i < variant_displays.length; i++) variant_displays[i].page_url = new_display_or_page_url.page_url;
|
|
4472
|
-
} else old_display.page_url = new_display_or_page_url.page_url;
|
|
4473
|
-
} else
|
|
4474
|
-
// We got a whole new display, let's replace it
|
|
4475
|
-
displays[i] = new_display_or_page_url;
|
|
4476
|
-
}
|
|
4439
|
+
input_data.displays = transformed_displays;
|
|
4477
4440
|
}
|
|
4478
|
-
if (
|
|
4441
|
+
if (category_transformer) for (const key of ["breadcrumbs", "quick_links"]) {
|
|
4442
|
+
const category_display_array = input_data[key];
|
|
4479
4443
|
if (!category_display_array) continue;
|
|
4480
|
-
const
|
|
4444
|
+
const transformed_category_displays = await category_transformer({
|
|
4481
4445
|
merchant: merchant,
|
|
4482
4446
|
market: market,
|
|
4483
|
-
data: [...category_display_array]
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
} : {})
|
|
4487
|
-
}));
|
|
4488
|
-
this.#guard_url_creator_length(category_display_array, page_urls);
|
|
4489
|
-
for (let i = 0; i < category_display_array.length; i++)
|
|
4490
|
-
// Copy over getters so we sneakily can make this reactive
|
|
4491
|
-
Object.defineProperties(category_display_array[i], Object.getOwnPropertyDescriptors(page_urls[i]));
|
|
4492
|
-
}
|
|
4493
|
-
if (content_search_links?.length && content_result_transformer) {
|
|
4494
|
-
const result = await $i7OB2$runWithOwner(owner, () => content_result_transformer({
|
|
4495
|
-
merchant: merchant,
|
|
4496
|
-
market: market,
|
|
4497
|
-
data: [...content_search_links]
|
|
4498
|
-
}));
|
|
4499
|
-
this.#guard_url_creator_length(content_search_links, result);
|
|
4500
|
-
input_data.content_search_links = result;
|
|
4447
|
+
data: [...category_display_array]
|
|
4448
|
+
});
|
|
4449
|
+
input_data[key] = transformed_category_displays;
|
|
4501
4450
|
}
|
|
4451
|
+
if (content_search_links?.length && content_result_transformer) input_data.content_search_links = await content_result_transformer({
|
|
4452
|
+
merchant: merchant,
|
|
4453
|
+
market: market,
|
|
4454
|
+
data: [...content_search_links]
|
|
4455
|
+
});
|
|
4502
4456
|
return input_data;
|
|
4503
4457
|
}
|
|
4504
4458
|
async #cached_request({
|
|
@@ -4510,7 +4464,6 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
4510
4464
|
}) {
|
|
4511
4465
|
const cache_obj = this.#get_cache_obj_for_endpoint(endpoint_);
|
|
4512
4466
|
const with_ids = this.#add_ids_to_request(input_req_);
|
|
4513
|
-
const owner = $i7OB2$getOwner();
|
|
4514
4467
|
const metaData = await this.#get_metadata?.();
|
|
4515
4468
|
const request = metaData ? Object.assign(with_ids, {
|
|
4516
4469
|
metadata: metaData
|
|
@@ -4538,7 +4491,7 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
4538
4491
|
let result;
|
|
4539
4492
|
try {
|
|
4540
4493
|
const unmodified_result = await api_response.json();
|
|
4541
|
-
result = await
|
|
4494
|
+
result = await this.#run_display_transformers_for_rest(input_req_.merchant, input_req_.market, unmodified_result);
|
|
4542
4495
|
} catch (e) {
|
|
4543
4496
|
$i7OB2$dwarn("displayTransformer or json decoding failed", e);
|
|
4544
4497
|
break return_successfully;
|
|
@@ -4569,17 +4522,14 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
4569
4522
|
const {
|
|
4570
4523
|
get_metadata: get_metadata,
|
|
4571
4524
|
get_session_id: get_session_id,
|
|
4572
|
-
page_url_creator: page_url_creator,
|
|
4573
4525
|
display_transformers: display_transformers
|
|
4574
4526
|
} = options ?? {};
|
|
4575
4527
|
this.#get_metadata = get_metadata;
|
|
4576
4528
|
this.#get_session_id = get_session_id;
|
|
4577
|
-
this.page_url_creator = page_url_creator;
|
|
4578
4529
|
this.display_transformers = display_transformers;
|
|
4579
4530
|
}
|
|
4580
4531
|
async suggest(input_req) {
|
|
4581
4532
|
const with_ids = this.#add_ids_to_request(input_req);
|
|
4582
|
-
const owner = $i7OB2$getOwner();
|
|
4583
4533
|
const metaData = await this.#get_metadata?.();
|
|
4584
4534
|
const request = metaData ? Object.assign(with_ids, {
|
|
4585
4535
|
metadata: JSON.stringify(metaData)
|
|
@@ -4591,7 +4541,7 @@ class $7fa23e2a0079eca4$export$e015ed2f2950f2e3 {
|
|
|
4591
4541
|
const decoded_json = await results.json();
|
|
4592
4542
|
if (!Array.isArray(decoded_json?.suggestions)) break attempt_to_return_api_response;
|
|
4593
4543
|
try {
|
|
4594
|
-
return await
|
|
4544
|
+
return await this.#run_url_creator_for_suggest(input_req.merchant, input_req.market, decoded_json);
|
|
4595
4545
|
} catch (e) {
|
|
4596
4546
|
$i7OB2$dwarn("displayTransformer failed", e);
|
|
4597
4547
|
}
|
|
@@ -7258,7 +7208,6 @@ class $961b5c64bef4662f$export$f34314aa9505732e {
|
|
|
7258
7208
|
constructor({
|
|
7259
7209
|
api: api,
|
|
7260
7210
|
on_navigation: on_navigation,
|
|
7261
|
-
page_url_creator: page_url_creator,
|
|
7262
7211
|
display_transformers: display_transformers,
|
|
7263
7212
|
unique_instance_key_for_state = "",
|
|
7264
7213
|
listing_id_state_key: listing_id_state_key,
|
|
@@ -7309,7 +7258,6 @@ class $961b5c64bef4662f$export$f34314aa9505732e {
|
|
|
7309
7258
|
reset_history_state_: reset_history_state_,
|
|
7310
7259
|
// @ts-ignore
|
|
7311
7260
|
depict_api_: api ?? new (0, $7fa23e2a0079eca4$export$e015ed2f2950f2e3)({
|
|
7312
|
-
page_url_creator: page_url_creator,
|
|
7313
7261
|
display_transformers: display_transformers
|
|
7314
7262
|
}),
|
|
7315
7263
|
router_: this.#router,
|
|
@@ -9579,7 +9527,6 @@ class $806c97b931758897$export$ac6237957a15b3f0 {
|
|
|
9579
9527
|
url_transformer: url_transformer,
|
|
9580
9528
|
on_navigation: on_navigation,
|
|
9581
9529
|
enable_category_suggestions = true,
|
|
9582
|
-
page_url_creator: page_url_creator,
|
|
9583
9530
|
display_transformers: display_transformers,
|
|
9584
9531
|
api: api,
|
|
9585
9532
|
// Stuff needed for non-standard customer deployments that we shouldn't actually expose
|
|
@@ -9631,7 +9578,6 @@ class $806c97b931758897$export$ac6237957a15b3f0 {
|
|
|
9631
9578
|
});
|
|
9632
9579
|
// @ts-ignore
|
|
9633
9580
|
const depict_api_ = api ?? new (0, $7fa23e2a0079eca4$export$e015ed2f2950f2e3)({
|
|
9634
|
-
page_url_creator: page_url_creator,
|
|
9635
9581
|
display_transformers: display_transformers
|
|
9636
9582
|
});
|
|
9637
9583
|
const previous_searches = $21f51c14cb3f586f$export$84bba84a7b837187(get_search_query_);
|