@smess/networking 1.2.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/CHANGELOG.md +221 -0
  2. package/README.md +178 -111
  3. package/dist/core/body.d.ts +10 -0
  4. package/dist/core/body.d.ts.map +1 -0
  5. package/dist/core/body.js +22 -0
  6. package/dist/core/body.js.map +1 -0
  7. package/dist/core/client.d.ts +74 -0
  8. package/dist/core/client.d.ts.map +1 -0
  9. package/dist/core/client.js +124 -0
  10. package/dist/core/client.js.map +1 -0
  11. package/dist/core/decoders.d.ts +8 -0
  12. package/dist/core/decoders.d.ts.map +1 -0
  13. package/dist/core/decoders.js +26 -0
  14. package/dist/core/decoders.js.map +1 -0
  15. package/dist/core/endpoint.d.ts +69 -0
  16. package/dist/core/endpoint.d.ts.map +1 -0
  17. package/dist/core/endpoint.js +6 -0
  18. package/dist/core/endpoint.js.map +1 -0
  19. package/dist/core/hosts.d.ts +27 -0
  20. package/dist/core/hosts.d.ts.map +1 -0
  21. package/dist/core/hosts.js +24 -0
  22. package/dist/core/hosts.js.map +1 -0
  23. package/dist/core/pagination.d.ts +33 -0
  24. package/dist/core/pagination.d.ts.map +1 -0
  25. package/dist/core/pagination.js +23 -0
  26. package/dist/core/pagination.js.map +1 -0
  27. package/dist/core/pipeline.d.ts +25 -0
  28. package/dist/core/pipeline.d.ts.map +1 -0
  29. package/dist/core/pipeline.js +12 -0
  30. package/dist/core/pipeline.js.map +1 -0
  31. package/dist/core/retry.d.ts +18 -0
  32. package/dist/core/retry.d.ts.map +1 -0
  33. package/dist/core/retry.js +47 -0
  34. package/dist/core/retry.js.map +1 -0
  35. package/dist/core/transport.d.ts +30 -0
  36. package/dist/core/transport.d.ts.map +1 -0
  37. package/dist/core/transport.js +73 -0
  38. package/dist/core/transport.js.map +1 -0
  39. package/dist/core/types.d.ts +24 -0
  40. package/dist/core/types.d.ts.map +1 -0
  41. package/dist/core/types.js +3 -0
  42. package/dist/core/types.js.map +1 -0
  43. package/dist/core/url.d.ts +15 -0
  44. package/dist/core/url.d.ts.map +1 -0
  45. package/dist/core/url.js +46 -0
  46. package/dist/core/url.js.map +1 -0
  47. package/dist/errors/parse-error-body.d.ts +20 -0
  48. package/dist/errors/parse-error-body.d.ts.map +1 -0
  49. package/dist/errors/parse-error-body.js +73 -0
  50. package/dist/errors/parse-error-body.js.map +1 -0
  51. package/dist/errors/smess-api-error.d.ts +70 -0
  52. package/dist/errors/smess-api-error.d.ts.map +1 -0
  53. package/dist/errors/smess-api-error.js +84 -0
  54. package/dist/errors/smess-api-error.js.map +1 -0
  55. package/dist/index.d.ts +27 -25
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +15 -29
  58. package/dist/index.js.map +1 -0
  59. package/dist/modules/authentication/index.d.ts +89 -0
  60. package/dist/modules/authentication/index.d.ts.map +1 -0
  61. package/dist/modules/authentication/index.js +128 -0
  62. package/dist/modules/authentication/index.js.map +1 -0
  63. package/dist/modules/campaign/index.d.ts +212 -0
  64. package/dist/modules/campaign/index.d.ts.map +1 -0
  65. package/dist/modules/campaign/index.js +193 -0
  66. package/dist/modules/campaign/index.js.map +1 -0
  67. package/dist/modules/campaign/types.d.ts +562 -0
  68. package/dist/modules/campaign/types.d.ts.map +1 -0
  69. package/dist/modules/campaign/types.js +2 -0
  70. package/dist/modules/campaign/types.js.map +1 -0
  71. package/dist/modules/danara/index.d.ts +153 -0
  72. package/dist/modules/danara/index.d.ts.map +1 -0
  73. package/dist/modules/danara/index.js +144 -0
  74. package/dist/modules/danara/index.js.map +1 -0
  75. package/dist/modules/danara/types.d.ts +479 -0
  76. package/dist/modules/danara/types.d.ts.map +1 -0
  77. package/dist/modules/danara/types.js +2 -0
  78. package/dist/modules/danara/types.js.map +1 -0
  79. package/dist/modules/messenger/index.d.ts +92 -0
  80. package/dist/modules/messenger/index.d.ts.map +1 -0
  81. package/dist/modules/messenger/index.js +44 -0
  82. package/dist/modules/messenger/index.js.map +1 -0
  83. package/dist/modules/smeup-file/index.d.ts +27 -0
  84. package/dist/modules/smeup-file/index.d.ts.map +1 -0
  85. package/dist/modules/smeup-file/index.js +17 -0
  86. package/dist/modules/smeup-file/index.js.map +1 -0
  87. package/dist/modules/sso/index.d.ts +40 -0
  88. package/dist/modules/sso/index.d.ts.map +1 -0
  89. package/dist/modules/sso/index.js +41 -0
  90. package/dist/modules/sso/index.js.map +1 -0
  91. package/dist/rx/index.d.ts +11 -0
  92. package/dist/rx/index.d.ts.map +1 -0
  93. package/dist/rx/index.js +20 -0
  94. package/dist/rx/index.js.map +1 -0
  95. package/dist/session/auth-middleware.d.ts +27 -0
  96. package/dist/session/auth-middleware.d.ts.map +1 -0
  97. package/dist/session/auth-middleware.js +122 -0
  98. package/dist/session/auth-middleware.js.map +1 -0
  99. package/dist/session/jwt.d.ts +20 -0
  100. package/dist/session/jwt.d.ts.map +1 -0
  101. package/dist/session/jwt.js +25 -0
  102. package/dist/session/jwt.js.map +1 -0
  103. package/dist/session/stores.d.ts +19 -0
  104. package/dist/session/stores.d.ts.map +1 -0
  105. package/dist/session/stores.js +103 -0
  106. package/dist/session/stores.js.map +1 -0
  107. package/dist/session/types.d.ts +28 -0
  108. package/dist/session/types.d.ts.map +1 -0
  109. package/dist/session/types.js +2 -0
  110. package/dist/session/types.js.map +1 -0
  111. package/package.json +84 -30
  112. package/dist/core/axios.d.ts +0 -51
  113. package/dist/core/axios.js +0 -65
  114. package/dist/core/axios.observable.d.ts +0 -11
  115. package/dist/core/axios.observable.js +0 -58
  116. package/dist/core/base.provider.advanced.test.d.ts +0 -1
  117. package/dist/core/base.provider.advanced.test.js +0 -29
  118. package/dist/core/base.provider.d.ts +0 -15
  119. package/dist/core/base.provider.js +0 -13
  120. package/dist/core/base.provider.test.d.ts +0 -1
  121. package/dist/core/base.provider.test.js +0 -36
  122. package/dist/core/base.service.wrapper.advanced.test.d.ts +0 -1
  123. package/dist/core/base.service.wrapper.advanced.test.js +0 -39
  124. package/dist/core/base.service.wrapper.d.ts +0 -7
  125. package/dist/core/base.service.wrapper.js +0 -11
  126. package/dist/core/base.service.wrapper.test.d.ts +0 -1
  127. package/dist/core/base.service.wrapper.test.js +0 -25
  128. package/dist/core/rx.http.service.d.ts +0 -51
  129. package/dist/core/rx.http.service.js +0 -65
  130. package/dist/services/auth.service.d.ts +0 -65
  131. package/dist/services/auth.service.js +0 -197
  132. package/dist/services/auth.service.test.d.ts +0 -1
  133. package/dist/services/auth.service.test.js +0 -334
  134. package/dist/services/cache.service.d.ts +0 -31
  135. package/dist/services/cache.service.js +0 -77
  136. package/dist/services/cache.service.test.d.ts +0 -1
  137. package/dist/services/cache.service.test.js +0 -88
  138. package/dist/services/customer.service.d.ts +0 -211
  139. package/dist/services/customer.service.js +0 -128
  140. package/dist/services/customer.service.test.d.ts +0 -1
  141. package/dist/services/customer.service.test.js +0 -430
  142. package/dist/services/employee.service.d.ts +0 -73
  143. package/dist/services/employee.service.js +0 -74
  144. package/dist/services/employee.service.test.d.ts +0 -1
  145. package/dist/services/employee.service.test.js +0 -127
  146. package/dist/services/logger.service.d.ts +0 -31
  147. package/dist/services/logger.service.js +0 -93
  148. package/dist/services/logger.service.test.d.ts +0 -1
  149. package/dist/services/logger.service.test.js +0 -31
  150. package/dist/services/order.service.d.ts +0 -73
  151. package/dist/services/order.service.js +0 -97
  152. package/dist/services/order.service.test.d.ts +0 -1
  153. package/dist/services/order.service.test.js +0 -163
  154. package/dist/services/product.service.d.ts +0 -21
  155. package/dist/services/product.service.js +0 -42
  156. package/dist/services/product.service.test.d.ts +0 -1
  157. package/dist/services/product.service.test.js +0 -61
  158. package/dist/services/smess.service.d.ts +0 -36
  159. package/dist/services/smess.service.js +0 -128
  160. package/dist/services/smess.service.test.d.ts +0 -1
  161. package/dist/services/smess.service.test.js +0 -103
  162. package/dist/services/store.cart.service.d.ts +0 -158
  163. package/dist/services/store.cart.service.js +0 -177
  164. package/dist/services/store.cart.service.test.d.ts +0 -1
  165. package/dist/services/store.cart.service.test.js +0 -394
  166. package/dist/services/store.product.service.d.ts +0 -124
  167. package/dist/services/store.product.service.js +0 -102
  168. package/dist/services/store.product.service.test.d.ts +0 -1
  169. package/dist/services/store.product.service.test.js +0 -319
  170. package/dist/services/store.service.d.ts +0 -79
  171. package/dist/services/store.service.js +0 -235
  172. package/dist/services/store.service.test.d.ts +0 -1
  173. package/dist/services/store.service.test.js +0 -274
  174. package/dist/services/storefront.cart.service.d.ts +0 -73
  175. package/dist/services/storefront.cart.service.js +0 -167
  176. package/dist/services/storefront.cart.service.test.d.ts +0 -1
  177. package/dist/services/storefront.cart.service.test.js +0 -211
  178. package/dist/services/storefront.checkout.service.d.ts +0 -62
  179. package/dist/services/storefront.checkout.service.js +0 -75
  180. package/dist/services/storefront.checkout.service.test.d.ts +0 -1
  181. package/dist/services/storefront.checkout.service.test.js +0 -158
  182. package/dist/services/storefront.customer.metadata.service.d.ts +0 -91
  183. package/dist/services/storefront.customer.metadata.service.js +0 -225
  184. package/dist/services/storefront.customer.metadata.service.test.d.ts +0 -1
  185. package/dist/services/storefront.customer.metadata.service.test.js +0 -271
  186. package/dist/services/storefront.order.service.d.ts +0 -45
  187. package/dist/services/storefront.order.service.js +0 -99
  188. package/dist/services/storefront.order.service.test.d.ts +0 -1
  189. package/dist/services/storefront.order.service.test.js +0 -158
  190. package/dist/services/storefront.product.service.d.ts +0 -52
  191. package/dist/services/storefront.product.service.js +0 -75
  192. package/dist/services/storefront.product.service.test.d.ts +0 -1
  193. package/dist/services/storefront.product.service.test.js +0 -120
  194. package/dist/services/storefront.store.service.d.ts +0 -54
  195. package/dist/services/storefront.store.service.js +0 -142
  196. package/dist/services/storefront.store.service.test.d.ts +0 -1
  197. package/dist/services/storefront.store.service.test.js +0 -90
  198. package/dist/services/user.service.d.ts +0 -16
  199. package/dist/services/user.service.js +0 -37
  200. package/dist/services/user.service.test.d.ts +0 -1
  201. package/dist/services/user.service.test.js +0 -52
  202. package/dist/services/utils/withAuthReset.d.ts +0 -3
  203. package/dist/services/utils/withAuthReset.js +0 -8
  204. package/dist/src/core/axios.d.ts +0 -51
  205. package/dist/src/core/axios.js +0 -65
  206. package/dist/src/core/axios.observable.d.ts +0 -11
  207. package/dist/src/core/axios.observable.js +0 -58
  208. package/dist/src/core/base.provider.advanced.test.d.ts +0 -1
  209. package/dist/src/core/base.provider.advanced.test.js +0 -29
  210. package/dist/src/core/base.provider.d.ts +0 -15
  211. package/dist/src/core/base.provider.js +0 -13
  212. package/dist/src/core/base.provider.test.d.ts +0 -1
  213. package/dist/src/core/base.provider.test.js +0 -36
  214. package/dist/src/core/base.service.wrapper.advanced.test.d.ts +0 -1
  215. package/dist/src/core/base.service.wrapper.advanced.test.js +0 -39
  216. package/dist/src/core/base.service.wrapper.d.ts +0 -7
  217. package/dist/src/core/base.service.wrapper.js +0 -11
  218. package/dist/src/core/base.service.wrapper.test.d.ts +0 -1
  219. package/dist/src/core/base.service.wrapper.test.js +0 -25
  220. package/dist/src/core/rx.http.service.d.ts +0 -51
  221. package/dist/src/core/rx.http.service.js +0 -65
  222. package/dist/src/index.d.ts +0 -25
  223. package/dist/src/index.js +0 -29
  224. package/dist/src/services/auth.service.d.ts +0 -65
  225. package/dist/src/services/auth.service.js +0 -197
  226. package/dist/src/services/auth.service.test.d.ts +0 -1
  227. package/dist/src/services/auth.service.test.js +0 -334
  228. package/dist/src/services/cache.service.d.ts +0 -31
  229. package/dist/src/services/cache.service.js +0 -77
  230. package/dist/src/services/cache.service.test.d.ts +0 -1
  231. package/dist/src/services/cache.service.test.js +0 -88
  232. package/dist/src/services/customer.service.d.ts +0 -199
  233. package/dist/src/services/customer.service.js +0 -114
  234. package/dist/src/services/customer.service.test.d.ts +0 -1
  235. package/dist/src/services/customer.service.test.js +0 -430
  236. package/dist/src/services/employee.service.d.ts +0 -73
  237. package/dist/src/services/employee.service.js +0 -74
  238. package/dist/src/services/employee.service.test.d.ts +0 -1
  239. package/dist/src/services/employee.service.test.js +0 -127
  240. package/dist/src/services/logger.service.d.ts +0 -31
  241. package/dist/src/services/logger.service.js +0 -93
  242. package/dist/src/services/logger.service.test.d.ts +0 -1
  243. package/dist/src/services/logger.service.test.js +0 -31
  244. package/dist/src/services/order.service.d.ts +0 -73
  245. package/dist/src/services/order.service.js +0 -97
  246. package/dist/src/services/order.service.test.d.ts +0 -1
  247. package/dist/src/services/order.service.test.js +0 -163
  248. package/dist/src/services/product.service.d.ts +0 -21
  249. package/dist/src/services/product.service.js +0 -42
  250. package/dist/src/services/product.service.test.d.ts +0 -1
  251. package/dist/src/services/product.service.test.js +0 -61
  252. package/dist/src/services/smess.service.d.ts +0 -36
  253. package/dist/src/services/smess.service.js +0 -128
  254. package/dist/src/services/smess.service.test.d.ts +0 -1
  255. package/dist/src/services/smess.service.test.js +0 -103
  256. package/dist/src/services/store.cart.service.d.ts +0 -158
  257. package/dist/src/services/store.cart.service.js +0 -177
  258. package/dist/src/services/store.cart.service.test.d.ts +0 -1
  259. package/dist/src/services/store.cart.service.test.js +0 -394
  260. package/dist/src/services/store.product.service.d.ts +0 -124
  261. package/dist/src/services/store.product.service.js +0 -102
  262. package/dist/src/services/store.product.service.test.d.ts +0 -1
  263. package/dist/src/services/store.product.service.test.js +0 -319
  264. package/dist/src/services/store.service.d.ts +0 -79
  265. package/dist/src/services/store.service.js +0 -235
  266. package/dist/src/services/store.service.test.d.ts +0 -1
  267. package/dist/src/services/store.service.test.js +0 -274
  268. package/dist/src/services/storefront.cart.service.d.ts +0 -73
  269. package/dist/src/services/storefront.cart.service.js +0 -167
  270. package/dist/src/services/storefront.cart.service.test.d.ts +0 -1
  271. package/dist/src/services/storefront.cart.service.test.js +0 -211
  272. package/dist/src/services/storefront.checkout.service.d.ts +0 -62
  273. package/dist/src/services/storefront.checkout.service.js +0 -75
  274. package/dist/src/services/storefront.checkout.service.test.d.ts +0 -1
  275. package/dist/src/services/storefront.checkout.service.test.js +0 -158
  276. package/dist/src/services/storefront.customer.metadata.service.d.ts +0 -91
  277. package/dist/src/services/storefront.customer.metadata.service.js +0 -225
  278. package/dist/src/services/storefront.customer.metadata.service.test.d.ts +0 -1
  279. package/dist/src/services/storefront.customer.metadata.service.test.js +0 -271
  280. package/dist/src/services/storefront.order.service.d.ts +0 -45
  281. package/dist/src/services/storefront.order.service.js +0 -99
  282. package/dist/src/services/storefront.order.service.test.d.ts +0 -1
  283. package/dist/src/services/storefront.order.service.test.js +0 -158
  284. package/dist/src/services/storefront.product.service.d.ts +0 -52
  285. package/dist/src/services/storefront.product.service.js +0 -75
  286. package/dist/src/services/storefront.product.service.test.d.ts +0 -1
  287. package/dist/src/services/storefront.product.service.test.js +0 -120
  288. package/dist/src/services/storefront.store.service.d.ts +0 -52
  289. package/dist/src/services/storefront.store.service.js +0 -140
  290. package/dist/src/services/storefront.store.service.test.d.ts +0 -1
  291. package/dist/src/services/storefront.store.service.test.js +0 -90
  292. package/dist/src/services/user.service.d.ts +0 -16
  293. package/dist/src/services/user.service.js +0 -37
  294. package/dist/src/services/user.service.test.d.ts +0 -1
  295. package/dist/src/services/user.service.test.js +0 -52
  296. package/dist/src/services/utils/withAuthReset.d.ts +0 -3
  297. package/dist/src/services/utils/withAuthReset.js +0 -8
  298. package/dist/src/types/types.d.ts +0 -93
  299. package/dist/src/types/types.js +0 -82
  300. package/dist/src/types/types.test.d.ts +0 -1
  301. package/dist/src/types/types.test.js +0 -25
  302. package/dist/src/utils/cache-import.d.ts +0 -3
  303. package/dist/src/utils/cache-import.js +0 -2
  304. package/dist/src/utils/networking-import.d.ts +0 -4
  305. package/dist/src/utils/networking-import.js +0 -3
  306. package/dist/src/utils/rxjs-import.d.ts +0 -5
  307. package/dist/src/utils/rxjs-import.js +0 -5
  308. package/dist/types/types.d.ts +0 -96
  309. package/dist/types/types.js +0 -82
  310. package/dist/types/types.test.d.ts +0 -1
  311. package/dist/types/types.test.js +0 -25
  312. package/dist/utils/cache-import.d.ts +0 -3
  313. package/dist/utils/cache-import.js +0 -2
  314. package/dist/utils/networking-import.d.ts +0 -4
  315. package/dist/utils/networking-import.js +0 -3
  316. package/dist/utils/rxjs-import.d.ts +0 -5
  317. package/dist/utils/rxjs-import.js +0 -5
