sizebay-core-sdk 1.13.0-dev.6 → 1.14.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.dev.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # Sizebay Core SDK - Development Guide
2
2
 
3
3
  This guide is intended to help developers understand the project structure, how to create and integrate new modules, run tests, and configure automated releases with Semantic Release.
4
- -- teste bot publish
4
+
5
5
  ---
6
6
 
7
7
  ## Project Structure
8
8
 
9
- The project is organized as follows:
9
+ The project is organized as follows:
10
10
 
11
11
  ```
12
12
  📦src
@@ -1,5 +1,5 @@
1
1
  import { Config } from '../config';
2
- import { GetSimilarProductsParams, GetComplementaryProductsParams, GetSimilarByImageBodyDto, GetComplementaryByImageBodyDto, GetSimilarByPermalinkBodyDto, GetComplementaryByPermalinkBodyDto, GetSimilarProductsResponse, GetComplementaryProductsResponse, GetComplementaryProductsByImageResponse } from '../types/ai-image';
2
+ import { GetSimilarProductsParams, GetComplementaryProductsParams, GetSimilarByImageBodyDto, GetComplementaryByImageBodyDto, GetSimilarProductsResponse, GetComplementaryProductsResponse, GetComplementaryProductsByImageResponse } from '../types/ai-image';
3
3
  export declare class AIImageService {
4
4
  private endpoint;
5
5
  constructor(config: Config);
@@ -8,6 +8,4 @@ export declare class AIImageService {
8
8
  getComplementaryProducts(params: GetComplementaryProductsParams): Promise<GetComplementaryProductsResponse>;
9
9
  searchSimilarByImage(payload: GetSimilarByImageBodyDto): Promise<GetSimilarProductsResponse>;
10
10
  searchComplementaryByImage(payload: GetComplementaryByImageBodyDto): Promise<GetComplementaryProductsByImageResponse>;
11
- searchSimilarByPermalink(payload: GetSimilarByPermalinkBodyDto): Promise<GetSimilarProductsResponse>;
12
- searchComplementaryByPermalink(payload: GetComplementaryByPermalinkBodyDto): Promise<GetComplementaryProductsResponse>;
13
11
  }
@@ -179,147 +179,6 @@ class S {
179
179
  body: JSON.stringify(t)
180
180
  });
181
181
  }
182
- /**
183
- * Fetches similar product recommendations by permalink or productId.
184
- *
185
- * This method searches for products that are visually similar to a reference product
186
- * identified by either its permalink URL or productId. The search uses AI-powered
187
- * image analysis to find products with similar visual characteristics like color,
188
- * style, pattern, and overall appearance.
189
- *
190
- * Sends a POST request to `/image-search/similar-by-permalink` with the search parameters.
191
- * At least one of permalink or productId must be provided in the payload.
192
- *
193
- * @param payload - Search parameters including:
194
- * - `permalink` (optional): Full URL of the reference product
195
- * - `productId` (optional): Unique identifier of the reference product
196
- * - `tenantId`: Client/tenant identifier
197
- * - `collectionName`: Embeddings collection namespace
198
- * - `sid`: Session identifier for the user
199
- * - `sizeSystem`: Size system code (e.g., 'BR', 'EU', 'US')
200
- * - `locale`: Language and region (e.g., 'en-US', 'pt-BR')
201
- * - `currency`: Currency code for pricing (e.g., 'USD', 'BRL')
202
- * - `similarityThreshold`: Minimum similarity score (0-1, default: 0.5)
203
- * - `page`: Page number for pagination (default: 1)
204
- * - `perPage`: Items per page (default: 20)
205
- * - `ageRange`: Target age range (optional)
206
- * - `gender`: User gender (optional)
207
- * - `style`: Preferred style hint (optional)
208
- * - `color`: Main color of interest (optional)
209
- * - `productClass`: Target product class (optional)
210
- * - `clothType`: Target cloth type for filtering (optional)
211
- * - `filterByWhatFitsMe`: Apply What Fits Me logic (optional)
212
- * - `personaHash`: User persona hash for personalization (optional)
213
- *
214
- * @returns Promise resolving to a paginated list of similar products with:
215
- * - `data`: Array of similar products ordered by similarity score
216
- * - `page`: Current page number
217
- * - `perPage`: Number of items per page
218
- * - `total`: Total number of similar products found
219
- * - `invalidPersonaHash`: Whether the persona hash is invalid/expired
220
- *
221
- * @throws {ApiError} if the HTTP status is not 2xx or on network failure
222
- *
223
- * @example
224
- * ```typescript
225
- * const similarProducts = await aiImageService.searchSimilarByPermalink({
226
- * tenantId: 123,
227
- * collectionName: "products",
228
- * sid: "session123",
229
- * sizeSystem: "BR",
230
- * locale: "pt-BR",
231
- * currency: "BRL",
232
- * permalink: "https://example.com/products/red-dress-456",
233
- * similarityThreshold: 0.7,
234
- * page: 1,
235
- * perPage: 10,
236
- * style: "Casual",
237
- * color: "red"
238
- * });
239
- * ```
240
- */
241
- searchSimilarByPermalink(t) {
242
- const e = `${this.endpoint}/image-search/similar-by-permalink`;
243
- return a(e, {
244
- method: "POST",
245
- headers: { "Content-Type": "application/json" },
246
- body: JSON.stringify(t)
247
- });
248
- }
249
- /**
250
- * Fetches complementary product recommendations by permalink or productId.
251
- *
252
- * This method finds products that complement a reference product identified by either
253
- * its permalink URL or productId. Complementary products are items that work well
254
- * together in an outfit or ensemble, such as tops that go with bottoms, shoes that
255
- * match a dress, or accessories that complement a main piece.
256
- *
257
- * The AI analyzes the reference product's style, color, and category to suggest
258
- * complementary items that would create cohesive and fashionable combinations.
259
- *
260
- * Sends a POST request to `/image-search/complementary-by-permalink` with the search parameters.
261
- * At least one of permalink or productId must be provided in the payload.
262
- *
263
- * @param payload - Search parameters including:
264
- * - `permalink` (optional): Full URL of the reference product
265
- * - `productId` (optional): Unique identifier of the reference product
266
- * - `tenantId`: Client/tenant identifier
267
- * - `collectionName`: Embeddings collection namespace
268
- * - `sid`: Session identifier for the user
269
- * - `sizeSystem`: Size system code (e.g., 'BR', 'EU', 'US')
270
- * - `locale`: Language and region (e.g., 'en-US', 'pt-BR')
271
- * - `currency`: Currency code for pricing (e.g., 'USD', 'BRL')
272
- * - `similarityThreshold`: Minimum similarity score (0-1, default: 0.2)
273
- * - `baseClothType` (optional): Cloth type of the reference product (e.g., ClothType.BOTTOM)
274
- * - `targetClothType` (optional): Desired cloth type for complementary products (e.g., ClothType.TOP)
275
- * - `page`: Page number for pagination (default: 1)
276
- * - `perPage`: Items per page (default: 20)
277
- * - `ageRange`: Target age range (optional)
278
- * - `gender`: User gender (optional)
279
- * - `style`: Preferred style hint (optional)
280
- * - `color`: Main color of interest (optional)
281
- * - `productClass`: Target product class (optional)
282
- * - `filterByWhatFitsMe`: Apply What Fits Me logic (optional)
283
- * - `personaHash`: User persona hash for personalization (optional)
284
- *
285
- * @returns Promise resolving to complementary product recommendations with:
286
- * - `baseProduct`: The reference product information
287
- * - `complementary`: Array of complementary product pairs
288
- * - `page`: Current page number
289
- * - `perPage`: Number of items per page
290
- * - `total`: Total number of complementary products found
291
- * - `invalidPersonaHash`: Whether the persona hash is invalid/expired
292
- *
293
- * @throws {ApiError} if the HTTP status is not 2xx or on network failure
294
- *
295
- * @example
296
- * ```typescript
297
- * const complementaryProducts = await aiImageService.searchComplementaryByPermalink({
298
- * tenantId: 123,
299
- * collectionName: "products",
300
- * sid: "session123",
301
- * sizeSystem: "BR",
302
- * locale: "pt-BR",
303
- * currency: "BRL",
304
- * productId: "12345",
305
- * similarityThreshold: 0.3,
306
- * baseClothType: ClothType.BOTTOM,
307
- * targetClothType: ClothType.TOP,
308
- * page: 1,
309
- * perPage: 10,
310
- * style: "Casual",
311
- * color: "blue"
312
- * });
313
- * ```
314
- */
315
- searchComplementaryByPermalink(t) {
316
- const e = `${this.endpoint}/image-search/complementary-by-permalink`;
317
- return a(e, {
318
- method: "POST",
319
- headers: { "Content-Type": "application/json" },
320
- body: JSON.stringify(t)
321
- });
322
- }
323
182
  }
324
183
  class T {
325
184
  constructor(t) {
@@ -377,7 +236,7 @@ class T {
377
236
  }
378
237
  }
379
238
  }
380
- class m {
239
+ class E {
381
240
  constructor(t) {
382
241
  this.endpoint = t.getEndpoint("fashionLooks");
383
242
  }
@@ -439,9 +298,9 @@ const O = [
439
298
  u,
440
299
  S,
441
300
  T,
442
- m
301
+ E
443
302
  ];
444
- function E(i = {}) {
303
+ function m(i = {}) {
445
304
  const t = new l(i), e = O.map((s) => new s(t)), n = {};
446
305
  return e.forEach((s) => {
447
306
  [
@@ -454,7 +313,7 @@ function E(i = {}) {
454
313
  });
455
314
  }), n;
456
315
  }
457
- const y = {
316
+ const f = {
458
317
  TOP: "TOP",
459
318
  BOTTOM: "BOTTOM",
460
319
  SHOE_ACCESSORY: "SHOE_ACCESSORY",
@@ -465,7 +324,7 @@ const y = {
465
324
  WETSUIT_FULL_BODY: "WETSUIT_FULL_BODY",
466
325
  WETSUIT_BOTTOM: "WETSUIT_BOTTOM",
467
326
  WETSUIT_TOP: "WETSUIT_TOP"
468
- }, f = {
327
+ }, g = {
469
328
  T_SHIRT: "t-shirt",
470
329
  SHIRT: "shirt",
471
330
  BLOUSE: "blouse",
@@ -507,7 +366,7 @@ const y = {
507
366
  WETSUIT: "wetsuit"
508
367
  };
509
368
  export {
510
- y as ClothType,
511
- f as ProductClass,
512
- E as createClient
369
+ f as ClothType,
370
+ g as ProductClass,
371
+ m as createClient
513
372
  };
@@ -1 +1 @@
1
- (function(i,p){typeof exports=="object"&&typeof module<"u"?p(exports):typeof define=="function"&&define.amd?define(["exports"],p):(i=typeof globalThis<"u"?globalThis:i||self,p(i["sizebay-core-sdk"]={}))})(this,(function(i){"use strict";const p={tracker:{production:"https://data-event-service.internalsizebay.com",development:"https://data-event-service-dev.internalsizebay.com"},aiImageService:{production:"https://ai-image-service.internalsizebay.com",development:"https://ai-image-service-dev.internalsizebay.com"},session:{production:"https://vfr-v3-production.sizebay.technology/api/me",development:"https://vfr-v3-staging.sizebay.eu/api/me"},fashionLooks:{production:"https://fashion-looks.internalsizebay.com",development:"https://fashion-looks-dev.internalsizebay.com"}};class l{constructor(e){const t=e.env||"development";this.serviceOverrides=e.services||{},this.endpoints={};for(const n in p)if(Object.prototype.hasOwnProperty.call(p,n)){const o=p[n][t];if(!o)continue;this.endpoints[n]=o}}getEndpoint(e){const t=this.endpoints[e];if(!t)throw new Error(`Endpoint for service '${e}' is not configured.`);return t}getServiceConfig(e){return this.serviceOverrides[e]||{}}}class u{constructor(e){this.endpoint=e.getEndpoint("tracker")}async track(e,t){const n={eventName:e,...t},s=new URL(`${this.endpoint}/events`);try{const o=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!o.ok){const c=await o.text();throw new Error(`Request error: ${o.status} - ${c}`)}try{return await o.json()}catch{return{statusCode:201,message:"Event successfully created."}}}catch(o){throw o}}}class d extends Error{constructor(e,t){let n;try{const s=JSON.parse(t);n=(s==null?void 0:s.message)||t}catch{n=t}super(n),this.statusCode=e,this.details=t,Object.setPrototypeOf(this,d.prototype)}}async function r(a,e){let t;try{t=await fetch(a,e)}catch(s){throw new d(0,s.message)}const n=await t.text();if(!t.ok)throw new d(t.status,n);return JSON.parse(n)}class S{constructor(e){this.endpoint=e.getEndpoint("aiImageService")}appendQueryParams(e,t){Object.entries(t).forEach(([n,s])=>{s!=null&&e.searchParams.append(n,String(s))})}getSimilarProducts(e){const t=new URL(`${this.endpoint}/recommendations/similar`);return this.appendQueryParams(t,e),r(t.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}getComplementaryProducts(e){const t=new URL(`${this.endpoint}/recommendations/complementary`);return this.appendQueryParams(t,e),r(t.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}searchSimilarByImage(e){const t=`${this.endpoint}/image-search/similar`;return r(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}searchComplementaryByImage(e){const t=`${this.endpoint}/image-search/complementary`;return r(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}searchSimilarByPermalink(e){const t=`${this.endpoint}/image-search/similar-by-permalink`;return r(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}searchComplementaryByPermalink(e){const t=`${this.endpoint}/image-search/complementary-by-permalink`;return r(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}}class T{constructor(e){this.sid=null,this.sessionId=null;const t=e.getEndpoint("session");this.sessionEndpoint=`${t}/`,this.profileEndpoint=`${t}/user/profile`}async getSessionInfo(){if(this.sid&&this.sessionId!==null)return{sid:this.sid,sessionId:this.sessionId};const e=await fetch(this.sessionEndpoint,{credentials:"include"});if(!e.ok){const n=await e.text();throw new Error(`Failed to fetch session info: ${e.status} – ${n}`)}const t=await e.json();return this.sid=t.catalogUser.id,this.sessionId=t.sessionId,{sid:this.sid,sessionId:this.sessionId}}async sendProfile(e,t){const n=t??(await this.getSessionInfo()).sid,s=new URL(this.profileEndpoint);s.searchParams.set("sid",n);const o=await fetch(s.toString(),{credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:n,id:null,...e})});if(!o.ok){const c=await o.text();throw new Error(`Failed to send profile: ${o.status} – ${c}`)}}}class m{constructor(e){this.endpoint=e.getEndpoint("fashionLooks")}appendQueryParams(e,t){Object.entries(t).forEach(([n,s])=>{s!=null&&e.searchParams.append(n,String(s))})}getGroupedLooks(e){const t=new URL(`${this.endpoint}/api/public/grouped-looks`);return this.appendQueryParams(t,e),r(t.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}getGroupedLookById(e,t,n){const s=new URL(`${this.endpoint}/api/public/grouped-looks/${e}`);return s.searchParams.set("tenantId",String(t)),s.searchParams.set("language",n),r(s.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}}const O=[u,S,T,m];function f(a={}){const e=new l(a),t=O.map(s=>new s(e)),n={};return t.forEach(s=>{[...Object.getOwnPropertyNames(s),...Object.getOwnPropertyNames(Object.getPrototypeOf(s))].forEach(c=>{if(c==="constructor")return;const h=s[c];typeof h=="function"&&(n[c]||(n[c]=(...g)=>h.apply(s,g)))})}),n}const E={TOP:"TOP",BOTTOM:"BOTTOM",SHOE_ACCESSORY:"SHOE_ACCESSORY",FULL_BODY:"FULL_BODY",UNDERWEAR_FULL_BODY:"UNDERWEAR_FULL_BODY",UNDERWEAR_BOTTOM:"UNDERWEAR_BOTTOM",UNDERWEAR_TOP:"UNDERWEAR_TOP",WETSUIT_FULL_BODY:"WETSUIT_FULL_BODY",WETSUIT_BOTTOM:"WETSUIT_BOTTOM",WETSUIT_TOP:"WETSUIT_TOP"},y={T_SHIRT:"t-shirt",SHIRT:"shirt",BLOUSE:"blouse",SWEATER:"sweater",HOODIE:"hoodie",JACKET:"jacket",COAT:"coat",CARDIGAN:"cardigan",BLAZER:"blazer",VEST:"vest",SWEATSHIRT:"sweatshirt",POLO_SHIRT:"polo shirt",TANK_TOP:"tank top",SKIRT:"skirt",TROUSERS:"trousers",JEANS:"jeans",SHORTS:"shorts",SNEAKERS:"sneakers",RUNNING_SHOES:"running shoes",BOOTS:"boots",ANKLE_BOOTS:"ankle boots",HIGH_HEELS:"high heels",FLATS:"flats",LOAFERS:"loafers",OXFORDS:"oxfords",SLIPPERS:"slippers",SANDALS:"sandals",DRESS:"dress",JUMPSUIT:"jumpsuit",SUIT:"suit",PANTIES:"panties",BRA:"bra",BIKINI:"bikini",BRIEFS:"briefs",BOXERS:"boxers",THONG:"thong",SWIMSUIT:"swimsuit",ONE_PIECE_SWIMSUIT:"one-piece swimsuit",WETSUIT:"wetsuit"};i.ClothType=E,i.ProductClass=y,i.createClient=f,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(i,c){typeof exports=="object"&&typeof module<"u"?c(exports):typeof define=="function"&&define.amd?define(["exports"],c):(i=typeof globalThis<"u"?globalThis:i||self,c(i["sizebay-core-sdk"]={}))})(this,(function(i){"use strict";const c={tracker:{production:"https://data-event-service.internalsizebay.com",development:"https://data-event-service-dev.internalsizebay.com"},aiImageService:{production:"https://ai-image-service.internalsizebay.com",development:"https://ai-image-service-dev.internalsizebay.com"},session:{production:"https://vfr-v3-production.sizebay.technology/api/me",development:"https://vfr-v3-staging.sizebay.eu/api/me"},fashionLooks:{production:"https://fashion-looks.internalsizebay.com",development:"https://fashion-looks-dev.internalsizebay.com"}};class l{constructor(e){const t=e.env||"development";this.serviceOverrides=e.services||{},this.endpoints={};for(const n in c)if(Object.prototype.hasOwnProperty.call(c,n)){const o=c[n][t];if(!o)continue;this.endpoints[n]=o}}getEndpoint(e){const t=this.endpoints[e];if(!t)throw new Error(`Endpoint for service '${e}' is not configured.`);return t}getServiceConfig(e){return this.serviceOverrides[e]||{}}}class u{constructor(e){this.endpoint=e.getEndpoint("tracker")}async track(e,t){const n={eventName:e,...t},s=new URL(`${this.endpoint}/events`);try{const o=await fetch(s,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)});if(!o.ok){const a=await o.text();throw new Error(`Request error: ${o.status} - ${a}`)}try{return await o.json()}catch{return{statusCode:201,message:"Event successfully created."}}}catch(o){throw o}}}class d extends Error{constructor(e,t){let n;try{const s=JSON.parse(t);n=(s==null?void 0:s.message)||t}catch{n=t}super(n),this.statusCode=e,this.details=t,Object.setPrototypeOf(this,d.prototype)}}async function p(r,e){let t;try{t=await fetch(r,e)}catch(s){throw new d(0,s.message)}const n=await t.text();if(!t.ok)throw new d(t.status,n);return JSON.parse(n)}class S{constructor(e){this.endpoint=e.getEndpoint("aiImageService")}appendQueryParams(e,t){Object.entries(t).forEach(([n,s])=>{s!=null&&e.searchParams.append(n,String(s))})}getSimilarProducts(e){const t=new URL(`${this.endpoint}/recommendations/similar`);return this.appendQueryParams(t,e),p(t.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}getComplementaryProducts(e){const t=new URL(`${this.endpoint}/recommendations/complementary`);return this.appendQueryParams(t,e),p(t.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}searchSimilarByImage(e){const t=`${this.endpoint}/image-search/similar`;return p(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}searchComplementaryByImage(e){const t=`${this.endpoint}/image-search/complementary`;return p(t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}}class T{constructor(e){this.sid=null,this.sessionId=null;const t=e.getEndpoint("session");this.sessionEndpoint=`${t}/`,this.profileEndpoint=`${t}/user/profile`}async getSessionInfo(){if(this.sid&&this.sessionId!==null)return{sid:this.sid,sessionId:this.sessionId};const e=await fetch(this.sessionEndpoint,{credentials:"include"});if(!e.ok){const n=await e.text();throw new Error(`Failed to fetch session info: ${e.status} – ${n}`)}const t=await e.json();return this.sid=t.catalogUser.id,this.sessionId=t.sessionId,{sid:this.sid,sessionId:this.sessionId}}async sendProfile(e,t){const n=t??(await this.getSessionInfo()).sid,s=new URL(this.profileEndpoint);s.searchParams.set("sid",n);const o=await fetch(s.toString(),{credentials:"include",method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({userId:n,id:null,...e})});if(!o.ok){const a=await o.text();throw new Error(`Failed to send profile: ${o.status} – ${a}`)}}}class f{constructor(e){this.endpoint=e.getEndpoint("fashionLooks")}appendQueryParams(e,t){Object.entries(t).forEach(([n,s])=>{s!=null&&e.searchParams.append(n,String(s))})}getGroupedLooks(e){const t=new URL(`${this.endpoint}/api/public/grouped-looks`);return this.appendQueryParams(t,e),p(t.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}getGroupedLookById(e,t,n){const s=new URL(`${this.endpoint}/api/public/grouped-looks/${e}`);return s.searchParams.set("tenantId",String(t)),s.searchParams.set("language",n),p(s.toString(),{method:"GET",headers:{"Content-Type":"application/json"}})}}const O=[u,S,T,f];function E(r={}){const e=new l(r),t=O.map(s=>new s(e)),n={};return t.forEach(s=>{[...Object.getOwnPropertyNames(s),...Object.getOwnPropertyNames(Object.getPrototypeOf(s))].forEach(a=>{if(a==="constructor")return;const h=s[a];typeof h=="function"&&(n[a]||(n[a]=(...y)=>h.apply(s,y)))})}),n}const m={TOP:"TOP",BOTTOM:"BOTTOM",SHOE_ACCESSORY:"SHOE_ACCESSORY",FULL_BODY:"FULL_BODY",UNDERWEAR_FULL_BODY:"UNDERWEAR_FULL_BODY",UNDERWEAR_BOTTOM:"UNDERWEAR_BOTTOM",UNDERWEAR_TOP:"UNDERWEAR_TOP",WETSUIT_FULL_BODY:"WETSUIT_FULL_BODY",WETSUIT_BOTTOM:"WETSUIT_BOTTOM",WETSUIT_TOP:"WETSUIT_TOP"},g={T_SHIRT:"t-shirt",SHIRT:"shirt",BLOUSE:"blouse",SWEATER:"sweater",HOODIE:"hoodie",JACKET:"jacket",COAT:"coat",CARDIGAN:"cardigan",BLAZER:"blazer",VEST:"vest",SWEATSHIRT:"sweatshirt",POLO_SHIRT:"polo shirt",TANK_TOP:"tank top",SKIRT:"skirt",TROUSERS:"trousers",JEANS:"jeans",SHORTS:"shorts",SNEAKERS:"sneakers",RUNNING_SHOES:"running shoes",BOOTS:"boots",ANKLE_BOOTS:"ankle boots",HIGH_HEELS:"high heels",FLATS:"flats",LOAFERS:"loafers",OXFORDS:"oxfords",SLIPPERS:"slippers",SANDALS:"sandals",DRESS:"dress",JUMPSUIT:"jumpsuit",SUIT:"suit",PANTIES:"panties",BRA:"bra",BIKINI:"bikini",BRIEFS:"briefs",BOXERS:"boxers",THONG:"thong",SWIMSUIT:"swimsuit",ONE_PIECE_SWIMSUIT:"one-piece swimsuit",WETSUIT:"wetsuit"};i.ClothType=m,i.ProductClass=g,i.createClient=E,Object.defineProperty(i,Symbol.toStringTag,{value:"Module"})}));
@@ -4,8 +4,6 @@ export * from './params/get-similar-products.dto';
4
4
  export * from './params/get-complementary-products.dto';
5
5
  export * from './params/get-similar-by-image.dto';
6
6
  export * from './params/get-complementary-by-image.dto';
7
- export * from './params/get-similar-by-permalink.dto';
8
- export * from './params/get-complementary-by-permalink.dto';
9
7
  export * from './responses/get-similar-products-response.dto';
10
8
  export * from './responses/get-complementary-products-response.dto';
11
9
  export * from './responses/get-complementary-products-by-image-response.dto';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sizebay-core-sdk",
3
- "version": "1.13.0-dev.6",
3
+ "version": "1.14.0",
4
4
  "description": "A SDK designed for integrating multiple services (such as event tracking, AI services, etc.) into your application.",
5
5
  "main": "dist/sizebay-core-sdk.umd.js",
6
6
  "module": "dist/sizebay-core-sdk.es.js",
@@ -1,17 +0,0 @@
1
- import { BaseSearchParams } from '../base/base-search.dto';
2
- import { ProductClass } from '../../common/product-class.type';
3
- import { ClothType } from '../../common/cloth-type.type';
4
- export interface GetComplementaryByPermalinkBodyDto extends BaseSearchParams {
5
- permalink?: string;
6
- productId?: string;
7
- similarityThreshold: number;
8
- baseClothType?: ClothType;
9
- targetClothType?: ClothType;
10
- ageRange?: string;
11
- gender?: string;
12
- style?: string;
13
- color?: string;
14
- productClass?: ProductClass;
15
- page?: number;
16
- perPage?: number;
17
- }
@@ -1,16 +0,0 @@
1
- import { BaseSearchParams } from '../base/base-search.dto';
2
- import { ProductClass } from '../../common/product-class.type';
3
- import { ClothType } from '../../common/cloth-type.type';
4
- export interface GetSimilarByPermalinkBodyDto extends BaseSearchParams {
5
- permalink?: string;
6
- productId?: string;
7
- ageRange?: string;
8
- gender?: string;
9
- style?: string;
10
- color?: string;
11
- productClass?: ProductClass;
12
- clothType?: ClothType;
13
- page?: number;
14
- perPage?: number;
15
- similarityThreshold?: number;
16
- }