@myrjfa/state 3.0.8 → 3.0.10

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 (180) hide show
  1. package/dist/lib/actions/application.d.ts +5 -3
  2. package/dist/lib/actions/application.d.ts.map +1 -1
  3. package/dist/lib/actions/application.js +45 -2
  4. package/dist/lib/actions/auth.d.ts +20 -3
  5. package/dist/lib/actions/auth.d.ts.map +1 -1
  6. package/dist/lib/actions/auth.js +31 -0
  7. package/dist/lib/actions/blog.d.ts.map +1 -1
  8. package/dist/lib/actions/blog.js +3 -2
  9. package/dist/lib/actions/booking.d.ts +29 -1
  10. package/dist/lib/actions/booking.d.ts.map +1 -1
  11. package/dist/lib/actions/booking.js +186 -0
  12. package/dist/lib/actions/brand.d.ts +7 -0
  13. package/dist/lib/actions/brand.d.ts.map +1 -1
  14. package/dist/lib/actions/brand.js +4 -0
  15. package/dist/lib/actions/chat.d.ts +3 -0
  16. package/dist/lib/actions/chat.d.ts.map +1 -1
  17. package/dist/lib/actions/chat.js +40 -1
  18. package/dist/lib/actions/community.d.ts +2 -1
  19. package/dist/lib/actions/community.d.ts.map +1 -1
  20. package/dist/lib/actions/community.js +10 -4
  21. package/dist/lib/actions/companion.d.ts +13 -7
  22. package/dist/lib/actions/companion.d.ts.map +1 -1
  23. package/dist/lib/actions/companion.js +6 -4
  24. package/dist/lib/actions/companionUpload.d.ts +2 -1
  25. package/dist/lib/actions/companionUpload.d.ts.map +1 -1
  26. package/dist/lib/actions/companionUpload.js +2 -1
  27. package/dist/lib/actions/event.d.ts +1 -1
  28. package/dist/lib/actions/event.d.ts.map +1 -1
  29. package/dist/lib/actions/event.js +5 -2
  30. package/dist/lib/actions/fetcher.d.ts +7 -1
  31. package/dist/lib/actions/fetcher.d.ts.map +1 -1
  32. package/dist/lib/actions/fetcher.js +82 -62
  33. package/dist/lib/actions/guide.js +1 -0
  34. package/dist/lib/actions/homeBanner.d.ts +8 -0
  35. package/dist/lib/actions/homeBanner.d.ts.map +1 -0
  36. package/dist/lib/actions/homeBanner.js +33 -0
  37. package/dist/lib/actions/hostDashboard.d.ts +1 -11
  38. package/dist/lib/actions/hostDashboard.d.ts.map +1 -1
  39. package/dist/lib/actions/hostDashboard.js +1 -146
  40. package/dist/lib/actions/itinerary.d.ts +1 -1
  41. package/dist/lib/actions/itinerary.d.ts.map +1 -1
  42. package/dist/lib/actions/itinerary.js +2 -2
  43. package/dist/lib/actions/listingInterest.d.ts +2 -5
  44. package/dist/lib/actions/listingInterest.d.ts.map +1 -1
  45. package/dist/lib/actions/listingInterest.js +18 -3
  46. package/dist/lib/actions/location.d.ts +4 -0
  47. package/dist/lib/actions/location.d.ts.map +1 -1
  48. package/dist/lib/actions/location.js +10 -6
  49. package/dist/lib/actions/marketplaceContract.d.ts.map +1 -1
  50. package/dist/lib/actions/marketplaceContract.js +3 -2
  51. package/dist/lib/actions/nativeTransport.d.ts +25 -0
  52. package/dist/lib/actions/nativeTransport.d.ts.map +1 -0
  53. package/dist/lib/actions/nativeTransport.js +50 -0
  54. package/dist/lib/actions/notification.d.ts +3 -3
  55. package/dist/lib/actions/package.d.ts +5 -3
  56. package/dist/lib/actions/package.d.ts.map +1 -1
  57. package/dist/lib/actions/package.js +11 -6
  58. package/dist/lib/actions/profile.d.ts +5 -0
  59. package/dist/lib/actions/profile.d.ts.map +1 -1
  60. package/dist/lib/actions/profile.js +12 -0
  61. package/dist/lib/actions/review.d.ts +7 -0
  62. package/dist/lib/actions/review.d.ts.map +1 -1
  63. package/dist/lib/actions/review.js +64 -31
  64. package/dist/lib/actions/serverActions.d.ts.map +1 -1
  65. package/dist/lib/actions/serverActions.js +3 -2
  66. package/dist/lib/actions/serverActions.native.d.ts +4 -0
  67. package/dist/lib/actions/serverActions.native.d.ts.map +1 -0
  68. package/dist/lib/actions/serverActions.native.js +5 -0
  69. package/dist/lib/actions/socket.d.ts.map +1 -1
  70. package/dist/lib/actions/socket.js +6 -5
  71. package/dist/lib/actions/stay.d.ts +14 -1
  72. package/dist/lib/actions/stay.d.ts.map +1 -1
  73. package/dist/lib/actions/stay.js +29 -2
  74. package/dist/lib/actions/store.d.ts +1 -0
  75. package/dist/lib/actions/store.d.ts.map +1 -1
  76. package/dist/lib/actions/store.js +9 -0
  77. package/dist/lib/actions/user.d.ts +2 -0
  78. package/dist/lib/actions/user.d.ts.map +1 -1
  79. package/dist/lib/actions/user.js +5 -0
  80. package/dist/lib/authSessionManager.d.ts.map +1 -1
  81. package/dist/lib/authSessionManager.js +42 -39
  82. package/dist/lib/authSessionPolicy.d.ts +2 -0
  83. package/dist/lib/authSessionPolicy.d.ts.map +1 -1
  84. package/dist/lib/authSessionPolicy.js +3 -1
  85. package/dist/lib/data/catalogueLocations.d.ts +3 -0
  86. package/dist/lib/data/catalogueLocations.d.ts.map +1 -0
  87. package/dist/lib/data/catalogueLocations.js +21 -0
  88. package/dist/lib/data/skills.d.ts +5 -0
  89. package/dist/lib/data/skills.d.ts.map +1 -0
  90. package/dist/lib/data/skills.js +97 -0
  91. package/dist/lib/forms/application.d.ts +4 -0
  92. package/dist/lib/forms/application.d.ts.map +1 -0
  93. package/dist/lib/forms/application.js +17 -0
  94. package/dist/lib/forms/packageEnquiry.d.ts +4 -0
  95. package/dist/lib/forms/packageEnquiry.d.ts.map +1 -0
  96. package/dist/lib/forms/packageEnquiry.js +12 -0
  97. package/dist/lib/forms/review.d.ts +6 -0
  98. package/dist/lib/forms/review.d.ts.map +1 -0
  99. package/dist/lib/forms/review.js +20 -0
  100. package/dist/lib/models/application.d.ts +21 -0
  101. package/dist/lib/models/application.d.ts.map +1 -1
  102. package/dist/lib/models/authorization.d.ts +1 -1
  103. package/dist/lib/models/authorization.d.ts.map +1 -1
  104. package/dist/lib/models/authorization.js +2 -0
  105. package/dist/lib/models/booking.d.ts +3 -0
  106. package/dist/lib/models/booking.d.ts.map +1 -1
  107. package/dist/lib/models/chat.d.ts +8 -0
  108. package/dist/lib/models/chat.d.ts.map +1 -1
  109. package/dist/lib/models/chat.js +10 -0
  110. package/dist/lib/models/community.d.ts +2 -0
  111. package/dist/lib/models/community.d.ts.map +1 -1
  112. package/dist/lib/models/community.js +2 -1
  113. package/dist/lib/models/companion.d.ts +42 -0
  114. package/dist/lib/models/companion.d.ts.map +1 -1
  115. package/dist/lib/models/discount.d.ts +8 -8
  116. package/dist/lib/models/enquiry.d.ts +13 -0
  117. package/dist/lib/models/enquiry.d.ts.map +1 -1
  118. package/dist/lib/models/homeBanner.d.ts +17 -0
  119. package/dist/lib/models/homeBanner.d.ts.map +1 -0
  120. package/dist/lib/models/homeBanner.js +1 -0
  121. package/dist/lib/models/interest.d.ts +42 -0
  122. package/dist/lib/models/interest.d.ts.map +1 -0
  123. package/dist/lib/models/interest.js +1 -0
  124. package/dist/lib/models/location.d.ts +1 -0
  125. package/dist/lib/models/location.d.ts.map +1 -1
  126. package/dist/lib/models/notifications.d.ts +2 -2
  127. package/dist/lib/models/opportunities/freelance.d.ts +37 -4
  128. package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
  129. package/dist/lib/models/opportunities/internship.d.ts +37 -4
  130. package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
  131. package/dist/lib/models/opportunities/job.d.ts +37 -4
  132. package/dist/lib/models/opportunities/job.d.ts.map +1 -1
  133. package/dist/lib/models/opportunities/opportunity.d.ts +38 -5
  134. package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
  135. package/dist/lib/models/opportunities/opportunity.js +1 -1
  136. package/dist/lib/models/opportunities/volunteerJob.d.ts +37 -4
  137. package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
  138. package/dist/lib/models/pricing.d.ts +2 -0
  139. package/dist/lib/models/pricing.d.ts.map +1 -1
  140. package/dist/lib/models/pricing.js +4 -0
  141. package/dist/lib/models/props.d.ts +4 -43
  142. package/dist/lib/models/props.d.ts.map +1 -1
  143. package/dist/lib/models/props.js +3 -121
  144. package/dist/lib/models/question.d.ts +14 -0
  145. package/dist/lib/models/question.d.ts.map +1 -0
  146. package/dist/lib/models/question.js +6 -0
  147. package/dist/lib/models/review.d.ts +13 -1
  148. package/dist/lib/models/review.d.ts.map +1 -1
  149. package/dist/lib/models/review.js +4 -0
  150. package/dist/lib/models/tile.d.ts +7 -1
  151. package/dist/lib/models/tile.d.ts.map +1 -1
  152. package/dist/lib/models/travelPackage.d.ts +37 -4
  153. package/dist/lib/models/travelPackage.d.ts.map +1 -1
  154. package/dist/lib/models/travelPackage.js +1 -1
  155. package/dist/lib/models/user.d.ts +25 -2
  156. package/dist/lib/models/user.d.ts.map +1 -1
  157. package/dist/lib/models/user.js +1 -0
  158. package/dist/lib/userAtom.d.ts +30 -5
  159. package/dist/lib/userAtom.d.ts.map +1 -1
  160. package/dist/lib/userAtom.js +16 -25
  161. package/dist/lib/utils/authCookies.d.ts +3 -0
  162. package/dist/lib/utils/authCookies.d.ts.map +1 -0
  163. package/dist/lib/utils/authCookies.js +4 -0
  164. package/dist/lib/utils/entityTiles.d.ts.map +1 -1
  165. package/dist/lib/utils/entityTiles.js +3 -2
  166. package/dist/lib/utils/htmlDescription.d.ts +3 -0
  167. package/dist/lib/utils/htmlDescription.d.ts.map +1 -0
  168. package/dist/lib/utils/htmlDescription.js +7 -0
  169. package/dist/lib/utils/htmlDescription.native.d.ts +3 -0
  170. package/dist/lib/utils/htmlDescription.native.d.ts.map +1 -0
  171. package/dist/lib/utils/htmlDescription.native.js +7 -0
  172. package/dist/lib/utils/text.d.ts +3 -1
  173. package/dist/lib/utils/text.d.ts.map +1 -1
  174. package/dist/lib/utils/text.js +5 -6
  175. package/dist/lib/utils/uploadFile.d.ts +9 -0
  176. package/dist/lib/utils/uploadFile.d.ts.map +1 -0
  177. package/dist/lib/utils/uploadFile.js +9 -0
  178. package/dist/lib/utils/uploadTasks.d.ts.map +1 -1
  179. package/dist/lib/utils/uploadTasks.js +9 -1
  180. package/package.json +1 -2
