@blux.ai/web-sdk 2.2.28 → 2.2.30

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.
Files changed (92) hide show
  1. package/dist/BluxClient.d.ts +9 -18
  2. package/dist/BluxClient.js +22 -7
  3. package/dist/BluxClient.js.map +1 -1
  4. package/dist/apis/APIs.d.ts +33 -35
  5. package/dist/apis/APIs.js +10 -17
  6. package/dist/apis/APIs.js.map +1 -1
  7. package/dist/apis/createCrmEvent.js.map +1 -1
  8. package/dist/apis/createEvent.js.map +1 -1
  9. package/dist/apis/getItemRecommendations.js.map +1 -1
  10. package/dist/apis/getNotifications.js.map +1 -1
  11. package/dist/apis/initialize.js.map +1 -1
  12. package/dist/apis/notificationsUpdate.js.map +1 -1
  13. package/dist/apis/signIn.js.map +1 -1
  14. package/dist/apis/signOut.js.map +1 -1
  15. package/dist/apis/updateProperties.js.map +1 -1
  16. package/dist/bridges/AndroidBridge.js.map +1 -1
  17. package/dist/bridges/Bridge.d.ts +0 -1
  18. package/dist/bridges/Bridge.js.map +1 -1
  19. package/dist/bridges/FlutterBridge.js.map +1 -1
  20. package/dist/bridges/IosBridge.js.map +1 -1
  21. package/dist/bridges/RNBridge.js.map +1 -1
  22. package/dist/constants/BLUX_ATTRIBUTES.js.map +1 -1
  23. package/dist/constants/COUNTRIES.js +1 -1
  24. package/dist/constants/COUNTRIES.js.map +1 -1
  25. package/dist/constants/PAGE_VISIT_ENABLED_APPLICATION_IDS.js +1 -3
  26. package/dist/constants/PAGE_VISIT_ENABLED_APPLICATION_IDS.js.map +1 -1
  27. package/dist/events/AddCartaddEvent.d.ts +1 -6
  28. package/dist/events/AddCartaddEvent.js +2 -2
  29. package/dist/events/AddCartaddEvent.js.map +1 -1
  30. package/dist/events/AddClickEvent.d.ts +1 -6
  31. package/dist/events/AddClickEvent.js +2 -2
  32. package/dist/events/AddClickEvent.js.map +1 -1
  33. package/dist/events/AddCustomEvent.d.ts +1 -6
  34. package/dist/events/AddCustomEvent.js.map +1 -1
  35. package/dist/events/AddInstantImpressionEvent.d.ts +1 -9
  36. package/dist/events/AddInstantImpressionEvent.js +2 -2
  37. package/dist/events/AddInstantImpressionEvent.js.map +1 -1
  38. package/dist/events/AddLikeEvent.d.ts +1 -6
  39. package/dist/events/AddLikeEvent.js +2 -2
  40. package/dist/events/AddLikeEvent.js.map +1 -1
  41. package/dist/events/AddOrderEvent.d.ts +1 -8
  42. package/dist/events/AddOrderEvent.js +2 -2
  43. package/dist/events/AddOrderEvent.js.map +1 -1
  44. package/dist/events/AddPageViewEvent.d.ts +1 -6
  45. package/dist/events/AddPageViewEvent.js +2 -2
  46. package/dist/events/AddPageViewEvent.js.map +1 -1
  47. package/dist/events/AddPageVisitEvent.d.ts +1 -5
  48. package/dist/events/AddPageVisitEvent.js +2 -2
  49. package/dist/events/AddPageVisitEvent.js.map +1 -1
  50. package/dist/events/AddPersistentImpressionEvent.d.ts +1 -9
  51. package/dist/events/AddPersistentImpressionEvent.js +2 -2
  52. package/dist/events/AddPersistentImpressionEvent.js.map +1 -1
  53. package/dist/events/AddProductDetailViewEvent.d.ts +1 -6
  54. package/dist/events/AddProductDetailViewEvent.js +2 -2
  55. package/dist/events/AddProductDetailViewEvent.js.map +1 -1
  56. package/dist/events/AddRateEvent.d.ts +1 -7
  57. package/dist/events/AddRateEvent.js +2 -2
  58. package/dist/events/AddRateEvent.js.map +1 -1
  59. package/dist/events/AddSearchEvent.d.ts +1 -6
  60. package/dist/events/AddSearchEvent.js +2 -2
  61. package/dist/events/AddSearchEvent.js.map +1 -1
  62. package/dist/events/AddSectionViewEvent.d.ts +1 -6
  63. package/dist/events/AddSectionViewEvent.js +2 -2
  64. package/dist/events/AddSectionViewEvent.js.map +1 -1
  65. package/dist/events/Event.d.ts +0 -1
  66. package/dist/events/Event.js +1 -24
  67. package/dist/events/Event.js.map +1 -1
  68. package/dist/events/VisitEvent.d.ts +1 -5
  69. package/dist/events/VisitEvent.js +2 -2
  70. package/dist/events/VisitEvent.js.map +1 -1
  71. package/dist/events/index.d.ts +2 -1
  72. package/dist/events/index.js +2 -0
  73. package/dist/events/types.d.ts +0 -1
  74. package/dist/package.js +1 -1
  75. package/dist/recs/ItemRec.d.ts +4 -24
  76. package/dist/recs/ItemRec.js.map +1 -1
  77. package/dist/recs/Rec.d.ts +0 -1
  78. package/dist/recs/Rec.js.map +1 -1
  79. package/dist/recs/types.d.ts +1 -1
  80. package/dist/utils/Base.d.ts +1 -2
  81. package/dist/utils/LocalStorage.js.map +1 -1
  82. package/dist/utils/Logger.d.ts +1 -0
  83. package/dist/utils/Logger.js.map +1 -1
  84. package/dist/utils/SessionStorage.js.map +1 -1
  85. package/dist/utils/getPath.js +4 -4
  86. package/dist/utils/getPath.js.map +1 -1
  87. package/dist/utils/observables.js.map +1 -1
  88. package/dist/utils/operators.js.map +1 -1
  89. package/dist/utils/zodSchemas.d.ts +1 -2
  90. package/dist/utils/zodSchemas.js +1 -1
  91. package/dist/utils/zodSchemas.js.map +1 -1
  92. package/package.json +5 -4
@@ -1,13 +1,8 @@
1
1
  import { IAddSearchEvent } from "./types.js";
2
2
  import { Event } from "./Event.js";
3
-
4
3
  //#region src/events/AddSearchEvent.d.ts
5
4
  declare class AddSearchEvent extends Event {
6
- constructor({
7
- searchQuery,
8
- tracking,
9
- customEventProperties
10
- }: IAddSearchEvent);
5
+ constructor({ searchQuery, tracking, customEventProperties }: IAddSearchEvent);
11
6
  }
12
7
  //#endregion
13
8
  export { AddSearchEvent };
@@ -1,10 +1,10 @@
1
- import { Event, EventType } from "./Event.js";
1
+ import { Event } from "./Event.js";
2
2
 
3
3
  //#region src/events/AddSearchEvent.ts