@@ -0,0 +1,479 @@
1
+ /**
2
+ * Wire types of the Danara API (`src/Microservice/Danara`), from its transformers and request DTOs.
3
+ * Responses are hand-built arrays: keys are camelCase, nulls are kept, dates are ATOM
4
+ * (`2026-09-02T12:00:00+07:00`), money is a decimal string with trailing zeros trimmed (`"15000000"`).
5
+ * Request bodies accept camelCase and snake_case keys.
6
+ */
7
+ import type { PagedList } from '../../core/pagination.js';
8
+ export type { PagedList };
9
+ export type DanaraLocale = 'vi' | 'en';
10
+ export type DanaraRole = 'owner' | 'tenant' | 'staff' | 'admin';
11
+ export type DanaraAccountStatus = 'active' | 'pending' | 'suspended';
12
+ export type TourStatus = 'requested' | 'confirmed' | 'completed' | 'cancelled';
13
+ export type ApplicationStatus = 'pending' | 'reviewing' | 'approved' | 'rejected';
14
+ export type MaintenanceTicketStatus = 'open' | 'in_progress' | 'resolved';
15
+ export type OwnerInvoiceStatus = 'pending' | 'paid';
16
+ export type Occupancy = 'occupied' | 'vacant';
17
+ export interface DanaraUser {
18
+ /** The Customer id when one exists, else the User id. */
19
+ uuid: string;
20
+ email: string;
21
+ name: string;
22
+ role: DanaraRole;
23
+ /** Always one element today. */
24
+ roles: DanaraRole[];
25
+ /** The customer's status; `active` when there is no customer row. */
26
+ accountStatus: DanaraAccountStatus;
27
+ preferredLocale: DanaraLocale;
28
+ }
29
+ /** Login, OTP verify, register and reset answer with a token and the user. There is no refresh token. */
30
+ export interface DanaraAuthResponse {
31
+ token: string;
32
+ user: DanaraUser;
33
+ }
34
+ export interface DanaraLoginInput {
35
+ email: string;
36
+ password: string;
37
+ }
38
+ export interface DanaraRegisterInput {
39
+ email: string;
40
+ /** ≥ 6 characters. */
41
+ password: string;
42
+ name: string;
43
+ role: DanaraRole;
44
+ preferredLocale?: DanaraLocale | null;
45
+ }
46
+ export interface DanaraOtpRequestInput {
47
+ email: string;
48
+ preferredLocale?: DanaraLocale | null;
49
+ }
50
+ export interface DanaraOtpVerifyInput {
51
+ email: string;
52
+ /** Exactly 6 characters. */
53
+ code: string;
54
+ /** Used to create the account when the email has none yet. */
55
+ name?: string | null;
56
+ preferredLocale?: DanaraLocale | null;
57
+ }
58
+ export interface DanaraResetPasswordInput {
59
+ token: string;
60
+ /** ≥ 8 characters. */
61
+ newPassword: string;
62
+ }
63
+ export interface DanaraStatusOk {
64
+ status: 'ok';
65
+ }
66
+ export type ListingStatus = 'draft' | 'pending_verification' | 'verified' | 'published' | 'rented' | 'archived';
67
+ export interface Listing {
68
+ uuid: string;
69
+ /** Public identifier for detail URLs. */
70
+ slug: string;
71
+ titleVi: string;
72
+ titleEn: string;
73
+ rentPrice: string;
74
+ currency: string;
75
+ /** Public endpoints only return `published`. */
76
+ status: ListingStatus;
77
+ publishedAt: string | null;
78
+ propertyUuid: string;
79
+ bedrooms: number | null;
80
+ areaM2: number | null;
81
+ ward: string | null;
82
+ coverUrl: string | null;
83
+ imageUrls: string[];
84
+ descriptionVi: string | null;
85
+ descriptionEn: string | null;
86
+ /** As stored, not reformatted. */
87
+ availableFrom: string | null;
88
+ minLeaseMonths: number | null;
89
+ }
90
+ export interface ListingsQuery {
91
+ /** Default 1. */
92
+ page?: number;
93
+ /** Default 20. */
94
+ limit?: number;
95
+ /** Exact ward match. */
96
+ ward?: string;
97
+ /** `rentPrice <= maxPrice`; ignored when `maxPriceUnbounded`. */
98
+ maxPrice?: number;
99
+ maxPriceUnbounded?: boolean;
100
+ /** Exact match. */
101
+ bedrooms?: number;
102
+ }
103
+ export interface InquiryInput {
104
+ name: string;
105
+ email: string;
106
+ message?: string | null;
107
+ }
108
+ export interface Received {
109
+ uuid: string;
110
+ status: 'received';
111
+ }
112
+ export type SaleListingStatus = 'draft' | 'published' | 'under_offer' | 'sold';
113
+ export interface SaleListing {
114
+ uuid: string;
115
+ propertyUuid: string;
116
+ relatedRentalListingUuid: string | null;
117
+ titleVi: string;
118
+ titleEn: string;
119
+ descriptionVi: string | null;
120
+ descriptionEn: string | null;
121
+ salePrice: string;
122
+ currency: string;
123
+ status: SaleListingStatus;
124
+ publishedAt: string | null;
125
+ bedrooms: number | null;
126
+ areaM2: number | null;
127
+ ward: string | null;
128
+ coverUrl: string | null;
129
+ imageUrls: string[];
130
+ rentalHistoryMonths: number;
131
+ avgMonthlyRent: string;
132
+ occupancyRatePercent: number;
133
+ /** As stored, not reformatted. */
134
+ lastVerifiedAt: string | null;
135
+ }
136
+ export interface SalesQuery {
137
+ page?: number;
138
+ limit?: number;
139
+ }
140
+ export interface SaleInquiryInput {
141
+ name: string;
142
+ email: string;
143
+ phone: string;
144
+ message?: string | null;
145
+ /** Free text, ≤ 64. */
146
+ preferredViewingAt?: string | null;
147
+ }
148
+ export interface FitoutPackage {
149
+ uuid: string;
150
+ slug: string;
151
+ nameVi: string;
152
+ nameEn: string;
153
+ priceFrom: string;
154
+ currency: string;
155
+ durationWeeks: number;
156
+ /** `''` when empty (never null). */
157
+ descriptionVi: string;
158
+ descriptionEn: string;
159
+ scopeVi: string[];
160
+ scopeEn: string[];
161
+ coverUrl: string;
162
+ priceNoteVi: string;
163
+ priceNoteEn: string;
164
+ isCustom: boolean;
165
+ }
166
+ export type FitoutProjectStatus = 'quoted' | 'confirmed' | 'in_progress' | 'completed';
167
+ export interface FitoutProject {
168
+ uuid: string;
169
+ propertyUuid: string;
170
+ propertyTitleVi: string;
171
+ propertyTitleEn: string;
172
+ packageUuid: string;
173
+ packageNameVi: string;
174
+ packageNameEn: string;
175
+ status: FitoutProjectStatus;
176
+ updatedAt: string;
177
+ progressStep: number;
178
+ }
179
+ export interface QuotationInput {
180
+ packageUuid: string;
181
+ name: string;
182
+ email: string;
183
+ phone: string;
184
+ propertyAddress: string;
185
+ areaM2?: number | null;
186
+ bedrooms?: number | null;
187
+ /** Free text, ≤ 64. */
188
+ preferredStartDate?: string | null;
189
+ notes?: string | null;
190
+ }
191
+ export interface TourRequest {
192
+ uuid: string;
193
+ listingUuid: string;
194
+ scheduledAt: string;
195
+ /** `requested` when created. */
196
+ status: TourStatus;
197
+ }
198
+ export interface TourInput {
199
+ /** A published listing's uuid (not the slug). */
200
+ listingUuid: string;
201
+ /** Any date-time the server can parse; ISO 8601 recommended. */
202
+ scheduledAt: string;
203
+ note?: string | null;
204
+ }
205
+ export interface RentalApplication {
206
+ uuid: string;
207
+ listingUuid: string;
208
+ listingTitleVi: string;
209
+ listingTitleEn: string;
210
+ /** `pending` when created. */
211
+ status: ApplicationStatus;
212
+ submittedAt: string;
213
+ }
214
+ export interface ApplicationInput {
215
+ listingUuid: string;
216
+ message?: string | null;
217
+ }
218
+ export type RentalContractStatus = 'draft' | 'pending_sign' | 'signed' | 'expired';
219
+ export interface RentalContract {
220
+ uuid: string;
221
+ listingUuid: string;
222
+ status: RentalContractStatus;
223
+ signedAt: string | null;
224
+ }
225
+ export interface OwnerProperty {
226
+ uuid: string;
227
+ titleVi: string;
228
+ titleEn: string;
229
+ /** `vacant` by default. */
230
+ occupancy: Occupancy;
231
+ activeLeaseUuid: string | null;
232
+ }
233
+ export interface OwnerFinance {
234
+ propertyUuid: string;
235
+ revenue: string;
236
+ expenses: string;
237
+ currency: string;
238
+ }
239
+ export interface OwnerListingInput {
240
+ /** Stored as both titles. */
241
+ title: string;
242
+ locale?: DanaraLocale;
243
+ address: string;
244
+ areaNeighborhood?: string | null;
245
+ ward: string;
246
+ propertyType?: 'studio' | '1br' | '2br' | '3br' | 'penthouse' | null;
247
+ bedrooms?: number | null;
248
+ bathrooms?: number | null;
249
+ areaM2?: number | null;
250
+ rentPrice: number;
251
+ description?: string | null;
252
+ amenities?: string[];
253
+ coverUrl?: string | null;
254
+ photoUrls?: string[];
255
+ contactName?: string | null;
256
+ contactEmail?: string | null;
257
+ contactPhone?: string | null;
258
+ listerRole?: 'owner' | 'agent' | 'manager' | null;
259
+ }
260
+ export interface OwnerListingCreated {
261
+ uuid: string;
262
+ status: 'pending_verification';
263
+ }
264
+ export interface MaintenanceTicket {
265
+ uuid: string;
266
+ propertyUuid: string;
267
+ title: string;
268
+ /** `open` when created. */
269
+ status: MaintenanceTicketStatus;
270
+ createdAt: string;
271
+ }
272
+ export interface MaintenanceTicketInput {
273
+ propertyUuid: string;
274
+ title: string;
275
+ }
276
+ export interface BillingSummary {
277
+ managementFee: string;
278
+ rentalIncome: string;
279
+ currency: string;
280
+ }
281
+ export interface OwnerInvoice {
282
+ uuid: string;
283
+ amount: string;
284
+ currency: string;
285
+ /** `pending` by default. */
286
+ status: OwnerInvoiceStatus;
287
+ paidAt: string | null;
288
+ }
289
+ export type TransitLanguage = 'vi' | 'en' | 'fr' | 'es';
290
+ /** Added to every transit response. */
291
+ export interface TransitAttribution {
292
+ attribution: string;
293
+ licenseUrl: string;
294
+ importedAt: string | null;
295
+ }
296
+ export type TransitNoticeType = 'not_official' | 'not_listed' | 'renumbered' | 'suspended' | 'not_running_yet' | 'renamed' | 'endpoints_changed' | 'schedule_changed' | 'fare_changed' | 'stops_changed' | 'itinerary_updated' | 'missing_route';
297
+ export interface TransitNotice {
298
+ id: string;
299
+ type: TransitNoticeType;
300
+ severity: 'info' | 'warning';
301
+ message: string;
302
+ sourceUrl: string;
303
+ detectedAt: string;
304
+ }
305
+ export interface TransitRouteSummary {
306
+ id: string;
307
+ ref: string;
308
+ from: string | null;
309
+ to: string | null;
310
+ /** `HH:MM`. */
311
+ firstDeparture: string | null;
312
+ lastDeparture: string | null;
313
+ /** Null without a daily window (Asia/Ho_Chi_Minh time). */
314
+ runningNow: boolean | null;
315
+ intervalMinMinutes: number | null;
316
+ intervalMaxMinutes: number | null;
317
+ fareVnd: number | null;
318
+ lengthM: number;
319
+ stopCount: number;
320
+ estimatedMinutes: number;
321
+ }
322
+ export interface TransitLine {
323
+ ref: string;
324
+ operator: string | null;
325
+ network: string | null;
326
+ colour: string | null;
327
+ fareVnd: number | null;
328
+ notices: TransitNotice[];
329
+ directions: TransitRouteSummary[];
330
+ }
331
+ export interface TransitRouteStop {
332
+ id: string;
333
+ name: string;
334
+ lat: number;
335
+ lng: number;
336
+ /** 0-based. */
337
+ sequence: number;
338
+ distanceM: number;
339
+ minutesFromStart: number;
340
+ boarding: boolean;
341
+ alighting: boolean;
342
+ }
343
+ export interface TransitRouteDetail extends TransitRouteSummary {
344
+ name: string;
345
+ operator: string | null;
346
+ network: string | null;
347
+ colour: string | null;
348
+ openingHours: string | null;
349
+ /** Encoded polyline, precision 5. */
350
+ geometry: string;
351
+ geometryFormat: 'polyline5';
352
+ stops: TransitRouteStop[];
353
+ notices: TransitNotice[];
354
+ }
355
+ export interface TransitStopLine {
356
+ routeId: string;
357
+ ref: string;
358
+ to: string | null;
359
+ colour: string | null;
360
+ boarding: boolean;
361
+ }
362
+ export interface TransitStop {
363
+ id: string;
364
+ name: string;
365
+ lat: number;
366
+ lng: number;
367
+ lines: TransitStopLine[];
368
+ }
369
+ export interface TransitNearbyStop extends TransitStop {
370
+ /** Straight line, rounded. */
371
+ distanceM: number;
372
+ walkM: number;
373
+ walkMinutes: number;
374
+ }
375
+ export interface TransitAssumptions {
376
+ busKmh: number;
377
+ walkKmh: number;
378
+ walkDetourFactor: number;
379
+ maxWalkM: number;
380
+ maxTransferM: number;
381
+ }
382
+ export interface TransitPlanStop {
383
+ id: string;
384
+ name: string;
385
+ lat: number;
386
+ lng: number;
387
+ }
388
+ export interface TransitWalkLeg {
389
+ type: 'walk';
390
+ kind: 'to_stop' | 'change' | 'to_destination';
391
+ fromStop: TransitPlanStop | null;
392
+ toStop: TransitPlanStop | null;
393
+ distanceM: number;
394
+ minutes: number;
395
+ }
396
+ export interface TransitBusLeg {
397
+ type: 'bus';
398
+ routeId: string;
399
+ ref: string;
400
+ name: string;
401
+ headsign: string | null;
402
+ colour: string | null;
403
+ boardStop: TransitPlanStop & {
404
+ sequence: number;
405
+ };
406
+ alightStop: TransitPlanStop & {
407
+ sequence: number;
408
+ };
409
+ stopCount: number;
410
+ distanceM: number;
411
+ minutes: number;
412
+ waitMinutes: number | null;
413
+ fareVnd: number | null;
414
+ intervalMinMinutes: number | null;
415
+ intervalMaxMinutes: number | null;
416
+ firstDeparture: string | null;
417
+ lastDeparture: string | null;
418
+ runningNow: boolean | null;
419
+ notices: TransitNotice[];
420
+ }
421
+ export interface TransitPlanOption {
422
+ totalMinutes: number;
423
+ changes: number;
424
+ /** Null when any leg's fare is unknown. */
425
+ fareVnd: number | null;
426
+ legs: (TransitWalkLeg | TransitBusLeg)[];
427
+ }
428
+ export type TransitRoutesResponse = {
429
+ data: TransitLine[];
430
+ } & TransitAttribution;
431
+ export type TransitRouteResponse = {
432
+ data: TransitRouteDetail;
433
+ } & TransitAttribution;
434
+ export type TransitNearbyResponse = {
435
+ data: TransitNearbyStop[];
436
+ estimate: true;
437
+ assumptions: TransitAssumptions;
438
+ } & TransitAttribution;
439
+ export type TransitSearchResponse = {
440
+ data: TransitStop[];
441
+ } & TransitAttribution;
442
+ export type TransitAnnouncementsResponse = {
443
+ data: (TransitNotice & {
444
+ ref: string;
445
+ })[];
446
+ lang: TransitLanguage;
447
+ source: string;
448
+ } & TransitAttribution;
449
+ export type TransitPlanResponse = {
450
+ /** At most 3; may be empty. */
451
+ data: TransitPlanOption[];
452
+ walkOnly: {
453
+ distanceM: number;
454
+ minutes: number;
455
+ };
456
+ estimate: true;
457
+ assumptions: TransitAssumptions;
458
+ } & TransitAttribution;
459
+ export interface TransitLanguageQuery {
460
+ /** Otherwise `Accept-Language`, then `vi`. */
461
+ lang?: TransitLanguage;
462
+ }
463
+ export interface TransitNearbyQuery extends TransitLanguageQuery {
464
+ lat: number;
465
+ lng: number;
466
+ /** Metres, 50–2000, default 500. */
467
+ radius?: number;
468
+ }
469
+ export interface TransitPlanQuery extends TransitLanguageQuery {
470
+ fromLat: number;
471
+ fromLng: number;
472
+ toLat: number;
473
+ toLng: number;
474
+ }
475
+ export interface DanaraHealth {
476
+ module: 'danara';
477
+ status: 'ok';
478
+ }
479
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/danara/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/modules/danara/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Messenger module (`src/Microservice/Messenger`, host `app.messenger_host` → api.smess.vn): public
3
+ * website forms and visitor events.
4
+ *
5
+ * - Every route is anonymous (`auth: 'none'`). There is no `security: false` firewall on these paths, so
6
+ * a stale Bearer would 401 them: the module never sends one.
7
+ * - The owning tenant is the body's `client_id`; `X-Client-Id` is optional. Leave `clientId` off the
8
+ * client when one build serves several domains whose CORS origins are bound to different tenants
9
+ * (core answers 403 when the header disagrees with the origin's tenant). The module fills `client_id`
10
+ * from the client's `clientId` when the input has none.
11
+ * - `send` does not validate the body (the DTO constraints are not run): keep fields short;
12
+ * `from_phone_number` is a 20-character column.
13
+ * - Saved messages are forwarded to the tenant's Livechat inbox when contact-form forwarding is on for that
14
+ * client (Admin → client → Livechat).
15
+ */
16
+ import type { SmessClient } from '../../core/client.js';
17
+ import type { CallOptions } from '../../core/endpoint.js';
18
+ /**
19
+ * `contact_form` for website contact forms. `lead_capture` also creates a CRM prospect and starts a Rebuild
20
+ * pipeline job (rebuild.vn only). `demo_*` are the Rebuild demo-site CTAs and need `site_id`.
21
+ */
22
+ export type MessengerType = 'contact_form' | 'lead_capture' | 'order' | 'default' | 'monitoring' | 'demo_contract_request' | 'demo_cooperation_request' | (string & Record<never, never>);
23
+ export interface MessengerSendInput {
24
+ /** The owning tenant (Authentication Client UUID). Defaults to the client's `clientId`. */
25
+ client_id?: string;
26
+ /** Default `default`. */
27
+ type?: MessengerType;
28
+ from_name?: string;
29
+ from_email?: string;
30
+ /** ≤ 20 characters (database column). */
31
+ from_phone_number?: string;
32
+ subject?: string;
33
+ message?: string;
34
+ /** `[a-z0-9][a-z0-9-]{0,63}`; required for `demo_*` types. */
35
+ site_id?: string;
36
+ /** Your own reference for the message. */
37
+ external_id?: string;
38
+ }
39
+ /** `MessengerGetDto`, plain `json_encode` (camelCase, nulls kept). */
40
+ export interface MessengerMessage {
41
+ id: string;
42
+ type: MessengerType;
43
+ fromIpAddress: string | null;
44
+ fromName: string | null;
45
+ fromEmail: string | null;
46
+ fromPhoneNumber: string | null;
47
+ subject: string | null;
48
+ message: string | null;
49
+ siteId: string | null;
50
+ }
51
+ export type WebsiteEventName = 'website_viewed' | 'contact_form_opened' | 'contact_form_submitted' | 'contact_form_failed' | 'livechat_opened' | 'livechat_started' | 'livechat_message_sent' | 'lead_created' | 'demo_cta_clicked' | 'contract_booking_started' | 'cooperation_requested';
52
+ export interface WebsiteEventInput {
53
+ /** Defaults to the client's `clientId`; the client must exist. */
54
+ client_id?: string;
55
+ /** `[a-z0-9][a-z0-9-]{0,63}`. */
56
+ site_id: string;
57
+ event: WebsiteEventName;
58
+ /** Per-tab visitor session, ≤ 64. */
59
+ session_id?: string;
60
+ page_url?: string;
61
+ referrer?: string;
62
+ /** ATOM date-time, e.g. `2026-11-07T10:00:00+07:00`. */
63
+ occurred_at?: string;
64
+ /** A Rebuild demo site. */
65
+ demo?: boolean;
66
+ /** ≤ 20 snake_case keys with scalar values (strings ≤ 500). */
67
+ properties?: Record<string, string | number | boolean | null>;
68
+ }
69
+ export interface WebsiteEventAccepted {
70
+ object: 'website_event';
71
+ event: WebsiteEventName;
72
+ accepted: true;
73
+ }
74
+ export declare const messengerEndpoints: {
75
+ readonly send: import("../../core/endpoint.js").Endpoint<"/v1/messenger/send", MessengerSendInput & {
76
+ client_id: string;
77
+ }, never, MessengerMessage>;
78
+ readonly get: import("../../core/endpoint.js").Endpoint<"/v1/messenger/{id}/information", never, never, MessengerMessage>;
79
+ readonly websiteEvent: import("../../core/endpoint.js").Endpoint<"/v1/messenger/website_events", WebsiteEventInput & {
80
+ client_id: string;
81
+ }, never, WebsiteEventAccepted>;
82
+ };
83
+ export declare function messenger(client: SmessClient): {
84
+ /** Saves a website message (contact form, lead, ...) for the tenant. */
85
+ send: (input: MessengerSendInput, o?: CallOptions) => Promise<MessengerMessage>;
86
+ /** A saved message by id. */
87
+ get: (id: string, o?: CallOptions) => Promise<MessengerMessage>;
88
+ /** Records a visitor event (202); 60 per minute per IP and site. */
89
+ trackWebsiteEvent: (input: WebsiteEventInput, o?: CallOptions) => Promise<WebsiteEventAccepted>;
90
+ };
91
+ export type MessengerModule = ReturnType<typeof messenger>;
92
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/messenger/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D;;;GAGG;AACH,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,cAAc,GACd,OAAO,GACP,SAAS,GACT,YAAY,GACZ,uBAAuB,GACvB,0BAA0B,GAC1B,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEpC,MAAM,WAAW,kBAAkB;IACjC,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,sEAAsE;AACtE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,qBAAqB,GACrB,wBAAwB,GACxB,qBAAqB,GACrB,iBAAiB,GACjB,kBAAkB,GAClB,uBAAuB,GACvB,cAAc,GACd,kBAAkB,GAClB,0BAA0B,GAC1B,uBAAuB,CAAC;AAE5B,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;IACxB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;IACxB,QAAQ,EAAE,IAAI,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB;;mBAC4C,MAAM;;;;mBAcK,MAAM;;CAMlF,CAAC;AAEX,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW;IAWzC,wEAAwE;kBACpD,kBAAkB,MAAM,WAAW;IAEvD,6BAA6B;cACnB,MAAM,MAAM,WAAW;IACjC,oEAAoE;+BACnC,iBAAiB,MAAM,WAAW;EAGtE;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { unwrapData } from '../../core/decoders.js';
2
+ import { defineEndpoint } from '../../core/endpoint.js';
3
+ import { SmessApiError } from '../../errors/smess-api-error.js';
4
+ export const messengerEndpoints = {
5
+ send: defineEndpoint()({
6
+ service: 'messenger',
7
+ method: 'POST',
8
+ path: '/v1/messenger/send',
9
+ auth: 'none',
10
+ decode: unwrapData,
11
+ }),
12
+ get: defineEndpoint()({
13
+ service: 'messenger',
14
+ method: 'GET',
15
+ path: '/v1/messenger/{id}/information',
16
+ auth: 'none',
17
+ decode: unwrapData,
18
+ }),
19
+ websiteEvent: defineEndpoint()({
20
+ service: 'messenger',
21
+ method: 'POST',
22
+ path: '/v1/messenger/website_events',
23
+ auth: 'none',
24
+ }),
25
+ };
26
+ export function messenger(client) {
27
+ const e = messengerEndpoints;
28
+ const tenantOf = (clientId) => {
29
+ const value = clientId ?? client.config.clientId;
30
+ if (!value) {
31
+ throw new SmessApiError({ kind: 'config', code: 'missing_client_id', message: 'Messenger needs a client_id (input or client clientId).' });
32
+ }
33
+ return value;
34
+ };
35
+ return {
36
+ /** Saves a website message (contact form, lead, ...) for the tenant. */
37
+ send: async (input, o) => client.call(e.send, { ...o, body: { ...input, client_id: tenantOf(input.client_id) } }),
38
+ /** A saved message by id. */
39
+ get: (id, o) => client.call(e.get, { ...o, path: { id } }),
40
+ /** Records a visitor event (202); 60 per minute per IP and site. */
41
+ trackWebsiteEvent: async (input, o) => client.call(e.websiteEvent, { ...o, body: { ...input, client_id: tenantOf(input.client_id) } }),
42
+ };
43
+ }
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/messenger/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAmFhE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,cAAc,EAAgE,CAAC;QACnF,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,UAAU;KACnB,CAAC;IACF,GAAG,EAAE,cAAc,EAAoB,CAAC;QACtC,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,UAAU;KACnB,CAAC;IACF,YAAY,EAAE,cAAc,EAAmE,CAAC;QAC9F,OAAO,EAAE,WAAW;QACpB,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,MAAM;KACb,CAAC;CACM,CAAC;AAEX,MAAM,UAAU,SAAS,CAAC,MAAmB;IAC3C,MAAM,CAAC,GAAG,kBAAkB,CAAC;IAC7B,MAAM,QAAQ,GAAG,CAAC,QAA4B,EAAU,EAAE;QACxD,MAAM,KAAK,GAAG,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,aAAa,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,yDAAyD,EAAE,CAAC,CAAC;QAC7I,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO;QACL,wEAAwE;QACxE,IAAI,EAAE,KAAK,EAAE,KAAyB,EAAE,CAAe,EAAE,EAAE,CACzD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QACzF,6BAA6B;QAC7B,GAAG,EAAE,CAAC,EAAU,EAAE,CAAe,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QAChF,oEAAoE;QACpE,iBAAiB,EAAE,KAAK,EAAE,KAAwB,EAAE,CAAe,EAAE,EAAE,CACrE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;KAClG,CAAC;AACJ,CAAC"}