@blux.ai/web-sdk 0.0.7 → 1.0.0-rc1

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 (130) hide show
  1. package/README.md +19 -19
  2. package/dist/package.json +35 -0
  3. package/package.json +2 -2
  4. package/demo/craco.config.js +0 -29
  5. package/demo/package.json +0 -50
  6. package/demo/public/favicon.ico +0 -0
  7. package/demo/public/index.html +0 -43
  8. package/demo/public/logo192.png +0 -0
  9. package/demo/public/logo512.png +0 -0
  10. package/demo/public/manifest.json +0 -25
  11. package/demo/public/robots.txt +0 -3
  12. package/demo/src/App.test.tsx +0 -9
  13. package/demo/src/App.tsx +0 -252
  14. package/demo/src/index.css +0 -16
  15. package/demo/src/index.tsx +0 -19
  16. package/demo/src/react-app-env.d.ts +0 -1
  17. package/demo/src/reportWebVitals.ts +0 -15
  18. package/demo/src/setupTests.ts +0 -5
  19. package/demo/tailwind.config.js +0 -10
  20. package/dist/BluxClient.d.ts +0 -43
  21. package/dist/BluxClient.js +0 -190
  22. package/dist/BluxClient.js.map +0 -1
  23. package/dist/apis/APIs.d.ts +0 -317
  24. package/dist/apis/APIs.js +0 -138
  25. package/dist/apis/APIs.js.map +0 -1
  26. package/dist/apis/createEvent.d.ts +0 -4
  27. package/dist/apis/createEvent.js +0 -7
  28. package/dist/apis/createEvent.js.map +0 -1
  29. package/dist/apis/getItemRecommendation.d.ts +0 -4
  30. package/dist/apis/getItemRecommendation.js +0 -7
  31. package/dist/apis/getItemRecommendation.js.map +0 -1
  32. package/dist/apis/initialize.d.ts +0 -4
  33. package/dist/apis/initialize.js +0 -7
  34. package/dist/apis/initialize.js.map +0 -1
  35. package/dist/apis/signIn.d.ts +0 -4
  36. package/dist/apis/signIn.js +0 -7
  37. package/dist/apis/signIn.js.map +0 -1
  38. package/dist/apis/signOut.d.ts +0 -4
  39. package/dist/apis/signOut.js +0 -7
  40. package/dist/apis/signOut.js.map +0 -1
  41. package/dist/apis/updateCustomUserProperties.d.ts +0 -4
  42. package/dist/apis/updateCustomUserProperties.js +0 -7
  43. package/dist/apis/updateCustomUserProperties.js.map +0 -1
  44. package/dist/apis/updateUserProperties.d.ts +0 -4
  45. package/dist/apis/updateUserProperties.js +0 -7
  46. package/dist/apis/updateUserProperties.js.map +0 -1
  47. package/dist/constants/COUNTRIES.d.ts +0 -928
  48. package/dist/constants/COUNTRIES.js +0 -1159
  49. package/dist/constants/COUNTRIES.js.map +0 -1
  50. package/dist/constants/ISO8601_REGEX.d.ts +0 -1
  51. package/dist/constants/ISO8601_REGEX.js +0 -4
  52. package/dist/constants/ISO8601_REGEX.js.map +0 -1
  53. package/dist/constants/URLS.d.ts +0 -6
  54. package/dist/constants/URLS.js +0 -7
  55. package/dist/constants/URLS.js.map +0 -1
  56. package/dist/events/AddCartaddEvent.d.ts +0 -5
  57. package/dist/events/AddCartaddEvent.js +0 -11
  58. package/dist/events/AddCartaddEvent.js.map +0 -1
  59. package/dist/events/AddCustomEvent.d.ts +0 -5
  60. package/dist/events/AddCustomEvent.js +0 -12
  61. package/dist/events/AddCustomEvent.js.map +0 -1
  62. package/dist/events/AddLikeEvent.d.ts +0 -5
  63. package/dist/events/AddLikeEvent.js +0 -11
  64. package/dist/events/AddLikeEvent.js.map +0 -1
  65. package/dist/events/AddPageViewEvent.d.ts +0 -5
  66. package/dist/events/AddPageViewEvent.js +0 -11
  67. package/dist/events/AddPageViewEvent.js.map +0 -1
  68. package/dist/events/AddProductDetailViewEvent.d.ts +0 -5
  69. package/dist/events/AddProductDetailViewEvent.js +0 -11
  70. package/dist/events/AddProductDetailViewEvent.js.map +0 -1
  71. package/dist/events/AddPurchaseEvent.d.ts +0 -5
  72. package/dist/events/AddPurchaseEvent.js +0 -12
  73. package/dist/events/AddPurchaseEvent.js.map +0 -1
  74. package/dist/events/AddRateEvent.d.ts +0 -5
  75. package/dist/events/AddRateEvent.js +0 -12
  76. package/dist/events/AddRateEvent.js.map +0 -1
  77. package/dist/events/AddRecommendationViewEvent.d.ts +0 -5
  78. package/dist/events/AddRecommendationViewEvent.js +0 -10
  79. package/dist/events/AddRecommendationViewEvent.js.map +0 -1
  80. package/dist/events/Event.d.ts +0 -16
  81. package/dist/events/Event.js +0 -24
  82. package/dist/events/Event.js.map +0 -1
  83. package/dist/events/VisitEvent.d.ts +0 -5
  84. package/dist/events/VisitEvent.js +0 -10
  85. package/dist/events/VisitEvent.js.map +0 -1
  86. package/dist/events/index.d.ts +0 -8
  87. package/dist/events/index.js +0 -9
  88. package/dist/events/index.js.map +0 -1
  89. package/dist/events/types.d.ts +0 -38
  90. package/dist/events/types.js +0 -2
  91. package/dist/events/types.js.map +0 -1
  92. package/dist/index.d.ts +0 -5
  93. package/dist/index.js +0 -6
  94. package/dist/index.js.map +0 -1
  95. package/dist/recommendations/ItemRecommendation.d.ts +0 -5
  96. package/dist/recommendations/ItemRecommendation.js +0 -12
  97. package/dist/recommendations/ItemRecommendation.js.map +0 -1
  98. package/dist/recommendations/Recommendation.d.ts +0 -5
  99. package/dist/recommendations/Recommendation.js +0 -9
  100. package/dist/recommendations/Recommendation.js.map +0 -1
  101. package/dist/recommendations/index.d.ts +0 -1
  102. package/dist/recommendations/index.js +0 -2
  103. package/dist/recommendations/index.js.map +0 -1
  104. package/dist/recommendations/types.d.ts +0 -11
  105. package/dist/recommendations/types.js +0 -2
  106. package/dist/recommendations/types.js.map +0 -1
  107. package/dist/utils/Base.d.ts +0 -13
  108. package/dist/utils/Base.js +0 -2
  109. package/dist/utils/Base.js.map +0 -1
  110. package/dist/utils/LocalStorage.d.ts +0 -4
  111. package/dist/utils/LocalStorage.js +0 -14
  112. package/dist/utils/LocalStorage.js.map +0 -1
  113. package/dist/utils/Logger.d.ts +0 -13
  114. package/dist/utils/Logger.js +0 -49
  115. package/dist/utils/Logger.js.map +0 -1
  116. package/dist/utils/assertEqualTypes.d.ts +0 -3
  117. package/dist/utils/assertEqualTypes.js +0 -5
  118. package/dist/utils/assertEqualTypes.js.map +0 -1
  119. package/dist/utils/getPath.d.ts +0 -1
  120. package/dist/utils/getPath.js +0 -9
  121. package/dist/utils/getPath.js.map +0 -1
  122. package/dist/utils/helper.d.ts +0 -1
  123. package/dist/utils/helper.js +0 -4
  124. package/dist/utils/helper.js.map +0 -1
  125. package/dist/utils/operators.d.ts +0 -2
  126. package/dist/utils/operators.js +0 -6
  127. package/dist/utils/operators.js.map +0 -1
  128. package/dist/utils/zodSchemas.d.ts +0 -19
  129. package/dist/utils/zodSchemas.js +0 -105
  130. package/dist/utils/zodSchemas.js.map +0 -1