4
4
  var AddSearchEvent = class extends Event {
5
5
  constructor({ searchQuery, tracking, customEventProperties }) {
6
6
  super({
7
- event_type: EventType.search,
7
+ event_type: "search",
8
8
  event_properties: {
9
9
  search_query: searchQuery,
10
10
  tracking
@@ -1 +1 @@
1
- {"version":3,"file":"AddSearchEvent.js","names":[],"sources":["../../src/events/AddSearchEvent.ts"],"sourcesContent":["import { Event, EventType } from \"./Event\";\n\nimport type { IAddSearchEvent } from \"./types\";\n\nexport class AddSearchEvent extends Event {\n constructor({\n searchQuery,\n tracking,\n customEventProperties,\n }: IAddSearchEvent) {\n super({\n event_type: EventType.search,\n event_properties: { search_query: searchQuery, tracking },\n custom_event_properties: customEventProperties,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,iBAAb,cAAoC,MAAM;CACxC,YAAY,EACV,aACA,UACA,yBACkB;AAClB,QAAM;GACJ,YAAY,UAAU;GACtB,kBAAkB;IAAE,cAAc;IAAa;IAAU;GACzD,yBAAyB;GAC1B,CAAC"}
1
+ {"version":3,"file":"AddSearchEvent.js","names":[],"sources":["../../src/events/AddSearchEvent.ts"],"sourcesContent":["import { Event, EventType } from \"./Event\";\n\nimport type { IAddSearchEvent } from \"./types\";\n\nexport class AddSearchEvent extends Event {\n constructor({\n searchQuery,\n tracking,\n customEventProperties,\n }: IAddSearchEvent) {\n super({\n event_type: EventType.search,\n event_properties: { search_query: searchQuery, tracking },\n custom_event_properties: customEventProperties,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,iBAAb,cAAoC,MAAM;CACxC,YAAY,EACV,aACA,UACA,yBACkB;EAClB,MAAM;GACJ;GACA,kBAAkB;IAAE,cAAc;IAAa;GAAS;GACxD,yBAAyB;EAC3B,CAAC;CACH;AACF"}
@@ -1,13 +1,8 @@
1
1
  import { IAddSectionViewEvent } from "./types.js";
2
2
  import { Event } from "./Event.js";
3
-
4
3
  //#region src/events/AddSectionViewEvent.d.ts
5
4
  declare class AddSectionViewEvent extends Event {
6
- constructor({
7
- section,
8
- tracking,
9
- customEventProperties
10
- }: IAddSectionViewEvent);
5
+ constructor({ section, tracking, customEventProperties }: IAddSectionViewEvent);
11
6
  }
12
7
  //#endregion
13
8
  export { AddSectionViewEvent };
@@ -1,10 +1,10 @@
1
- import { Event, EventType } from "./Event.js";
1
+ import { Event } from "./Event.js";
2
2
 
3
3
  //#region src/events/AddSectionViewEvent.ts
4
4
  var AddSectionViewEvent = class extends Event {
5
5
  constructor({ section, tracking, customEventProperties }) {
6
6
  super({
7
- event_type: EventType.section_view,
7
+ event_type: "section_view",
8
8
  event_properties: {
9
9
  section,
10
10
  tracking
@@ -1 +1 @@
1
- {"version":3,"file":"AddSectionViewEvent.js","names":[],"sources":["../../src/events/AddSectionViewEvent.ts"],"sourcesContent":["import { Event, EventType } from \"./Event\";\n\nimport type { IAddSectionViewEvent } from \"./types\";\n\nexport class AddSectionViewEvent extends Event {\n constructor({\n section,\n tracking,\n customEventProperties,\n }: IAddSectionViewEvent) {\n super({\n event_type: EventType.section_view,\n event_properties: {\n section,\n tracking,\n },\n custom_event_properties: customEventProperties,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,sBAAb,cAAyC,MAAM;CAC7C,YAAY,EACV,SACA,UACA,yBACuB;AACvB,QAAM;GACJ,YAAY,UAAU;GACtB,kBAAkB;IAChB;IACA;IACD;GACD,yBAAyB;GAC1B,CAAC"}
1
+ {"version":3,"file":"AddSectionViewEvent.js","names":[],"sources":["../../src/events/AddSectionViewEvent.ts"],"sourcesContent":["import { Event, EventType } from \"./Event\";\n\nimport type { IAddSectionViewEvent } from \"./types\";\n\nexport class AddSectionViewEvent extends Event {\n constructor({\n section,\n tracking,\n customEventProperties,\n }: IAddSectionViewEvent) {\n super({\n event_type: EventType.section_view,\n event_properties: {\n section,\n tracking,\n },\n custom_event_properties: customEventProperties,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,sBAAb,cAAyC,MAAM;CAC7C,YAAY,EACV,SACA,UACA,yBACuB;EACvB,MAAM;GACJ;GACA,kBAAkB;IAChB;IACA;GACF;GACA,yBAAyB;EAC3B,CAAC;CACH;AACF"}
@@ -1,5 +1,4 @@
1
1
  import { EventRequest } from "./types.js";
2
-
3
2
  //#region src/events/Event.d.ts
4
3
  declare abstract class Event {
5
4
  readonly request: EventRequest;
@@ -1,29 +1,6 @@
1
1
  import { v4 } from "uuid";
2
2
 
3
3
  //#region src/events/Event.ts
4
- let EventType = /* @__PURE__ */ function(EventType) {
5
- EventType["visit"] = "visit";
6
- EventType["push_opened"] = "push_opened";
7
- EventType["friendtalk_button_clicked"] = "friendtalk_button_clicked";
8
- EventType["alimtalk_button_clicked"] = "alimtalk_button_clicked";
9
- EventType["landing_clicked"] = "landing_clicked";
10
- EventType["email_link_clicked"] = "email_link_clicked";
11
- EventType["sms_link_clicked"] = "sms_link_clicked";
12
- EventType["product_detail_view"] = "product_detail_view";
13
- EventType["purchase"] = "purchase";
14
- EventType["order"] = "order";
15
- EventType["cartadd"] = "cartadd";
16
- EventType["like"] = "like";
17
- EventType["rate"] = "rate";
18
- EventType["page_visit"] = "page_visit";
19
- EventType["page_view"] = "page_view";
20
- EventType["instant_impression"] = "instant_impression";
21
- EventType["persistent_impression"] = "persistent_impression";
22
- EventType["search"] = "search";
23
- EventType["section_view"] = "section_view";
24
- EventType["click"] = "click";
25
- return EventType;
26
- }({});
27
4
  var Event = class {
28
5
  request;
29
6
  constructor(data) {
@@ -36,5 +13,5 @@ var Event = class {
36
13
  };
37
14
 
38
15
  //#endregion
39
- export { Event, EventType };
16
+ export { Event };
40
17
  //# sourceMappingURL=Event.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Event.js","names":["uuid"],"sources":["../../src/events/Event.ts"],"sourcesContent":["import { v4 as uuid } from \"uuid\";\n\nimport type { EventRequest } from \"./types\";\n\nexport enum EventType {\n visit = \"visit\",\n push_opened = \"push_opened\",\n\n // ~_clicked\n friendtalk_button_clicked = \"friendtalk_button_clicked\",\n alimtalk_button_clicked = \"alimtalk_button_clicked\",\n landing_clicked = \"landing_clicked\",\n email_link_clicked = \"email_link_clicked\",\n sms_link_clicked = \"sms_link_clicked\",\n\n product_detail_view = \"product_detail_view\",\n purchase = \"purchase\",\n order = \"order\",\n cartadd = \"cartadd\",\n like = \"like\",\n rate = \"rate\",\n page_visit = \"page_visit\",\n page_view = \"page_view\",\n\n instant_impression = \"instant_impression\",\n persistent_impression = \"persistent_impression\",\n search = \"search\",\n\n section_view = \"section_view\",\n click = \"click\",\n}\n\nexport abstract class Event {\n public readonly request: EventRequest;\n constructor(data: Omit<EventRequest, \"id\" | \"captured_at\">) {\n this.request = {\n id: uuid(),\n captured_at: new Date().toISOString(),\n ...data,\n };\n }\n}\n"],"mappings":";;;AAIA,IAAY,gDAAL;AACL;AACA;AAGA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;;;AAGF,IAAsB,QAAtB,MAA4B;CAC1B,AAAgB;CAChB,YAAY,MAAgD;AAC1D,OAAK,UAAU;GACb,IAAIA,IAAM;GACV,8BAAa,IAAI,MAAM,EAAC,aAAa;GACrC,GAAG;GACJ"}
1
+ {"version":3,"file":"Event.js","names":["uuid"],"sources":["../../src/events/Event.ts"],"sourcesContent":["import { v4 as uuid } from \"uuid\";\n\nimport type { EventRequest } from \"./types\";\n\nexport enum EventType {\n visit = \"visit\",\n push_opened = \"push_opened\",\n\n // ~_clicked\n friendtalk_button_clicked = \"friendtalk_button_clicked\",\n alimtalk_button_clicked = \"alimtalk_button_clicked\",\n landing_clicked = \"landing_clicked\",\n email_link_clicked = \"email_link_clicked\",\n sms_link_clicked = \"sms_link_clicked\",\n\n product_detail_view = \"product_detail_view\",\n purchase = \"purchase\",\n order = \"order\",\n cartadd = \"cartadd\",\n like = \"like\",\n rate = \"rate\",\n page_visit = \"page_visit\",\n page_view = \"page_view\",\n\n instant_impression = \"instant_impression\",\n persistent_impression = \"persistent_impression\",\n search = \"search\",\n\n section_view = \"section_view\",\n click = \"click\",\n}\n\nexport abstract class Event {\n public readonly request: EventRequest;\n constructor(data: Omit<EventRequest, \"id\" | \"captured_at\">) {\n this.request = {\n id: uuid(),\n captured_at: new Date().toISOString(),\n ...data,\n };\n }\n}\n"],"mappings":";;;AAgCA,IAAsB,QAAtB,MAA4B;CAC1B,AAAgB;CAChB,YAAY,MAAgD;EAC1D,KAAK,UAAU;GACb,IAAIA,GAAK;GACT,8BAAa,IAAI,KAAK,EAAC,CAAC,YAAY;GACpC,GAAG;EACL;CACF;AACF"}
@@ -1,12 +1,8 @@
1
1
  import { IVisitEvent } from "./types.js";
2
2
  import { Event } from "./Event.js";
3
-
4
3
  //#region src/events/VisitEvent.d.ts
5
4
  declare class VisitEvent extends Event {
6
- constructor({
7
- tracking,
8
- customEventProperties
9
- }: IVisitEvent);
5
+ constructor({ tracking, customEventProperties }: IVisitEvent);
10
6
  }
11
7
  //#endregion
12
8
  export { VisitEvent };
@@ -1,10 +1,10 @@
1
- import { Event, EventType } from "./Event.js";
1
+ import { Event } from "./Event.js";
2
2
 
3
3
  //#region src/events/VisitEvent.ts
4
4
  var VisitEvent = class extends Event {
5
5
  constructor({ tracking, customEventProperties }) {
6
6
  super({
7
- event_type: EventType.visit,
7
+ event_type: "visit",
8
8
  event_properties: { tracking },
9
9
  custom_event_properties: customEventProperties
10
10
  });
@@ -1 +1 @@
1
- {"version":3,"file":"VisitEvent.js","names":[],"sources":["../../src/events/VisitEvent.ts"],"sourcesContent":["import { Event, EventType } from \"./Event\";\n\nimport type { IVisitEvent } from \"./types\";\n\nexport class VisitEvent extends Event {\n constructor({ tracking, customEventProperties }: IVisitEvent) {\n super({\n event_type: EventType.visit,\n event_properties: {\n tracking,\n },\n custom_event_properties: customEventProperties,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,aAAb,cAAgC,MAAM;CACpC,YAAY,EAAE,UAAU,yBAAsC;AAC5D,QAAM;GACJ,YAAY,UAAU;GACtB,kBAAkB,EAChB,UACD;GACD,yBAAyB;GAC1B,CAAC"}
1
+ {"version":3,"file":"VisitEvent.js","names":[],"sources":["../../src/events/VisitEvent.ts"],"sourcesContent":["import { Event, EventType } from \"./Event\";\n\nimport type { IVisitEvent } from \"./types\";\n\nexport class VisitEvent extends Event {\n constructor({ tracking, customEventProperties }: IVisitEvent) {\n super({\n event_type: EventType.visit,\n event_properties: {\n tracking,\n },\n custom_event_properties: customEventProperties,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,aAAb,cAAgC,MAAM;CACpC,YAAY,EAAE,UAAU,yBAAsC;EAC5D,MAAM;GACJ;GACA,kBAAkB,EAChB,SACF;GACA,yBAAyB;EAC3B,CAAC;CACH;AACF"}
@@ -11,4 +11,5 @@ import { AddSectionViewEvent } from "./AddSectionViewEvent.js";
11
11
  import { AddSearchEvent } from "./AddSearchEvent.js";
12
12
  import { AddPageVisitEvent } from "./AddPageVisitEvent.js";
13
13
  import { AddClickEvent } from "./AddClickEvent.js";
14
- import { VisitEvent } from "./VisitEvent.js";
14
+ import { VisitEvent } from "./VisitEvent.js";
15
+ export { AddCartaddEvent, AddClickEvent, AddCustomEvent, AddInstantImpressionEvent, AddLikeEvent, AddOrderEvent, AddPageViewEvent, AddPageVisitEvent, AddPersistentImpressionEvent, AddProductDetailViewEvent, AddRateEvent, AddSearchEvent, AddSectionViewEvent, VisitEvent };
@@ -12,3 +12,5 @@ import { AddSearchEvent } from "./AddSearchEvent.js";
12
12
  import { AddPageVisitEvent } from "./AddPageVisitEvent.js";
13
13
  import { AddClickEvent } from "./AddClickEvent.js";
14
14
  import { VisitEvent } from "./VisitEvent.js";
15
+
16
+ export { AddCartaddEvent, AddClickEvent, AddCustomEvent, AddInstantImpressionEvent, AddLikeEvent, AddOrderEvent, AddPageViewEvent, AddPageVisitEvent, AddPersistentImpressionEvent, AddProductDetailViewEvent, AddRateEvent, AddSearchEvent, AddSectionViewEvent, VisitEvent };
@@ -1,5 +1,4 @@
1
1
  import { CustomProperties, EventProperties, InternalEventProperties } from "../utils/zodSchemas.js";
2
-
3
2
  //#region src/events/types.d.ts
4
3
  interface EventRequest {
5
4
  id: string;
package/dist/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "2.2.28";
2
+ var version = "2.2.30";
3
3
 
4
4
  //#endregion
5
5
  export { version };
@@ -1,37 +1,17 @@
1
1
  import { ICategoryRec, IItemRec, IItemsRec, IUserRec } from "./types.js";
2
2
  import { Rec } from "./Rec.js";
3
-
4
3
  //#region src/recs/ItemRec.d.ts
5
4
  declare class UserRec extends Rec {
6
- constructor({
7
- call_type,
8
- limit,
9
- offset
10
- }: IUserRec);
5
+ constructor({ call_type, limit, offset }: IUserRec);
11
6
  }
12
7
  declare class ItemRec extends Rec {
13
- constructor({
14
- call_type,
15
- item_id,
16
- limit,
17
- offset
18
- }: IItemRec);
8
+ constructor({ call_type, item_id, limit, offset }: IItemRec);
19
9
  }
20
10
  declare class ItemsRec extends Rec {
21
- constructor({
22
- call_type,
23
- item_ids,
24
- limit,
25
- offset
26
- }: IItemsRec);
11
+ constructor({ call_type, item_ids, limit, offset }: IItemsRec);
27
12
  }
28
13
  declare class CategoryRec extends Rec {
29
- constructor({
30
- call_type,
31
- category_id,
32
- limit,
33
- offset
34
- }: ICategoryRec);
14
+ constructor({ call_type, category_id, limit, offset }: ICategoryRec);
35
15
  }
36
16
  //#endregion
37
17
  export { CategoryRec, ItemRec, ItemsRec, UserRec };
@@ -1 +1 @@
1
- {"version":3,"file":"ItemRec.js","names":[],"sources":["../../src/recs/ItemRec.ts"],"sourcesContent":["import { Rec } from \"./Rec\";\n\nimport type { ICategoryRec, IItemRec, IItemsRec, IUserRec } from \"./types\";\n\nexport class UserRec extends Rec {\n constructor({ call_type, limit, offset }: IUserRec) {\n super({\n call_type,\n limit,\n offset,\n });\n }\n}\n\n// (단일) 상품 기반 추천\nexport class ItemRec extends Rec {\n constructor({ call_type, item_id, limit, offset }: IItemRec) {\n super({\n call_type,\n item_id,\n limit,\n offset,\n });\n }\n}\n\nexport class ItemsRec extends Rec {\n constructor({ call_type, item_ids, limit, offset }: IItemsRec) {\n super({\n call_type,\n item_ids,\n limit,\n offset,\n });\n }\n}\n\nexport class CategoryRec extends Rec {\n constructor({ call_type, category_id, limit, offset }: ICategoryRec) {\n super({\n call_type,\n category_id,\n limit,\n offset,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,UAAb,cAA6B,IAAI;CAC/B,YAAY,EAAE,WAAW,OAAO,UAAoB;AAClD,QAAM;GACJ;GACA;GACA;GACD,CAAC;;;AAKN,IAAa,UAAb,cAA6B,IAAI;CAC/B,YAAY,EAAE,WAAW,SAAS,OAAO,UAAoB;AAC3D,QAAM;GACJ;GACA;GACA;GACA;GACD,CAAC;;;AAIN,IAAa,WAAb,cAA8B,IAAI;CAChC,YAAY,EAAE,WAAW,UAAU,OAAO,UAAqB;AAC7D,QAAM;GACJ;GACA;GACA;GACA;GACD,CAAC;;;AAIN,IAAa,cAAb,cAAiC,IAAI;CACnC,YAAY,EAAE,WAAW,aAAa,OAAO,UAAwB;AACnE,QAAM;GACJ;GACA;GACA;GACA;GACD,CAAC"}
1
+ {"version":3,"file":"ItemRec.js","names":[],"sources":["../../src/recs/ItemRec.ts"],"sourcesContent":["import { Rec } from \"./Rec\";\n\nimport type { ICategoryRec, IItemRec, IItemsRec, IUserRec } from \"./types\";\n\nexport class UserRec extends Rec {\n constructor({ call_type, limit, offset }: IUserRec) {\n super({\n call_type,\n limit,\n offset,\n });\n }\n}\n\n// (단일) 상품 기반 추천\nexport class ItemRec extends Rec {\n constructor({ call_type, item_id, limit, offset }: IItemRec) {\n super({\n call_type,\n item_id,\n limit,\n offset,\n });\n }\n}\n\nexport class ItemsRec extends Rec {\n constructor({ call_type, item_ids, limit, offset }: IItemsRec) {\n super({\n call_type,\n item_ids,\n limit,\n offset,\n });\n }\n}\n\nexport class CategoryRec extends Rec {\n constructor({ call_type, category_id, limit, offset }: ICategoryRec) {\n super({\n call_type,\n category_id,\n limit,\n offset,\n });\n }\n}\n"],"mappings":";;;AAIA,IAAa,UAAb,cAA6B,IAAI;CAC/B,YAAY,EAAE,WAAW,OAAO,UAAoB;EAClD,MAAM;GACJ;GACA;GACA;EACF,CAAC;CACH;AACF;AAGA,IAAa,UAAb,cAA6B,IAAI;CAC/B,YAAY,EAAE,WAAW,SAAS,OAAO,UAAoB;EAC3D,MAAM;GACJ;GACA;GACA;GACA;EACF,CAAC;CACH;AACF;AAEA,IAAa,WAAb,cAA8B,IAAI;CAChC,YAAY,EAAE,WAAW,UAAU,OAAO,UAAqB;EAC7D,MAAM;GACJ;GACA;GACA;GACA;EACF,CAAC;CACH;AACF;AAEA,IAAa,cAAb,cAAiC,IAAI;CACnC,YAAY,EAAE,WAAW,aAAa,OAAO,UAAwB;EACnE,MAAM;GACJ;GACA;GACA;GACA;EACF,CAAC;CACH;AACF"}
@@ -1,5 +1,4 @@
1
1
  import { RecRequest } from "./types.js";
2
-
3
2
  //#region src/recs/Rec.d.ts
4
3
  declare abstract class Rec {
5
4
  readonly request: RecRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"Rec.js","names":[],"sources":["../../src/recs/Rec.ts"],"sourcesContent":["import type { RecRequest } from \"./types\";\n\nexport abstract class Rec {\n public readonly request: RecRequest;\n\n constructor(data: RecRequest) {\n this.request = {\n ...data,\n };\n }\n}\n"],"mappings":";AAEA,IAAsB,MAAtB,MAA0B;CACxB,AAAgB;CAEhB,YAAY,MAAkB;AAC5B,OAAK,UAAU,EACb,GAAG,MACJ"}
1
+ {"version":3,"file":"Rec.js","names":[],"sources":["../../src/recs/Rec.ts"],"sourcesContent":["import type { RecRequest } from \"./types\";\n\nexport abstract class Rec {\n public readonly request: RecRequest;\n\n constructor(data: RecRequest) {\n this.request = {\n ...data,\n };\n }\n}\n"],"mappings":";AAEA,IAAsB,MAAtB,MAA0B;CACxB,AAAgB;CAEhB,YAAY,MAAkB;EAC5B,KAAK,UAAU,EACb,GAAG,KACL;CACF;AACF"}
@@ -22,5 +22,5 @@ interface ICategoryRec extends BaseItemRec {
22
22
  category_id: string;
23
23
  }
24
24
  //#endregion
25
- export { ICategoryRec, IItemRec, IItemsRec, IUserRec, RecRequest };
25
+ export { BaseItemRec, ICategoryRec, IItemRec, IItemsRec, IUserRec, RecRequest };
26
26
  //# sourceMappingURL=types.d.ts.map
@@ -1,7 +1,6 @@
1
1
  import ObjectId from "bson-objectid";
2
-
3
2
  //#region src/utils/Base.d.ts
4
- type AllObjectIdsToString<T> = { [K in keyof T]: T[K] extends ObjectId ? string : T[K] extends ObjectId | undefined ? string | undefined : T[K] extends ObjectId | null ? string | null : T[K] extends ObjectId | null | undefined ? string | null | undefined : T[K] extends Date ? string : T[K] extends Date | null ? string | null : T[K] extends Date | undefined ? string | undefined : T[K] extends Record<string, any> | undefined ? AllObjectIdsToString<T[K]> : T[K] };
3
+ type AllObjectIdsToString<T> = { [K in keyof T]: T[K] extends ObjectId ? string : T[K] extends ObjectId | undefined ? string | undefined : T[K] extends ObjectId | null ? string | null : T[K] extends ObjectId | null | undefined ? string | null | undefined : T[K] extends Date ? string : T[K] extends Date | null ? string | null : T[K] extends Date | undefined ? string | undefined : T[K] extends Record<string, any> | undefined ? AllObjectIdsToString<T[K]> : T[K]; };
5
4
  type Serialize<T> = AllObjectIdsToString<Omit<T, "id">>;
6
5
  //#endregion
7
6
  export { Serialize };
@@ -1 +1 @@
1
- {"version":3,"file":"LocalStorage.js","names":[],"sources":["../../src/utils/LocalStorage.ts"],"sourcesContent":["const BLUX_DEVICE_ID = \"blux_deviceId\";\nconst BLUX_URL = \"blux_url\";\nconst BLUX_REF = \"blux_ref\";\nconst BLUX_INAPP_HIDE_TIMESTAMP = \"blux_inapp\";\n\nexport class LocalStorage {\n static getDeviceId(): string | null {\n const deviceId = localStorage.getItem(BLUX_DEVICE_ID);\n return deviceId === \"undefined\" || deviceId?.trim() === \"\"\n ? null\n : deviceId;\n }\n\n static setDeviceId(deviceId: string) {\n localStorage.setItem(BLUX_DEVICE_ID, deviceId);\n }\n\n static getUrl(): string | null {\n const url = localStorage.getItem(BLUX_URL);\n return url === \"undefined\" || url?.trim() === \"\" ? null : url;\n }\n\n static setUrl(url: string) {\n localStorage.setItem(BLUX_URL, url);\n }\n\n static getRef(): string | null {\n const ref = localStorage.getItem(BLUX_REF);\n return ref === \"undefined\" || ref?.trim() === \"\" ? null : ref;\n }\n\n static setRef(ref: string) {\n localStorage.setItem(BLUX_REF, ref);\n }\n\n static setInappHideTimestamp(key: string, timestamp: number) {\n localStorage.setItem(\n `${BLUX_INAPP_HIDE_TIMESTAMP}/${key}`,\n timestamp.toString(),\n );\n }\n\n static getInappHideTimestamp(key: string): number | null {\n const timestamp = localStorage.getItem(\n `${BLUX_INAPP_HIDE_TIMESTAMP}/${key}`,\n );\n return timestamp ? parseInt(timestamp) : null;\n }\n}\n"],"mappings":";AAAA,MAAM,iBAAiB;AACvB,MAAM,WAAW;AACjB,MAAM,WAAW;AACjB,MAAM,4BAA4B;AAElC,IAAa,eAAb,MAA0B;CACxB,OAAO,cAA6B;EAClC,MAAM,WAAW,aAAa,QAAQ,eAAe;AACrD,SAAO,aAAa,eAAe,UAAU,MAAM,KAAK,KACpD,OACA;;CAGN,OAAO,YAAY,UAAkB;AACnC,eAAa,QAAQ,gBAAgB,SAAS;;CAGhD,OAAO,SAAwB;EAC7B,MAAM,MAAM,aAAa,QAAQ,SAAS;AAC1C,SAAO,QAAQ,eAAe,KAAK,MAAM,KAAK,KAAK,OAAO;;CAG5D,OAAO,OAAO,KAAa;AACzB,eAAa,QAAQ,UAAU,IAAI;;CAGrC,OAAO,SAAwB;EAC7B,MAAM,MAAM,aAAa,QAAQ,SAAS;AAC1C,SAAO,QAAQ,eAAe,KAAK,MAAM,KAAK,KAAK,OAAO;;CAG5D,OAAO,OAAO,KAAa;AACzB,eAAa,QAAQ,UAAU,IAAI;;CAGrC,OAAO,sBAAsB,KAAa,WAAmB;AAC3D,eAAa,QACX,GAAG,0BAA0B,GAAG,OAChC,UAAU,UAAU,CACrB;;CAGH,OAAO,sBAAsB,KAA4B;EACvD,MAAM,YAAY,aAAa,QAC7B,GAAG,0BAA0B,GAAG,MACjC;AACD,SAAO,YAAY,SAAS,UAAU,GAAG"}
1
+ {"version":3,"file":"LocalStorage.js","names":[],"sources":["../../src/utils/LocalStorage.ts"],"sourcesContent":["const BLUX_DEVICE_ID = \"blux_deviceId\";\nconst BLUX_URL = \"blux_url\";\nconst BLUX_REF = \"blux_ref\";\nconst BLUX_INAPP_HIDE_TIMESTAMP = \"blux_inapp\";\n\nexport class LocalStorage {\n static getDeviceId(): string | null {\n const deviceId = localStorage.getItem(BLUX_DEVICE_ID);\n return deviceId === \"undefined\" || deviceId?.trim() === \"\"\n ? null\n : deviceId;\n }\n\n static setDeviceId(deviceId: string) {\n localStorage.setItem(BLUX_DEVICE_ID, deviceId);\n }\n\n static getUrl(): string | null {\n const url = localStorage.getItem(BLUX_URL);\n return url === \"undefined\" || url?.trim() === \"\" ? null : url;\n }\n\n static setUrl(url: string) {\n localStorage.setItem(BLUX_URL, url);\n }\n\n static getRef(): string | null {\n const ref = localStorage.getItem(BLUX_REF);\n return ref === \"undefined\" || ref?.trim() === \"\" ? null : ref;\n }\n\n static setRef(ref: string) {\n localStorage.setItem(BLUX_REF, ref);\n }\n\n static setInappHideTimestamp(key: string, timestamp: number) {\n localStorage.setItem(\n `${BLUX_INAPP_HIDE_TIMESTAMP}/${key}`,\n timestamp.toString(),\n );\n }\n\n static getInappHideTimestamp(key: string): number | null {\n const timestamp = localStorage.getItem(\n `${BLUX_INAPP_HIDE_TIMESTAMP}/${key}`,\n );\n return timestamp ? parseInt(timestamp) : null;\n }\n}\n"],"mappings":";AAAA,MAAM,iBAAiB;AACvB,MAAM,WAAW;AACjB,MAAM,WAAW;AACjB,MAAM,4BAA4B;AAElC,IAAa,eAAb,MAA0B;CACxB,OAAO,cAA6B;EAClC,MAAM,WAAW,aAAa,QAAQ,cAAc;EACpD,OAAO,aAAa,eAAe,UAAU,KAAK,MAAM,KACpD,OACA;CACN;CAEA,OAAO,YAAY,UAAkB;EACnC,aAAa,QAAQ,gBAAgB,QAAQ;CAC/C;CAEA,OAAO,SAAwB;EAC7B,MAAM,MAAM,aAAa,QAAQ,QAAQ;EACzC,OAAO,QAAQ,eAAe,KAAK,KAAK,MAAM,KAAK,OAAO;CAC5D;CAEA,OAAO,OAAO,KAAa;EACzB,aAAa,QAAQ,UAAU,GAAG;CACpC;CAEA,OAAO,SAAwB;EAC7B,MAAM,MAAM,aAAa,QAAQ,QAAQ;EACzC,OAAO,QAAQ,eAAe,KAAK,KAAK,MAAM,KAAK,OAAO;CAC5D;CAEA,OAAO,OAAO,KAAa;EACzB,aAAa,QAAQ,UAAU,GAAG;CACpC;CAEA,OAAO,sBAAsB,KAAa,WAAmB;EAC3D,aAAa,QACX,GAAG,0BAA0B,GAAG,OAChC,UAAU,SAAS,CACrB;CACF;CAEA,OAAO,sBAAsB,KAA4B;EACvD,MAAM,YAAY,aAAa,QAC7B,GAAG,0BAA0B,GAAG,KAClC;EACA,OAAO,YAAY,SAAS,SAAS,IAAI;CAC3C;AACF"}
@@ -1,3 +1,4 @@
1
+ import "@sentry/types";
1
2
  //#region src/utils/Logger.d.ts
2
3
  type LogLevel = "debug" | "log" | "warning" | "error" | "fatal";
3
4
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.js","names":[],"sources":["../../src/utils/Logger.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { ScopeContext } from \"@sentry/types\";\n\nconst consoleMethodByLevel = {\n debug: console.debug.bind(console),\n log: console.log.bind(console),\n warning: console.warn.bind(console),\n error: console.error.bind(console),\n fatal: console.error.bind(console),\n} as const;\n\nexport type LogLevel = \"debug\" | \"log\" | \"warning\" | \"error\" | \"fatal\";\n\nconst LOG_LEVEL_ORDERS = {\n debug: 0,\n log: 1,\n warning: 2,\n error: 3,\n fatal: 4,\n};\n\nexport type Context = Partial<Pick<ScopeContext, \"tags\" | \"extra\">>;\n\n \nexport class Logger {\n public static logLevel: LogLevel = \"error\";\n\n private static base(\n message: string | Error,\n level: LogLevel,\n context?: Context,\n ) {\n if (LOG_LEVEL_ORDERS[level] >= LOG_LEVEL_ORDERS[this.logLevel]) {\n const logForConsole: unknown[] = [\"[BluxClient]\", message];\n\n if (context?.extra) {\n logForConsole.push(context.extra);\n }\n if (context?.tags) {\n logForConsole.push(context.tags);\n }\n\n consoleMethodByLevel[level]?.(...logForConsole);\n }\n }\n public static debug(message: string | Error, context?: Context) {\n this.base(message, \"debug\", context);\n }\n public static log(message: string | Error, context?: Context) {\n this.base(message, \"log\", context);\n }\n public static warning(message: string | Error, context?: Context) {\n this.base(message, \"warning\", context);\n }\n public static error(message: string | Error, context?: Context) {\n this.base(message, \"error\", context);\n }\n public static fatal(message: string | Error, context?: Context) {\n this.base(message, \"fatal\", context);\n }\n\n public static setLevel(level: LogLevel) {\n this.logLevel = level;\n }\n}\n"],"mappings":";AAGA,MAAM,uBAAuB;CAC3B,OAAO,QAAQ,MAAM,KAAK,QAAQ;CAClC,KAAK,QAAQ,IAAI,KAAK,QAAQ;CAC9B,SAAS,QAAQ,KAAK,KAAK,QAAQ;CACnC,OAAO,QAAQ,MAAM,KAAK,QAAQ;CAClC,OAAO,QAAQ,MAAM,KAAK,QAAQ;CACnC;AAID,MAAM,mBAAmB;CACvB,OAAO;CACP,KAAK;CACL,SAAS;CACT,OAAO;CACP,OAAO;CACR;AAKD,IAAa,SAAb,MAAoB;CAClB,OAAc,WAAqB;CAEnC,OAAe,KACb,SACA,OACA,SACA;AACA,MAAI,iBAAiB,UAAU,iBAAiB,KAAK,WAAW;GAC9D,MAAM,gBAA2B,CAAC,gBAAgB,QAAQ;AAE1D,OAAI,SAAS,MACX,eAAc,KAAK,QAAQ,MAAM;AAEnC,OAAI,SAAS,KACX,eAAc,KAAK,QAAQ,KAAK;AAGlC,wBAAqB,SAAS,GAAG,cAAc;;;CAGnD,OAAc,MAAM,SAAyB,SAAmB;AAC9D,OAAK,KAAK,SAAS,SAAS,QAAQ;;CAEtC,OAAc,IAAI,SAAyB,SAAmB;AAC5D,OAAK,KAAK,SAAS,OAAO,QAAQ;;CAEpC,OAAc,QAAQ,SAAyB,SAAmB;AAChE,OAAK,KAAK,SAAS,WAAW,QAAQ;;CAExC,OAAc,MAAM,SAAyB,SAAmB;AAC9D,OAAK,KAAK,SAAS,SAAS,QAAQ;;CAEtC,OAAc,MAAM,SAAyB,SAAmB;AAC9D,OAAK,KAAK,SAAS,SAAS,QAAQ;;CAGtC,OAAc,SAAS,OAAiB;AACtC,OAAK,WAAW"}
1
+ {"version":3,"file":"Logger.js","names":[],"sources":["../../src/utils/Logger.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { ScopeContext } from \"@sentry/types\";\n\nconst consoleMethodByLevel = {\n debug: console.debug.bind(console),\n log: console.log.bind(console),\n warning: console.warn.bind(console),\n error: console.error.bind(console),\n fatal: console.error.bind(console),\n} as const;\n\nexport type LogLevel = \"debug\" | \"log\" | \"warning\" | \"error\" | \"fatal\";\n\nconst LOG_LEVEL_ORDERS = {\n debug: 0,\n log: 1,\n warning: 2,\n error: 3,\n fatal: 4,\n};\n\nexport type Context = Partial<Pick<ScopeContext, \"tags\" | \"extra\">>;\n\n \nexport class Logger {\n public static logLevel: LogLevel = \"error\";\n\n private static base(\n message: string | Error,\n level: LogLevel,\n context?: Context,\n ) {\n if (LOG_LEVEL_ORDERS[level] >= LOG_LEVEL_ORDERS[this.logLevel]) {\n const logForConsole: unknown[] = [\"[BluxClient]\", message];\n\n if (context?.extra) {\n logForConsole.push(context.extra);\n }\n if (context?.tags) {\n logForConsole.push(context.tags);\n }\n\n consoleMethodByLevel[level]?.(...logForConsole);\n }\n }\n public static debug(message: string | Error, context?: Context) {\n this.base(message, \"debug\", context);\n }\n public static log(message: string | Error, context?: Context) {\n this.base(message, \"log\", context);\n }\n public static warning(message: string | Error, context?: Context) {\n this.base(message, \"warning\", context);\n }\n public static error(message: string | Error, context?: Context) {\n this.base(message, \"error\", context);\n }\n public static fatal(message: string | Error, context?: Context) {\n this.base(message, \"fatal\", context);\n }\n\n public static setLevel(level: LogLevel) {\n this.logLevel = level;\n }\n}\n"],"mappings":";AAGA,MAAM,uBAAuB;CAC3B,OAAO,QAAQ,MAAM,KAAK,OAAO;CACjC,KAAK,QAAQ,IAAI,KAAK,OAAO;CAC7B,SAAS,QAAQ,KAAK,KAAK,OAAO;CAClC,OAAO,QAAQ,MAAM,KAAK,OAAO;CACjC,OAAO,QAAQ,MAAM,KAAK,OAAO;AACnC;AAIA,MAAM,mBAAmB;CACvB,OAAO;CACP,KAAK;CACL,SAAS;CACT,OAAO;CACP,OAAO;AACT;AAKA,IAAa,SAAb,MAAoB;CAClB,OAAc,WAAqB;CAEnC,OAAe,KACb,SACA,OACA,SACA;EACA,IAAI,iBAAiB,UAAU,iBAAiB,KAAK,WAAW;GAC9D,MAAM,gBAA2B,CAAC,gBAAgB,OAAO;GAEzD,IAAI,SAAS,OACX,cAAc,KAAK,QAAQ,KAAK;GAElC,IAAI,SAAS,MACX,cAAc,KAAK,QAAQ,IAAI;GAGjC,qBAAqB,MAAM,GAAG,GAAG,aAAa;EAChD;CACF;CACA,OAAc,MAAM,SAAyB,SAAmB;EAC9D,KAAK,KAAK,SAAS,SAAS,OAAO;CACrC;CACA,OAAc,IAAI,SAAyB,SAAmB;EAC5D,KAAK,KAAK,SAAS,OAAO,OAAO;CACnC;CACA,OAAc,QAAQ,SAAyB,SAAmB;EAChE,KAAK,KAAK,SAAS,WAAW,OAAO;CACvC;CACA,OAAc,MAAM,SAAyB,SAAmB;EAC9D,KAAK,KAAK,SAAS,SAAS,OAAO;CACrC;CACA,OAAc,MAAM,SAAyB,SAAmB;EAC9D,KAAK,KAAK,SAAS,SAAS,OAAO;CACrC;CAEA,OAAc,SAAS,OAAiB;EACtC,KAAK,WAAW;CAClB;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionStorage.js","names":[],"sources":["../../src/utils/SessionStorage.ts"],"sourcesContent":["const BLUX_USER_ID = \"blux_userId\";\nconst BLUX_SESSION_ID = \"blux_sessionId\";\n\nexport class SessionStorage {\n static getBluxUserId(): string | null {\n const userId = sessionStorage.getItem(BLUX_USER_ID);\n return userId === \"undefined\" || userId?.trim() === \"\" ? null : userId;\n }\n\n static setBluxUserId(userId: string) {\n sessionStorage.setItem(BLUX_USER_ID, userId);\n }\n\n static getSessionId(): string | null {\n return sessionStorage.getItem(BLUX_SESSION_ID);\n }\n\n static setSessionId(sessionId: string) {\n sessionStorage.setItem(BLUX_SESSION_ID, sessionId);\n }\n}\n"],"mappings":";AAAA,MAAM,eAAe;AACrB,MAAM,kBAAkB;AAExB,IAAa,iBAAb,MAA4B;CAC1B,OAAO,gBAA+B;EACpC,MAAM,SAAS,eAAe,QAAQ,aAAa;AACnD,SAAO,WAAW,eAAe,QAAQ,MAAM,KAAK,KAAK,OAAO;;CAGlE,OAAO,cAAc,QAAgB;AACnC,iBAAe,QAAQ,cAAc,OAAO;;CAG9C,OAAO,eAA8B;AACnC,SAAO,eAAe,QAAQ,gBAAgB;;CAGhD,OAAO,aAAa,WAAmB;AACrC,iBAAe,QAAQ,iBAAiB,UAAU"}
1
+ {"version":3,"file":"SessionStorage.js","names":[],"sources":["../../src/utils/SessionStorage.ts"],"sourcesContent":["const BLUX_USER_ID = \"blux_userId\";\nconst BLUX_SESSION_ID = \"blux_sessionId\";\n\nexport class SessionStorage {\n static getBluxUserId(): string | null {\n const userId = sessionStorage.getItem(BLUX_USER_ID);\n return userId === \"undefined\" || userId?.trim() === \"\" ? null : userId;\n }\n\n static setBluxUserId(userId: string) {\n sessionStorage.setItem(BLUX_USER_ID, userId);\n }\n\n static getSessionId(): string | null {\n return sessionStorage.getItem(BLUX_SESSION_ID);\n }\n\n static setSessionId(sessionId: string) {\n sessionStorage.setItem(BLUX_SESSION_ID, sessionId);\n }\n}\n"],"mappings":";AAAA,MAAM,eAAe;AACrB,MAAM,kBAAkB;AAExB,IAAa,iBAAb,MAA4B;CAC1B,OAAO,gBAA+B;EACpC,MAAM,SAAS,eAAe,QAAQ,YAAY;EAClD,OAAO,WAAW,eAAe,QAAQ,KAAK,MAAM,KAAK,OAAO;CAClE;CAEA,OAAO,cAAc,QAAgB;EACnC,eAAe,QAAQ,cAAc,MAAM;CAC7C;CAEA,OAAO,eAA8B;EACnC,OAAO,eAAe,QAAQ,eAAe;CAC/C;CAEA,OAAO,aAAa,WAAmB;EACrC,eAAe,QAAQ,iBAAiB,SAAS;CACnD;AACF"}
@@ -1,10 +1,10 @@
1
1
  //#region src/utils/getPath.ts
2
2
  function getPath(path, pathParams) {
3
- return Object.keys(pathParams).reduce((acc, key) => {
3
+ return path.replace(/\{(\w+)\}/g, (_match, key) => {
4
4
  const value = pathParams[key];
5
- if (value === void 0) return acc;
6
- return acc.replace(new RegExp(`\\{${key}\\}`, "g"), value);
7
- }, path);
5
+ if (value == null || value === "") throw new Error(`Missing required path parameter: ${key}`);
6
+ return encodeURIComponent(value);
7
+ });
8
8
  }
9
9
 
10
10
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"getPath.js","names":[],"sources":["../../src/utils/getPath.ts"],"sourcesContent":["export function getPath(path: string, pathParams: Record<string, string>) {\n return Object.keys(pathParams).reduce((acc, key) => {\n const value = pathParams[key];\n if (value === undefined) return acc;\n\n return acc.replace(new RegExp(`\\\\{${key}\\\\}`, \"g\"), value);\n }, path);\n}\n"],"mappings":";AAAA,SAAgB,QAAQ,MAAc,YAAoC;AACxE,QAAO,OAAO,KAAK,WAAW,CAAC,QAAQ,KAAK,QAAQ;EAClD,MAAM,QAAQ,WAAW;AACzB,MAAI,UAAU,OAAW,QAAO;AAEhC,SAAO,IAAI,QAAQ,IAAI,OAAO,MAAM,IAAI,MAAM,IAAI,EAAE,MAAM;IACzD,KAAK"}
1
+ {"version":3,"file":"getPath.js","names":[],"sources":["../../src/utils/getPath.ts"],"sourcesContent":["export function getPath(path: string, pathParams: Record<string, string>) {\n return path.replace(/\\{(\\w+)\\}/g, (_match, key: string) => {\n const value = pathParams[key];\n if (value == null || value === \"\") {\n throw new Error(`Missing required path parameter: ${key}`);\n }\n\n return encodeURIComponent(value);\n });\n}\n"],"mappings":";AAAA,SAAgB,QAAQ,MAAc,YAAoC;CACxE,OAAO,KAAK,QAAQ,eAAe,QAAQ,QAAgB;EACzD,MAAM,QAAQ,WAAW;EACzB,IAAI,SAAS,QAAQ,UAAU,IAC7B,MAAM,IAAI,MAAM,oCAAoC,KAAK;EAG3D,OAAO,mBAAmB,KAAK;CACjC,CAAC;AACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"observables.js","names":[],"sources":["../../src/utils/observables.ts"],"sourcesContent":["import {\n fromEvent,\n startWith,\n map,\n distinctUntilChanged,\n shareReplay,\n merge,\n of,\n combineLatest,\n} from \"rxjs\";\n\nconst visible$ = fromEvent(document, \"visibilitychange\").pipe(\n startWith(0),\n map(() => document.visibilityState === \"visible\"),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nconst online$ = merge(\n fromEvent(window, \"online\").pipe(map(() => true)),\n fromEvent(window, \"offline\").pipe(map(() => false)),\n of(navigator.onLine),\n).pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));\n\nexport const onlineAndVisible$ = combineLatest([visible$, online$]).pipe(\n map(([v, o]) => v && o),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n"],"mappings":";;;AAWA,MAAM,WAAW,UAAU,UAAU,mBAAmB,CAAC,KACvD,UAAU,EAAE,EACZ,UAAU,SAAS,oBAAoB,UAAU,EACjD,sBAAsB,EACtB,YAAY;CAAE,YAAY;CAAG,UAAU;CAAM,CAAC,CAC/C;AAED,MAAM,UAAU,MACd,UAAU,QAAQ,SAAS,CAAC,KAAK,UAAU,KAAK,CAAC,EACjD,UAAU,QAAQ,UAAU,CAAC,KAAK,UAAU,MAAM,CAAC,EACnD,GAAG,UAAU,OAAO,CACrB,CAAC,KAAK,sBAAsB,EAAE,YAAY;CAAE,YAAY;CAAG,UAAU;CAAM,CAAC,CAAC;AAE9E,MAAa,oBAAoB,cAAc,CAAC,UAAU,QAAQ,CAAC,CAAC,KAClE,KAAK,CAAC,GAAG,OAAO,KAAK,EAAE,EACvB,sBAAsB,EACtB,YAAY;CAAE,YAAY;CAAG,UAAU;CAAM,CAAC,CAC/C"}
1
+ {"version":3,"file":"observables.js","names":[],"sources":["../../src/utils/observables.ts"],"sourcesContent":["import {\n fromEvent,\n startWith,\n map,\n distinctUntilChanged,\n shareReplay,\n merge,\n of,\n combineLatest,\n} from \"rxjs\";\n\nconst visible$ = fromEvent(document, \"visibilitychange\").pipe(\n startWith(0),\n map(() => document.visibilityState === \"visible\"),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n\nconst online$ = merge(\n fromEvent(window, \"online\").pipe(map(() => true)),\n fromEvent(window, \"offline\").pipe(map(() => false)),\n of(navigator.onLine),\n).pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));\n\nexport const onlineAndVisible$ = combineLatest([visible$, online$]).pipe(\n map(([v, o]) => v && o),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true }),\n);\n"],"mappings":";;;AAWA,MAAM,WAAW,UAAU,UAAU,kBAAkB,CAAC,CAAC,KACvD,UAAU,CAAC,GACX,UAAU,SAAS,oBAAoB,SAAS,GAChD,qBAAqB,GACrB,YAAY;CAAE,YAAY;CAAG,UAAU;AAAK,CAAC,CAC/C;AAEA,MAAM,UAAU,MACd,UAAU,QAAQ,QAAQ,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,GAChD,UAAU,QAAQ,SAAS,CAAC,CAAC,KAAK,UAAU,KAAK,CAAC,GAClD,GAAG,UAAU,MAAM,CACrB,CAAC,CAAC,KAAK,qBAAqB,GAAG,YAAY;CAAE,YAAY;CAAG,UAAU;AAAK,CAAC,CAAC;AAE7E,MAAa,oBAAoB,cAAc,CAAC,UAAU,OAAO,CAAC,CAAC,CAAC,KAClE,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,GACtB,qBAAqB,GACrB,YAAY;CAAE,YAAY;CAAG,UAAU;AAAK,CAAC,CAC/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"operators.js","names":[],"sources":["../../src/utils/operators.ts"],"sourcesContent":["import { filter } from \"rxjs\";\n\nimport type { OperatorFunction } from \"rxjs\";\n\nexport function filterNullable<T>(): OperatorFunction<T | null | undefined, T> {\n return filter((v): v is T => v != null);\n}\n"],"mappings":";;;AAIA,SAAgB,iBAA+D;AAC7E,QAAO,QAAQ,MAAc,KAAK,KAAK"}
1
+ {"version":3,"file":"operators.js","names":[],"sources":["../../src/utils/operators.ts"],"sourcesContent":["import { filter } from \"rxjs\";\n\nimport type { OperatorFunction } from \"rxjs\";\n\nexport function filterNullable<T>(): OperatorFunction<T | null | undefined, T> {\n return filter((v): v is T => v != null);\n}\n"],"mappings":";;;AAIA,SAAgB,iBAA+D;CAC7E,OAAO,QAAQ,MAAc,KAAK,IAAI;AACxC"}
@@ -1,6 +1,5 @@
1
1
  import ObjectId from "bson-objectid";
2
2
  import { z } from "zod";
3
-
4
3
  //#region src/utils/zodSchemas.d.ts
5
4
  declare const customPropertiesSchema: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>, z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">, z.ZodArray<z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>, "many">, z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>, z.ZodUndefined]>>;
6
5
  type CustomProperties = z.infer<typeof customPropertiesSchema>;
@@ -117,5 +116,5 @@ type RecResponse = {
117
116
  recommendation_id: string | null;
118
117
  };
119
118
  //#endregion
120
- export { CustomProperties, EventProperties, InternalEventProperties, RecResponse };
119
+ export { CustomProperties, EventProperties, InternalEventProperties, RecResponse, customPropertiesSchema, eventPropertiesSchema, internalEventPropertiesSchema };
121
120
  //# sourceMappingURL=zodSchemas.d.ts.map
@@ -99,5 +99,5 @@ const recommendationRequestSchema = inferenceRequestSchema.pick({
99
99
  });
100
100
 
101
101
  //#endregion
102
- export { countryCodeWithLowerCaseSchema, customPropertiesRequestSchema, customPropertiesSchema, dateSchema, eventPropertiesSchema, internalEventPropertiesSchema, objectIdSchema, recommendationRequestSchema };
102
+ export { countryCodeWithLowerCaseSchema, customPropertiesRequestSchema, customPropertiesSchema, dateSchema, eventPropertiesSchema, internalEventPropertiesSchema, isObjectIdString, objectIdSchema, recommendationRequestSchema };
103
103
  //# sourceMappingURL=zodSchemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zodSchemas.js","names":[],"sources":["../../src/utils/zodSchemas.ts"],"sourcesContent":["import ObjectId from \"bson-objectid\";\nimport { z, ZodError } from \"zod\";\n\nimport { assertEqualTypes } from \"./assertEqualTypes\";\nimport { COUNTRY_CODES } from \"../constants/COUNTRIES\";\nimport { ISO8601_REGEX } from \"../constants/ISO8601_REGEX\";\n\nimport type { CountryCode } from \"../constants/COUNTRIES\";\n\nfunction isObjectIdString(value: unknown): value is string {\n return (\n typeof value === \"string\" && value.length === 24 && ObjectId.isValid(value)\n );\n}\n\nexport const objectIdSchema = z\n .string()\n .refine(\n (v) => isObjectIdString(v),\n (v) =>\n new ZodError([\n {\n code: \"custom\",\n message: `Invalid ObjectId: ${v}`,\n path: [\"some_path\"],\n },\n ]),\n )\n .transform((v) => new ObjectId(v));\n\nexport const stringToNumberSchema = z\n .union([z.string(), z.number()])\n .refine(\n (v) => {\n if (typeof v === \"number\") return true;\n const parsed = Number(v);\n return !isNaN(parsed);\n },\n {\n message: \"Invalid number or string in stringToNumberSchema\",\n },\n )\n .transform((v): number => (typeof v === \"number\" ? v : Number(v)));\n\nexport const dateSchema = z\n .string()\n .refine(\n (dateString) => {\n return ISO8601_REGEX.test(dateString);\n },\n {\n message: \"Invalid date string\",\n },\n )\n .transform((dateString) => new Date(dateString));\n\nfunction convertAllObjectId(input: unknown): unknown {\n if (Array.isArray(input)) {\n return input.map((item) => convertAllObjectId(item));\n } else if (isObjectIdString(input)) {\n return new ObjectId(input);\n } else if (\n typeof input === \"string\" &&\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$/.test(input)\n ) {\n return new Date(input);\n } else if (input !== null && typeof input === \"object\") {\n return Object.entries(input).reduce<Record<string, unknown>>(\n (acc, [key, value]) => {\n acc[key] = convertAllObjectId(value);\n return acc;\n },\n {},\n );\n }\n return input;\n}\n\nexport const anonymousObjectSchema = <T extends object = object>() =>\n z\n .object({})\n .passthrough()\n .transform((v) => convertAllObjectId(v) as T);\n\nexport const countryCodeWithLowerCaseSchema = z\n .string()\n .transform((v) => v.toUpperCase())\n .pipe(\n z.union([\n z.literal(\"419\"), // https://en.wikipedia.org/wiki/Language_code\n z.enum(COUNTRY_CODES as [CountryCode, ...CountryCode[]]),\n ]),\n )\n .transform((v) => (v === \"419\" ? undefined : v));\n\nexport const customPropertiesRequestSchema = z.record(\n z.union([\n dateSchema,\n z.string(),\n z.number(),\n z.boolean(),\n z.array(z.string()),\n z.array(z.object({})),\n z.object({}),\n z.null(),\n z.undefined(),\n ]),\n);\n\ntype CustomPropertiesRequest = z.infer<typeof customPropertiesRequestSchema>;\n\nexport const customPropertiesSchema = z.record(\n z.union([\n dateSchema,\n z.string(),\n z.number(),\n z.boolean(),\n z.array(z.string()),\n z.array(z.object({})),\n z.object({}),\n z.undefined(),\n ]),\n);\n\nexport type CustomProperties = z.infer<typeof customPropertiesSchema>;\n\nassertEqualTypes<\n {\n [K in keyof CustomPropertiesRequest]: Exclude<\n CustomPropertiesRequest[K],\n null\n >;\n },\n CustomProperties\n>(true);\n\nexport const stringToArraySchema = z\n .string()\n .transform((v) => v.split(\",\").map((item) => item.trim()))\n .refine((arr) => arr.every((item) => item.length > 0), {\n message: \"Each item should not be empty\",\n });\n\nexport const eventPropertiesSchema = z.object({\n section: z.string().optional(),\n prev_section: z.string().optional(),\n recommendation_id: z.string().optional(),\n price: z.number().optional(),\n order_id: z.string().optional(),\n rating: z.number().optional(),\n prev_page: z.string().optional(),\n page: z.string().optional(),\n position: z.number().optional(),\n item_id: z.string().optional(),\n items: z\n .array(\n z.object({\n id: z.string(),\n price: z.number(),\n quantity: z.number().optional(),\n custom_event_properties: customPropertiesSchema.optional(),\n }),\n )\n .optional(),\n search_query: z.string().optional(),\n order_amount: z.number().optional(),\n paid_amount: z.number().optional(),\n tracking: z\n .object({\n id: z.string(),\n type: z.string(),\n })\n .optional(),\n click_target: z.string().optional(),\n});\n\nexport type EventProperties = z.infer<typeof eventPropertiesSchema>;\n\nexport const internalEventPropertiesSchema = z.object({\n url: z.string().optional(),\n ref: z.string().optional(),\n click_target: z.string().optional(),\n});\n\nexport type InternalEventProperties = z.infer<\n typeof internalEventPropertiesSchema\n>;\n\n// Schema for Inference API\nconst inferenceRequestSchema = z.object({\n application_id: objectIdSchema,\n blux_user_id: objectIdSchema.nullish(),\n\n pipeline: z.array(\n z.object({\n name: z.string(),\n kwargs: z.record(z.any()),\n }),\n ),\n item_id: z.string().nullish(),\n item_ids: z.array(z.string()).nullish(),\n\n limit: z.number(),\n offset: z.number().nullish().default(0),\n options: z.record(z.string(), z.any()).nullish(), // TODO: @all legacy 클라이언트 migration만을 위한 필드라는 점을 고려하여 필드명 수정 필요 ex. legacy_options\n});\n\nexport const recommendationRequestSchema = inferenceRequestSchema\n .pick({\n item_id: true,\n item_ids: true,\n limit: true,\n offset: true,\n })\n .extend({\n call_type: z.string(),\n category_id: z.string().nullish(),\n });\n\nexport type RecResponse = {\n item_ids: string[];\n metadata: Record<string, unknown>;\n recommendation_id: string | null;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"zodSchemas.js","names":[],"sources":["../../src/utils/zodSchemas.ts"],"sourcesContent":["import ObjectId from \"bson-objectid\";\nimport { z, ZodError } from \"zod\";\n\nimport { assertEqualTypes } from \"./assertEqualTypes\";\nimport { COUNTRY_CODES } from \"../constants/COUNTRIES\";\nimport { ISO8601_REGEX } from \"../constants/ISO8601_REGEX\";\n\nimport type { CountryCode } from \"../constants/COUNTRIES\";\n\nexport function isObjectIdString(value: unknown): value is string {\n return (\n typeof value === \"string\" && value.length === 24 && ObjectId.isValid(value)\n );\n}\n\nexport const objectIdSchema = z\n .string()\n .refine(\n (v) => isObjectIdString(v),\n (v) =>\n new ZodError([\n {\n code: \"custom\",\n message: `Invalid ObjectId: ${v}`,\n path: [\"some_path\"],\n },\n ]),\n )\n .transform((v) => new ObjectId(v));\n\nexport const stringToNumberSchema = z\n .union([z.string(), z.number()])\n .refine(\n (v) => {\n if (typeof v === \"number\") return true;\n const parsed = Number(v);\n return !isNaN(parsed);\n },\n {\n message: \"Invalid number or string in stringToNumberSchema\",\n },\n )\n .transform((v): number => (typeof v === \"number\" ? v : Number(v)));\n\nexport const dateSchema = z\n .string()\n .refine(\n (dateString) => {\n return ISO8601_REGEX.test(dateString);\n },\n {\n message: \"Invalid date string\",\n },\n )\n .transform((dateString) => new Date(dateString));\n\nfunction convertAllObjectId(input: unknown): unknown {\n if (Array.isArray(input)) {\n return input.map((item) => convertAllObjectId(item));\n } else if (isObjectIdString(input)) {\n return new ObjectId(input);\n } else if (\n typeof input === \"string\" &&\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$/.test(input)\n ) {\n return new Date(input);\n } else if (input !== null && typeof input === \"object\") {\n return Object.entries(input).reduce<Record<string, unknown>>(\n (acc, [key, value]) => {\n acc[key] = convertAllObjectId(value);\n return acc;\n },\n {},\n );\n }\n return input;\n}\n\nexport const anonymousObjectSchema = <T extends object = object>() =>\n z\n .object({})\n .passthrough()\n .transform((v) => convertAllObjectId(v) as T);\n\nexport const countryCodeWithLowerCaseSchema = z\n .string()\n .transform((v) => v.toUpperCase())\n .pipe(\n z.union([\n z.literal(\"419\"), // https://en.wikipedia.org/wiki/Language_code\n z.enum(COUNTRY_CODES as [CountryCode, ...CountryCode[]]),\n ]),\n )\n .transform((v) => (v === \"419\" ? undefined : v));\n\nexport const customPropertiesRequestSchema = z.record(\n z.union([\n dateSchema,\n z.string(),\n z.number(),\n z.boolean(),\n z.array(z.string()),\n z.array(z.object({})),\n z.object({}),\n z.null(),\n z.undefined(),\n ]),\n);\n\ntype CustomPropertiesRequest = z.infer<typeof customPropertiesRequestSchema>;\n\nexport const customPropertiesSchema = z.record(\n z.union([\n dateSchema,\n z.string(),\n z.number(),\n z.boolean(),\n z.array(z.string()),\n z.array(z.object({})),\n z.object({}),\n z.undefined(),\n ]),\n);\n\nexport type CustomProperties = z.infer<typeof customPropertiesSchema>;\n\nassertEqualTypes<\n {\n [K in keyof CustomPropertiesRequest]: Exclude<\n CustomPropertiesRequest[K],\n null\n >;\n },\n CustomProperties\n>(true);\n\nexport const stringToArraySchema = z\n .string()\n .transform((v) => v.split(\",\").map((item) => item.trim()))\n .refine((arr) => arr.every((item) => item.length > 0), {\n message: \"Each item should not be empty\",\n });\n\nexport const eventPropertiesSchema = z.object({\n section: z.string().optional(),\n prev_section: z.string().optional(),\n recommendation_id: z.string().optional(),\n price: z.number().optional(),\n order_id: z.string().optional(),\n rating: z.number().optional(),\n prev_page: z.string().optional(),\n page: z.string().optional(),\n position: z.number().optional(),\n item_id: z.string().optional(),\n items: z\n .array(\n z.object({\n id: z.string(),\n price: z.number(),\n quantity: z.number().optional(),\n custom_event_properties: customPropertiesSchema.optional(),\n }),\n )\n .optional(),\n search_query: z.string().optional(),\n order_amount: z.number().optional(),\n paid_amount: z.number().optional(),\n tracking: z\n .object({\n id: z.string(),\n type: z.string(),\n })\n .optional(),\n click_target: z.string().optional(),\n});\n\nexport type EventProperties = z.infer<typeof eventPropertiesSchema>;\n\nexport const internalEventPropertiesSchema = z.object({\n url: z.string().optional(),\n ref: z.string().optional(),\n click_target: z.string().optional(),\n});\n\nexport type InternalEventProperties = z.infer<\n typeof internalEventPropertiesSchema\n>;\n\n// Schema for Inference API\nconst inferenceRequestSchema = z.object({\n application_id: objectIdSchema,\n blux_user_id: objectIdSchema.nullish(),\n\n pipeline: z.array(\n z.object({\n name: z.string(),\n kwargs: z.record(z.any()),\n }),\n ),\n item_id: z.string().nullish(),\n item_ids: z.array(z.string()).nullish(),\n\n limit: z.number(),\n offset: z.number().nullish().default(0),\n options: z.record(z.string(), z.any()).nullish(), // TODO: @all legacy 클라이언트 migration만을 위한 필드라는 점을 고려하여 필드명 수정 필요 ex. legacy_options\n});\n\nexport const recommendationRequestSchema = inferenceRequestSchema\n .pick({\n item_id: true,\n item_ids: true,\n limit: true,\n offset: true,\n })\n .extend({\n call_type: z.string(),\n category_id: z.string().nullish(),\n });\n\nexport type RecResponse = {\n item_ids: string[];\n metadata: Record<string, unknown>;\n recommendation_id: string | null;\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blux.ai/web-sdk",
3
- "version": "2.2.28",
3
+ "version": "2.2.30",
4
4
  "description": "The official Blux JavaScript browser client library",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -33,13 +33,14 @@
33
33
  "@sentry/types": "^8.35.0",
34
34
  "@types/uuid": "10.0.0",
35
35
  "ts-loader": "^9.5.1",
36
- "tsdown": "0.20.1",
37
- "typescript": "5.9.3",
36
+ "tsdown": "0.22.4",
37
+ "typescript": "npm:@typescript/typescript6@6.0.2",
38
+ "typescript-7": "npm:typescript@7.0.2",
38
39
  "webpack": "^5.93.0",
39
40
  "webpack-cli": "^5.1.4"
40
41
  },
41
42
  "dependencies": {
42
- "axios": "1.7.7",
43
+ "axios": "1.17.0",
43
44
  "bson-objectid": "^2.0.4",
44
45
  "rxjs": "7.8.1",
45
46
  "uuid": "10.0.0",