@myrjfa/state 3.0.4 → 3.0.5
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.
- package/dist/lib/actions/companion.d.ts +57 -2
- package/dist/lib/actions/companion.d.ts.map +1 -1
- package/dist/lib/actions/companion.js +64 -2
- package/dist/lib/actions/itinerary.d.ts +5 -0
- package/dist/lib/actions/itinerary.d.ts.map +1 -1
- package/dist/lib/actions/itinerary.js +9 -0
- package/dist/lib/companion/discoveryPrefill.d.ts +27 -0
- package/dist/lib/companion/discoveryPrefill.d.ts.map +1 -0
- package/dist/lib/companion/discoveryPrefill.js +80 -0
- package/dist/lib/companion/inspiration.d.ts +9 -0
- package/dist/lib/companion/inspiration.d.ts.map +1 -0
- package/dist/lib/companion/inspiration.js +15 -0
- package/dist/lib/models/companion.d.ts +24 -0
- package/dist/lib/models/companion.d.ts.map +1 -1
- package/dist/lib/models/itinerary.d.ts +11 -0
- package/dist/lib/models/itinerary.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CompanionSavedType } from "../models/companion";
|
|
1
|
+
import type { CompanionListingCard, CompanionListingSuggestions, CompanionSavedType, CompanionStandaloneKind } from "../models/companion";
|
|
2
2
|
export declare function getCompanionSavedStatus(type: CompanionSavedType, targetId: string): Promise<{
|
|
3
3
|
success: boolean;
|
|
4
4
|
saved: boolean;
|
|
@@ -62,7 +62,19 @@ export declare function createTravelPlan(planData: any): Promise<{
|
|
|
62
62
|
plan: any;
|
|
63
63
|
error?: undefined;
|
|
64
64
|
}>;
|
|
65
|
-
export declare function
|
|
65
|
+
export declare function uploadCompanionTripCover(file: File): Promise<{
|
|
66
|
+
success: boolean;
|
|
67
|
+
url: string;
|
|
68
|
+
error?: undefined;
|
|
69
|
+
} | {
|
|
70
|
+
success: boolean;
|
|
71
|
+
error: string;
|
|
72
|
+
url?: undefined;
|
|
73
|
+
}>;
|
|
74
|
+
export declare function createTravelPlanFromItinerary(itineraryId: string, inviteCount: number, joinPolicy?: "approval_required" | "open", options?: {
|
|
75
|
+
createAnother?: boolean;
|
|
76
|
+
requestId?: string;
|
|
77
|
+
}): Promise<{
|
|
66
78
|
success: boolean;
|
|
67
79
|
error: any;
|
|
68
80
|
plan?: undefined;
|
|
@@ -73,6 +85,49 @@ export declare function createTravelPlanFromItinerary(itineraryId: string, invit
|
|
|
73
85
|
message: any;
|
|
74
86
|
error?: undefined;
|
|
75
87
|
}>;
|
|
88
|
+
export declare function attachItineraryToTravelPlan(planId: string, itineraryId: string): Promise<{
|
|
89
|
+
success: boolean;
|
|
90
|
+
error: any;
|
|
91
|
+
plan?: undefined;
|
|
92
|
+
} | {
|
|
93
|
+
success: boolean;
|
|
94
|
+
plan: any;
|
|
95
|
+
error?: undefined;
|
|
96
|
+
}>;
|
|
97
|
+
export declare function getCompanionListingSuggestions(planId: string): Promise<{
|
|
98
|
+
success: boolean;
|
|
99
|
+
suggestions: CompanionListingSuggestions;
|
|
100
|
+
error?: undefined;
|
|
101
|
+
} | {
|
|
102
|
+
success: boolean;
|
|
103
|
+
suggestions: null;
|
|
104
|
+
error: string;
|
|
105
|
+
}>;
|
|
106
|
+
export declare function addCompanionStandaloneLink(planId: string, kind: CompanionStandaloneKind, entityId: string): Promise<{
|
|
107
|
+
success: boolean;
|
|
108
|
+
item: CompanionListingCard;
|
|
109
|
+
error?: undefined;
|
|
110
|
+
} | {
|
|
111
|
+
success: boolean;
|
|
112
|
+
error: string;
|
|
113
|
+
item?: undefined;
|
|
114
|
+
}>;
|
|
115
|
+
export declare function removeCompanionStandaloneLink(planId: string, kind: CompanionStandaloneKind, entityId: string): Promise<{
|
|
116
|
+
success: boolean;
|
|
117
|
+
error?: undefined;
|
|
118
|
+
} | {
|
|
119
|
+
success: boolean;
|
|
120
|
+
error: string;
|
|
121
|
+
}>;
|
|
122
|
+
export declare function getCompanionTripInspiration(filters: Record<string, string>): Promise<{
|
|
123
|
+
success: boolean;
|
|
124
|
+
items: CompanionListingCard[];
|
|
125
|
+
error?: undefined;
|
|
126
|
+
} | {
|
|
127
|
+
success: boolean;
|
|
128
|
+
items: never[];
|
|
129
|
+
error: string;
|
|
130
|
+
}>;
|
|
76
131
|
export declare function getTravelPlans(filters?: Record<string, string>): Promise<{
|
|
77
132
|
success: boolean;
|
|
78
133
|
error: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/companion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/companion.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,oBAAoB,EACpB,2BAA2B,EAE3B,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAI7B,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM;;;;;;;;GAOvF;AAED,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;;;;;;;;GAOrG;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,MAAM;;;;;;;;;;GAQrF;AAID,wBAAsB,kBAAkB;;;;;;;;;;;;;;;GASvC;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,GAAG;;;;;;;;GAQzD;AAID,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,GAAG;;;;;;;;GAQnD;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,IAAI;;;;;;;;GASxD;AAED,wBAAsB,6BAA6B,CACjD,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,mBAAmB,GAAG,MAA4B,EAC9D,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO;;;;;;;;;;GAY9D;AAED,wBAAsB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;;;;;;;;GAcpF;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE,MAAM;;;;;;;;GAOlE;AAED,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM;;;;;;;;GAO/G;AAED,wBAAsB,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM;;;;;;GAOlH;AAED,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;GAQhF;AAED,wBAAsB,cAAc,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;;;;;;;;;;GASxE;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,MAAM;;;;;;;;GAQ7C;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;;;;;;;;GAQ/D;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM;;;;;;;;GAQhD;AAED,wBAAsB,cAAc,CAAC,EAAE,EAAE,MAAM;;;;;;;;GAQ9C;AAED,wBAAsB,gBAAgB;;;;;;;;GAQrC;AAED,wBAAsB,iBAAiB;;;;;;;;GAQtC;AAID,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;;;;;;;;;;;;GAarE;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;YAIlB,WAAW;;GAInE;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM;;;;;;;;GAQnD;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU;;;;;;;;;;GAS7C;AAID,wBAAsB,aAAa,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;;;;;;;;GASvE;AAED,wBAAsB,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;;;;;;;;GAQ5E;AAED,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;;;;;;;;GAS3E;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GAAG,MAAM;;;;;;;;;;GAaxB;AAID,wBAAsB,YAAY;;;;;;;;GAQjC;AAID,wBAAsB,kBAAkB,CAAC,YAAY,EAAE,MAAM;;;;;;;;GAQ5D"}
|
|
@@ -65,9 +65,20 @@ export async function createTravelPlan(planData) {
|
|
|
65
65
|
return { success: false, error: "Failed to create travel plan" };
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
export async function
|
|
68
|
+
export async function uploadCompanionTripCover(file) {
|
|
69
69
|
try {
|
|
70
|
-
const
|
|
70
|
+
const body = new FormData();
|
|
71
|
+
body.append("images", file);
|
|
72
|
+
const data = await post(`${BASE_PATH}/uploads/trip-cover`, body);
|
|
73
|
+
return { success: true, url: data.data.url };
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
return { success: false, error: error instanceof Error ? error.message : "Could not upload the trip cover." };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
export async function createTravelPlanFromItinerary(itineraryId, inviteCount, joinPolicy = "approval_required", options = {}) {
|
|
80
|
+
try {
|
|
81
|
+
const data = await post(`${BASE_PATH}/plans/from-itinerary/${encodeURIComponent(itineraryId)}`, { inviteCount, joinPolicy, ...options });
|
|
71
82
|
if (data.statusCode >= 400)
|
|
72
83
|
return { success: false, error: data.message };
|
|
73
84
|
return { success: true, plan: data.data, message: data.message };
|
|
@@ -76,6 +87,57 @@ export async function createTravelPlanFromItinerary(itineraryId, inviteCount, jo
|
|
|
76
87
|
return { success: false, error: "We could not post this trip. Please try again." };
|
|
77
88
|
}
|
|
78
89
|
}
|
|
90
|
+
export async function attachItineraryToTravelPlan(planId, itineraryId) {
|
|
91
|
+
try {
|
|
92
|
+
const data = await put(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/itinerary`, { itineraryId });
|
|
93
|
+
if (data.statusCode >= 400)
|
|
94
|
+
return { success: false, error: data.message };
|
|
95
|
+
return { success: true, plan: data.data };
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const message = typeof error === "object" && error !== null && "message" in error
|
|
99
|
+
? String(error.message)
|
|
100
|
+
: "We could not link this itinerary. Please try again.";
|
|
101
|
+
return { success: false, error: message };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export async function getCompanionListingSuggestions(planId) {
|
|
105
|
+
try {
|
|
106
|
+
const data = await get(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/listing-suggestions`);
|
|
107
|
+
return { success: true, suggestions: data.data };
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
return { success: false, suggestions: null, error: error instanceof Error ? error.message : "Could not load trip suggestions." };
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export async function addCompanionStandaloneLink(planId, kind, entityId) {
|
|
114
|
+
try {
|
|
115
|
+
const data = await post(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/standalone-links`, { kind, entityId });
|
|
116
|
+
return { success: true, item: data.data };
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
return { success: false, error: error instanceof Error ? error.message : "Could not add this listing to your trip." };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export async function removeCompanionStandaloneLink(planId, kind, entityId) {
|
|
123
|
+
try {
|
|
124
|
+
await del(`${BASE_PATH}/plans/${encodeURIComponent(planId)}/standalone-links/${encodeURIComponent(kind)}/${encodeURIComponent(entityId)}`);
|
|
125
|
+
return { success: true };
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
return { success: false, error: error instanceof Error ? error.message : "Could not remove this listing from your trip." };
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
export async function getCompanionTripInspiration(filters) {
|
|
132
|
+
try {
|
|
133
|
+
const query = new URLSearchParams(filters).toString();
|
|
134
|
+
const data = await get(`${BASE_PATH}/trips/inspiration${query ? `?${query}` : ""}`);
|
|
135
|
+
return { success: true, items: data.data || [] };
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
return { success: false, items: [], error: error instanceof Error ? error.message : "Could not load trip inspiration." };
|
|
139
|
+
}
|
|
140
|
+
}
|
|
79
141
|
export async function getTravelPlans(filters = {}) {
|
|
80
142
|
try {
|
|
81
143
|
const query = new URLSearchParams(filters).toString();
|
|
@@ -6,6 +6,11 @@ export declare function getTrendingItineraries(limit?: number): Promise<{
|
|
|
6
6
|
}>;
|
|
7
7
|
export declare function generateItinerary<T = any>(input: unknown): Promise<T>;
|
|
8
8
|
export declare function getItineraryById<T = any>(id: string): Promise<T>;
|
|
9
|
+
export declare function getMyItineraries(): Promise<{
|
|
10
|
+
success: boolean;
|
|
11
|
+
itineraries: ItinerarySummary[];
|
|
12
|
+
error?: string;
|
|
13
|
+
}>;
|
|
9
14
|
export declare function regenerateItinerary<T = any>(id: string): Promise<T>;
|
|
10
15
|
export declare function customizeItinerary<T = any>(id: string, input: unknown): Promise<T>;
|
|
11
16
|
export declare function getPublicItinerary<T = any>(slug: string): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/itinerary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,wBAAsB,sBAAsB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAeD;AAED,wBAAsB,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAG3E;AAED,wBAAsB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGtE;AAED,wBAAsB,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAOzE;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAOxF;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAM1E"}
|
|
1
|
+
{"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/actions/itinerary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAK5D,wBAAsB,sBAAsB,CAAC,KAAK,SAAI,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAeD;AAED,wBAAsB,iBAAiB,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAG3E;AAED,wBAAsB,gBAAgB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGtE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAOD;AAED,wBAAsB,mBAAmB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAOzE;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAOxF;AAED,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAM1E"}
|
|
@@ -22,6 +22,15 @@ export async function getItineraryById(id) {
|
|
|
22
22
|
const payload = await get(`/itineraries/${encodeURIComponent(id)}`, true);
|
|
23
23
|
return payload.data;
|
|
24
24
|
}
|
|
25
|
+
export async function getMyItineraries() {
|
|
26
|
+
try {
|
|
27
|
+
const payload = await get("/itineraries", true);
|
|
28
|
+
return { success: true, itineraries: payload.data ?? [] };
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return { success: false, itineraries: [], error: "Your itineraries could not be loaded" };
|
|
32
|
+
}
|
|
33
|
+
}
|
|
25
34
|
export async function regenerateItinerary(id) {
|
|
26
35
|
const payload = await post(`/itineraries/${encodeURIComponent(id)}/regenerate`, {}, true);
|
|
27
36
|
return payload.data;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export type CompanionDiscoveryPrefill = Partial<{
|
|
2
|
+
country: string;
|
|
3
|
+
state: string;
|
|
4
|
+
city: string;
|
|
5
|
+
style: string;
|
|
6
|
+
minBudget: string;
|
|
7
|
+
maxBudget: string;
|
|
8
|
+
minDays: string;
|
|
9
|
+
maxDays: string;
|
|
10
|
+
startDate: string;
|
|
11
|
+
endDate: string;
|
|
12
|
+
openSpots: string;
|
|
13
|
+
maxGroupSize: string;
|
|
14
|
+
interest: string;
|
|
15
|
+
}>;
|
|
16
|
+
export interface CompanionDiscoveryLocation {
|
|
17
|
+
name: string;
|
|
18
|
+
state: string;
|
|
19
|
+
country: string;
|
|
20
|
+
}
|
|
21
|
+
type SearchParamsReader = {
|
|
22
|
+
get(name: string): string | null;
|
|
23
|
+
};
|
|
24
|
+
export declare function parseCompanionDiscoveryPrefill(params: SearchParamsReader, locations?: readonly CompanionDiscoveryLocation[]): CompanionDiscoveryPrefill;
|
|
25
|
+
export declare function serializeCompanionDiscoveryPrefill(prefill: CompanionDiscoveryPrefill): URLSearchParams;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=discoveryPrefill.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
const KEYS = [
|
|
2
|
+
"country", "state", "city", "style", "minBudget", "maxBudget", "minDays",
|
|
3
|
+
"maxDays", "startDate", "endDate", "openSpots", "maxGroupSize", "interest",
|
|
4
|
+
];
|
|
5
|
+
const STYLES = new Set(["budget", "backpacker", "flashpacker", "mid-range", "luxury"]);
|
|
6
|
+
const INTERESTS = new Set(["adventure", "culture", "food", "hiking", "nature", "nightlife", "photography", "wellness"]);
|
|
7
|
+
const SAFE_LABEL = /^[\p{L}\p{M} .'-]{1,80}$/u;
|
|
8
|
+
const exactDate = (value) => {
|
|
9
|
+
if (!value || !/^\d{4}-\d{2}-\d{2}$/.test(value))
|
|
10
|
+
return "";
|
|
11
|
+
const date = new Date(`${value}T00:00:00.000Z`);
|
|
12
|
+
return Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== value ? "" : value;
|
|
13
|
+
};
|
|
14
|
+
const boundedInteger = (value, min, max) => {
|
|
15
|
+
if (!value || !/^\d+$/.test(value))
|
|
16
|
+
return "";
|
|
17
|
+
const number = Number(value);
|
|
18
|
+
return Number.isSafeInteger(number) && number >= min && number <= max ? String(number) : "";
|
|
19
|
+
};
|
|
20
|
+
const findCaseInsensitive = (values, value) => (value ? values.find((candidate) => candidate.toLocaleLowerCase() === value.trim().toLocaleLowerCase()) || "" : "");
|
|
21
|
+
export function parseCompanionDiscoveryPrefill(params, locations = []) {
|
|
22
|
+
const result = {};
|
|
23
|
+
const cityInput = params.get("city")?.trim() || "";
|
|
24
|
+
const countryInput = params.get("country")?.trim() || "";
|
|
25
|
+
const stateInput = params.get("state")?.trim() || "";
|
|
26
|
+
const location = cityInput && SAFE_LABEL.test(cityInput)
|
|
27
|
+
? locations.find((candidate) => candidate.name.toLocaleLowerCase() === cityInput.toLocaleLowerCase()
|
|
28
|
+
&& (!countryInput || candidate.country.toLocaleLowerCase() === countryInput.toLocaleLowerCase())
|
|
29
|
+
&& (!stateInput || candidate.state.toLocaleLowerCase() === stateInput.toLocaleLowerCase()))
|
|
30
|
+
: undefined;
|
|
31
|
+
if (location) {
|
|
32
|
+
result.country = location.country;
|
|
33
|
+
result.state = location.state;
|
|
34
|
+
result.city = location.name;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
const country = findCaseInsensitive([...new Set(locations.map((item) => item.country))], countryInput);
|
|
38
|
+
const states = locations.filter((item) => !country || item.country === country).map((item) => item.state);
|
|
39
|
+
const state = findCaseInsensitive([...new Set(states)], stateInput);
|
|
40
|
+
if (country)
|
|
41
|
+
result.country = country;
|
|
42
|
+
if (state)
|
|
43
|
+
result.state = state;
|
|
44
|
+
}
|
|
45
|
+
const style = params.get("style")?.trim().toLowerCase() || "";
|
|
46
|
+
if (STYLES.has(style))
|
|
47
|
+
result.style = style;
|
|
48
|
+
const interest = params.get("interest")?.trim().toLowerCase() || "";
|
|
49
|
+
if (INTERESTS.has(interest))
|
|
50
|
+
result.interest = interest;
|
|
51
|
+
const numericBounds = {
|
|
52
|
+
minBudget: [0, 10000000], maxBudget: [0, 10000000],
|
|
53
|
+
minDays: [1, 365], maxDays: [1, 365], openSpots: [1, 19], maxGroupSize: [2, 20],
|
|
54
|
+
};
|
|
55
|
+
for (const [key, [min, max]] of Object.entries(numericBounds)) {
|
|
56
|
+
const value = boundedInteger(params.get(key), min, max);
|
|
57
|
+
if (value)
|
|
58
|
+
result[key] = value;
|
|
59
|
+
}
|
|
60
|
+
const startDate = exactDate(params.get("startDate"));
|
|
61
|
+
const endDate = exactDate(params.get("endDate"));
|
|
62
|
+
if (startDate)
|
|
63
|
+
result.startDate = startDate;
|
|
64
|
+
if (endDate && (!startDate || endDate >= startDate))
|
|
65
|
+
result.endDate = endDate;
|
|
66
|
+
if (result.minBudget && result.maxBudget && Number(result.maxBudget) < Number(result.minBudget))
|
|
67
|
+
delete result.maxBudget;
|
|
68
|
+
if (result.minDays && result.maxDays && Number(result.maxDays) < Number(result.minDays))
|
|
69
|
+
delete result.maxDays;
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
export function serializeCompanionDiscoveryPrefill(prefill) {
|
|
73
|
+
const params = new URLSearchParams();
|
|
74
|
+
for (const key of KEYS) {
|
|
75
|
+
const value = prefill[key];
|
|
76
|
+
if (value)
|
|
77
|
+
params.set(key, value);
|
|
78
|
+
}
|
|
79
|
+
return params;
|
|
80
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const COMPANION_INSPIRATION_DECISION_INTERVAL = 4;
|
|
2
|
+
export declare function shouldShowTripInspiration({ mode, organicDecisionCount, hasCandidate, shown, }: {
|
|
3
|
+
mode: "trips" | "travelers";
|
|
4
|
+
organicDecisionCount: number;
|
|
5
|
+
hasCandidate: boolean;
|
|
6
|
+
shown: boolean;
|
|
7
|
+
}): boolean;
|
|
8
|
+
export declare function companionInspirationSessionKey(filters: Record<string, string>): string;
|
|
9
|
+
//# sourceMappingURL=inspiration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspiration.d.ts","sourceRoot":"","sources":["../../../src/lib/companion/inspiration.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uCAAuC,IAAI,CAAC;AAEzD,wBAAgB,yBAAyB,CAAC,EACxC,IAAI,EACJ,oBAAoB,EACpB,YAAY,EACZ,KAAK,GACN,EAAE;IACD,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB,WAKA;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAO7E"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const COMPANION_INSPIRATION_DECISION_INTERVAL = 4;
|
|
2
|
+
export function shouldShowTripInspiration({ mode, organicDecisionCount, hasCandidate, shown, }) {
|
|
3
|
+
return mode === "trips"
|
|
4
|
+
&& organicDecisionCount >= COMPANION_INSPIRATION_DECISION_INTERVAL
|
|
5
|
+
&& hasCandidate
|
|
6
|
+
&& !shown;
|
|
7
|
+
}
|
|
8
|
+
export function companionInspirationSessionKey(filters) {
|
|
9
|
+
const signature = Object.entries(filters)
|
|
10
|
+
.filter(([, value]) => Boolean(value))
|
|
11
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
12
|
+
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`)
|
|
13
|
+
.join("&");
|
|
14
|
+
return `trippeaze:companion-inspiration:v1:${signature || "all"}`;
|
|
15
|
+
}
|
|
@@ -16,4 +16,28 @@ export interface CompanionSavedPage {
|
|
|
16
16
|
items: CompanionSavedItem[];
|
|
17
17
|
nextCursor: string | null;
|
|
18
18
|
}
|
|
19
|
+
export type CompanionStandaloneKind = "stay" | "adventure" | "event" | "package";
|
|
20
|
+
export interface CompanionListingCard {
|
|
21
|
+
kind: CompanionStandaloneKind;
|
|
22
|
+
entityId: string;
|
|
23
|
+
title: string;
|
|
24
|
+
unavailable?: boolean;
|
|
25
|
+
slug?: string;
|
|
26
|
+
href?: string;
|
|
27
|
+
image?: string;
|
|
28
|
+
location?: string;
|
|
29
|
+
price?: number;
|
|
30
|
+
currency?: string;
|
|
31
|
+
priceBasis?: string;
|
|
32
|
+
sponsored?: boolean;
|
|
33
|
+
trendingScore?: number;
|
|
34
|
+
durationDays?: number;
|
|
35
|
+
category?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface CompanionListingSuggestions {
|
|
38
|
+
stays: CompanionListingCard[];
|
|
39
|
+
adventures: CompanionListingCard[];
|
|
40
|
+
events: CompanionListingCard[];
|
|
41
|
+
packages: CompanionListingCard[];
|
|
42
|
+
}
|
|
19
43
|
//# sourceMappingURL=companion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/models/companion.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
|
|
1
|
+
{"version":3,"file":"companion.d.ts","sourceRoot":"","sources":["../../../src/lib/models/companion.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,UAAU,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,kBAAkB,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC"}
|
|
@@ -13,6 +13,17 @@ export interface ItinerarySummary {
|
|
|
13
13
|
slug: string;
|
|
14
14
|
viewCount?: number;
|
|
15
15
|
companionPlanId?: string;
|
|
16
|
+
companionPlans?: Array<{
|
|
17
|
+
_id: string;
|
|
18
|
+
status: "open" | "full" | "completed" | "cancelled";
|
|
19
|
+
destination?: {
|
|
20
|
+
city?: string;
|
|
21
|
+
state?: string;
|
|
22
|
+
country?: string;
|
|
23
|
+
};
|
|
24
|
+
startDate?: string;
|
|
25
|
+
endDate?: string;
|
|
26
|
+
}>;
|
|
16
27
|
createdAt?: string;
|
|
17
28
|
}
|
|
18
29
|
export type ItineraryItemCategory = "flight" | "stay" | "transfer" | "restaurant" | "activity" | "event" | "guide" | "rental" | "package";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/models/itinerary.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"itinerary.d.ts","sourceRoot":"","sources":["../../../src/lib/models/itinerary.ts"],"names":[],"mappings":"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"}
|