@myrjfa/state 3.0.7 → 3.0.9

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 (202) hide show
  1. package/dist/lib/actions/adminDashboard.d.ts.map +1 -1
  2. package/dist/lib/actions/adminDashboard.js +2 -1
  3. package/dist/lib/actions/adventure.d.ts.map +1 -1
  4. package/dist/lib/actions/adventure.js +3 -2
  5. package/dist/lib/actions/application.d.ts +5 -3
  6. package/dist/lib/actions/application.d.ts.map +1 -1
  7. package/dist/lib/actions/application.js +46 -2
  8. package/dist/lib/actions/auth.d.ts +18 -3
  9. package/dist/lib/actions/auth.d.ts.map +1 -1
  10. package/dist/lib/actions/auth.js +22 -0
  11. package/dist/lib/actions/blog.d.ts.map +1 -1
  12. package/dist/lib/actions/blog.js +4 -2
  13. package/dist/lib/actions/booking.d.ts +29 -1
  14. package/dist/lib/actions/booking.d.ts.map +1 -1
  15. package/dist/lib/actions/booking.js +186 -0
  16. package/dist/lib/actions/brand.d.ts +7 -0
  17. package/dist/lib/actions/brand.d.ts.map +1 -1
  18. package/dist/lib/actions/brand.js +4 -0
  19. package/dist/lib/actions/chat.d.ts +3 -0
  20. package/dist/lib/actions/chat.d.ts.map +1 -1
  21. package/dist/lib/actions/chat.js +40 -1
  22. package/dist/lib/actions/community.d.ts +5 -2
  23. package/dist/lib/actions/community.d.ts.map +1 -1
  24. package/dist/lib/actions/community.js +16 -4
  25. package/dist/lib/actions/companion.d.ts +27 -15
  26. package/dist/lib/actions/companion.d.ts.map +1 -1
  27. package/dist/lib/actions/companion.js +22 -15
  28. package/dist/lib/actions/companionUpload.d.ts +11 -0
  29. package/dist/lib/actions/companionUpload.d.ts.map +1 -0
  30. package/dist/lib/actions/companionUpload.js +14 -0
  31. package/dist/lib/actions/event.d.ts +1 -1
  32. package/dist/lib/actions/event.d.ts.map +1 -1
  33. package/dist/lib/actions/event.js +8 -4
  34. package/dist/lib/actions/fetcher.d.ts +9 -3
  35. package/dist/lib/actions/fetcher.d.ts.map +1 -1
  36. package/dist/lib/actions/fetcher.js +60 -15
  37. package/dist/lib/actions/guide.d.ts.map +1 -1
  38. package/dist/lib/actions/guide.js +4 -2
  39. package/dist/lib/actions/homeBanner.d.ts +8 -0
  40. package/dist/lib/actions/homeBanner.d.ts.map +1 -0
  41. package/dist/lib/actions/homeBanner.js +33 -0
  42. package/dist/lib/actions/hostDashboard.d.ts +1 -11
  43. package/dist/lib/actions/hostDashboard.d.ts.map +1 -1
  44. package/dist/lib/actions/hostDashboard.js +1 -146
  45. package/dist/lib/actions/itinerary.d.ts +1 -1
  46. package/dist/lib/actions/itinerary.d.ts.map +1 -1
  47. package/dist/lib/actions/itinerary.js +2 -2
  48. package/dist/lib/actions/listingInterest.d.ts +2 -5
  49. package/dist/lib/actions/listingInterest.d.ts.map +1 -1
  50. package/dist/lib/actions/listingInterest.js +18 -3
  51. package/dist/lib/actions/location.d.ts +4 -0
  52. package/dist/lib/actions/location.d.ts.map +1 -1
  53. package/dist/lib/actions/location.js +10 -6
  54. package/dist/lib/actions/marketplaceContract.d.ts.map +1 -1
  55. package/dist/lib/actions/marketplaceContract.js +3 -2
  56. package/dist/lib/actions/nativeTransport.d.ts +25 -0
  57. package/dist/lib/actions/nativeTransport.d.ts.map +1 -0
  58. package/dist/lib/actions/nativeTransport.js +50 -0
  59. package/dist/lib/actions/notification.d.ts +54 -2
  60. package/dist/lib/actions/notification.d.ts.map +1 -1
  61. package/dist/lib/actions/notification.js +13 -1
  62. package/dist/lib/actions/opportunity.d.ts.map +1 -1
  63. package/dist/lib/actions/opportunity.js +3 -2
  64. package/dist/lib/actions/package.d.ts +5 -3
  65. package/dist/lib/actions/package.d.ts.map +1 -1
  66. package/dist/lib/actions/package.js +15 -9
  67. package/dist/lib/actions/portfolio.d.ts.map +1 -1
  68. package/dist/lib/actions/portfolio.js +2 -1
  69. package/dist/lib/actions/profile.d.ts +5 -0
  70. package/dist/lib/actions/profile.d.ts.map +1 -1
  71. package/dist/lib/actions/profile.js +15 -2
  72. package/dist/lib/actions/rental.d.ts.map +1 -1
  73. package/dist/lib/actions/rental.js +3 -2
  74. package/dist/lib/actions/review.d.ts +7 -0
  75. package/dist/lib/actions/review.d.ts.map +1 -1
  76. package/dist/lib/actions/review.js +65 -31
  77. package/dist/lib/actions/room.d.ts +0 -4
  78. package/dist/lib/actions/room.d.ts.map +1 -1
  79. package/dist/lib/actions/room.js +3 -2
  80. package/dist/lib/actions/serverActions.native.d.ts +4 -0
  81. package/dist/lib/actions/serverActions.native.d.ts.map +1 -0
  82. package/dist/lib/actions/serverActions.native.js +5 -0
  83. package/dist/lib/actions/socialAutomation.d.ts.map +1 -1
  84. package/dist/lib/actions/socialAutomation.js +3 -2
  85. package/dist/lib/actions/socket.d.ts.map +1 -1
  86. package/dist/lib/actions/socket.js +6 -5
  87. package/dist/lib/actions/stay.d.ts +14 -1
  88. package/dist/lib/actions/stay.d.ts.map +1 -1
  89. package/dist/lib/actions/stay.js +32 -4
  90. package/dist/lib/actions/store.d.ts +1 -0
  91. package/dist/lib/actions/store.d.ts.map +1 -1
  92. package/dist/lib/actions/store.js +9 -0
  93. package/dist/lib/actions/user.d.ts +2 -0
  94. package/dist/lib/actions/user.d.ts.map +1 -1
  95. package/dist/lib/actions/user.js +5 -0
  96. package/dist/lib/companion/discoveryPrefill.d.ts +17 -0
  97. package/dist/lib/companion/discoveryPrefill.d.ts.map +1 -1
  98. package/dist/lib/companion/discoveryPrefill.js +20 -0
  99. package/dist/lib/context/ChatContext.d.ts.map +1 -1
  100. package/dist/lib/context/ChatContext.js +59 -51
  101. package/dist/lib/data/catalogueLocations.d.ts +3 -0
  102. package/dist/lib/data/catalogueLocations.d.ts.map +1 -0
  103. package/dist/lib/data/catalogueLocations.js +21 -0
  104. package/dist/lib/data/skills.d.ts +5 -0
  105. package/dist/lib/data/skills.d.ts.map +1 -0
  106. package/dist/lib/data/skills.js +97 -0
  107. package/dist/lib/forms/application.d.ts +4 -0
  108. package/dist/lib/forms/application.d.ts.map +1 -0
  109. package/dist/lib/forms/application.js +17 -0
  110. package/dist/lib/forms/packageEnquiry.d.ts +4 -0
  111. package/dist/lib/forms/packageEnquiry.d.ts.map +1 -0
  112. package/dist/lib/forms/packageEnquiry.js +12 -0
  113. package/dist/lib/forms/review.d.ts +6 -0
  114. package/dist/lib/forms/review.d.ts.map +1 -0
  115. package/dist/lib/forms/review.js +20 -0
  116. package/dist/lib/hooks/useSubmissionGuard.d.ts +2 -0
  117. package/dist/lib/hooks/useSubmissionGuard.d.ts.map +1 -0
  118. package/dist/lib/hooks/useSubmissionGuard.js +12 -0
  119. package/dist/lib/hooks/useUploadTasks.d.ts +7 -0
  120. package/dist/lib/hooks/useUploadTasks.d.ts.map +1 -0
  121. package/dist/lib/hooks/useUploadTasks.js +11 -0
  122. package/dist/lib/models/application.d.ts +21 -0
  123. package/dist/lib/models/application.d.ts.map +1 -1
  124. package/dist/lib/models/authorization.d.ts +1 -1
  125. package/dist/lib/models/authorization.d.ts.map +1 -1
  126. package/dist/lib/models/authorization.js +2 -0
  127. package/dist/lib/models/blog.d.ts +2 -2
  128. package/dist/lib/models/booking.d.ts +3 -0
  129. package/dist/lib/models/booking.d.ts.map +1 -1
  130. package/dist/lib/models/chat.d.ts +8 -0
  131. package/dist/lib/models/chat.d.ts.map +1 -1
  132. package/dist/lib/models/chat.js +10 -0
  133. package/dist/lib/models/community.d.ts +15 -0
  134. package/dist/lib/models/community.d.ts.map +1 -1
  135. package/dist/lib/models/community.js +2 -1
  136. package/dist/lib/models/companion.d.ts +46 -0
  137. package/dist/lib/models/companion.d.ts.map +1 -1
  138. package/dist/lib/models/discount.d.ts +20 -20
  139. package/dist/lib/models/enquiry.d.ts +13 -0
  140. package/dist/lib/models/enquiry.d.ts.map +1 -1
  141. package/dist/lib/models/homeBanner.d.ts +17 -0
  142. package/dist/lib/models/homeBanner.d.ts.map +1 -0
  143. package/dist/lib/models/homeBanner.js +1 -0
  144. package/dist/lib/models/interest.d.ts +42 -0
  145. package/dist/lib/models/interest.d.ts.map +1 -0
  146. package/dist/lib/models/interest.js +1 -0
  147. package/dist/lib/models/location.d.ts +1 -0
  148. package/dist/lib/models/location.d.ts.map +1 -1
  149. package/dist/lib/models/notifications.d.ts +30 -2
  150. package/dist/lib/models/notifications.d.ts.map +1 -1
  151. package/dist/lib/models/notifications.js +6 -0
  152. package/dist/lib/models/opportunities/freelance.d.ts +37 -4
  153. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
  154. package/dist/lib/models/opportunities/internship.d.ts +37 -4
  155. package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
  156. package/dist/lib/models/opportunities/job.d.ts +37 -4
  157. package/dist/lib/models/opportunities/job.d.ts.map +1 -1
  158. package/dist/lib/models/opportunities/opportunity.d.ts +38 -5
  159. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
  160. package/dist/lib/models/opportunities/opportunity.js +1 -1
  161. package/dist/lib/models/opportunities/volunteerJob.d.ts +37 -4
  162. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
  163. package/dist/lib/models/pricing.d.ts +2 -0
  164. package/dist/lib/models/pricing.d.ts.map +1 -1
  165. package/dist/lib/models/pricing.js +4 -0
  166. package/dist/lib/models/props.d.ts +4 -43
  167. package/dist/lib/models/props.d.ts.map +1 -1
  168. package/dist/lib/models/props.js +3 -121
  169. package/dist/lib/models/question.d.ts +14 -0
  170. package/dist/lib/models/question.d.ts.map +1 -0
  171. package/dist/lib/models/question.js +6 -0
  172. package/dist/lib/models/review.d.ts +13 -1
  173. package/dist/lib/models/review.d.ts.map +1 -1
  174. package/dist/lib/models/review.js +4 -0
  175. package/dist/lib/models/tile.d.ts +7 -1
  176. package/dist/lib/models/tile.d.ts.map +1 -1
  177. package/dist/lib/models/travelPackage.d.ts +37 -4
  178. package/dist/lib/models/travelPackage.d.ts.map +1 -1
  179. package/dist/lib/models/travelPackage.js +1 -1
  180. package/dist/lib/models/user.d.ts +25 -2
  181. package/dist/lib/models/user.d.ts.map +1 -1
  182. package/dist/lib/models/user.js +1 -0
  183. package/dist/lib/userAtom.d.ts +30 -5
  184. package/dist/lib/userAtom.d.ts.map +1 -1
  185. package/dist/lib/utils/entityTiles.d.ts.map +1 -1
  186. package/dist/lib/utils/entityTiles.js +3 -2
  187. package/dist/lib/utils/htmlDescription.d.ts +3 -0
  188. package/dist/lib/utils/htmlDescription.d.ts.map +1 -0
  189. package/dist/lib/utils/htmlDescription.js +7 -0
  190. package/dist/lib/utils/htmlDescription.native.d.ts +3 -0
  191. package/dist/lib/utils/htmlDescription.native.d.ts.map +1 -0
  192. package/dist/lib/utils/htmlDescription.native.js +7 -0
  193. package/dist/lib/utils/text.d.ts +5 -1
  194. package/dist/lib/utils/text.d.ts.map +1 -1
  195. package/dist/lib/utils/text.js +18 -6
  196. package/dist/lib/utils/uploadFile.d.ts +9 -0
  197. package/dist/lib/utils/uploadFile.d.ts.map +1 -0
  198. package/dist/lib/utils/uploadFile.js +9 -0
  199. package/dist/lib/utils/uploadTasks.d.ts +76 -0
  200. package/dist/lib/utils/uploadTasks.d.ts.map +1 -0
  201. package/dist/lib/utils/uploadTasks.js +102 -0
  202. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/room.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7D;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7D;AAID,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOjE;AAID,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3D;AAID,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU3D;AAID,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3D;AAID,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO/C"}