@@ -1,5 +1,6 @@
1
1
  import { get, post } from "./fetcher";
2
- const withIdempotency = async (path, body) => post(path, body, true, { headers: { "Idempotency-Key": crypto.randomUUID() } });
2
+ import { getNativeTransport } from './nativeTransport';
3
+ const withIdempotency = async (path, body) => post(path, body, true, { headers: { "Idempotency-Key": getNativeTransport()?.randomUUID?.() ?? crypto.randomUUID() } });
3
4
  export const getMarketplaceContracts = async () => (await get("/marketplace-contracts")).data;
4
5
  export const getMarketplaceContract = async (contractSlug) => (await get(`/marketplace-contracts/${encodeURIComponent(contractSlug)}`)).data;
5
6
  export const createMarketplaceContract = async (input) => (await withIdempotency("/marketplace-contracts", input)).data;
@@ -12,6 +13,6 @@ export const createMarketplacePaymentOrder = async (contractId, milestoneId) =>
12
13
  export const verifyMarketplacePayment = async (contractId, milestoneId, input) => (await withIdempotency(`/marketplace-contracts/${contractId}/milestones/${milestoneId}/payment/verify`, input)).data;
13
14
  export const releaseMarketplacePayment = async (contractId, milestoneId) => (await withIdempotency(`/marketplace-contracts/${contractId}/milestones/${milestoneId}/payment/release`, {})).data;