@@ -1,43 +0,0 @@
1
- import { BehaviorSubject } from "rxjs";
2
- import type { LogLevel } from "./utils/Logger";
3
- import type { EventRequest } from "./events/types";
4
- import type { Event } from "./events/Event";
5
- import type { Recommendation } from "./recommendations/Recommendation";
6
- import { type APIs } from "./apis/APIs";
7
- export type SdkInfo = {
8
- type: string;
9
- version: string;
10
- };
11
- type BluxUser = {
12
- id: string;
13
- bluxApiKey: string;
14
- applicationId: string;
15
- deviceId: string;
16
- userId?: string;
17
- };
18
- export declare class BluxClient {
19
- private readonly STAGE;
20
- private readonly api;
21
- private readonly sdkInfo;
22
- readonly bluxUser$: BehaviorSubject<BluxUser | undefined>;
23
- readonly requestQueue$: BehaviorSubject<EventRequest[]>;
24
- constructor(STAGE?: "local" | "dev" | "stg" | "prod");
25
- private generateApiHeader;
26
- init({ applicationId, bluxApiKey, }: {
27
- applicationId: string;
28
- bluxApiKey: string;
29
- }): Promise<boolean>;
30
- setLogLevel(logLevel: LogLevel): void;
31
- private getBluxUserWithTimeout;
32
- signIn(userId: string): Promise<void>;
33
- signOut(): Promise<void>;
34
- setUserProperties(userProperties: {
35
- phone_number?: string;
36
- email_address?: string;
37
- }): Promise<void>;
38
- setCustomUserProperties(customUserProperties: Record<string, string | boolean | number | null>): Promise<void>;
39
- sendEvent(event: Event | Event[]): void;
40
- getItemRecommendation(recommendation: Recommendation): Promise<APIs.bluxUsersGetItemRecommendations.ResponseData>;
41
- }
42
- export declare const bluxClient: BluxClient;
43
- export {};
@@ -1,190 +0,0 @@
1
- import { asyncScheduler, BehaviorSubject, catchError, exhaustMap, filter, firstValueFrom, map, observeOn, throwError, timeout, withLatestFrom, } from "rxjs";
2
- import { LocalStorage } from "./utils/LocalStorage";
3
- import { Logger } from "./utils/Logger";
4
- import axios from "axios";
5
- import { filterNullable } from "./utils/operators";
6
- import { API_URL_BY_STAGE } from "./constants/URLS";
7
- import { initialize } from "./apis/initialize";
8
- import { signIn } from "./apis/signIn";
9
- import { signOut } from "./apis/signOut";
10
- import { updateUserProperties } from "./apis/updateUserProperties";
11
- import { updateCustomUserProperties } from "./apis/updateCustomUserProperties";
12
- import { collectEvent } from "./apis/createEvent";
13
- import { VisitEvent } from "./events/VisitEvent";
14
- import { getItemRecommendation } from "./apis/getItemRecommendation";
15
- import { DevicePlatform } from "./apis/APIs";
16
- export class BluxClient {
17
- STAGE;
18
- api;
19
- sdkInfo = {
20
- type: "browser",
21
- version: "0.0.3",
22
- };
23
- bluxUser$ = new BehaviorSubject(undefined);
24
- requestQueue$ = new BehaviorSubject([]);
25
- constructor(STAGE = "prod") {
26
- this.STAGE = STAGE;
27
- this.api = axios.create({
28
- baseURL: API_URL_BY_STAGE[this.STAGE],
29
- });
30
- this.requestQueue$
31
- .pipe(filter((queue) => queue.length > 0), withLatestFrom(this.bluxUser$.pipe(filterNullable())), exhaustMap(async ([requests, bluxUser]) => {
32
- try {
33
- await collectEvent(this.api, {
34
- blux_user_id: bluxUser.id,
35
- application_id: bluxUser.applicationId,
36
- }, {
37
- events: requests.map((request) => ({
38
- ...request,
39
- user_id: bluxUser.userId,
40
- blux_id: bluxUser.id,
41
- device_id: bluxUser.deviceId,
42
- })),
43
- }, this.generateApiHeader(bluxUser));
44
- }
45
- catch (error) {
46
- // todo : retry
47
- Logger.error(error, { tags: { from: "request-events-api" } });
48
- }
49
- return requests.map((r) => r.id); // todo: return successed requests only
50
- }), map((requestIdsSucceeded) => this.requestQueue$.value.filter((request) => !requestIdsSucceeded.includes(request.id))), observeOn(asyncScheduler))
51
- .subscribe(this.requestQueue$);
52
- }
53
- generateApiHeader({ bluxApiKey }) {
54
- return {
55
- Authorization: bluxApiKey,
56
- };
57
- }
58
- async init({ applicationId, bluxApiKey, }) {
59
- this.sendEvent(new VisitEvent({}));
60
- try {
61
- Logger.debug(`Init with application id: ${applicationId}`);
62
- const deviceId = LocalStorage.getDeviceId();
63
- if (!deviceId) {
64
- Logger.debug("Saved Device ID is not exists, newly registered.");
65
- }
66
- const { data: { blux_user_id, device_id }, } = await initialize(this.api, { application_id: applicationId }, {
67
- isVisitHandlingInSdk: true,
68
- device_id: deviceId ?? undefined,
69
- country_code: navigator.language.split("-")[1],
70
- device_model: navigator.userAgent,
71
- language_code: navigator.language.split("-")[0],
72
- platform: DevicePlatform.browser,
73
- os_version: navigator.userAgent,
74
- sdk_version: this.sdkInfo.version,
75
- sdk_type: this.sdkInfo.type,
76
- timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
77
- }, this.generateApiHeader({
78
- bluxApiKey,
79
- }));
80
- LocalStorage.setDeviceId(device_id);
81
- this.bluxUser$.next({
82
- id: blux_user_id,
83
- bluxApiKey,
84
- applicationId,
85
- deviceId: device_id,
86
- });
87
- return true;
88
- }
89
- catch (error) {
90
- Logger.error(error, { tags: { from: "init" } });
91
- return false;
92
- }
93
- }
94
- setLogLevel(logLevel) {
95
- Logger.setLevel(logLevel);
96
- }
97
- async getBluxUserWithTimeout() {
98
- const bluxUser = await firstValueFrom(this.bluxUser$.pipe(filterNullable(), timeout(5000), catchError((error) => {
99
- return throwError(() => error.name === "TimeoutError"
100
- ? new Error("Application ID is not intialized. Please initialize BluxClient.")
101
- : error);
102
- })));
103
- return bluxUser;
104
- }
105
- async signIn(userId) {
106
- try {
107
- const bluxUser = await this.getBluxUserWithTimeout();
108
- const { data: { blux_user_id: bluxIdInResponse }, } = await signIn(this.api, { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id }, { user_id: userId, device_id: bluxUser.deviceId }, this.generateApiHeader(bluxUser));
109
- if (bluxIdInResponse !== bluxUser.id) {
110
- Logger.debug("Blux id is changed in signIn.");
111
- this.bluxUser$.next({
112
- ...bluxUser,
113
- id: bluxIdInResponse,
114
- });
115
- }
116
- }
117
- catch (error) {
118
- Logger.error(error, { tags: { from: "signIn" } });
119
- }
120
- }
121
- async signOut() {
122
- try {
123
- const bluxUser = await this.getBluxUserWithTimeout();
124
- const { data: { blux_user_id: bluxIdInResponse }, } = await signOut(this.api, { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id }, { device_id: bluxUser.deviceId }, this.generateApiHeader(bluxUser));
125
- Logger.debug("Blux id is changed in signOut.");
126
- this.bluxUser$.next({
127
- ...bluxUser,
128
- id: bluxIdInResponse,
129
- });
130
- }
131
- catch (error) {
132
- Logger.error(error, { tags: { from: "signOut" } });
133
- }
134
- }
135
- async setUserProperties(userProperties) {
136
- try {
137
- const bluxUser = await this.getBluxUserWithTimeout();
138
- await updateUserProperties(this.api, { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id }, { properties: userProperties }, this.generateApiHeader(bluxUser));
139
- }
140
- catch (error) {
141
- Logger.error(error, { tags: { from: "setUserProperties" } });
142
- }
143
- }
144
- async setCustomUserProperties(customUserProperties) {
145
- try {
146
- const bluxUser = await this.getBluxUserWithTimeout();
147
- await updateCustomUserProperties(this.api, { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id }, { properties: customUserProperties }, this.generateApiHeader(bluxUser));
148
- }
149
- catch (error) {
150
- Logger.error(error, { tags: { from: "setCustomUserProperties" } });
151
- }
152
- }
153
- sendEvent(event) {
154
- const requests = (Array.isArray(event) ? event : [event]).map((event) => event.request);
155
- this.requestQueue$.next([
156
- ...this.requestQueue$.value,
157
- ...requests.filter((request) => !this.requestQueue$.value.map((r) => r.id).includes(request.id)),
158
- ]);
159
- }
160
- async getItemRecommendation(recommendation) {
161
- try {
162
- const bluxUser = await this.getBluxUserWithTimeout();
163
- const recommendationRequest = recommendation.request;
164
- const recommendationResponse = await getItemRecommendation(this.api, {
165
- application_id: bluxUser.applicationId,
166
- blux_user_id: bluxUser.id,
167
- }, {
168
- call_type: recommendationRequest.call_type,
169
- limit: recommendationRequest.limit,
170
- offset: recommendationRequest.offset,
171
- item_ids: recommendationRequest.item_ids,
172
- }, this.generateApiHeader(bluxUser));
173
- return recommendationResponse.data;
174
- }
175
- catch (error) {
176
- Logger.error(error, { tags: { from: "getItemRecommendation" } });
177
- return {
178
- items: [],
179
- metadata: {},
180
- status: {
181
- is_success: false,
182
- code: 400,
183
- message: error.message,
184
- },
185
- };
186
- }
187
- }
188
- }
189
- export const bluxClient = new BluxClient("prod");
190
- //# sourceMappingURL=BluxClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BluxClient.js","sourceRoot":"/","sources":["BluxClient.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n asyncScheduler,\n BehaviorSubject,\n catchError,\n exhaustMap,\n filter,\n firstValueFrom,\n map,\n observeOn,\n throwError,\n timeout,\n withLatestFrom,\n} from \"rxjs\";\nimport { LocalStorage } from \"./utils/LocalStorage\";\nimport type { LogLevel } from \"./utils/Logger\";\nimport { Logger } from \"./utils/Logger\";\nimport type { AxiosInstance } from \"axios\";\nimport axios from \"axios\";\nimport { filterNullable } from \"./utils/operators\";\nimport type { EventRequest } from \"./events/types\";\nimport { API_URL_BY_STAGE } from \"./constants/URLS\";\nimport type { Event } from \"./events/Event\";\nimport { initialize } from \"./apis/initialize\";\nimport { signIn } from \"./apis/signIn\";\nimport { signOut } from \"./apis/signOut\";\nimport { updateUserProperties } from \"./apis/updateUserProperties\";\nimport { updateCustomUserProperties } from \"./apis/updateCustomUserProperties\";\nimport { collectEvent } from \"./apis/createEvent\";\nimport { VisitEvent } from \"./events/VisitEvent\";\nimport type { Recommendation } from \"./recommendations/Recommendation\";\nimport { getItemRecommendation } from \"./apis/getItemRecommendation\";\nimport { DevicePlatform, type APIs } from \"./apis/APIs\";\n\nexport type SdkInfo = {\n type: string;\n version: string;\n};\n\ntype BluxUser = {\n id: string;\n bluxApiKey: string;\n applicationId: string;\n deviceId: string;\n userId?: string;\n};\n\nexport class BluxClient {\n private readonly api: AxiosInstance;\n\n private readonly sdkInfo: SdkInfo = {\n type: \"browser\",\n version: \"0.0.3\",\n };\n\n public readonly bluxUser$ = new BehaviorSubject<BluxUser | undefined>(\n undefined,\n );\n\n public readonly requestQueue$ = new BehaviorSubject<EventRequest[]>([]);\n\n constructor(\n private readonly STAGE: \"local\" | \"dev\" | \"stg\" | \"prod\" = \"prod\",\n ) {\n this.api = axios.create({\n baseURL: API_URL_BY_STAGE[this.STAGE],\n });\n this.requestQueue$\n .pipe(\n filter((queue) => queue.length > 0),\n withLatestFrom(this.bluxUser$.pipe(filterNullable())),\n exhaustMap(async ([requests, bluxUser]) => {\n try {\n await collectEvent(\n this.api,\n {\n blux_user_id: bluxUser.id,\n application_id: bluxUser.applicationId,\n },\n {\n events: requests.map((request) => ({\n ...request,\n user_id: bluxUser.userId,\n blux_id: bluxUser.id,\n device_id: bluxUser.deviceId,\n })),\n },\n this.generateApiHeader(bluxUser),\n );\n } catch (error) {\n // todo : retry\n Logger.error(error, { tags: { from: \"request-events-api\" } });\n }\n\n return requests.map((r) => r.id); // todo: return successed requests only\n }),\n map((requestIdsSucceeded) =>\n this.requestQueue$.value.filter(\n (request) => !requestIdsSucceeded.includes(request.id),\n ),\n ),\n observeOn(asyncScheduler),\n )\n .subscribe(this.requestQueue$);\n }\n\n private generateApiHeader({ bluxApiKey }: { bluxApiKey: string }) {\n return {\n Authorization: bluxApiKey,\n };\n }\n\n public async init({\n applicationId,\n bluxApiKey,\n }: {\n applicationId: string;\n bluxApiKey: string;\n }): Promise<boolean> {\n this.sendEvent(new VisitEvent({}));\n try {\n Logger.debug(`Init with application id: ${applicationId}`);\n\n const deviceId = LocalStorage.getDeviceId();\n\n if (!deviceId) {\n Logger.debug(\"Saved Device ID is not exists, newly registered.\");\n }\n\n const {\n data: { blux_user_id, device_id },\n } = await initialize(\n this.api,\n { application_id: applicationId },\n {\n isVisitHandlingInSdk: true,\n device_id: deviceId ?? undefined,\n country_code: navigator.language.split(\"-\")[1],\n device_model: navigator.userAgent,\n language_code: navigator.language.split(\"-\")[0],\n platform: DevicePlatform.browser,\n os_version: navigator.userAgent,\n sdk_version: this.sdkInfo.version,\n sdk_type: this.sdkInfo.type,\n timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,\n },\n this.generateApiHeader({\n bluxApiKey,\n }),\n );\n\n LocalStorage.setDeviceId(device_id);\n\n this.bluxUser$.next({\n id: blux_user_id,\n bluxApiKey,\n applicationId,\n deviceId: device_id,\n });\n\n return true;\n } catch (error) {\n Logger.error(error, { tags: { from: \"init\" } });\n return false;\n }\n }\n\n public setLogLevel(logLevel: LogLevel) {\n Logger.setLevel(logLevel);\n }\n\n private async getBluxUserWithTimeout() {\n const bluxUser = await firstValueFrom(\n this.bluxUser$.pipe(\n filterNullable(),\n timeout(5000),\n catchError((error) => {\n return throwError(() =>\n error.name === \"TimeoutError\"\n ? new Error(\n \"Application ID is not intialized. Please initialize BluxClient.\",\n )\n : error,\n );\n }),\n ),\n );\n\n return bluxUser;\n }\n\n public async signIn(userId: string) {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n const {\n data: { blux_user_id: bluxIdInResponse },\n } = await signIn(\n this.api,\n { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id },\n { user_id: userId, device_id: bluxUser.deviceId },\n this.generateApiHeader(bluxUser),\n );\n\n if (bluxIdInResponse !== bluxUser.id) {\n Logger.debug(\"Blux id is changed in signIn.\");\n this.bluxUser$.next({\n ...bluxUser,\n id: bluxIdInResponse,\n });\n }\n } catch (error) {\n Logger.error(error, { tags: { from: \"signIn\" } });\n }\n }\n\n public async signOut() {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n const {\n data: { blux_user_id: bluxIdInResponse },\n } = await signOut(\n this.api,\n { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id },\n { device_id: bluxUser.deviceId },\n this.generateApiHeader(bluxUser),\n );\n\n Logger.debug(\"Blux id is changed in signOut.\");\n this.bluxUser$.next({\n ...bluxUser,\n id: bluxIdInResponse,\n });\n } catch (error) {\n Logger.error(error, { tags: { from: \"signOut\" } });\n }\n }\n\n public async setUserProperties(userProperties: {\n phone_number?: string;\n email_address?: string;\n }) {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n await updateUserProperties(\n this.api,\n { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id },\n { properties: userProperties },\n this.generateApiHeader(bluxUser),\n );\n } catch (error) {\n Logger.error(error, { tags: { from: \"setUserProperties\" } });\n }\n }\n\n public async setCustomUserProperties(\n customUserProperties: Record<string, string | boolean | number | null>,\n ) {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n\n await updateCustomUserProperties(\n this.api,\n { application_id: bluxUser.applicationId, blux_user_id: bluxUser.id },\n { properties: customUserProperties },\n this.generateApiHeader(bluxUser),\n );\n } catch (error) {\n Logger.error(error, { tags: { from: \"setCustomUserProperties\" } });\n }\n }\n\n public sendEvent(event: Event | Event[]) {\n const requests = (Array.isArray(event) ? event : [event]).map(\n (event) => event.request,\n );\n\n this.requestQueue$.next([\n ...this.requestQueue$.value,\n ...requests.filter(\n (request) =>\n !this.requestQueue$.value.map((r) => r.id).includes(request.id),\n ),\n ]);\n }\n\n public async getItemRecommendation(\n recommendation: Recommendation,\n ): Promise<APIs.bluxUsersGetItemRecommendations.ResponseData> {\n try {\n const bluxUser = await this.getBluxUserWithTimeout();\n const recommendationRequest = recommendation.request;\n\n const recommendationResponse = await getItemRecommendation(\n this.api,\n {\n application_id: bluxUser.applicationId,\n blux_user_id: bluxUser.id,\n },\n {\n call_type: recommendationRequest.call_type,\n limit: recommendationRequest.limit,\n offset: recommendationRequest.offset,\n item_ids: recommendationRequest.item_ids,\n },\n this.generateApiHeader(bluxUser),\n );\n\n return recommendationResponse.data;\n } catch (error) {\n Logger.error(error, { tags: { from: \"getItemRecommendation\" } });\n return {\n items: [],\n metadata: {},\n status: {\n is_success: false,\n code: 400,\n message: error.message,\n },\n };\n }\n }\n}\n\nexport const bluxClient = new BluxClient(\"prod\");\n"]}
@@ -1,317 +0,0 @@
1
- import { z } from "zod";
2
- import type { Serialize } from "../utils/Base";
3
- declare enum HttpMethod {
4
- GET = "get",
5
- POST = "post",
6
- PUT = "put",
7
- DELETE = "delete"
8
- }
9
- export declare enum DevicePlatform {
10
- ios = "ios",
11
- android = "android",
12
- browser = "browser"
13
- }
14
- export declare namespace APIs {
15
- namespace bluxUsersInitialize {
16
- const name = "bluxUsersInitialize";
17
- const path: string;
18
- const method = HttpMethod.POST;
19
- const bodySchema: z.ZodObject<{
20
- device_id: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>>;
21
- country_code: z.ZodOptional<z.ZodEffects<z.ZodEnum<["AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AI" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BM" | "BT" | "BO" | "BA" | "BW" | "BR" | "IO" | "BN" | "BG" | "BF" | "BI" | "KH" | "CM" | "CV" | "KY" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CG" | "CD" | "CK" | "CR" | "CI" | "HR" | "CU" | "CY" | "CZ" | "DK" | "DJ" | "DM" | "DO" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FK" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GI" | "GR" | "GL" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "HT" | "VA" | "HN" | "HK" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "JM" | "JP" | "JO" | "KE" | "KI" | "KP" | "KR" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LY" | "LI" | "LT" | "LU" | "MO" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MH" | "MQ" | "MR" | "MU" | "YT" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "MM" | "NA" | "NR" | "NP" | "NL" | "NC" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "MP" | "NO" | "OM" | "PK" | "PW" | "PS" | "PA" | "PG" | "PY" | "GY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "RO" | "RU" | "KZ" | "RW" | "RE" | "BL" | "SH" | "KN" | "LC" | "MF" | "PM" | "VC" | "WS" | "SM" | "ST" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SK" | "SI" | "SB" | "SO" | "ZA" | "SS" | "ES" | "LK" | "SD" | "SR" | "SZ" | "SE" | "CH" | "SY" | "TW" | "TJ" | "TZ" | "TH" | "TL" | "TG" | "TK" | "TO" | "TT" | "TN" | "TR" | "TM" | "TC" | "TV" | "UG" | "UA" | "AE" | "GB" | "US" | "CA" | "UY" | "UZ" | "VU" | "VE" | "VN" | "VG" | "VI" | "WF" | "YE" | "ZM" | "ZW", ...("AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AI" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BM" | "BT" | "BO" | "BA" | "BW" | "BR" | "IO" | "BN" | "BG" | "BF" | "BI" | "KH" | "CM" | "CV" | "KY" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CG" | "CD" | "CK" | "CR" | "CI" | "HR" | "CU" | "CY" | "CZ" | "DK" | "DJ" | "DM" | "DO" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FK" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GI" | "GR" | "GL" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "HT" | "VA" | "HN" | "HK" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "JM" | "JP" | "JO" | "KE" | "KI" | "KP" | "KR" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LY" | "LI" | "LT" | "LU" | "MO" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MH" | "MQ" | "MR" | "MU" | "YT" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "MM" | "NA" | "NR" | "NP" | "NL" | "NC" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "MP" | "NO" | "OM" | "PK" | "PW" | "PS" | "PA" | "PG" | "PY" | "GY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "RO" | "RU" | "KZ" | "RW" | "RE" | "BL" | "SH" | "KN" | "LC" | "MF" | "PM" | "VC" | "WS" | "SM" | "ST" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SK" | "SI" | "SB" | "SO" | "ZA" | "SS" | "ES" | "LK" | "SD" | "SR" | "SZ" | "SE" | "CH" | "SY" | "TW" | "TJ" | "TZ" | "TH" | "TL" | "TG" | "TK" | "TO" | "TT" | "TN" | "TR" | "TM" | "TC" | "TV" | "UG" | "UA" | "AE" | "GB" | "US" | "CA" | "UY" | "UZ" | "VU" | "VE" | "VN" | "VG" | "VI" | "WF" | "YE" | "ZM" | "ZW")[]]>, "AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AI" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BM" | "BT" | "BO" | "BA" | "BW" | "BR" | "IO" | "BN" | "BG" | "BF" | "BI" | "KH" | "CM" | "CV" | "KY" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CG" | "CD" | "CK" | "CR" | "CI" | "HR" | "CU" | "CY" | "CZ" | "DK" | "DJ" | "DM" | "DO" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FK" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GI" | "GR" | "GL" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "HT" | "VA" | "HN" | "HK" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "JM" | "JP" | "JO" | "KE" | "KI" | "KP" | "KR" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LY" | "LI" | "LT" | "LU" | "MO" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MH" | "MQ" | "MR" | "MU" | "YT" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "MM" | "NA" | "NR" | "NP" | "NL" | "NC" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "MP" | "NO" | "OM" | "PK" | "PW" | "PS" | "PA" | "PG" | "PY" | "GY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "RO" | "RU" | "KZ" | "RW" | "RE" | "BL" | "SH" | "KN" | "LC" | "MF" | "PM" | "VC" | "WS" | "SM" | "ST" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SK" | "SI" | "SB" | "SO" | "ZA" | "SS" | "ES" | "LK" | "SD" | "SR" | "SZ" | "SE" | "CH" | "SY" | "TW" | "TJ" | "TZ" | "TH" | "TL" | "TG" | "TK" | "TO" | "TT" | "TN" | "TR" | "TM" | "TC" | "TV" | "UG" | "UA" | "AE" | "GB" | "US" | "CA" | "UY" | "UZ" | "VU" | "VE" | "VN" | "VG" | "VI" | "WF" | "YE" | "ZM" | "ZW", unknown>>;
22
- device_model: z.ZodString;
23
- language_code: z.ZodString;
24
- os_version: z.ZodString;
25
- platform: z.ZodNativeEnum<typeof DevicePlatform>;
26
- sdk_type: z.ZodString;
27
- sdk_version: z.ZodString;
28
- timezone: z.ZodString;
29
- isVisitHandlingInSdk: z.ZodDefault<z.ZodBoolean>;
30
- }, "strip", z.ZodTypeAny, {
31
- platform: DevicePlatform;
32
- timezone: string;
33
- device_model: string;
34
- language_code: string;
35
- os_version: string;
36
- sdk_type: string;
37
- sdk_version: string;
38
- isVisitHandlingInSdk: boolean;
39
- device_id?: import("bson-objectid").default | undefined;
40
- country_code?: "AF" | "AL" | "DZ" | "AS" | "AD" | "AO" | "AI" | "AG" | "AR" | "AM" | "AW" | "AU" | "AT" | "AZ" | "BS" | "BH" | "BD" | "BB" | "BY" | "BE" | "BZ" | "BJ" | "BM" | "BT" | "BO" | "BA" | "BW" | "BR" | "IO" | "BN" | "BG" | "BF" | "BI" | "KH" | "CM" | "CV" | "KY" | "CF" | "TD" | "CL" | "CN" | "CO" | "KM" | "CG" | "CD" | "CK" | "CR" | "CI" | "HR" | "CU" | "CY" | "CZ" | "DK" | "DJ" | "DM" | "DO" | "EC" | "EG" | "SV" | "GQ" | "ER" | "EE" | "ET" | "FK" | "FO" | "FJ" | "FI" | "FR" | "GF" | "PF" | "GA" | "GM" | "GE" | "DE" | "GH" | "GI" | "GR" | "GL" | "GD" | "GP" | "GU" | "GT" | "GN" | "GW" | "HT" | "VA" | "HN" | "HK" | "HU" | "IS" | "IN" | "ID" | "IR" | "IQ" | "IE" | "IL" | "IT" | "JM" | "JP" | "JO" | "KE" | "KI" | "KP" | "KR" | "KW" | "KG" | "LA" | "LV" | "LB" | "LS" | "LR" | "LY" | "LI" | "LT" | "LU" | "MO" | "MK" | "MG" | "MW" | "MY" | "MV" | "ML" | "MT" | "MH" | "MQ" | "MR" | "MU" | "YT" | "MX" | "FM" | "MD" | "MC" | "MN" | "ME" | "MS" | "MA" | "MZ" | "MM" | "NA" | "NR" | "NP" | "NL" | "NC" | "NZ" | "NI" | "NE" | "NG" | "NU" | "NF" | "MP" | "NO" | "OM" | "PK" | "PW" | "PS" | "PA" | "PG" | "PY" | "GY" | "PE" | "PH" | "PL" | "PT" | "PR" | "QA" | "RO" | "RU" | "KZ" | "RW" | "RE" | "BL" | "SH" | "KN" | "LC" | "MF" | "PM" | "VC" | "WS" | "SM" | "ST" | "SA" | "SN" | "RS" | "SC" | "SL" | "SG" | "SK" | "SI" | "SB" | "SO" | "ZA" | "SS" | "ES" | "LK" | "SD" | "SR" | "SZ" | "SE" | "CH" | "SY" | "TW" | "TJ" | "TZ" | "TH" | "TL" | "TG" | "TK" | "TO" | "TT" | "TN" | "TR" | "TM" | "TC" | "TV" | "UG" | "UA" | "AE" | "GB" | "US" | "CA" | "UY" | "UZ" | "VU" | "VE" | "VN" | "VG" | "VI" | "WF" | "YE" | "ZM" | "ZW" | undefined;
41
- }, {
42
- platform: DevicePlatform;
43
- timezone: string;
44
- device_model: string;
45
- language_code: string;
46
- os_version: string;
47
- sdk_type: string;
48
- sdk_version: string;
49
- device_id?: string | undefined;
50
- country_code?: unknown;
51
- isVisitHandlingInSdk?: boolean | undefined;
52
- }>;
53
- type Body = Serialize<z.input<typeof bodySchema>>;
54
- const pathSchema: z.ZodObject<{
55
- application_id: z.ZodOptional<z.ZodString>;
56
- }, "strip", z.ZodTypeAny, {
57
- application_id?: string | undefined;
58
- }, {
59
- application_id?: string | undefined;
60
- }>;
61
- type PathParam = Serialize<z.input<typeof pathSchema>>;
62
- type ResponseData = {
63
- blux_user_id: string;
64
- device_id: string;
65
- };
66
- }
67
- namespace bluxUsersSignIn {
68
- const name = "bluxUsersSignIn";
69
- const path: string;
70
- const method = HttpMethod.PUT;
71
- const bodySchema: z.ZodObject<{
72
- user_id: z.ZodString;
73
- device_id: z.ZodOptional<z.ZodString>;
74
- }, "strip", z.ZodTypeAny, {
75
- user_id: string;
76
- device_id?: string | undefined;
77
- }, {
78
- user_id: string;
79
- device_id?: string | undefined;
80
- }>;
81
- type Body = Serialize<z.input<typeof bodySchema>>;
82
- const pathSchema: z.ZodObject<{
83
- application_id: z.ZodOptional<z.ZodString>;
84
- blux_user_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
85
- }, "strip", z.ZodTypeAny, {
86
- blux_user_id: import("bson-objectid").default;
87
- application_id?: string | undefined;
88
- }, {
89
- blux_user_id: string;
90
- application_id?: string | undefined;
91
- }>;
92
- type PathParam = Serialize<z.input<typeof pathSchema>>;
93
- type ResponseData = {
94
- blux_user_id: string;
95
- };
96
- }
97
- namespace bluxUsersSignOut {
98
- const name = "bluxUsersSignOut";
99
- const path: string;
100
- const method = HttpMethod.PUT;
101
- const bodySchema: z.ZodObject<{
102
- device_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
103
- }, "strip", z.ZodTypeAny, {
104
- device_id: import("bson-objectid").default;
105
- }, {
106
- device_id: string;
107
- }>;
108
- type Body = Serialize<z.input<typeof bodySchema>>;
109
- const pathSchema: z.ZodObject<{
110
- application_id: z.ZodOptional<z.ZodString>;
111
- blux_user_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
112
- }, "strip", z.ZodTypeAny, {
113
- blux_user_id: import("bson-objectid").default;
114
- application_id?: string | undefined;
115
- }, {
116
- blux_user_id: string;
117
- application_id?: string | undefined;
118
- }>;
119
- type PathParam = Serialize<z.input<typeof pathSchema>>;
120
- type ResponseData = {
121
- blux_user_id: string;
122
- };
123
- }
124
- namespace bluxUsersCollectEvents {
125
- const name = "bluxUsersCollectEvents";
126
- const path: string;
127
- const method = HttpMethod.POST;
128
- const bodySchema: z.ZodObject<{
129
- events: z.ZodArray<z.ZodObject<{
130
- device_id: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>>;
131
- event_type: z.ZodString;
132
- event_value: z.ZodOptional<z.ZodString>;
133
- item_id: z.ZodOptional<z.ZodString>;
134
- event_properties: z.ZodOptional<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">]>>>;
135
- captured_at: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, Date, string>;
136
- }, "strip", z.ZodTypeAny, {
137
- event_type: string;
138
- captured_at: Date;
139
- event_value?: string | undefined;
140
- item_id?: string | undefined;
141
- event_properties?: Record<string, string | number | boolean | string[] | Date> | undefined;
142
- device_id?: import("bson-objectid").default | undefined;
143
- }, {
144
- event_type: string;
145
- captured_at: string;
146
- event_value?: string | undefined;
147
- item_id?: string | undefined;
148
- event_properties?: Record<string, string | number | boolean | string[]> | undefined;
149
- device_id?: string | undefined;
150
- }>, "many">;
151
- }, "strip", z.ZodTypeAny, {
152
- events: {
153
- event_type: string;
154
- captured_at: Date;
155
- event_value?: string | undefined;
156
- item_id?: string | undefined;
157
- event_properties?: Record<string, string | number | boolean | string[] | Date> | undefined;
158
- device_id?: import("bson-objectid").default | undefined;
159
- }[];
160
- }, {
161
- events: {
162
- event_type: string;
163
- captured_at: string;
164
- event_value?: string | undefined;
165
- item_id?: string | undefined;
166
- event_properties?: Record<string, string | number | boolean | string[]> | undefined;
167
- device_id?: string | undefined;
168
- }[];
169
- }>;
170
- type Body = Serialize<z.input<typeof bodySchema>>;
171
- const pathSchema: z.ZodObject<{
172
- application_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
173
- blux_user_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
174
- }, "strip", z.ZodTypeAny, {
175
- application_id: import("bson-objectid").default;
176
- blux_user_id: import("bson-objectid").default;
177
- }, {
178
- application_id: string;
179
- blux_user_id: string;
180
- }>;
181
- type PathParam = Serialize<z.input<typeof pathSchema>>;
182
- type ResponseData = boolean;
183
- }
184
- namespace bluxUsersGetItemRecommendations {
185
- const name = "bluxUsersGetItemRecommendations";
186
- const path: string;
187
- const method = HttpMethod.POST;
188
- const bodySchema: z.ZodObject<{
189
- call_type: z.ZodString;
190
- limit: z.ZodNumber;
191
- offset: z.ZodDefault<z.ZodNumber>;
192
- item_ids: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
193
- }, "strip", z.ZodTypeAny, {
194
- offset: number;
195
- call_type: string;
196
- limit: number;
197
- item_ids?: string[] | undefined;
198
- }, {
199
- call_type: string;
200
- limit: number;
201
- offset?: number | undefined;
202
- item_ids?: string[] | undefined;
203
- }>;
204
- type Body = Serialize<z.input<typeof bodySchema>>;
205
- const pathSchema: z.ZodObject<{
206
- application_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
207
- blux_user_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
208
- }, "strip", z.ZodTypeAny, {
209
- application_id: import("bson-objectid").default;
210
- blux_user_id: import("bson-objectid").default;
211
- }, {
212
- application_id: string;
213
- blux_user_id: string;
214
- }>;
215
- type PathParam = Serialize<z.input<typeof pathSchema>>;
216
- type ResponseData = {
217
- recommendation_id?: string;
218
- items: string[];
219
- metadata: Record<string, any>;
220
- status: {
221
- is_success: boolean;
222
- code: number;
223
- message?: string;
224
- };
225
- };
226
- }
227
- namespace bluxUsersUpdateUserProperties {
228
- const name = "bluxUsersUpdateUserProperties";
229
- const path: string;
230
- const method = HttpMethod.PUT;
231
- const bodySchema: z.ZodObject<{
232
- properties: z.ZodObject<{
233
- phone_number: z.ZodOptional<z.ZodNullable<z.ZodString>>;
234
- email_address: z.ZodOptional<z.ZodNullable<z.ZodString>>;
235
- nighttime_notification_consent: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
236
- marketing_notification_consent: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
237
- sms_consent: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
238
- email_consent: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
239
- }, "strip", z.ZodTypeAny, {
240
- phone_number?: string | null | undefined;
241
- email_address?: string | null | undefined;
242
- nighttime_notification_consent?: boolean | null | undefined;
243
- marketing_notification_consent?: boolean | null | undefined;
244
- sms_consent?: boolean | null | undefined;
245
- email_consent?: boolean | null | undefined;
246
- }, {
247
- phone_number?: string | null | undefined;
248
- email_address?: string | null | undefined;
249
- nighttime_notification_consent?: boolean | null | undefined;
250
- marketing_notification_consent?: boolean | null | undefined;
251
- sms_consent?: boolean | null | undefined;
252
- email_consent?: boolean | null | undefined;
253
- }>;
254
- }, "strip", z.ZodTypeAny, {
255
- properties: {
256
- phone_number?: string | null | undefined;
257
- email_address?: string | null | undefined;
258
- nighttime_notification_consent?: boolean | null | undefined;
259
- marketing_notification_consent?: boolean | null | undefined;
260
- sms_consent?: boolean | null | undefined;
261
- email_consent?: boolean | null | undefined;
262
- };
263
- }, {
264
- properties: {
265
- phone_number?: string | null | undefined;
266
- email_address?: string | null | undefined;
267
- nighttime_notification_consent?: boolean | null | undefined;
268
- marketing_notification_consent?: boolean | null | undefined;
269
- sms_consent?: boolean | null | undefined;
270
- email_consent?: boolean | null | undefined;
271
- };
272
- }>;
273
- type Body = Serialize<z.input<typeof bodySchema>>;
274
- const pathSchema: z.ZodObject<{
275
- application_id: z.ZodOptional<z.ZodString>;
276
- blux_user_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
277
- }, "strip", z.ZodTypeAny, {
278
- blux_user_id: import("bson-objectid").default;
279
- application_id?: string | undefined;
280
- }, {
281
- blux_user_id: string;
282
- application_id?: string | undefined;
283
- }>;
284
- type PathParam = Serialize<z.input<typeof pathSchema>>;
285
- type ResponseData = {
286
- blux_user_id: string;
287
- };
288
- }
289
- namespace bluxUsersUpdateCustomUserProperties {
290
- const name = "bluxUsersUpdateCustomUserProperties";
291
- const path: string;
292
- const method = HttpMethod.PUT;
293
- const bodySchema: z.ZodObject<{
294
- properties: 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.ZodNull]>>;
295
- }, "strip", z.ZodTypeAny, {
296
- properties: Record<string, string | number | boolean | string[] | Date | null>;
297
- }, {
298
- properties: Record<string, string | number | boolean | string[] | null>;
299
- }>;
300
- type Body = Serialize<z.input<typeof bodySchema>>;
301
- const pathSchema: z.ZodObject<{
302
- application_id: z.ZodOptional<z.ZodString>;
303
- blux_user_id: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, import("bson-objectid").default, string>;
304
- }, "strip", z.ZodTypeAny, {
305
- blux_user_id: import("bson-objectid").default;
306
- application_id?: string | undefined;
307
- }, {
308
- blux_user_id: string;
309
- application_id?: string | undefined;
310
- }>;
311
- type PathParam = Serialize<z.input<typeof pathSchema>>;
312
- type ResponseData = {
313
- blux_user_id: string;
314
- };
315
- }
316
- }
317
- export {};