1
+ {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/room.ts"],"names":[],"mappings":"AAUA,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7D;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7D;AAID,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,GAAG,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOjE;AAID,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3D;AAID,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAS3D;AAID,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3D;AAID,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO/C"}
@@ -1,3 +1,4 @@
1
+ import { runUploadTask } from "../utils/uploadTasks";
1
2
  /**
2
3
  * Room Actions — CRUD operations for the Room entity
3
4
  * Rooms are linked to properties via propertyId
@@ -35,7 +36,7 @@ export async function getRoomById(roomId) {
35
36
  // ─── Create room ─────────────────────────────────────────────────────────────
36
37
  export async function createRoom(formData) {
37
38
  try {
38
- const data = await post(`/rooms`, formData);
39
+ const data = await runUploadTask({ title: 'Room listing', retrySafe: false, href: "/dashboard/host/stays", body: formData, operation: ({ progress }) => post(`/rooms`, formData, true, { onUploadProgress: progress }) });
39
40
  return { success: true, room: data.data };
40
41
  }
41
42
  catch (err) {
@@ -45,7 +46,7 @@ export async function createRoom(formData) {
45
46
  // ─── Update room ─────────────────────────────────────────────────────────────
46
47
  export async function updateRoom(roomId, formData) {
47
48
  try {
48
- const data = await patch(`/rooms/${roomId}`, formData);
49
+ const data = await runUploadTask({ title: 'Room listing', retrySafe: false, href: "/dashboard/host/stays", body: formData, operation: ({ progress }) => patch(`/rooms/${roomId}`, formData, { onUploadProgress: progress }) });
49
50
  return { success: true, room: data.data };
50
51
  }
51
52
  catch (err) {
@@ -0,0 +1,4 @@
1
+ export declare function getCookieHeader(): Promise<string>;
2
+ export declare function getRole(): Promise<"user" | null>;
3
+ export declare function getAccountType(): Promise<"user" | null>;
4
+ //# sourceMappingURL=serverActions.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverActions.native.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/serverActions.native.ts"],"names":[],"mappings":"AAEA,wBAAsB,eAAe,oBAAiB;AACtD,wBAAsB,OAAO,2BAAkE;AAC/F,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAgE"}
@@ -0,0 +1,5 @@
1
+ /** Metro selects this file instead of Next.js server actions. */
2
+ import { getNativeTransport } from "./nativeTransport";
3
+ export async function getCookieHeader() { return ""; }
4
+ export async function getRole() { return getNativeTransport()?.accessToken() ? "user" : null; }
5
+ export async function getAccountType() { return getNativeTransport()?.accessToken() ? "user" : null; }
@@ -1 +1 @@
1
- {"version":3,"file":"socialAutomation.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/socialAutomation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGzM,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAO/G,eAAO,MAAM,kBAAkB,8CAA+G,CAAC;AAC/I,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM;sBAA8C,MAAM;GAAsG,CAAC;AAClN,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,mFAAkK,CAAC;AACrO,eAAO,MAAM,uBAAuB,GAAI,IAAI,MAAM,mCAA2G,CAAC;AAC9J,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,CAAC,sBAAsB,CAAC,kDAA8H,CAAC;AACtM,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,iDAAkI,CAAC;AACnS,eAAO,MAAM,iBAAiB,oDAAqI,CAAC;AACpK,eAAO,MAAM,iBAAiB,GAAI,OAAO,gBAAgB,yCAAyG,CAAC;AACnK,eAAO,MAAM,mBAAmB,GAAI,OAAO,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,yCAAoH,CAAC;AAClP,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,EAAE,OAAO,OAAO,CAAC,gBAAgB,CAAC,yCAAgH,CAAC;AAC/L,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,yCAAuH,CAAC;AACvK,eAAO,MAAM,qBAAqB,GAAI,IAAI,MAAM,EAAE,cAAc,MAAM,yCAAuI,CAAC;AAC9M,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,yCAAuH,CAAC;AACvK,eAAO,MAAM,mBAAmB,GAAI,IAAI,MAAM,yCAAqH,CAAC;AACpK,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,MAAM,MAAM,6CAA+H,CAAC;AACjM,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,EAAE,QAAQ,OAAO,6CAAyI,CAAC;AACvM,eAAO,MAAM,mBAAmB;YAAwC,MAAM;GAA6E,CAAC;AAC5J,eAAO,MAAM,kBAAkB,GAAI,OAAO,IAAI,EAAE,8CAAgN,CAAC"}
1
+ {"version":3,"file":"socialAutomation.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/socialAutomation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGzM,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAO/G,eAAO,MAAM,kBAAkB,8CAA+G,CAAC;AAC/I,eAAO,MAAM,mBAAmB,GAAI,aAAa,MAAM;sBAA8C,MAAM;GAAsG,CAAC;AAClN,eAAO,MAAM,sBAAsB,GAAI,OAAO,MAAM,EAAE,MAAM,MAAM,mFAAkK,CAAC;AACrO,eAAO,MAAM,uBAAuB,GAAI,IAAI,MAAM,mCAA2G,CAAC;AAC9J,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,CAAC,sBAAsB,CAAC,kDAA8H,CAAC;AACtM,eAAO,MAAM,yBAAyB,GAAI,OAAO;IAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAAE,iDAAkI,CAAC;AACnS,eAAO,MAAM,iBAAiB,oDAAqI,CAAC;AACpK,eAAO,MAAM,iBAAiB,GAAI,OAAO,gBAAgB,yCAAyG,CAAC;AACnK,eAAO,MAAM,mBAAmB,GAAI,OAAO,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,yCAAoH,CAAC;AAClP,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,EAAE,OAAO,OAAO,CAAC,gBAAgB,CAAC,yCAAgH,CAAC;AAC/L,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,yCAAuH,CAAC;AACvK,eAAO,MAAM,qBAAqB,GAAI,IAAI,MAAM,EAAE,cAAc,MAAM,yCAAuI,CAAC;AAC9M,eAAO,MAAM,oBAAoB,GAAI,IAAI,MAAM,yCAA+S,CAAC;AAC/V,eAAO,MAAM,mBAAmB,GAAI,IAAI,MAAM,yCAAqH,CAAC;AACpK,eAAO,MAAM,wBAAwB,GAAI,IAAI,MAAM,EAAE,MAAM,MAAM,6CAA+H,CAAC;AACjM,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,EAAE,QAAQ,OAAO,6CAAyI,CAAC;AACvM,eAAO,MAAM,mBAAmB;YAAwC,MAAM;GAA6E,CAAC;AAC5J,eAAO,MAAM,kBAAkB,GAAI,OAAO,IAAI,EAAE,8CAA4Y,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { del, get, patch, post } from "./fetcher";
2
+ import { runUploadTask } from "../utils/uploadTasks";
2
3
  const failure = (error, fallback) => ({ success: false, error: error?.message || fallback });
3
4
  const action = async (request, fallback) => {
4
5
  try {
@@ -21,9 +22,9 @@ export const generateSocialDraft = (input) => action(post("/social-automation/co
21
22
  export const updateSocialDraft = (id, input) => action(patch(`/social-automation/content/${id}`, input), "Unable to update draft");
22
23
  export const approveSocialContent = (id) => action(post(`/social-automation/content/${id}/approve`, {}), "Unable to approve content");
23
24
  export const scheduleSocialContent = (id, scheduledFor) => action(post(`/social-automation/content/${id}/schedule`, { scheduledFor }), "Unable to schedule content");
24
- export const publishSocialContent = (id) => action(post(`/social-automation/content/${id}/publish`, {}), "Unable to publish content");
25
+ export const publishSocialContent = (id) => action(runUploadTask({ title: "Social publication", completeLabel: "Publication request received", href: "/dashboard/host/social", operation: ({ submitting }) => { submitting(); return post(`/social-automation/content/${id}/publish`, {}); } }), "Unable to publish content");
25
26
  export const cancelSocialContent = (id) => action(post(`/social-automation/content/${id}/cancel`, {}), "Unable to cancel content");
26
27
  export const replyToSocialInteraction = (id, text) => action(post(`/social-automation/interactions/${id}/reply`, { text }), "Unable to send reply");
27
28
  export const setSocialTakeover = (id, active) => action(post(`/social-automation/interactions/${id}/takeover`, { active }), "Unable to update takeover");
28
29
  export const syncSocialAnalytics = () => action(post("/social-automation/analytics/sync", {}), "Unable to refresh analytics");
29
- export const uploadSocialAssets = (files) => { const body = new FormData(); files.forEach((file) => body.append("socialMedia", file)); return action(post("/social-automation/assets", body), "Unable to upload media"); };
30
+ export const uploadSocialAssets = (files) => { const body = new FormData(); files.forEach((file) => body.append("socialMedia", file)); return action(runUploadTask({ title: "Social media", recoveryKey: "social-assets", retrySafe: true, href: "/dashboard/host/social", operation: ({ progress }) => post("/social-automation/assets", body, true, { onUploadProgress: progress }) }), "Unable to upload media"); };
@@ -1 +1 @@
1
- {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAYjD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAA6B,CAAC;AAClF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,CAAwB,CAAC;AAE5E,eAAO,MAAM,SAAS,QAAO,MAS5B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,qBAGtC,0BAA0B,KAAG,MAAM,GAAG,IAYxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAK5B,CAAA"}
1
+ {"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/socket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAM,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAQ,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAajD,eAAO,MAAM,UAAU,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAA6B,CAAC;AAClF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,OAAO,CAAwB,CAAC;AAE5E,eAAO,MAAM,SAAS,QAAO,MAW5B,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,qBAGtC,0BAA0B,KAAG,MAAM,GAAG,IAYxC,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAG5B,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { io } from "socket.io-client";
2
2
  import { atom } from "jotai";
3
+ import { getNativeTransport } from "./nativeTransport";
3
4
  const configuredSocketUrl = process.env.NEXT_PUBLIC_BACKEND_URL || process.env.NEXT_PUBLIC_API_URL;
4
5
  // Socket.IO is served from the backend origin, while REST configuration may
5
6
  // include the API version path. Normalise either supported public variable so
@@ -10,9 +11,11 @@ export const socketAtom = atom(null);
10
11
  export const isConnectedAtom = atom(false);
11
12
  export const getSocket = () => {
12
13
  if (!socket) {
13
- socket = io(SOCKET_URL, {
14
+ const native = getNativeTransport();
15
+ socket = io(native?.apiUrl.replace(/\/api\/v1\/?$/, "") || SOCKET_URL, {
14
16
  autoConnect: false,
15
- withCredentials: true,
17
+ withCredentials: !native,
18
+ ...(native ? { auth: (callback) => callback({ token: getNativeTransport()?.accessToken() || null }) } : {}),
16
19
  transports: ["websocket", "polling"],
17
20
  });
18
21
  }
@@ -33,8 +36,6 @@ export const createNotificationSocket = ({ userId, hostId, }) => {
33
36
  });
34
37
  };
35
38
  export const disconnectSocket = () => {
36
- if (socket?.connected) {
37
- socket.disconnect();
38
- }
39
+ socket?.disconnect();
39
40
  socket = null;
40
41
  };
@@ -1,4 +1,17 @@
1
- export declare function fetchStays(params?: Record<string, string>): Promise<any>;
1
+ import type { StayRoom } from '../models/stay';
2
+ import type { TileProps } from '../models/tile';
3
+ /** Public list summaries may include cheapestRoom; details expose the actual rooms. */
4
+ export declare function getStayStartingRoom(stay: {
5
+ cheapestRoom?: StayRoom | null;
6
+ rooms?: StayRoom[];
7
+ }): StayRoom | undefined;
8
+ export declare function fetchStays(params?: Record<string, string>, signal?: AbortSignal): Promise<any>;
9
+ /** The website filters the complete public stay set before pagination. */
10
+ export declare function getStayTiles(params?: Record<string, string>, signal?: AbortSignal): Promise<{
11
+ success: boolean;
12
+ tiles: TileProps[];
13
+ error?: string;
14
+ }>;
2
15
  export declare function fetchStayBySlug(slug: string): Promise<{
3
16
  success: boolean;
4
17
  stay: any;
@@ -1 +1 @@
1
- {"version":3,"file":"stay.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/stay.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,gBAQnE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM;;;;;;;;GAOjD;AAID,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnE,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAYD;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOjE;AAED,wBAAsB,iBAAiB,CACrC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOjE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD;AAID,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM;;;;;;;;GAOjD;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;;;;;;;;GAWF;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;;;;GAWF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;GAStE;AAID,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOnG;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO/G;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOvI;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD"}
1
+ {"version":3,"file":"stay.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/stay.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,43 @@
1
+ import { runUploadTask } from "../utils/uploadTasks";
1
2
  import { get, post, patch, del } from "./fetcher";
3
+ /** Public list summaries may include cheapestRoom; details expose the actual rooms. */
4
+ export function getStayStartingRoom(stay) {
5
+ if (stay.cheapestRoom && Number.isFinite(stay.cheapestRoom.pricePerNight))
6
+ return stay.cheapestRoom;
7
+ return stay.rooms?.filter(room => room.isAvailable && room.status !== 'inactive' && Number.isFinite(room.pricePerNight)).reduce((best, room) => !best || room.pricePerNight < best.pricePerNight ? room : best, undefined);
8
+ }
2
9
  // ─── Public ───────────────────────────────────────────────────────────────────
3
- export async function fetchStays(params = {}) {
10
+ export async function fetchStays(params = {}, signal) {
4
11
  try {
5
12
  const qs = new URLSearchParams(params).toString();
6
- const data = await get(`/stays?${qs}`);
13
+ const data = await get(`/stays?${qs}`, true, { signal });
7
14
  return { success: true, ...data.data };
8
15
  }
9
16
  catch (err) {
10
17
  return { success: false, error: err.message, stays: [] };
11
18
  }
12
19
  }
20
+ /** The website filters the complete public stay set before pagination. */
21
+ export async function getStayTiles(params = {}, signal) {
22
+ try {
23
+ const tiles = [];
24
+ let totalPages = 1;
25
+ for (let page = 1; page <= totalPages; page++) {
26
+ const response = await get(`/stays?${new URLSearchParams({ ...params, page: String(page), limit: "100" })}`, true, { signal });
27
+ if (!Number.isInteger(response.data.totalPages) || response.data.totalPages < 0)
28
+ throw new Error("Invalid stay pagination response");
29
+ totalPages = response.data.totalPages;
30
+ for (const stay of response.data.stays) {
31
+ const room = getStayStartingRoom(stay);
32
+ tiles.push({ slug: stay.slug || "", title: stay.title, description: stay.shortDescription || stay.description || "", image: stay.images?.[0] || "", location: [stay.city, stay.state].filter(Boolean).join(", "), price: room?.pricePerNight, currency: room?.currency, rating: stay.rating, sponsored: stay.sponsored, trendingScore: stay.trendingScore, updatedAt: stay.updatedAt, tileType: "stays", propertyType: stay.propertyType, amenities: stay.amenities, instantBook: stay.instantBook, petsAllowed: stay.petsAllowed, cancellationPolicy: stay.cancellationPolicy });
33
+ }
34
+ }
35
+ return { success: true, tiles };
36
+ }
37
+ catch (error) {
38
+ return { success: false, tiles: [], error: error.message };
39
+ }
40
+ }
13
41
  export async function fetchStayBySlug(slug) {
14
42
  try {
15
43
  const data = await get(`/stays/${slug}`);
@@ -22,7 +50,7 @@ export async function fetchStayBySlug(slug) {
22
50
  // ─── Host Actions ─────────────────────────────────────────────────────────────
23
51
  export async function createStayListing(formData) {
24
52
  try {
25
- const data = await post(`/stays`, formData);
53
+ const data = await runUploadTask({ title: 'Stay listing', retrySafe: false, href: "/dashboard/host/stays", body: formData, operation: ({ progress }) => post(`/stays`, formData, true, { onUploadProgress: progress }) });
26
54
  return {
27
55
  success: true,
28
56
  slug: data.data?.slug,
@@ -36,7 +64,7 @@ export async function createStayListing(formData) {
36
64
  }
37
65
  export async function updateStayListing(id, formData) {
38
66
  try {
39
- const data = await patch(`/stays/${id}`, formData);
67
+ const data = await runUploadTask({ title: 'Stay listing', retrySafe: false, href: "/dashboard/host/stays", body: formData, operation: ({ progress }) => patch(`/stays/${id}`, formData, { onUploadProgress: progress }) });
40
68
  return { success: true, message: data.message };
41
69
  }
42
70
  catch (err) {
@@ -5,6 +5,7 @@ type Result<T> = {
5
5
  message?: string;
6
6
  error?: string;
7
7
  };
8
+ export declare function getTravellerStoreOrders(): Promise<Result<StoreOrder[]>>;
8
9
  export declare function getStoreProducts(sort?: string): Promise<Result<StoreProduct[]>>;
9
10
  export declare function getStoreProductBySlug(slug: string): Promise<Result<StoreProduct | null>>;
10
11
  export declare function createStoreOrder(payload: CreateStoreOrderInput): Promise<Result<{
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEvF,KAAK,MAAM,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,wBAAsB,gBAAgB,CAAC,IAAI,SAAa,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAazF;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAO9F;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC,CAO1M;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAO7L;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAO1F"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEvF,KAAK,MAAM,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAG7E;AAED,wBAAsB,gBAAgB,CAAC,IAAI,SAAa,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAazF;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAO9F;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC,CAO1M;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,mBAAmB,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAO7L;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAO1F"}
@@ -1,4 +1,13 @@
1
1
  import { get, post } from "./fetcher";
2
+ export async function getTravellerStoreOrders() {
3
+ try {
4
+ const response = await get("/store/orders/me");
5
+ return { success: true, data: response.data };
6
+ }
7
+ catch (error) {
8
+ return { success: false, data: [], error: error.message };
9
+ }
10
+ }
2
11
  export async function getStoreProducts(sort = "featured") {
3
12
  try {
4
13
  const endpoint = (page) => `/store?limit=100&page=${page}&sort=${encodeURIComponent(sort)}`;
@@ -1,5 +1,7 @@
1
1
  import type { UserRole } from "../models/props";
2
2
  import type { User } from "../models/user";
3
+ /** Strict session read for native restoration: outages must not look signed out. */
4
+ export declare function getTravellerSessionUser(): Promise<User>;
3
5
  export declare function getCurrentUser(): Promise<User | null>;
4
6
  export declare function getUserDetails(query: string, role: UserRole | string): Promise<{
5
7
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAK3C,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAe3D;AACD,wBAAsB,cAAc,CAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,GAAG,MAAM,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBrG;AAED,eAAO,MAAM,OAAO;wBAEU,MAAM,QAAQ,MAAM;eAED,MAAM;cAAQ,GAAG;;;;;0BAQlC,MAAM,QAAQ,MAAM;eAEH,MAAM;cAAQ,GAAG;;;;;;;6BA4B/B,MAAM,QAAQ,MAAM;mBAEoB,OAAO;oBAAc,OAAO;;CAOtG,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,WAAW,uBAAiB,CAAC;AAE1C,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAAC,CAiB5O"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAK3C,oFAAoF;AACpF,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAe3D;AACD,wBAAsB,cAAc,CAChC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,GAAG,MAAM,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmBrG;AAED,eAAO,MAAM,OAAO;wBAEU,MAAM,QAAQ,MAAM;eAED,MAAM;cAAQ,GAAG;;;;;0BAQlC,MAAM,QAAQ,MAAM;eAEH,MAAM;cAAQ,GAAG;;;;;;;6BA4B/B,MAAM,QAAQ,MAAM;mBAEoB,OAAO;oBAAc,OAAO;;CAOtG,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,WAAW,uBAAiB,CAAC;AAE1C,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;CAAE,CAAC,CAiB5O"}
@@ -1,6 +1,11 @@
1
1
  import { get, post } from "./fetcher";
2
2
  import { getAccountType } from "./serverActions";
3
3
  const BASE_PATH = "/users";
4
+ /** Strict session read for native restoration: outages must not look signed out. */
5
+ export async function getTravellerSessionUser() {
6
+ const response = await get("/users/me");
7
+ return response.data;
8
+ }
4
9
  export async function getCurrentUser() {
5
10
  try {
6
11
  const accountType = await getAccountType();
@@ -23,5 +23,22 @@ type SearchParamsReader = {
23
23
  };
24
24
  export declare function parseCompanionDiscoveryPrefill(params: SearchParamsReader, locations?: readonly CompanionDiscoveryLocation[]): CompanionDiscoveryPrefill;
25
25
  export declare function serializeCompanionDiscoveryPrefill(prefill: CompanionDiscoveryPrefill): URLSearchParams;
26
+ /** Shared Tune-deck preferences use the existing public travel-profile fields. */
27
+ export declare function companionPreferencesFromProfile(profile: any): CompanionDiscoveryPrefill;
28
+ export declare function companionPreferencesToProfile(preferences: CompanionDiscoveryPrefill): {
29
+ destinations: {
30
+ country: string;
31
+ state: string;
32
+ city: string;
33
+ fromDate: string | null;
34
+ toDate: string | null;
35
+ }[];
36
+ travelStyle: string | null;
37
+ budgetRange: {
38
+ min: number | null;
39
+ max: number | null;
40
+ };
41
+ interests: string[];
42
+ };
26
43
  export {};
27
44
  //# sourceMappingURL=discoveryPrefill.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discoveryPrefill.d.ts","sourceRoot":"","sources":["../../../src/lib/companion/discoveryPrefill.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,kBAAkB,GAAG;IAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AA0B/D,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,kBAAkB,EAC1B,SAAS,GAAE,SAAS,0BAA0B,EAAO,GACpD,yBAAyB,CA2C3B;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,yBAAyB,mBAOpF"}
1
+ {"version":3,"file":"discoveryPrefill.d.ts","sourceRoot":"","sources":["../../../src/lib/companion/discoveryPrefill.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,kBAAkB,GAAG;IAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AA0B/D,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,kBAAkB,EAC1B,SAAS,GAAE,SAAS,0BAA0B,EAAO,GACpD,yBAAyB,CA2C3B;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,yBAAyB,mBAOpF;AAED,kFAAkF;AAClF,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,GAAG,GAAG,yBAAyB,CASvF;AAED,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,yBAAyB;;;;;;;;;;;;;;EAQnF"}
@@ -78,3 +78,23 @@ export function serializeCompanionDiscoveryPrefill(prefill) {
78
78
  }
79
79
  return params;
80
80
  }
81
+ /** Shared Tune-deck preferences use the existing public travel-profile fields. */
82
+ export function companionPreferencesFromProfile(profile) {
83
+ const destination = profile?.destinations?.[0];
84
+ const number = (value) => value === null || value === undefined ? "" : String(value);
85
+ return {
86
+ country: destination?.country || "", state: destination?.state || "", city: destination?.city || "",
87
+ startDate: destination?.fromDate?.slice(0, 10) || "", endDate: destination?.toDate?.slice(0, 10) || "",
88
+ style: profile?.travelStyle || "", minBudget: number(profile?.budgetRange?.min), maxBudget: number(profile?.budgetRange?.max),
89
+ interest: profile?.interests?.[0] || "",
90
+ };
91
+ }
92
+ export function companionPreferencesToProfile(preferences) {
93
+ const { country = "", state = "", city = "", startDate = "", endDate = "", style = "", minBudget = "", maxBudget = "", interest = "" } = preferences;
94
+ return {
95
+ destinations: country || state || city || startDate || endDate ? [{ country, state, city, fromDate: startDate || null, toDate: endDate || null }] : [],
96
+ travelStyle: style || null,
97
+ budgetRange: { min: minBudget === "" ? null : Number(minBudget), max: maxBudget === "" ? null : Number(maxBudget) },
98
+ interests: interest ? [interest] : [],
99
+ };
100
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../src/lib/context/ChatContext.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../../../src/lib/context/ChatContext.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createContext, useCallback, useContext, useEffect, useRef, useState, } from "react";
4
+ import { runUploadTask } from "../utils/uploadTasks";
4
5
  import { useAtomValue } from "jotai";
5
6
  import { getSocket } from "../actions/socket";
6
7
  import { chatApi, normalizeChatMessage, } from "../actions/chat";
@@ -68,60 +69,67 @@ export function ChatProvider({ children }) {
68
69
  }
69
70
  }, [setActiveConversation]);
70
71
  const sendMessage = useCallback(async (conversationId, text, files, replyTo, options) => {
71
- const trimmed = text.trim();
72
- let media = [];
73
- if (files?.length) {
74
- const formData = new FormData();
75
- files.forEach((file) => formData.append("files", file));
76
- const upload = await chatApi.uploadFiles(formData, options?.onUploadProgress);
77
- media = upload?.data?.files || [];
78
- if (!media.length) {
79
- const errMsg = upload?.error?.message || "Unable to upload attachments";
80
- throw new Error(errMsg);
72
+ const performSend = async ({ progress, submitting, assertCurrent }) => {
73
+ const trimmed = text.trim();
74
+ let media = [];
75
+ if (files?.length) {
76
+ const formData = new FormData();
77
+ files.forEach((file) => formData.append("files", file));
78
+ const upload = await chatApi.uploadFiles(formData, percent => { progress(percent); options?.onUploadProgress?.(percent); });
79
+ media = upload?.data?.files || [];
80
+ if (!media.length) {
81
+ const errMsg = upload?.error?.message || "Unable to upload attachments";
82
+ throw new Error(errMsg);
83
+ }
84
+ media = media.map((item, index) => {
85
+ const metadata = files[index]?.chatMediaMetadata;
86
+ return metadata ? { ...item, ...metadata } : item;
87
+ });
81
88
  }
82
- media = media.map((item, index) => {
83
- const metadata = files[index]?.chatMediaMetadata;
84
- return metadata ? { ...item, ...metadata } : item;
85
- });
86
- }
87
- if (!trimmed && !media.length)
88
- return;
89
- const socket = socketRef.current;
90
- if (socket?.connected) {
91
- await new Promise((resolve, reject) => {
92
- socket.emit("message:send", {
93
- conversationId,
94
- text: trimmed,
95
- replyTo,
96
- media,
97
- type: options?.type || (media.length ? "media" : "text"),
98
- mentions: options?.mentions || [],
99
- }, (result) => {
100
- if (result?.success)
101
- resolve();
102
- else
103
- reject(new Error(result?.error?.message || "Unable to send message"));
89
+ if (!trimmed && !media.length)
90
+ return;
91
+ assertCurrent();
92
+ submitting();
93
+ const socket = socketRef.current;
94
+ if (socket?.connected) {
95
+ await new Promise((resolve, reject) => {
96
+ socket.emit("message:send", {
97
+ conversationId,
98
+ text: trimmed,
99
+ replyTo,
100
+ media,
101
+ type: options?.type || (media.length ? "media" : "text"),
102
+ mentions: options?.mentions || [],
103
+ }, (result) => {
104
+ if (result?.success)
105
+ resolve();
106
+ else
107
+ reject(new Error(result?.error?.message || "Unable to send message"));
108
+ });
104
109
  });
110
+ return;
111
+ }
112
+ const result = await chatApi.sendMessage(conversationId, {
113
+ text: trimmed,
114
+ replyTo,
115
+ media,
116
+ type: options?.type || (media.length ? "media" : "text"),
117
+ mentions: options?.mentions || [],
105
118
  });
106
- return;
107
- }
108
- const result = await chatApi.sendMessage(conversationId, {
109
- text: trimmed,
110
- replyTo,
111
- media,
112
- type: options?.type || (media.length ? "media" : "text"),
113
- mentions: options?.mentions || [],
114
- });
115
- if (result.error) {
116
- throw result.error;
117
- }
118
- const message = result.data;
119
- if (message) {
120
- setMessages((current) => current.some((item) => item._id === message._id)
121
- ? current
122
- : [...current, message]);
123
- await refreshConversations();
124
- }
119
+ assertCurrent();
120
+ if (result.error) {
121
+ throw result.error;
122
+ }
123
+ const message = result.data;
124
+ if (message && activeConversationRef.current?._id === conversationId) {
125
+ setMessages((current) => current.some((item) => item._id === message._id)
126
+ ? current
127
+ : [...current, message]);
128
+ }
129
+ if (message)
130
+ await refreshConversations();
131
+ };
132
+ return files?.length ? runUploadTask({ title: "Chat attachments", completeLabel: "Message sent", href: "/chat", operation: performSend }) : performSend({ progress: () => { }, submitting: () => { }, assertCurrent: () => { } });
125
133
  }, [refreshConversations]);
126
134
  const editMessage = useCallback(async (messageId, text) => {
127
135
  if (socketRef.current?.connected) {
@@ -0,0 +1,3 @@
1
+ /** Exact legacy website catalogue city suggestions; distinct from the richer destination directory. */
2
+ export declare const WEBSITE_DISCOVERY_CITIES: string[];
3
+ //# sourceMappingURL=catalogueLocations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalogueLocations.d.ts","sourceRoot":"","sources":["../../../src/lib/data/catalogueLocations.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,eAAO,MAAM,wBAAwB,EAAE,MAAM,EAmB5C,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Exact legacy website catalogue city suggestions; distinct from the richer destination directory. */
2
+ export const WEBSITE_DISCOVERY_CITIES = [
3
+ "Manali", "Shimla", "Spiti Valley", "Kasol", "Mcleod Ganj", "Dharamshala", "Dalhousie", "Kullu", "Kinnaur",
4
+ "Rishikesh", "Haridwar", "Nainital", "Mussoorie", "Dehradun", "Auli", "Lansdowne", "Ranikhet", "Jim Corbett", "Chopta",
5
+ "Darjeeling", "Kalimpong", "Gangtok", "Pelling", "Lachung",
6
+ "Shillong", "Cherrapunji", "Mawlynnong", "Tawang", "Ziro",
7
+ "Srinagar", "Gulmarg", "Pahalgam", "Sonamarg", "Vaishno Devi",
8
+ "Ladakh", "Leh", "Nubra Valley", "Pangong Lake", "Tso Moriri", "Zanskar Valley",
9
+ "Jaipur", "Udaipur", "Jodhpur", "Jaisalmer", "Pushkar", "Ajmer", "Bikaner", "Mount Abu", "Ranthambore", "Bundi", "Chittorgarh",
10
+ "Goa", "Panaji", "Calangute", "Arambol", "Palolem",
11
+ "Munnar", "Alleppey", "Varkala", "Kochi", "Wayanad", "Thekkady", "Kozhikode", "Kovalam", "Kannur", "Vagamon",
12
+ "Ooty", "Kodaikanal", "Chennai", "Madurai", "Coimbatore", "Pondicherry", "Rameswaram", "Kanyakumari", "Mahabalipuram", "Yercaud",
13
+ "Coorg", "Mysore", "Bangalore", "Hampi", "Badami", "Chikmagalur", "Dandeli", "Mangalore", "Udupi", "Gokarna", "Sakleshpur", "Nagarhole",
14
+ "Mumbai", "Pune", "Mahabaleshwar", "Lonavala", "Alibaug", "Aurangabad", "Nagpur", "Nashik", "Shirdi", "Kolhapur", "Matheran", "Tadoba",
15
+ "Ahmedabad", "Surat", "Rann of Kutch", "Dwarka", "Somnath", "Gir", "Vadodara", "Rajkot", "Mandvi", "Saputara",
16
+ "Varanasi", "Agra", "Lucknow", "Prayagraj", "Mathura", "Vrindavan", "Ayodhya", "Kanpur",
17
+ "Delhi", "Kolkata", "Hyderabad", "Chandigarh", "Amritsar", "Bhubaneswar", "Patna",
18
+ "Andaman Islands", "Havelock Island", "Lakshadweep", "Puri", "Vizag", "Tirupati",
19
+ "Khajuraho", "Bhopal", "Indore", "Ujjain", "Orchha", "Pachmarhi", "Bandhavgarh", "Kanha",
20
+ "Kaziranga", "Guwahati", "Majuli", "Imphal", "Kohima", "Shillong",
21
+ ];
@@ -0,0 +1,5 @@
1
+ /** Existing website suggestions; custom application skills remain supported. */
2
+ export declare const skillsOptions: {
3
+ title: string;
4
+ }[];
5
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/lib/data/skills.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,eAAO,MAAM,aAAa;;GA+FzB,CAAC"}