14
15
  export const getMarketplaceInvoiceDownloadUrl = (contractId, invoiceId) => {
15
- const baseUrl = String(process.env.NEXT_PUBLIC_API_URL || "").replace(/\/$/, "");
16
+ const baseUrl = String(getNativeTransport()?.apiUrl || process.env.NEXT_PUBLIC_API_URL || "").replace(/\/$/, "");
16
17
  return `${baseUrl}/marketplace-contracts/${encodeURIComponent(contractId)}/invoices/${encodeURIComponent(invoiceId)}/download`;
17
18
  };
@@ -0,0 +1,25 @@
1
+ /** Native credentials are supplied by the app's secure-storage adapter, never persisted here. */
2
+ export type NativeSessionTokens = {
3
+ accessToken: string;
4
+ refreshToken: string;
5
+ deviceId: string;
6
+ accountType: "user";
7
+ };
8
+ export interface NativeTransportAdapter {
9
+ apiUrl: string;
10
+ deviceId: string;
11
+ randomUUID?(): string;
12
+ accessToken(): string | null;
13
+ refreshToken(): Promise<string | null>;
14
+ setTokens(tokens: NativeSessionTokens, isCurrent: () => boolean): Promise<void>;
15
+ clearSession(): Promise<void>;
16
+ }
17
+ export declare const subscribeNativeSession: (listener: () => void) => () => void;
18
+ export declare function configureNativeTransport(next: NativeTransportAdapter | null): void;
19
+ export declare const getNativeTransport: () => NativeTransportAdapter | null;
20
+ export declare const nativeSessionGeneration: () => number;
21
+ export declare function invalidateNativeSession(): void;
22
+ /** Capture at the start of a user interaction, before any await. */
23
+ export declare function nativeInteractionGuard(): () => void;
24
+ export declare function acceptNativeSession(value: unknown, expectedGeneration?: number, newIdentity?: boolean): Promise<void>;
25
+ //# sourceMappingURL=nativeTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeTransport.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/nativeTransport.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,MAAM,MAAM,mBAAmB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AACvH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,IAAI,MAAM,CAAC;IACtB,WAAW,IAAI,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvC,SAAS,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAID,eAAO,MAAM,sBAAsB,GAAI,UAAU,MAAM,IAAI,eAA+E,CAAC;AAE3I,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI,QAK3E;AACD,eAAO,MAAM,kBAAkB,qCAAgB,CAAC;AAChD,eAAO,MAAM,uBAAuB,cAAmB,CAAC;AACxD,wBAAgB,uBAAuB,SAAkC;AACzE,oEAAoE;AACpE,wBAAgB,sBAAsB,eAKrC;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,kBAAkB,SAAa,EAAE,WAAW,UAAQ,iBAoB7G"}
@@ -0,0 +1,50 @@
1
+ let adapter = null;
2
+ let generation = 0;
3
+ const listeners = new Set();
4
+ export const subscribeNativeSession = (listener) => { listeners.add(listener); return () => { listeners.delete(listener); }; };
5
+ const changed = () => listeners.forEach(listener => listener());
6
+ export function configureNativeTransport(next) {
7
+ if (next && (!/^https?:\/\//.test(next.apiUrl) || !next.deviceId))
8
+ throw new Error("An explicit API URL and device ID are required");
9
+ adapter = next;
10
+ generation += 1;
11
+ changed();
12
+ }
13
+ export const getNativeTransport = () => adapter;
14
+ export const nativeSessionGeneration = () => generation;
15
+ export function invalidateNativeSession() { generation += 1; changed(); }
16
+ /** Capture at the start of a user interaction, before any await. */
17
+ export function nativeInteractionGuard() {
18
+ const owner = adapter, epoch = generation;
19
+ return () => {
20
+ if (owner && (adapter !== owner || generation !== epoch))
21
+ throw new Error("The account changed. Return to your draft before continuing.");
22
+ };
23
+ }
24
+ let credentialWrite = Promise.resolve();
25
+ export async function acceptNativeSession(value, expectedGeneration = generation, newIdentity = false) {
26
+ if (!adapter) {
27
+ if (expectedGeneration !== generation)
28
+ throw new Error("Session changed");
29
+ return;
30
+ }
31
+ const tokens = value;
32
+ if (!tokens || !tokens.accessToken || !tokens.refreshToken || tokens.accountType !== "user" || tokens.deviceId !== adapter.deviceId)
33
+ throw new Error("Invalid native session response");
34
+ const owner = adapter;
35
+ const isCurrent = () => adapter === owner && generation === expectedGeneration;
36
+ const write = credentialWrite.catch(() => { }).then(async () => {
37
+ if (!isCurrent())
38
+ throw new Error("Session changed");
39
+ await owner.setTokens(tokens, isCurrent);
40
+ if (!isCurrent())
41
+ throw new Error("Session changed");
42
+ // Login/verification may replace actor A with B. Requests started while the
43
+ // new identity was pending still used A's credential and must be invalidated.
44
+ // Refresh rotation is the same actor and intentionally retains its epoch.
45
+ if (newIdentity)
46
+ invalidateNativeSession();
47
+ });
48
+ credentialWrite = write;
49
+ await write;
50
+ }
@@ -10,7 +10,7 @@ export declare function getAllNotifications(): Promise<{
10
10
  timestamp?: any;
11
11
  visitedAt?: string | null | undefined;
12
12
  link?: string | undefined;
13
- category?: "booking" | "opportunity" | "package" | "blog" | "system" | "general" | "chat" | "application" | "account" | undefined;
13
+ category?: "opportunity" | "package" | "booking" | "blog" | "system" | "general" | "chat" | "application" | "account" | undefined;
14
14
  metadata?: {
15
15
  status?: string | undefined;
16
16
  rating?: number | undefined;
@@ -52,7 +52,7 @@ export declare function getNotifications(limit: number): Promise<{
52
52
  timestamp?: any;
53
53
  visitedAt?: string | null | undefined;
54
54
  link?: string | undefined;
55
- category?: "booking" | "opportunity" | "package" | "blog" | "system" | "general" | "chat" | "application" | "account" | undefined;
55
+ category?: "opportunity" | "package" | "booking" | "blog" | "system" | "general" | "chat" | "application" | "account" | undefined;
56
56
  metadata?: {
57
57
  status?: string | undefined;
58
58
  rating?: number | undefined;
@@ -118,7 +118,7 @@ export declare function saveUploadNotification(input: {
118
118
  timestamp?: any;
119
119
  visitedAt?: string | null | undefined;
120
120
  link?: string | undefined;
121
- category?: "booking" | "opportunity" | "package" | "blog" | "system" | "general" | "chat" | "application" | "account" | undefined;
121
+ category?: "opportunity" | "package" | "booking" | "blog" | "system" | "general" | "chat" | "application" | "account" | undefined;
122
122
  metadata?: {
123
123
  status?: string | undefined;
124
124
  rating?: number | undefined;
@@ -1,7 +1,7 @@
1
1
  import { TravelPackage } from "../models/package";
2
2
  import { TileProps } from "../models/tile";
3
3
  import { DifficultyEnum, TravelPackage as DetailedTravelPackage, TravelPackageMetaData, TravelPackagePdfExtractionResult } from "../models/travelPackage";
4
- import { EnquiryStatus, PackageEnquiry } from "../models/enquiry";
4
+ import { EnquiryStatus, PackageEnquiry, PackageEnquiryInput } from "../models/enquiry";
5
5
  export type { PackageMetaData } from "../models/package";
6
6
  export declare function getPackageTiles(status?: readonly string[], limit?: number, filters?: {
7
7
  categoryId?: string;
@@ -101,20 +101,22 @@ export declare function getEnquiriesForPackage(slug: string): Promise<{
101
101
  error?: string;
102
102
  enquiries: PackageEnquiry[];
103
103
  }>;
104
- export declare function savePackageEnquiry(formData: FormData): Promise<{
104
+ export declare function savePackageEnquiry(input: FormData | PackageEnquiryInput): Promise<{
105
105
  success: boolean;
106
106
  message?: string;
107
107
  error?: string;
108
+ enquiry?: PackageEnquiry;
108
109
  }>;
109
110
  export declare function updateEnquiryStatus(status: EnquiryStatus, id: string): Promise<{
110
111
  success: boolean;
111
112
  message?: string;
112
113
  error?: string;
113
114
  }>;
114
- export declare function editPackageEnquiry(formData: FormData, id: string): Promise<{
115
+ export declare function editPackageEnquiry(input: FormData | PackageEnquiryInput, id: string): Promise<{
115
116
  success: boolean;
116
117
  message?: string;
117
118
  error?: string;
119
+ enquiry?: PackageEnquiry;
118
120
  }>;
119
121
  export declare function getPendingPackages(): Promise<{
120
122
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/package.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/package.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
+ import { getNativeTransport } from './nativeTransport';
1
2
  import { runUploadTask } from "../utils/uploadTasks";
2
3
  import { get, patch, post, del } from "./fetcher";
3
4
  import { calculatePricingStrategyDisplayUnitPrice, getPricingCurrency, getPricingStrategies } from "../models/pricing";
5
+ import { packageEnquiryFormData } from "../forms/packageEnquiry";
4
6
  import { convertTravelPackageToTileProps } from "../utils/entityTiles";
5
7
  // ─── Public ───────────────────────────────────────────────────────────────────
6
8
  export async function getPackageTiles(status = ["open"], limit, filters) {
@@ -222,6 +224,8 @@ export async function deletePackage(slug) {
222
224
  export async function getPackageEnquiry(slug) {
223
225
  try {
224
226
  const data = await get(`/enquiries/getEnquiryByUserAndSlug/${slug}`);
227
+ if (data.data === undefined || (data.data !== null && (!data.data || typeof data.data !== "object" || !data.data._id)))
228
+ throw new Error("Enquiry status response was incomplete. Please retry.");
225
229
  return {
226
230
  success: true,
227
231
  message: data.message,
@@ -245,10 +249,11 @@ export async function getEnquiriesForPackage(slug) {
245
249
  return { success: false, error: error.message, enquiries: [] };
246
250
  }
247
251
  }
248
- export async function savePackageEnquiry(formData) {
252
+ export async function savePackageEnquiry(input) {
249
253
  try {
250
- const data = await runUploadTask({ title: 'Package', retrySafe: false, href: "/dashboard/host/packages", body: formData, operation: ({ progress }) => post("/enquiries/enquireForPackage", formData, true, { onUploadProgress: progress }) });
251
- return { success: true, message: data.message };
254
+ const formData = input instanceof FormData ? input : packageEnquiryFormData(input);
255
+ const data = await runUploadTask({ title: 'Package', retrySafe: false, href: getNativeTransport() ? "/my-trips" : "/dashboard/host/packages", body: formData, operation: ({ progress }) => post("/enquiries/enquireForPackage", formData, true, { onUploadProgress: progress }) });
256
+ return { success: true, message: data.message, enquiry: data.data };
252
257
  }
253
258
  catch (error) {
254
259
  return { success: false, error: error.message };
@@ -263,10 +268,10 @@ export async function updateEnquiryStatus(status, id) {
263
268
  return { success: false, error: error.message };
264
269
  }
265
270
  }
266
- export async function editPackageEnquiry(formData, id) {
271
+ export async function editPackageEnquiry(input, id) {
267
272
  try {
268
- const data = await runUploadTask({ title: 'Package', retrySafe: false, href: "/dashboard/host/packages", body: formData, operation: ({ progress }) => patch(`/enquiries/updateEnquiry/${id}`, formData, { onUploadProgress: progress }) });
269
- return { success: true, message: data.message };
273
+ const data = await runUploadTask({ title: 'Package', retrySafe: false, href: getNativeTransport() ? "/my-trips" : "/dashboard/host/packages", body: input instanceof FormData ? input : undefined, operation: ({ progress }) => patch(`/enquiries/updateEnquiry/${id}`, input, { onUploadProgress: progress }) });
274
+ return { success: true, message: data.message, enquiry: data.data };
270
275
  }
271
276
  catch (error) {
272
277
  return { success: false, error: error.message };
@@ -1,6 +1,11 @@
1
1
  import type { UserRole } from "../models/props";
2
2
  import type { User } from "../models/user";
3
3
  import type { SocialPlatformType } from "../utils/socialMediaUrl";
4
+ import { type UploadFile } from "../utils/uploadFile";
5
+ export declare function updateTravellerResume(file: UploadFile): Promise<{
6
+ success: boolean;
7
+ error?: string;
8
+ }>;
4
9
  export declare function updateUserSkillExpertise(username: string, skill: string, expertise: number): Promise<{
5
10
  success: boolean;
6
11
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;GAYhG;AACD,wBAAsB,cAAc,CAClC,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB,CAAC,CASD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,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,CAAA;CAAE,CAAC,CAY3J;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7E,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAChE,CAAC,CAkBD;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB,CAAC,CAgBD"}
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAExE,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAO3G;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;;GAYhG;AACD,wBAAsB,cAAc,CAClC,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,QAAQ,EAAE,QAAQ,EAClB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB,CAAC,CASD;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,EAAE,GAAG,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,CAAA;CAAE,CAAC,CAY3J;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7E,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,GAAG,CAAA;CAChE,CAAC,CAkBD;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB,CAAC,CAgBD"}
@@ -1,5 +1,17 @@
1
1
  import { runUploadTask } from "../utils/uploadTasks";
2
2
  import { get, patch } from "./fetcher";
3
+ import { appendUploadFile } from "../utils/uploadFile";
4
+ export async function updateTravellerResume(file) {
5
+ try {
6
+ const body = new FormData();
7
+ appendUploadFile(body, "resume", file);
8
+ await patch("/users/resume-update", body);
9
+ return { success: true };
10
+ }
11
+ catch (error) {
12
+ return { success: false, error: error.message };
13
+ }
14
+ }
3
15
  export async function updateUserSkillExpertise(username, skill, expertise) {
4
16
  try {
5
17
  const endpoint = `/users/updateSkillExpertise/${username}`;
@@ -41,4 +41,11 @@ export declare function deleteReview(id: string): Promise<{
41
41
  message?: string;
42
42
  error?: string;
43
43
  }>;
44
+ /** Exhaustive target-scoped owner read; malformed/changing pages are not absence. */
45
+ export declare function getReviewOwnerForTarget(slug: string, type: reviewTargetType, actorId: string): Promise<{
46
+ success: boolean;
47
+ review: Review | null;
48
+ entityId: string | null;
49
+ error?: string;
50
+ }>;
44
51
  //# sourceMappingURL=review.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,gBAAgB,EACnB,MAAM,kBAAkB,CAAC;AAI1B,wBAAsB,cAAc,CAChC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,gBAAgB,EACtB,OAAO,GAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP,OAAO,CAAC;IACP,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CA4BD;AAED,wBAAsB,aAAa,CAC/B,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,gBAAgB,GACvB,OAAO,CAAC;IACP,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzF,CAAC,CAcD;AAED,wBAAsB,SAAS,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,cAAc,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBxF;AAED,wBAAsB,UAAU,CAC5B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,cAAc,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBxF;AAED,wBAAsB,YAAY,CAC9B,EAAE,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQjE"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/review.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,MAAM,EACN,cAAc,EACd,gBAAgB,EACnB,MAAM,kBAAkB,CAAC;AAM1B,wBAAsB,cAAc,CAChC,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,gBAAgB,EACtB,OAAO,GAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP,OAAO,CAAC;IACP,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CA4BD;AAED,wBAAsB,aAAa,CAC/B,GAAG,EAAE,MAAM,EAAE,EACb,IAAI,EAAE,gBAAgB,GACvB,OAAO,CAAC;IACP,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzF,CAAC,CAcD;AAED,wBAAsB,SAAS,CAC3B,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,cAAc,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CASxF;AAED,wBAAsB,UAAU,CAC5B,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,cAAc,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAUxF;AAED,wBAAsB,YAAY,CAC9B,EAAE,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQjE;AAED,qFAAqF;AACrF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAC,OAAO,EAAC,OAAO,CAAC;IAAA,MAAM,EAAC,MAAM,GAAC,IAAI,CAAC;IAAA,QAAQ,EAAC,MAAM,GAAC,IAAI,CAAC;IAAA,KAAK,CAAC,EAAC,MAAM,CAAA;CAAC,CAAC,CAgErL"}
@@ -1,4 +1,6 @@
1
1
  import { del, get, patch, post } from "./fetcher";
2
+ import { reviewRequestBody } from "../forms/review";
3
+ import { getNativeTransport } from "./nativeTransport";
2
4
  import { runUploadTask } from "../utils/uploadTasks";
3
5
  export async function getReviewsById(id, type, options = {}) {
4
6
  try {
@@ -43,25 +45,8 @@ export async function getRatingById(ids, type) {
43
45
  }
44
46
  export async function addReview(id, type, formData) {
45
47
  try {
46
- let body;
47
- if (formData.images?.length && formData.images[0] instanceof File) {
48
- const formBody = new FormData();
49
- formBody.append("reviewee", id);
50
- formBody.append("revieweeType", type);
51
- formBody.append("rating", formData.rating.toString());
52
- formBody.append("comment", formData.comment || "");
53
- formData.images.forEach((image) => formBody.append("images", image));
54
- body = formBody;
55
- }
56
- else {
57
- body = {
58
- reviewee: id,
59
- revieweeType: type,
60
- rating: formData.rating,
61
- comment: formData.comment,
62
- };
63
- }
64
- const data = await runUploadTask({ title: "Review", href: typeof window === "undefined" ? undefined : window.location.pathname, operation: ({ progress }) => post("/reviews/", body, true, { onUploadProgress: progress }) });
48
+ const body = reviewRequestBody(formData, { id, type });
49
+ const data = await runUploadTask({ title: "Review", retrySafe: getNativeTransport() ? false : undefined, href: typeof window === "undefined" || !window.location ? undefined : window.location.pathname, operation: ({ progress }) => post("/reviews/", body, true, { onUploadProgress: progress }) });
65
50
  return { success: true, review: data.data, message: data.message };
66
51
  }
67
52
  catch (error) {
@@ -71,18 +56,10 @@ export async function addReview(id, type, formData) {
71
56
  }
72
57
  export async function editReview(id, formData) {
73
58
  try {
74
- let body;
75
- if (formData.images?.length && formData.images[0] instanceof File) {
76
- const formBody = new FormData();
77
- formBody.append("rating", formData.rating.toString());
78
- formBody.append("comment", formData.comment || "");
79
- formData.images.forEach((image) => formBody.append("images", image));
80
- body = formBody;
81
- }
82
- else {
83
- body = { rating: formData.rating, comment: formData.comment };
84
- }
85
- const data = await runUploadTask({ title: "Review update", href: typeof window === "undefined" ? undefined : window.location.pathname, operation: ({ progress }) => patch(`/reviews/${encodeURIComponent(id)}`, body, { onUploadProgress: progress }) });
59
+ if (getNativeTransport() && formData.images?.length)
60
+ throw new Error("Review photos cannot be changed by the current service. Update the rating and comment only.");
61
+ const body = reviewRequestBody(formData);
62
+ const data = await runUploadTask({ title: "Review update", retrySafe: getNativeTransport() ? false : undefined, href: typeof window === "undefined" || !window.location ? undefined : window.location.pathname, operation: ({ progress }) => patch(`/reviews/${encodeURIComponent(id)}`, body, { onUploadProgress: progress }) });
86
63
  return { success: true, review: data.data, message: data.message };
87
64
  }
88
65
  catch (error) {
@@ -100,3 +77,59 @@ export async function deleteReview(id) {
100
77
  return { success: false, error: error.message };
101
78
  }
102
79
  }
80
+ /** Exhaustive target-scoped owner read; malformed/changing pages are not absence. */
81
+ export async function getReviewOwnerForTarget(slug, type, actorId) {
82
+ try {
83
+ let page = 1, entityId = null, own = null;
84
+ let expectedTotal = null;
85
+ const seen = new Set();
86
+ while (true) {
87
+ const result = await getReviewsById(slug, type, {
88
+ page,
89
+ limit: 20,
90
+ });
91
+ if (!result.success)
92
+ throw new Error(result.error);
93
+ if (!Array.isArray(result.reviews) ||
94
+ typeof result.hasMore !== "boolean" ||
95
+ !Number.isSafeInteger(result.totalCount) ||
96
+ result.totalCount < 0)
97
+ throw new Error("Reviews could not be read.");
98
+ if (expectedTotal !== null && expectedTotal !== result.totalCount)
99
+ throw new Error("Reviews changed while reading. Refresh before submitting.");
100
+ expectedTotal = result.totalCount;
101
+ let added = 0;
102
+ for (const row of result.reviews) {
103
+ if (!row?._id ||
104
+ !row.reviewee ||
105
+ row.revieweeType !== type ||
106
+ !row.reviewer ||
107
+ !row.reviewerType)
108
+ throw new Error("Review identity could not be confirmed.");
109
+ if (entityId && row.reviewee !== entityId)
110
+ throw new Error("Conflicting review targets were returned.");
111
+ entityId = row.reviewee;
112
+ if (!seen.has(row._id)) {
113
+ seen.add(row._id);
114
+ added++;
115
+ }
116
+ if (row.reviewer === actorId && row.reviewerType === "User") {
117
+ if (own && own._id !== row._id)
118
+ throw new Error("More than one current review was returned. Contact support before changing it.");
119
+ own = row;
120
+ }
121
+ }
122
+ if (!result.hasMore) {
123
+ if (seen.size !== expectedTotal)
124
+ throw new Error("The complete review collection could not be confirmed. Retry before submitting.");
125
+ return { success: true, review: own, entityId };
126
+ }
127
+ if (!added)
128
+ throw new Error("Review pages could not advance. Retry the read before posting.");
129
+ page++;
130
+ }
131
+ }
132
+ catch (error) {
133
+ return { success: false, review: null, entityId: null, error: error instanceof Error ? error.message : "Reviews could not load." };
134
+ }
135
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"serverActions.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/serverActions.ts"],"names":[],"mappings":"AAKA,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAKvD;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWtD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAahF"}
1
+ {"version":3,"file":"serverActions.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/serverActions.ts"],"names":[],"mappings":"AAMA,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAKvD;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWtD;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAahF"}
@@ -1,4 +1,5 @@
1
1
  'use server';
2
+ import { authCookieName } from '../utils/authCookies';
2
3
  import { cookies } from 'next/headers';
3
4
  import { validRoles } from '../utils/text';
4
5
  export async function getCookieHeader() {
@@ -9,7 +10,7 @@ export async function getCookieHeader() {
9
10
  }
10
11
  export async function getRole() {
11
12
  try {
12
- const role = (await cookies()).get("role")?.value ?? null;
13
+ const role = (await cookies()).get(authCookieName("role"))?.value ?? null;
13
14
  return (role && validRoles.includes(role)) ? role : null;
14
15
  }
15
16
  catch (err) {
@@ -22,7 +23,7 @@ export async function getRole() {
22
23
  }
23
24
  export async function getAccountType() {
24
25
  try {
25
- const accountType = (await cookies()).get("accountType")?.value;
26
+ const accountType = (await cookies()).get(authCookieName("accountType"))?.value;
26
27
  return accountType === "user" || accountType === "host" || accountType === "staff"
27
28
  ? accountType
28
29
  : null;
@@ -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":"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":"AAKA,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,16 +1,43 @@
1
1
  import { runUploadTask } from "../utils/uploadTasks";
2
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
+ }
3
9
  // ─── Public ───────────────────────────────────────────────────────────────────
4
- export async function fetchStays(params = {}) {
10
+ export async function fetchStays(params = {}, signal) {
5
11
  try {
6
12
  const qs = new URLSearchParams(params).toString();
7
- const data = await get(`/stays?${qs}`);
13
+ const data = await get(`/stays?${qs}`, true, { signal });
8
14
  return { success: true, ...data.data };
9
15
  }
10
16
  catch (err) {
11
17
  return { success: false, error: err.message, stays: [] };
12
18
  }
13
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
+ }
14
41
  export async function fetchStayBySlug(slug) {
15
42
  try {
16
43
  const data = await get(`/stays/${slug}`);
@@ -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;