more-apartments-astro-integration 1.5.6 → 1.5.7

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/common.ts","../src/types/generated/schemas.ts","../src/types/properties.ts","../src/types/content.ts","../src/types/settings.ts","../src/types/bookings.ts","../src/types/index.ts","../src/client.ts","../src/utils/images.ts","../src/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n// Common types used across multiple endpoints\n\nexport const PaginationLinksSchema = z.object({\n first: z.string().nullable(),\n last: z.string().nullable(),\n prev: z.string().nullable(),\n next: z.string().nullable(),\n});\n\nexport const PaginationMetaSchema = z.object({\n current_page: z.number(),\n from: z.number().nullable(),\n last_page: z.number(),\n links: z.array(z.object({\n url: z.string().nullable(),\n label: z.string(),\n active: z.boolean(),\n })),\n path: z.string(),\n per_page: z.number(),\n to: z.number().nullable(),\n total: z.number(),\n});\n\nexport const PaginatedResponseSchema = <T extends z.ZodTypeAny>(dataSchema: T) =>\n z.object({\n data: z.array(dataSchema),\n links: PaginationLinksSchema,\n meta: PaginationMetaSchema,\n });\n\nexport const ApiErrorSchema = z.object({\n message: z.string(),\n errors: z.record(z.string(), z.array(z.string())).optional(),\n});\n\n// Base types\nexport type PaginationLinks = z.infer<typeof PaginationLinksSchema>;\nexport type PaginationMeta = z.infer<typeof PaginationMetaSchema>;\nexport type PaginatedResponse<T> = {\n data: T[];\n links: PaginationLinks;\n meta: PaginationMeta;\n};\nexport type ApiError = z.infer<typeof ApiErrorSchema>;","// Generated by scripts/generate-zod-schemas.mjs\n// DO NOT EDIT MANUALLY - This file is auto-generated from OpenAPI spec\n\nimport { z } from 'zod';\n\n/**\n * Query parameters for availability.show\n * Generated from OpenAPI operation: GET /properties/{property}/availability\n */\nexport const AvailabilityShowParamsSchema = z.object({\n start_date: z.string(),\n end_date: z.string()\n});\n\nexport type AvailabilityShowParams = z.infer<typeof AvailabilityShowParamsSchema>;\n\n\n// Request body schema for booking.store references: CreateBookingRequest\n\n// Request body schema for booking.createDraft references: BookingDraftRequest\n\n// Request body schema for booking.updateStep1 references: PersonalInfoRequest\n\n// Request body schema for booking.updateStep2 references: BookingDetailsRequest\n\n// Request body schema for booking.updateStep3 references: ReviewRequest\n\n/**\n * Query parameters for property.index\n * Generated from OpenAPI operation: GET /properties\n */\nexport const PropertyIndexParamsSchema = z.object({\n per_page: z.string().optional()\n});\n\nexport type PropertyIndexParams = z.infer<typeof PropertyIndexParamsSchema>;\n\n\n/**\n * Query parameters for property.search\n * Generated from OpenAPI operation: GET /properties/search\n */\nexport const PropertySearchParamsSchema = z.object({\n // Date filters\n arrival: z.string().nullable().optional(),\n departure: z.string().nullable().optional(),\n // Guest capacity\n guests: z.number().nullable().optional(),\n // Legacy filters (deprecated)\n destination: z.string().nullable().optional(),\n segment: z.string().nullable().optional(),\n // Direct column filters (preferred)\n city: z.string().nullable().optional(),\n area: z.string().nullable().optional(),\n street: z.string().nullable().optional(),\n property_type: z.string().nullable().optional(),\n // Numeric filters\n bedrooms: z.number().nullable().optional(),\n bathrooms: z.number().nullable().optional(),\n max_persons: z.number().nullable().optional(),\n // Boolean filters\n elevator: z.boolean().nullable().optional(),\n parking: z.boolean().nullable().optional(),\n balcony: z.boolean().nullable().optional()\n});\n\nexport type PropertySearchParams = z.infer<typeof PropertySearchParamsSchema>;\n\n","import { z } from \"zod\";\n\n// Property-related types and schemas\n\nexport const PropertyImageSchema = z.object({\n id: z.number(),\n url: z.string(),\n alt: z.string().optional(),\n});\n\nexport const PropertySchema = z.object({\n id: z.number(),\n external_id: z.string().nullable(),\n name: z.string(),\n slug: z.string(),\n\n // Descriptions\n short_description: z.string().nullable(),\n description: z.string(),\n area_description: z.string().nullable(),\n arrival_description: z.string().nullable(),\n payment_description: z.string().nullable(),\n\n // Property type & capacity\n type: z.string().nullable(),\n max_persons: z.number().nullable(),\n bedrooms: z.number().nullable(),\n bathrooms: z.number().nullable(),\n toilets: z.number().nullable(),\n size: z.number().nullable(),\n floor: z.number().nullable(),\n stairs: z.boolean().nullable(),\n\n // Location\n street: z.string().nullable(),\n zipcode: z.string().nullable(),\n area: z.string().nullable(),\n city: z.string(),\n country: z.string().nullable(),\n latitude: z.number(),\n longitude: z.number(),\n\n // Beds\n single_bed: z.number().nullable(),\n double_bed: z.number().nullable(),\n single_sofa: z.number().nullable(),\n double_sofa: z.number().nullable(),\n single_bunk: z.number().nullable(),\n\n // Amenities - Outdoor\n balcony: z.boolean(),\n patio: z.boolean().nullable(),\n garden: z.boolean().nullable(),\n roof_terrace: z.boolean().nullable(),\n view: z.string().nullable(),\n\n // Amenities - Climate\n airco: z.boolean(),\n fans: z.boolean(),\n heating: z.boolean(),\n\n // Amenities - Connectivity\n internet: z.string().nullable(),\n internet_connection: z.string().nullable(),\n tv: z.string().nullable(),\n tv_connection: z.string().nullable(),\n dvd: z.string().nullable(),\n computer: z.boolean(),\n printer: z.boolean(),\n\n // Amenities - Kitchen\n dishwasher: z.boolean(),\n oven: z.boolean(),\n microwave: z.boolean(),\n grill: z.number().nullable(),\n hob: z.number().nullable(),\n fridge: z.boolean(),\n freezer: z.boolean(),\n toaster: z.boolean(),\n kettle: z.boolean(),\n coffeemachine: z.boolean(),\n\n // Amenities - Laundry\n washingmachine: z.boolean(),\n dryer: z.boolean(),\n iron: z.boolean(),\n\n // Amenities - Bathroom\n bathtub: z.boolean(),\n jacuzzi: z.boolean(),\n shower_regular: z.boolean(),\n shower_steam: z.boolean(),\n hairdryer: z.boolean(),\n\n // Amenities - Recreation\n swimmingpool: z.string().nullable(),\n sauna: z.string().nullable(),\n\n // Amenities - General\n parking: z.string().nullable(),\n elevator: z.boolean().nullable(),\n entresol: z.boolean(),\n wheelchair_friendly: z.boolean(),\n smoking_allowed: z.boolean(),\n pets_allowed: z.boolean(),\n\n // Supplies\n supplies_coffee: z.boolean(),\n supplies_tea: z.boolean(),\n supplies_milk: z.boolean(),\n supplies_sugar: z.boolean(),\n supplies_dishwasher_tablets: z.boolean(),\n\n // Services\n service_linen: z.boolean(),\n service_towels: z.boolean(),\n\n // Costs & Policies\n cleaning_costs: z.number().nullable(),\n deposit_costs: z.number().nullable(),\n prepayment: z.number().nullable(),\n fee: z.number().nullable(),\n tax_vat: z.number().nullable(),\n tax_other: z.number().nullable(),\n tax_other_type: z.string().nullable(),\n minimal_nights: z.number().nullable(),\n maximal_nights: z.number().nullable(),\n\n // Dynamic pricing (calculated when arrival/departure dates provided)\n min_rate: z.number().nullable().optional(),\n\n // Availability & Check-in/out\n available_start: z.string().nullable(),\n available_end: z.string().nullable(),\n check_in: z.string().nullable(),\n check_out: z.string().nullable(),\n\n // Media\n images: z.array(z.object({\n id: z.number(),\n alt: z.string(),\n // Responsive image sizes\n small_url: z.string(), // 400×300\n medium_url: z.string(), // 800×600\n large_url: z.string(), // 1200×900\n srcset: z.string(), // Responsive srcset string\n // Default fallback (backward compatibility)\n url: z.string(),\n })).optional(),\n\n // Metadata\n status: z.string().nullable(),\n provider_name: z.string().nullable(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const AvailableDay = z.object({\n available: z.boolean(),\n morning_available: z.boolean(),\n date: z.string(),\n day: z.number(),\n stay_minimum: z.number(),\n});\n\nexport const AvailabilitySchema = z.object({\n days: z.record(z.string(), AvailableDay),\n});\n\n// Property Search schemas\n// NOTE: PropertySearchParamsSchema is now AUTO-GENERATED from OpenAPI spec\n// See: src/types/generated/schemas.ts (generated by scripts/generate-zod-schemas.mjs)\n// This ensures parameter schemas stay in sync with backend API automatically\nexport { PropertySearchParamsSchema } from './generated/schemas';\n\nexport const PropertySearchResultSchema = z.object({\n data: z.array(PropertySchema),\n});\n\nexport const PropertyPageSettingsSchema = z.object({\n routing: z.object({\n base_url: z.string(),\n }),\n index: z.object({\n seo: z.object({\n title: z.string(),\n description: z.string(),\n openGraphTitle: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n }),\n show: z\n .object({\n hero: z\n .object({\n provider: z.boolean().optional(),\n address: z.boolean().optional(),\n })\n .optional(),\n cancellation_policy: z\n .object({\n description: z.string(),\n })\n .optional(),\n related_properties: z\n .object({\n title: z.string(),\n })\n .optional(),\n })\n .optional(),\n});\n\n// Exported types\nexport type PropertyImage = z.infer<typeof PropertyImageSchema>;\nexport type Property = z.infer<typeof PropertySchema>;\nexport type Availability = z.infer<typeof AvailabilitySchema>;\nexport type PropertyPageSettings = z.infer<typeof PropertyPageSettingsSchema>;\n\n// Property Search types\n// NOTE: PropertySearchParams type is now AUTO-GENERATED from OpenAPI spec\nexport type { PropertySearchParams } from './generated/schemas';\nexport type PropertySearchResult = z.infer<typeof PropertySearchResultSchema>;\n","import { z } from \"zod\";\n\n// Content management types (pages, posts, etc.)\n\nexport const PageSchema = z.object({\n id: z.string(),\n slug: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n content: z.string().nullable(),\n sections: z.array(z.any()),\n seo: z.object({\n title: z.string(),\n description: z.string(),\n image: z.string().nullable(),\n }),\n route_name: z.string(),\n});\n\nexport const PostSchema = z.object({\n id: z.string(),\n slug: z.string(),\n title: z.string(),\n description: z.string().nullable(),\n content: z.string().nullable(),\n excerpt: z.string().nullable(),\n author: z.string().nullable(),\n date: z.string(), // ISO date string\n image: z.string().nullable(),\n tags: z.array(z.string()),\n reading_time: z.string().nullable(),\n sections: z.array(z.any()),\n seo: z.object({\n title: z.string(),\n description: z.string(),\n image: z.string().nullable(),\n }),\n route_name: z.string(),\n});\n\nexport const CategorySchema = z.object({\n slug: z.string(),\n name: z.string(),\n title: z.string(),\n description: z.string().nullable(),\n content: z.string().nullable(),\n segments: z.union([z.array(z.string()), z.number()]).optional(),\n});\n\nexport const CategorySegmentSchema = z.object({\n name: z.string(),\n slug: z.string(),\n title: z.string(),\n description: z.string().nullable(),\n tags: z.array(z.string()).optional(),\n sections: z.array(z.any()),\n content: z.string().nullable(),\n image: z.string(),\n});\n\n// Exported types\nexport type Page = z.infer<typeof PageSchema>;\nexport type Post = z.infer<typeof PostSchema>;\nexport type Category = z.infer<typeof CategorySchema>;\nexport type CategorySegment = z.infer<typeof CategorySegmentSchema>;\n","import { z } from 'zod';\n\n// Settings types based on actual Laravel instance configuration files\n\nexport const MainSettingsSchema = z.object({\n site: z.object({\n name: z.string(),\n domain: z.string(),\n locale: z.string(),\n }),\n contact: z.object({\n email: z.string(),\n phone: z.string().optional(),\n }),\n social: z.object({\n facebook: z.string().optional(),\n instagram: z.string().optional(),\n }).optional(),\n mail: z.object({\n from: z.object({\n address: z.string(),\n name: z.string(),\n }),\n contact_form_to: z.string(),\n }).optional(),\n pms: z.object({\n property_providers: z.array(z.object({\n name: z.string(),\n system: z.string(),\n api_key: z.string().optional(),\n base_url: z.string().optional(),\n discount: z.number().optional(),\n enabled: z.boolean().optional(),\n })),\n }).optional(),\n pricing: z.object({\n vat: z.number(),\n tourist_tax: z.object({\n type: z.string(),\n value: z.number(),\n }),\n }).optional(),\n discount: z.number().optional(),\n});\n\nexport const ThemeSettingsSchema = z.object({\n logo: z.object({\n path: z.string(),\n height: z.number().optional(),\n }).optional(),\n favicon_path: z.string().optional(),\n colors: z.object({\n primary: z.string(),\n secondary: z.string(),\n }),\n layout: z.object({\n homepage_style: z.string().optional(),\n navigation: z.object({\n variant: z.string().optional(),\n items: z.array(z.any()),\n buttons: z.array(z.any()).optional(),\n }).optional(),\n footer: z.object({\n blog_title: z.string().optional(),\n contact_title: z.string().optional(),\n categories: z.array(z.any()).optional(),\n }).optional(),\n }).optional(),\n});\n\nexport const PropertySettingsSchema = z.object({\n routing: z.object({\n base_url: z.string(),\n }),\n seo: z.object({\n title: z.string(),\n description: z.string(),\n openGraphTitle: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }).optional(),\n index: z.object({\n seo: z.object({\n title: z.string(),\n description: z.string(),\n openGraphTitle: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n }),\n show: z.object({\n hero: z.object({\n provider: z.boolean().optional(),\n address: z.boolean().optional(),\n }).optional(),\n cancellation_policy: z.object({\n description: z.string(),\n }).optional(),\n related_properties: z.object({\n title: z.string(),\n }).optional(),\n }).optional(),\n});\n\nexport const BookingSettingsSchema = z.object({\n booking_confirmation: z.object({\n sections: z.object({\n arrival_description: z.boolean().optional(),\n }).optional(),\n content: z.object({\n body: z.string().optional(),\n help: z.string().optional(),\n }).optional(),\n }).optional(),\n});\n\n// Exported types\nexport type MainSettings = z.infer<typeof MainSettingsSchema>;\nexport type ThemeSettings = z.infer<typeof ThemeSettingsSchema>;\nexport type PropertySettings = z.infer<typeof PropertySettingsSchema>;\nexport type BookingSettings = z.infer<typeof BookingSettingsSchema>;","import { z } from 'zod';\n\n/**\n * Booking-related types and schemas for the 3-step booking wizard\n */\n\n// Enums\nexport type BookingStatus =\n | 'pending_details'\n | 'waiting_payment'\n | 'fresh'\n | 'confirmed'\n | 'cancelled'\n | 'completed';\n\nexport type PaymentMethod = 'stripe' | 'bank_transfer' | 'cash';\n\n// Step 1: Draft Creation\nexport interface BookingDraftRequest {\n property_id: number;\n arrival: string; // YYYY-MM-DD\n departure: string; // YYYY-MM-DD\n amount_adults: number;\n amount_children: number;\n}\n\nexport interface BookingDraftResponse {\n uuid: string;\n status: 'pending_details';\n property_id: number;\n arrival: string;\n departure: string;\n amount_adults: number;\n amount_children: number;\n total_price: number;\n nights: number;\n expires_at: string;\n created_at: string;\n updated_at: string;\n}\n\n// Step 2: Personal Information\nexport interface PersonalInfoRequest {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n address_1: string;\n address_2?: string;\n postal_code?: string;\n city: string;\n country: string;\n}\n\n// Step 3: Booking Details\nexport interface BookingDetailsRequest {\n time_arrival: string; // HH:MM\n flight?: string;\n notes?: string;\n}\n\n// Step 4: Review & Confirmation\nexport interface ReviewRequest {\n terms_accepted: boolean;\n marketing_consent?: boolean;\n}\n\n// Supporting Types\nexport interface PriceBreakdown {\n base_price: number;\n cleaning_fee: number;\n tourist_tax: number;\n vat: number;\n total: number;\n}\n\nexport interface PropertySummary {\n id: number;\n name: string;\n slug: string;\n city: string;\n image: string;\n max_guests: number;\n}\n\n// Full Booking Response (used for GET and step updates)\nexport interface BookingResponse {\n uuid: string;\n status: BookingStatus;\n property_id: number;\n property?: PropertySummary;\n arrival: string;\n departure: string;\n amount_adults: number;\n amount_children: number;\n first_name?: string;\n last_name?: string;\n email?: string;\n phone?: string;\n address_1?: string;\n address_2?: string;\n postal_code?: string;\n city?: string;\n country?: string;\n time_arrival?: string;\n flight?: string;\n notes?: string;\n terms_accepted?: boolean;\n marketing_consent?: boolean;\n total_price: number;\n price_breakdown?: PriceBreakdown;\n nights: number;\n expires_at: string;\n created_at: string;\n updated_at: string;\n}\n\n// Confirmation Response\nexport interface BookingConfirmResponse {\n message: string;\n data: {\n uuid: string;\n status: BookingStatus;\n property_id: number;\n arrival: string;\n departure: string;\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n address_1: string;\n address_2?: string;\n postal_code?: string;\n city: string;\n country: string;\n amount_adults: number;\n amount_children: number;\n time_arrival: string;\n flight?: string;\n notes?: string;\n external_id?: string;\n identifier?: string;\n balance_due: number;\n created_at: string;\n updated_at: string;\n };\n stripe_url?: string;\n}\n\n// Zod Schemas for validation\nexport const BookingDraftRequestSchema = z.object({\n property_id: z.number().int().positive(),\n arrival: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n departure: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n amount_adults: z.number().int().min(1),\n amount_children: z.number().int().min(0),\n});\n\nexport const BookingDraftResponseSchema = z.object({\n uuid: z.string().uuid(),\n status: z.literal('pending_details'),\n property_id: z.number(),\n arrival: z.string(),\n departure: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n total_price: z.number(),\n nights: z.number(),\n expires_at: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const PersonalInfoRequestSchema = z.object({\n first_name: z.string().min(1).max(255),\n last_name: z.string().min(1).max(255),\n email: z.string().email().max(255),\n phone: z.string().max(50),\n address_1: z.string().min(1).max(255),\n address_2: z.string().max(255).optional(),\n postal_code: z.string().max(20).optional(),\n city: z.string().min(1).max(100),\n country: z.string().min(1).max(100),\n});\n\nexport const BookingDetailsRequestSchema = z.object({\n time_arrival: z.string().regex(/^([01]\\d|2[0-3]):([0-5]\\d)$/),\n flight: z.string().max(50).optional(),\n notes: z.string().max(1000).optional(),\n});\n\nexport const ReviewRequestSchema = z.object({\n terms_accepted: z.boolean().refine(val => val === true, {\n message: \"Terms must be accepted\"\n }),\n marketing_consent: z.boolean().optional(),\n});\n\nexport const PropertySummarySchema = z.object({\n id: z.number(),\n name: z.string(),\n slug: z.string(),\n city: z.string(),\n image: z.string(),\n max_guests: z.number(),\n});\n\nexport const PriceBreakdownSchema = z.object({\n base_price: z.number(),\n cleaning_fee: z.number(),\n tourist_tax: z.number(),\n vat: z.number(),\n total: z.number(),\n});\n\n// Pricing Response (from GET /api/v1/bookings/{uuid}/pricing)\nexport interface BookingPricingResponse {\n uuid: string;\n property_id: number;\n arrival: string;\n departure: string;\n amount_adults: number;\n amount_children: number;\n nights: number;\n total_price: number;\n price_per_night: number;\n currency: string;\n}\n\nexport const BookingPricingResponseSchema = z.object({\n uuid: z.string().uuid(),\n property_id: z.number(),\n arrival: z.string(),\n departure: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n nights: z.number(),\n total_price: z.number(),\n price_per_night: z.number(),\n currency: z.string(),\n});\n\nexport const BookingResponseSchema = z.object({\n uuid: z.string().uuid(),\n status: z.enum(['pending_details', 'waiting_payment', 'fresh', 'confirmed', 'cancelled', 'completed']),\n property_id: z.number(),\n property: PropertySummarySchema.optional(),\n arrival: z.string(),\n departure: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n first_name: z.string().nullish(),\n last_name: z.string().nullish(),\n email: z.string().nullish(),\n phone: z.string().nullish(),\n address_1: z.string().nullish(),\n address_2: z.string().nullish(),\n postal_code: z.string().nullish(),\n city: z.string().nullish(),\n country: z.string().nullish(),\n time_arrival: z.string().nullish(),\n flight: z.string().nullish(),\n notes: z.string().nullish(),\n terms_accepted: z.boolean().nullish(),\n marketing_consent: z.boolean().nullish(),\n total_price: z.number(),\n price_breakdown: PriceBreakdownSchema.optional(),\n nights: z.number(),\n expires_at: z.string().nullish(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const BookingConfirmResponseSchema = z.object({\n message: z.string(),\n data: z.object({\n uuid: z.string().uuid(),\n status: z.enum(['pending_details', 'waiting_payment', 'fresh', 'confirmed', 'cancelled', 'completed']),\n property_id: z.number(),\n arrival: z.string(),\n departure: z.string(),\n first_name: z.string(),\n last_name: z.string(),\n email: z.string(),\n phone: z.string(),\n address_1: z.string(),\n address_2: z.string().optional(),\n postal_code: z.string().optional(),\n city: z.string(),\n country: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n time_arrival: z.string(),\n flight: z.string().optional(),\n notes: z.string().optional(),\n external_id: z.string().optional(),\n identifier: z.string().optional(),\n balance_due: z.number(),\n created_at: z.string(),\n updated_at: z.string(),\n }),\n stripe_url: z.string().optional(),\n});\n\n","// Main types index - exports all types from categorized modules\n\n// Common types\nexport * from './common';\n\n// Property types\nexport * from './properties';\nexport {\n PropertySchema,\n AvailabilitySchema,\n PropertySearchResultSchema,\n} from './properties';\n\n// Content types\nexport * from './content';\nexport {\n PageSchema,\n PostSchema,\n} from './content';\n\n// Settings types\nexport * from './settings';\nexport {\n MainSettingsSchema,\n ThemeSettingsSchema,\n PropertySettingsSchema,\n BookingSettingsSchema,\n} from './settings';\n\n// Booking types\nexport * from './bookings';\nexport {\n BookingResponseSchema,\n BookingDraftRequestSchema,\n BookingDraftResponseSchema,\n PersonalInfoRequestSchema,\n BookingDetailsRequestSchema,\n ReviewRequestSchema,\n BookingConfirmResponseSchema,\n BookingPricingResponseSchema,\n PropertySummarySchema,\n PriceBreakdownSchema,\n} from './bookings';\n\n// Configuration types\nimport { z } from 'zod';\n\nexport const MoreApartmentsConfigSchema = z.object({\n baseUrl: z.string().optional(),\n apiKey: z.string().optional(),\n instance: z.string().optional(),\n timeout: z.number().optional(),\n retry: z.object({\n attempts: z.number(),\n delay: z.number(),\n }).optional(),\n cache: z.object({\n enabled: z.boolean(),\n ttl: z.number(),\n }).optional(),\n});\n\nexport type MoreApartmentsConfig = z.infer<typeof MoreApartmentsConfigSchema>;","import { z } from 'zod';\nimport type {\n MoreApartmentsConfig,\n Property,\n PaginatedResponse,\n Page,\n Post,\n Category,\n CategorySegment,\n MainSettings,\n ThemeSettings,\n PropertySettings,\n BookingSettings,\n Availability,\n BookingResponse,\n PropertySearchParams,\n PropertySearchResult,\n BookingDraftRequest,\n BookingDraftResponse,\n PersonalInfoRequest,\n BookingDetailsRequest,\n ReviewRequest,\n BookingConfirmResponse,\n BookingPricingResponse,\n PaymentMethod,\n} from './types';\nimport {\n PropertySchema,\n PaginatedResponseSchema,\n PageSchema,\n PostSchema,\n CategorySchema,\n CategorySegmentSchema,\n MainSettingsSchema,\n ThemeSettingsSchema,\n PropertySettingsSchema,\n BookingSettingsSchema,\n AvailabilitySchema,\n BookingResponseSchema,\n ApiErrorSchema,\n PropertySearchParamsSchema,\n PropertySearchResultSchema,\n BookingDraftResponseSchema,\n BookingConfirmResponseSchema,\n BookingPricingResponseSchema,\n} from './types';\n\nexport class MoreApartmentsClient {\n private config: Required<MoreApartmentsConfig>;\n private cache: Map<string, { data: any; timestamp: number }> = new Map();\n\n /**\n * Clear all cached data\n */\n clearCache(): void {\n this.cache.clear();\n }\n\n /**\n * Get cache statistics\n */\n getCacheStats(): { entries: number; size: number } {\n return {\n entries: this.cache.size,\n size: Array.from(this.cache.values()).reduce((total, entry) => {\n return total + JSON.stringify(entry.data).length;\n }, 0),\n };\n }\n\n constructor(config: MoreApartmentsConfig) {\n this.config = {\n baseUrl: config.baseUrl?.replace(/\\/$/, '') || '',\n apiKey: config.apiKey || '',\n instance: config.instance || '',\n timeout: config.timeout || 30000,\n retry: {\n attempts: config.retry?.attempts || 3,\n delay: config.retry?.delay || 1000,\n },\n cache: {\n enabled: config.cache?.enabled ?? true,\n ttl: config.cache?.ttl || 300000, // 5 minutes default\n },\n };\n }\n\n private async fetchWithRetry<T>(\n url: string,\n options: RequestInit = {},\n schema?: any\n ): Promise<T> {\n const cacheKey = `${options.method || 'GET'}:${url}`;\n\n // Check cache for GET requests\n if (this.config.cache?.enabled && (!options.method || options.method === 'GET')) {\n const cached = this.cache.get(cacheKey);\n if (cached && this.config.cache?.ttl && Date.now() - cached.timestamp < this.config.cache.ttl) {\n return cached.data as T;\n }\n }\n\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n ...(this.config.apiKey && { 'Authorization': `Bearer ${this.config.apiKey}` }),\n ...options.headers,\n };\n\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt < (this.config.retry?.attempts ?? 3); attempt++) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => {\n controller.abort();\n }, this.config.timeout);\n\n const response = await fetch(url, {\n ...options,\n headers,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ message: response.statusText }));\n throw new Error(error.message || `HTTP ${response.status}: ${response.statusText}`);\n }\n\n const data = await response.json();\n\n // Validate with schema if provided\n if (schema) {\n const result = schema.safeParse(data);\n if (!result.success) {\n throw new Error(`Invalid response format: ${result.error.message}`);\n }\n const validatedData = result.data as T;\n\n // Cache successful GET requests\n if (this.config.cache?.enabled && (!options.method || options.method === 'GET')) {\n this.cache.set(cacheKey, { data: validatedData, timestamp: Date.now() });\n }\n\n return validatedData;\n }\n\n // Cache successful GET requests\n if (this.config.cache?.enabled && (!options.method || options.method === 'GET')) {\n this.cache.set(cacheKey, { data, timestamp: Date.now() });\n }\n\n return data as T;\n } catch (error) {\n lastError = error as Error;\n\n if (attempt < (this.config.retry?.attempts ?? 3) - 1) {\n await new Promise(resolve => setTimeout(resolve, (this.config.retry?.delay ?? 1000) * (attempt + 1)));\n }\n }\n }\n\n throw lastError || new Error('Request failed');\n }\n\n // Property endpoints\n async getProperties(params?: {\n page?: number;\n per_page?: number;\n }): Promise<PaginatedResponse<Property>> {\n const queryParams = new URLSearchParams();\n if (params?.page) queryParams.append('page', params.page.toString());\n if (params?.per_page) queryParams.append('per_page', params.per_page.toString());\n\n const url = `${this.config.baseUrl}/api/v1/properties${queryParams.toString() ? '?' + queryParams.toString() : ''}`;\n return this.fetchWithRetry(url, {}, PaginatedResponseSchema(PropertySchema));\n }\n\n async getProperty(propertyIdOrSlug: number | string): Promise<Property> {\n const url = `${this.config.baseUrl}/api/v1/properties/${propertyIdOrSlug}`;\n const response = await this.fetchWithRetry<{ data: Property }>(url, {}, z.object({ data: PropertySchema }));\n return response.data;\n }\n\n // Availability endpoints\n async getAvailability(\n propertySlug: string,\n startDate: string,\n endDate: string\n ): Promise<Availability> {\n const queryParams = new URLSearchParams({\n start_date: startDate,\n end_date: endDate,\n });\n const url = `${this.config.baseUrl}/api/v1/properties/${propertySlug}/availability?${queryParams}`;\n const response = await this.fetchWithRetry<{ data: Availability }>(url, {}, z.object({ data: AvailabilitySchema }));\n return response.data;\n }\n\n /**\n * Get property calendar with pricing information (legacy endpoint)\n * Returns daily rates and availability for the specified date range\n */\n async getPropertyCalendar(\n propertySlug: string,\n fromDate: string,\n toDate: string\n ): Promise<Array<{\n date: string;\n available: boolean;\n season: string;\n final_rate: number;\n stay_minimum: number;\n }>> {\n const queryParams = new URLSearchParams({\n from: fromDate,\n to: toDate,\n });\n const url = `${this.config.baseUrl}/api/properties/${propertySlug}/calendars?${queryParams}`;\n const response = await this.fetchWithRetry<{ data: Array<{\n date: string;\n available: boolean;\n season: string;\n final_rate: number;\n stay_minimum: number;\n }> }>(url);\n return response.data;\n }\n\n // Content endpoints\n async getPages(): Promise<Page[]> {\n const url = `${this.config.baseUrl}/api/v1/pages`;\n const response = await this.fetchWithRetry<{ data: Page[] }>(url, {}, z.object({ data: z.array(PageSchema) }));\n return response.data;\n }\n\n async getPage(slug: string): Promise<Page> {\n const url = `${this.config.baseUrl}/api/v1/pages/${slug}`;\n const response = await this.fetchWithRetry<{ data: Page }>(url, {}, z.object({ data: PageSchema }));\n return response.data;\n }\n\n async getPosts(params?: {\n page?: number;\n per_page?: number;\n tag?: string;\n }): Promise<Post[]> {\n const queryParams = new URLSearchParams();\n if (params?.page) queryParams.append('page', params.page.toString());\n if (params?.per_page) queryParams.append('per_page', params.per_page.toString());\n if (params?.tag) queryParams.append('tag', params.tag);\n\n const url = `${this.config.baseUrl}/api/v1/posts${queryParams.toString() ? '?' + queryParams.toString() : ''}`;\n const response = await this.fetchWithRetry<{ data: Post[] }>(url, {}, z.object({ data: z.array(PostSchema) }));\n return response.data;\n }\n\n async getPost(slug: string): Promise<Post> {\n const url = `${this.config.baseUrl}/api/v1/posts/${slug}`;\n const response = await this.fetchWithRetry<{ data: Post }>(url, {}, z.object({ data: PostSchema }));\n return response.data;\n }\n\n async getLocations(): Promise<any> {\n const url = `${this.config.baseUrl}/api/v1/locations`;\n const response = await this.fetchWithRetry<{ data: string[] }>(url, {}, z.object({ data: z.array(z.string()) }));\n return response.data;\n }\n\n async getCategories(): Promise<Category[]> {\n const url = `${this.config.baseUrl}/api/v1/categories`;\n const response = await this.fetchWithRetry<{ data: Category[] }>(url, {}, z.object({ data: z.array(CategorySchema) }));\n return response.data;\n }\n\n async getCategory(slug: string): Promise<Category> {\n const url = `${this.config.baseUrl}/api/v1/categories/${slug}`;\n const response = await this.fetchWithRetry<{ data: Category }>(url, {}, z.object({ data: CategorySchema }));\n return response.data;\n }\n\n async getCategorySegments(slug: string): Promise<CategorySegment[]> {\n const url = `${this.config.baseUrl}/api/v1/categories/${slug}/segments`;\n const response = await this.fetchWithRetry<{ data: CategorySegment[] }>(url, {}, z.object({ data: z.array(CategorySegmentSchema) }));\n return response.data;\n }\n\n async getCategorySegment(slug: string, segment: string): Promise<CategorySegment> {\n const url = `${this.config.baseUrl}/api/v1/categories/${slug}/segments/${segment}`;\n const response = await this.fetchWithRetry<{ data: CategorySegment }>(url, {}, z.object({ data: CategorySegmentSchema }));\n return response.data;\n }\n\n // Settings endpoints\n async getMainSettings(): Promise<MainSettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/main`;\n const response = await this.fetchWithRetry<{ data: MainSettings }>(url, {}, z.object({ data: MainSettingsSchema }));\n return response.data;\n }\n\n async getThemeSettings(): Promise<ThemeSettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/theme`;\n const response = await this.fetchWithRetry<{ data: ThemeSettings }>(url, {}, z.object({ data: ThemeSettingsSchema }));\n return response.data;\n }\n\n async getPropertySettings(): Promise<PropertySettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/properties`;\n const response = await this.fetchWithRetry<{ data: PropertySettings }>(url, {}, z.object({ data: PropertySettingsSchema }));\n return response.data;\n }\n\n async getBookingSettings(): Promise<BookingSettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/booking`;\n const response = await this.fetchWithRetry<{ data: BookingSettings }>(url, {}, z.object({ data: BookingSettingsSchema }));\n return response.data;\n }\n\n // Booking endpoints - 3-step wizard flow\n\n /**\n * Create a booking draft with property and dates\n * @param data Draft booking data (property, dates, guests)\n * @returns BookingDraftResponse with UUID and status\n */\n async createBookingDraft(data: BookingDraftRequest): Promise<BookingDraftResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/draft`;\n const response = await this.fetchWithRetry<BookingDraftResponse>(\n url,\n {\n method: 'POST',\n body: JSON.stringify(data),\n },\n BookingDraftResponseSchema\n );\n return response;\n }\n\n /**\n * Update booking with personal information (Step 1)\n * @param uuid Booking UUID\n * @param data Personal info (name, email, phone, address)\n * @returns Updated BookingResponse\n */\n async updateBookingStep1(\n uuid: string,\n data: PersonalInfoRequest\n ): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/step-1`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Update booking with arrival details (Step 2)\n * @param uuid Booking UUID\n * @param data Arrival time, flight, notes\n * @returns Updated BookingResponse\n */\n async updateBookingStep2(\n uuid: string,\n data: BookingDetailsRequest\n ): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/step-2`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Update booking with review data (Step 3)\n * @param uuid Booking UUID\n * @param data Terms acceptance, marketing consent\n * @returns Updated BookingResponse with price breakdown\n */\n async updateBookingStep3(\n uuid: string,\n data: ReviewRequest\n ): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/step-3`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Confirm booking and get payment URL\n * @param uuid Booking UUID\n * @param paymentMethod Payment method (stripe, bank_transfer, cash)\n * @returns Confirmation response with payment URL\n */\n async confirmBooking(\n uuid: string,\n paymentMethod: PaymentMethod = 'stripe'\n ): Promise<BookingConfirmResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/confirm`;\n const response = await this.fetchWithRetry<BookingConfirmResponse>(\n url,\n {\n method: 'POST',\n body: JSON.stringify({ payment_method: paymentMethod }),\n },\n BookingConfirmResponseSchema\n );\n return response;\n }\n\n /**\n * Get current booking state\n * @param uuid Booking UUID\n * @returns Full BookingResponse with all data\n */\n async getBookingState(uuid: string): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/state`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n { method: 'GET' },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Get pricing details for a booking\n * @param uuid Booking UUID\n * @returns Pricing breakdown with total, per-night rate, and currency\n */\n async getPricing(uuid: string): Promise<BookingPricingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/pricing`;\n const response = await this.fetchWithRetry<BookingPricingResponse>(\n url,\n { method: 'GET' },\n BookingPricingResponseSchema\n );\n return response;\n }\n\n /**\n * Search properties with advanced filtering\n */\n async searchProperties(params: PropertySearchParams): Promise<Property[]> {\n const searchParams = new URLSearchParams();\n\n // Date filters\n if (params.arrival) searchParams.set('arrival', params.arrival);\n if (params.departure) searchParams.set('departure', params.departure);\n\n // Guest capacity\n if (params.guests) searchParams.set('guests', params.guests.toString());\n\n // General search (deprecated)\n if (params.destination) searchParams.set('destination', params.destination);\n if (params.segment) searchParams.set('segment', params.segment);\n\n // Direct column filters (preferred for headless instances)\n if (params.city) searchParams.set('city', params.city);\n if (params.area) searchParams.set('area', params.area);\n if (params.street) searchParams.set('street', params.street);\n if (params.property_type) searchParams.set('property_type', params.property_type);\n if (params.bedrooms !== undefined && params.bedrooms !== null) searchParams.set('bedrooms', params.bedrooms.toString());\n if (params.bathrooms !== undefined && params.bathrooms !== null) searchParams.set('bathrooms', params.bathrooms.toString());\n if (params.max_persons !== undefined && params.max_persons !== null) searchParams.set('max_persons', params.max_persons.toString());\n if (params.elevator !== undefined) searchParams.set('elevator', params.elevator ? '1' : '0');\n if (params.parking !== undefined) searchParams.set('parking', params.parking ? '1' : '0');\n if (params.balcony !== undefined) searchParams.set('balcony', params.balcony ? '1' : '0');\n\n const url = `${this.config.baseUrl}/api/v1/properties/search?${searchParams.toString()}`;\n const response = await this.fetchWithRetry<PropertySearchResult>(url, {}, PropertySearchResultSchema);\n return response.data;\n }\n\n}\n","import type { Property, PropertyImage } from '../types/properties';\n\n/**\n * Image utility functions for handling property images\n * Following Astro best practices for image handling\n */\n\n/**\n * Get primary image URL from property\n * @param property - Property object with optional images array\n * @param fallbackUrl - Optional fallback image URL\n * @returns Image URL string\n */\nexport function getPrimaryImageUrl(\n\tproperty: Property,\n\tfallbackUrl?: string\n): string {\n\tif (property.images && property.images.length > 0) {\n\t\treturn property.images[0].url;\n\t}\n\tif (fallbackUrl) {\n\t\treturn fallbackUrl;\n\t}\n\tthrow new Error(`Property \"${property.name}\" (ID: ${property.id}) has no images`);\n}\n\n/**\n * Get thumbnail image URL from property\n * Uses small_url (400×300) for efficient thumbnails\n * @param property - Property object with optional images array\n * @param fallbackUrl - Optional fallback image URL\n * @returns Thumbnail URL string\n */\nexport function getThumbnailUrl(\n\tproperty: Property,\n\tfallbackUrl?: string\n): string {\n\tif (property.images && property.images.length > 0) {\n\t\treturn property.images[0].small_url;\n\t}\n\tif (fallbackUrl) {\n\t\treturn fallbackUrl;\n\t}\n\tthrow new Error(`Property \"${property.name}\" (ID: ${property.id}) has no thumbnail images`);\n}\n\n/**\n * Get all image URLs from property\n * @param property - Property object with optional images array\n * @returns Array of image URL strings\n */\nexport function getAllImageUrls(property: Property): string[] {\n\treturn property.images?.map((img) => img.url) || [];\n}\n\n/**\n * Get all thumbnail URLs from property\n * Uses small_url (400×300) for efficient thumbnails\n * @param property - Property object with optional images array\n * @returns Array of thumbnail URL strings\n */\nexport function getAllThumbnailUrls(property: Property): string[] {\n\treturn property.images?.map((img) => img.small_url) || [];\n}\n\n/**\n * Get image with alt text for accessibility\n * @param property - Property object\n * @param index - Image index (default 0)\n * @returns Object with url and alt text\n */\nexport function getImageWithAlt(\n\tproperty: Property,\n\tindex: number = 0\n): { url: string; alt: string } {\n\tconst image = property.images?.[index];\n\tif (!image?.url) {\n\t\tthrow new Error(`Property \"${property.name}\" (ID: ${property.id}) has no image at index ${index}`);\n\t}\n\treturn {\n\t\turl: image.url,\n\t\talt: image.alt || property.name,\n\t};\n}\n\n/**\n * Get complete image object by index\n * @param property - Property object\n * @param index - Image index (default 0)\n * @returns PropertyImage object or null\n */\nexport function getImage(\n\tproperty: Property,\n\tindex: number = 0\n): PropertyImage | null {\n\treturn property.images?.[index] || null;\n}\n\n/**\n * Check if property has images\n * @param property - Property object\n * @returns Boolean indicating if property has images\n */\nexport function hasImages(property: Property): boolean {\n\treturn !!(\n\t\tproperty.images &&\n\t\tArray.isArray(property.images) &&\n\t\tproperty.images.length > 0\n\t);\n}\n\n/**\n * Get image count\n * @param property - Property object\n * @returns Number of images\n */\nexport function getImageCount(property: Property): number {\n\treturn Array.isArray(property.images) ? property.images.length : 0;\n}\n","import type { AstroIntegration, AstroConfig } from 'astro';\nimport type { MoreApartmentsConfig } from './types';\nimport { MoreApartmentsClient } from './client';\n\nexport * from './types';\nexport { MoreApartmentsClient } from './client';\n\n// Export image utilities\nexport {\n\tgetPrimaryImageUrl,\n\tgetThumbnailUrl,\n\tgetAllImageUrls,\n\tgetAllThumbnailUrls,\n\tgetImageWithAlt,\n\tgetImage,\n\thasImages,\n\tgetImageCount,\n} from './utils/images';\n\n// Export components (note: these must be imported as .astro files in user projects)\n// Example: import PropertyBookingWidget from '@shelfwood/more-apartments-astro-integration/components/PropertyBookingWidget.astro';\n\ninterface MoreApartmentsIntegrationOptions extends MoreApartmentsConfig {\n /**\n * Enable virtual modules for importing API data in Astro components\n * @default true\n */\n virtualModules?: boolean;\n\n /**\n * Inject global API client\n * @default true\n */\n injectClient?: boolean;\n\n /**\n * Add API routes for proxying requests (recommended for security)\n * @default true\n */\n addApiRoutes?: boolean;\n\n /**\n * API route prefix when addApiRoutes is true\n * @default '/api/apartments'\n */\n apiRoutePrefix?: string;\n\n /**\n * Path to instance directory for file watching in development\n * Enables hot-reload when instance content changes\n * @example '../prj-more-apartments/instance/stayci.com'\n */\n instancePath?: string;\n\n /**\n * Path to More Apartments project root directory\n * Used for auto-loading .headless-token file during local development\n * @example '../prj-more-apartments'\n */\n projectPath?: string;\n}\n\nexport default function moreApartmentsIntegration(\n options: MoreApartmentsIntegrationOptions\n): AstroIntegration {\n let config: AstroConfig;\n let client: MoreApartmentsClient;\n\n return {\n name: '@shelfwood/more-apartments-astro-integration',\n hooks: {\n 'astro:config:setup': async ({\n config: astroConfig,\n updateConfig,\n injectScript,\n injectRoute,\n logger,\n }) => {\n config = astroConfig;\n\n // Auto-discover API key from project root if available\n let apiKey = options.apiKey;\n let apiKeySource = 'environment variable';\n\n if (options.projectPath && !apiKey) {\n try {\n const fs = await import('fs');\n const path = await import('path');\n const resolvedProjectPath = path.resolve(process.cwd(), options.projectPath);\n const tokenPath = path.join(resolvedProjectPath, '.headless-token');\n\n if (fs.existsSync(tokenPath)) {\n apiKey = fs.readFileSync(tokenPath, 'utf-8').trim();\n apiKeySource = `.headless-token`;\n logger.info(`✓ Using development API key from ${apiKeySource}`);\n } else {\n logger.warn(`Project directory configured but .headless-token not found at ${resolvedProjectPath}`);\n }\n } catch (error) {\n logger.debug(`Could not read .headless-token: ${error}`);\n }\n } else if (apiKey) {\n logger.info(`✓ Using API key from ${apiKeySource}`);\n } else {\n logger.warn('⚠️ No API key configured. Set MORE_APARTMENTS_API_KEY or configure projectPath for auto-discovery');\n }\n\n const clientOptions = { ...options, apiKey };\n client = new MoreApartmentsClient(clientOptions);\n\n // Add virtual modules for easy importing\n if (options.virtualModules !== false) {\n updateConfig({\n vite: {\n plugins: [\n {\n name: 'more-apartments-virtual-modules',\n resolveId(id) {\n if (id === 'virtual:more-apartments/client') {\n return '\\0virtual:more-apartments/client';\n }\n if (id === 'virtual:more-apartments/config') {\n return '\\0virtual:more-apartments/config';\n }\n },\n load(id) {\n if (id === '\\0virtual:more-apartments/client') {\n // Only include safe client-side config, excluding apiKey for security\n const clientConfig = {\n baseUrl: options.baseUrl,\n instance: options.instance,\n // Never include apiKey in client-side code\n };\n return `\n import { MoreApartmentsClient } from '@shelfwood/more-apartments-astro-integration';\n\n const config = ${JSON.stringify(clientConfig)};\n export const client = new MoreApartmentsClient(config);\n export default client;\n `;\n }\n if (id === '\\0virtual:more-apartments/config') {\n // Only include safe configuration for client-side\n const clientConfig = {\n baseUrl: options.baseUrl,\n instance: options.instance,\n };\n return `export default ${JSON.stringify(clientConfig)};`;\n }\n },\n },\n ],\n },\n });\n\n logger.info('Virtual modules configured for More Apartments API');\n }\n\n // Inject global client if requested (client-side safe configuration only)\n if (options.injectClient !== false) {\n injectScript(\n 'before-hydration',\n `\n window.__moreApartments = {\n baseUrl: '${options.baseUrl}',\n instance: '${options.instance || ''}',\n // apiKey intentionally excluded for security\n };\n `\n );\n logger.info('Global More Apartments client injected (client-side safe config)');\n }\n\n // Add API proxy routes if requested (default to true for security)\n if (options.addApiRoutes !== false) {\n const routePrefix = options.apiRoutePrefix || '/api/apartments';\n \n // Properties endpoints\n injectRoute({\n pattern: `${routePrefix}/properties`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/properties.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/properties/[slug]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/property.js',\n });\n \n // Availability endpoint\n injectRoute({\n pattern: `${routePrefix}/properties/[slug]/availability`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/availability.js',\n });\n \n // Content endpoints\n injectRoute({\n pattern: `${routePrefix}/pages`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/pages.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/pages/[slug]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/page.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/posts`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/posts.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/posts/[slug]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/post.js',\n });\n \n // Settings endpoints\n injectRoute({\n pattern: `${routePrefix}/settings/[type]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/settings.js',\n });\n \n // Booking endpoints\n injectRoute({\n pattern: `${routePrefix}/bookings`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/bookings.js',\n });\n\n logger.info(`API proxy routes added at ${routePrefix}`);\n }\n },\n\n 'astro:config:done': ({ config: finalConfig, logger }) => {\n config = finalConfig;\n logger.info('More Apartments integration configured successfully');\n },\n\n 'astro:server:setup': async ({ server, logger }) => {\n // Add development server middleware for API requests\n server.middlewares.use((req, res, next) => {\n // Log API requests in development\n if (req.url?.startsWith('/api/apartments')) {\n logger.debug(`API request: ${req.method} ${req.url}`);\n }\n next();\n });\n\n // Debug: Log instancePath value\n logger.info(`Instance path config: ${options.instancePath || 'not set'}`);\n\n // Watch instance directory for changes if path is configured\n if (options.instancePath) {\n const path = await import('path');\n const chokidar = await import('chokidar');\n\n const resolvedPath = path.resolve(process.cwd(), options.instancePath);\n\n logger.info(`Watching instance directory: ${resolvedPath}`);\n\n const watcher = chokidar.watch(resolvedPath, {\n ignored: /(^|[\\/\\\\])\\../, // ignore dotfiles\n persistent: true,\n ignoreInitial: true,\n });\n\n watcher.on('change', (filePath) => {\n logger.info(`Instance file changed: ${path.relative(resolvedPath, filePath)}`);\n // Trigger HMR for all modules to force re-fetch from API\n server.ws.send({\n type: 'full-reload',\n path: '*',\n });\n });\n\n watcher.on('add', (filePath) => {\n logger.info(`Instance file added: ${path.relative(resolvedPath, filePath)}`);\n server.ws.send({\n type: 'full-reload',\n path: '*',\n });\n });\n\n watcher.on('unlink', (filePath) => {\n logger.info(`Instance file removed: ${path.relative(resolvedPath, filePath)}`);\n server.ws.send({\n type: 'full-reload',\n path: '*',\n });\n });\n\n // Clean up watcher on server close\n server.httpServer?.on('close', () => {\n watcher.close();\n });\n }\n },\n\n 'astro:build:done': ({ logger }) => {\n logger.info('More Apartments integration build complete');\n },\n },\n };\n}\n\n/**\n * Helper functions for use in Astro components\n * These functions provide built-in error handling and return safe defaults on failure\n */\n\n/**\n * Fetch paginated properties with error handling\n * @param client - MoreApartmentsClient instance\n * @param params - Optional pagination parameters\n * @returns Properties response with data array, or empty array on error\n * @example\n * ```astro\n * ---\n * import client from 'virtual:more-apartments/client';\n * import { fetchProperties } from '@shelfwood/more-apartments-astro-integration';\n *\n * const properties = await fetchProperties(client, { page: 1, per_page: 10 });\n * ---\n * ```\n */\nexport async function fetchProperties(\n client: MoreApartmentsClient,\n params?: { page?: number; per_page?: number }\n) {\n try {\n return await client.getProperties(params);\n } catch (error) {\n console.error('Error fetching properties:', error);\n return { data: [], links: {}, meta: {} as any };\n }\n}\n\n/**\n * Fetch a single property by ID or slug with error handling\n * @param client - MoreApartmentsClient instance\n * @param idOrSlug - Property ID or slug identifier\n * @returns Property object or null on error\n * @example\n * ```astro\n * ---\n * const property = await fetchProperty(client, 'luxury-apartment-1');\n * ---\n * ```\n */\nexport async function fetchProperty(\n client: MoreApartmentsClient,\n idOrSlug: number | string\n) {\n try {\n return await client.getProperty(idOrSlug);\n } catch (error) {\n console.error('Error fetching property:', error);\n return null;\n }\n}\n\n/**\n * Fetch property availability for a date range with error handling\n * @param client - MoreApartmentsClient instance\n * @param propertySlug - Property slug identifier\n * @param startDate - Start date in YYYY-MM-DD format\n * @param endDate - End date in YYYY-MM-DD format\n * @returns Availability data or null on error\n * @example\n * ```astro\n * ---\n * const availability = await fetchAvailability(client, 'apartment-1', '2024-03-01', '2024-03-15');\n * ---\n * ```\n */\nexport async function fetchAvailability(\n client: MoreApartmentsClient,\n propertySlug: string,\n startDate: string,\n endDate: string\n) {\n try {\n return await client.getAvailability(propertySlug, startDate, endDate);\n } catch (error) {\n console.error('Error fetching availability:', error);\n return null;\n }\n}\n\n/**\n * Fetch all pages with error handling\n * @param client - MoreApartmentsClient instance\n * @returns Array of pages or empty array on error\n */\nexport async function fetchPages(client: MoreApartmentsClient) {\n try {\n return await client.getPages();\n } catch (error) {\n console.error('Error fetching pages:', error);\n return [];\n }\n}\n\n/**\n * Fetch a single page by slug with error handling\n * @param client - MoreApartmentsClient instance\n * @param slug - Page slug identifier\n * @returns Page object or null on error\n */\nexport async function fetchPage(client: MoreApartmentsClient, slug: string) {\n try {\n return await client.getPage(slug);\n } catch (error) {\n console.error('Error fetching page:', error);\n return null;\n }\n}\n\n/**\n * Fetch paginated blog posts with error handling\n * @param client - MoreApartmentsClient instance\n * @param params - Optional pagination and filtering parameters\n * @returns Posts response with data array, or empty array on error\n */\nexport async function fetchPosts(\n client: MoreApartmentsClient,\n params?: { page?: number; per_page?: number; tag?: string }\n) {\n try {\n return await client.getPosts(params);\n } catch (error) {\n console.error('Error fetching posts:', error);\n return { data: [], links: {}, meta: {} as any };\n }\n}\n\n/**\n * Fetch a single blog post by slug with error handling\n * @param client - MoreApartmentsClient instance\n * @param slug - Post slug identifier\n * @returns Post object or null on error\n */\nexport async function fetchPost(client: MoreApartmentsClient, slug: string) {\n try {\n return await client.getPost(slug);\n } catch (error) {\n console.error('Error fetching post:', error);\n return null;\n }\n}\n\n/**\n * Fetch settings by type with error handling\n * @param client - MoreApartmentsClient instance\n * @param type - Settings type: 'main', 'theme', 'properties', or 'booking'\n * @returns Settings object or null on error\n * @example\n * ```astro\n * ---\n * const mainSettings = await fetchSettings(client, 'main');\n * const themeSettings = await fetchSettings(client, 'theme');\n * ---\n * ```\n */\nexport async function fetchSettings(\n client: MoreApartmentsClient,\n type: 'main' | 'theme' | 'properties' | 'booking'\n) {\n try {\n switch (type) {\n case 'main':\n return await client.getMainSettings();\n case 'theme':\n return await client.getThemeSettings();\n case 'properties':\n return await client.getPropertySettings();\n case 'booking':\n return await client.getBookingSettings();\n default:\n throw new Error(`Unknown settings type: ${type}`);\n }\n } catch (error) {\n console.error(`Error fetching ${type} settings:`, error);\n return null;\n }\n}\n\n/**\n * Generate a booking initiation URL for the Laravel backend\n * \n * @param propertyExternalId - The external_id of the property\n * @param arrival - Arrival date in YYYY-MM-DD format\n * @param departure - Departure date in YYYY-MM-DD format \n * @param guests - Number of guests\n * @returns The booking URL to redirect to Laravel booking flow\n */\nexport function generateBookingUrl(\n propertyExternalId: number,\n arrival: string,\n departure: string, \n guests: number,\n baseUrl?: string\n): string {\n const bookingBaseUrl = baseUrl || import.meta.env.PUBLIC_LARAVEL_BOOKING_URL || 'http://prj-more-apartments.test/booking/initiate';\n \n const params = new URLSearchParams({\n property_external_id: propertyExternalId.toString(),\n arrival,\n departure,\n guests: guests.toString(),\n });\n\n return `${bookingBaseUrl}?${params.toString()}`;\n}\n\n/**\n * Search for properties with advanced filtering\n * \n * @param client - The MoreApartmentsClient instance\n * @param params - Search parameters\n * @returns Array of matching properties\n */\nexport async function searchProperties(\n client: MoreApartmentsClient,\n params: import('./types').PropertySearchParams\n) {\n try {\n return await client.searchProperties(params);\n } catch (error) {\n console.error('Error searching properties:', error);\n return [];\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/types/common.ts","../src/types/generated/schemas.ts","../src/types/properties.ts","../src/types/content.ts","../src/types/settings.ts","../src/types/bookings.ts","../src/types/index.ts","../src/client.ts","../src/utils/images.ts","../src/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["import { z } from 'zod';\n\n// Common types used across multiple endpoints\n\nexport const PaginationLinksSchema = z.object({\n first: z.string().nullable(),\n last: z.string().nullable(),\n prev: z.string().nullable(),\n next: z.string().nullable(),\n});\n\nexport const PaginationMetaSchema = z.object({\n current_page: z.number(),\n from: z.number().nullable(),\n last_page: z.number(),\n links: z.array(z.object({\n url: z.string().nullable(),\n label: z.string(),\n active: z.boolean(),\n })),\n path: z.string(),\n per_page: z.number(),\n to: z.number().nullable(),\n total: z.number(),\n});\n\nexport const PaginatedResponseSchema = <T extends z.ZodTypeAny>(dataSchema: T) =>\n z.object({\n data: z.array(dataSchema),\n links: PaginationLinksSchema,\n meta: PaginationMetaSchema,\n });\n\nexport const ApiErrorSchema = z.object({\n message: z.string(),\n errors: z.record(z.string(), z.array(z.string())).optional(),\n});\n\n// Base types\nexport type PaginationLinks = z.infer<typeof PaginationLinksSchema>;\nexport type PaginationMeta = z.infer<typeof PaginationMetaSchema>;\nexport type PaginatedResponse<T> = {\n data: T[];\n links: PaginationLinks;\n meta: PaginationMeta;\n};\nexport type ApiError = z.infer<typeof ApiErrorSchema>;","// Generated by scripts/generate-zod-schemas.mjs\n// DO NOT EDIT MANUALLY - This file is auto-generated from OpenAPI spec\n\nimport { z } from 'zod';\n\n/**\n * Query parameters for availability.show\n * Generated from OpenAPI operation: GET /properties/{property}/availability\n */\nexport const AvailabilityShowParamsSchema = z.object({\n start_date: z.string(),\n end_date: z.string()\n});\n\nexport type AvailabilityShowParams = z.infer<typeof AvailabilityShowParamsSchema>;\n\n\n// Request body schema for booking.store references: CreateBookingRequest\n\n// Request body schema for booking.createDraft references: BookingDraftRequest\n\n// Request body schema for booking.updateStep1 references: PersonalInfoRequest\n\n// Request body schema for booking.updateStep2 references: BookingDetailsRequest\n\n// Request body schema for booking.updateStep3 references: ReviewRequest\n\n/**\n * Query parameters for property.index\n * Generated from OpenAPI operation: GET /properties\n */\nexport const PropertyIndexParamsSchema = z.object({\n per_page: z.string().optional()\n});\n\nexport type PropertyIndexParams = z.infer<typeof PropertyIndexParamsSchema>;\n\n\n/**\n * Query parameters for property.search\n * Generated from OpenAPI operation: GET /properties/search\n */\nexport const PropertySearchParamsSchema = z.object({\n // Date filters\n arrival: z.string().nullable().optional(),\n departure: z.string().nullable().optional(),\n // Guest capacity\n guests: z.number().nullable().optional(),\n // Destination and segment filters\n destination: z.string().nullable().optional(),\n segment: z.string().nullable().optional(),\n // Column filters\n city: z.string().nullable().optional(),\n area: z.string().nullable().optional(),\n street: z.string().nullable().optional(),\n property_type: z.string().nullable().optional(),\n // Numeric filters\n bedrooms: z.number().nullable().optional(),\n bathrooms: z.number().nullable().optional(),\n max_persons: z.number().nullable().optional(),\n // Boolean filters\n elevator: z.boolean().nullable().optional(),\n parking: z.boolean().nullable().optional(),\n balcony: z.boolean().nullable().optional()\n});\n\nexport type PropertySearchParams = z.infer<typeof PropertySearchParamsSchema>;\n\n","import { z } from \"zod\";\n\n// Property-related types and schemas\n\nexport const PropertyImageSchema = z.object({\n id: z.number(),\n url: z.string(),\n alt: z.string().optional(),\n});\n\nexport const PropertySchema = z.object({\n id: z.number(),\n external_id: z.string().nullable(),\n name: z.string(),\n slug: z.string(),\n\n // Descriptions\n short_description: z.string().nullable(),\n description: z.string(),\n area_description: z.string().nullable(),\n arrival_description: z.string().nullable(),\n payment_description: z.string().nullable(),\n\n // Property type & capacity\n type: z.string().nullable(),\n max_persons: z.number().nullable(),\n bedrooms: z.number().nullable(),\n bathrooms: z.number().nullable(),\n toilets: z.number().nullable(),\n size: z.number().nullable(),\n floor: z.number().nullable(),\n stairs: z.boolean().nullable(),\n\n // Location\n street: z.string().nullable(),\n zipcode: z.string().nullable(),\n area: z.string().nullable(),\n city: z.string(),\n country: z.string().nullable(),\n latitude: z.number(),\n longitude: z.number(),\n\n // Beds\n single_bed: z.number().nullable(),\n double_bed: z.number().nullable(),\n single_sofa: z.number().nullable(),\n double_sofa: z.number().nullable(),\n single_bunk: z.number().nullable(),\n\n // Amenities - Outdoor\n balcony: z.boolean(),\n patio: z.boolean().nullable(),\n garden: z.boolean().nullable(),\n roof_terrace: z.boolean().nullable(),\n view: z.string().nullable(),\n\n // Amenities - Climate\n airco: z.boolean(),\n fans: z.boolean(),\n heating: z.boolean(),\n\n // Amenities - Connectivity\n internet: z.string().nullable(),\n internet_connection: z.string().nullable(),\n tv: z.string().nullable(),\n tv_connection: z.string().nullable(),\n dvd: z.string().nullable(),\n computer: z.boolean(),\n printer: z.boolean(),\n\n // Amenities - Kitchen\n dishwasher: z.boolean(),\n oven: z.boolean(),\n microwave: z.boolean(),\n grill: z.number().nullable(),\n hob: z.number().nullable(),\n fridge: z.boolean(),\n freezer: z.boolean(),\n toaster: z.boolean(),\n kettle: z.boolean(),\n coffeemachine: z.boolean(),\n\n // Amenities - Laundry\n washingmachine: z.boolean(),\n dryer: z.boolean(),\n iron: z.boolean(),\n\n // Amenities - Bathroom\n bathtub: z.boolean(),\n jacuzzi: z.boolean(),\n shower_regular: z.boolean(),\n shower_steam: z.boolean(),\n hairdryer: z.boolean(),\n\n // Amenities - Recreation\n swimmingpool: z.string().nullable(),\n sauna: z.string().nullable(),\n\n // Amenities - General\n parking: z.string().nullable(),\n elevator: z.boolean().nullable(),\n entresol: z.boolean(),\n wheelchair_friendly: z.boolean(),\n smoking_allowed: z.boolean(),\n pets_allowed: z.boolean(),\n\n // Supplies\n supplies_coffee: z.boolean(),\n supplies_tea: z.boolean(),\n supplies_milk: z.boolean(),\n supplies_sugar: z.boolean(),\n supplies_dishwasher_tablets: z.boolean(),\n\n // Services\n service_linen: z.boolean(),\n service_towels: z.boolean(),\n\n // Costs & Policies\n cleaning_costs: z.number().nullable(),\n deposit_costs: z.number().nullable(),\n prepayment: z.number().nullable(),\n fee: z.number().nullable(),\n tax_vat: z.number().nullable(),\n tax_other: z.number().nullable(),\n tax_other_type: z.string().nullable(),\n minimal_nights: z.number().nullable(),\n maximal_nights: z.number().nullable(),\n\n // Dynamic pricing (calculated when arrival/departure dates provided)\n min_rate: z.number().nullable().optional(),\n\n // Availability & Check-in/out\n available_start: z.string().nullable(),\n available_end: z.string().nullable(),\n check_in: z.string().nullable(),\n check_out: z.string().nullable(),\n\n // Media\n images: z.array(z.object({\n id: z.number(),\n alt: z.string(),\n // Responsive image sizes\n small_url: z.string(), // 400×300\n medium_url: z.string(), // 800×600\n large_url: z.string(), // 1200×900\n srcset: z.string(), // Responsive srcset string\n // Default fallback (backward compatibility)\n url: z.string(),\n })).optional(),\n\n // Metadata\n status: z.string().nullable(),\n provider_name: z.string().nullable(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const AvailableDay = z.object({\n available: z.boolean(),\n morning_available: z.boolean(),\n date: z.string(),\n day: z.number(),\n stay_minimum: z.number(),\n});\n\nexport const AvailabilitySchema = z.object({\n days: z.record(z.string(), AvailableDay),\n});\n\n// Property Search schemas\n// NOTE: PropertySearchParamsSchema is now AUTO-GENERATED from OpenAPI spec\n// See: src/types/generated/schemas.ts (generated by scripts/generate-zod-schemas.mjs)\n// This ensures parameter schemas stay in sync with backend API automatically\nexport { PropertySearchParamsSchema } from './generated/schemas';\n\nexport const PropertySearchResultSchema = z.object({\n data: z.array(PropertySchema),\n});\n\nexport const PropertyPageSettingsSchema = z.object({\n routing: z.object({\n base_url: z.string(),\n }),\n index: z.object({\n seo: z.object({\n title: z.string(),\n description: z.string(),\n openGraphTitle: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n }),\n show: z\n .object({\n hero: z\n .object({\n provider: z.boolean().optional(),\n address: z.boolean().optional(),\n })\n .optional(),\n cancellation_policy: z\n .object({\n description: z.string(),\n })\n .optional(),\n related_properties: z\n .object({\n title: z.string(),\n })\n .optional(),\n })\n .optional(),\n});\n\n// Exported types\nexport type PropertyImage = z.infer<typeof PropertyImageSchema>;\nexport type Property = z.infer<typeof PropertySchema>;\nexport type Availability = z.infer<typeof AvailabilitySchema>;\nexport type PropertyPageSettings = z.infer<typeof PropertyPageSettingsSchema>;\n\n// Property Search types\n// NOTE: PropertySearchParams type is now AUTO-GENERATED from OpenAPI spec\nexport type { PropertySearchParams } from './generated/schemas';\nexport type PropertySearchResult = z.infer<typeof PropertySearchResultSchema>;\n","import { z } from \"zod\";\n\n// Content management types (pages, posts, etc.)\n\nexport const PageSchema = z.object({\n id: z.string(),\n slug: z.string(),\n title: z.string().nullable(),\n description: z.string().nullable(),\n content: z.string().nullable(),\n sections: z.array(z.any()),\n seo: z.object({\n title: z.string(),\n description: z.string(),\n image: z.string().nullable(),\n }),\n route_name: z.string(),\n});\n\nexport const PostSchema = z.object({\n id: z.string(),\n slug: z.string(),\n title: z.string(),\n description: z.string().nullable(),\n content: z.string().nullable(),\n excerpt: z.string().nullable(),\n author: z.string().nullable(),\n date: z.string(), // ISO date string\n image: z.string().nullable(),\n tags: z.array(z.string()),\n reading_time: z.string().nullable(),\n sections: z.array(z.any()),\n seo: z.object({\n title: z.string(),\n description: z.string(),\n image: z.string().nullable(),\n }),\n route_name: z.string(),\n});\n\nexport const CategorySchema = z.object({\n slug: z.string(),\n name: z.string(),\n title: z.string(),\n description: z.string().nullable(),\n content: z.string().nullable(),\n segments: z.union([z.array(z.string()), z.number()]).optional(),\n});\n\nexport const CategorySegmentSchema = z.object({\n name: z.string(),\n slug: z.string(),\n title: z.string(),\n description: z.string().nullable(),\n tags: z.array(z.string()).optional(),\n sections: z.array(z.any()),\n content: z.string().nullable(),\n image: z.string(),\n});\n\n// Exported types\nexport type Page = z.infer<typeof PageSchema>;\nexport type Post = z.infer<typeof PostSchema>;\nexport type Category = z.infer<typeof CategorySchema>;\nexport type CategorySegment = z.infer<typeof CategorySegmentSchema>;\n","import { z } from 'zod';\n\n// Settings types based on actual Laravel instance configuration files\n\nexport const MainSettingsSchema = z.object({\n site: z.object({\n name: z.string(),\n domain: z.string(),\n locale: z.string(),\n }),\n contact: z.object({\n email: z.string(),\n phone: z.string().optional(),\n }),\n social: z.object({\n facebook: z.string().optional(),\n instagram: z.string().optional(),\n }).optional(),\n mail: z.object({\n from: z.object({\n address: z.string(),\n name: z.string(),\n }),\n contact_form_to: z.string(),\n }).optional(),\n pms: z.object({\n property_providers: z.array(z.object({\n name: z.string(),\n system: z.string(),\n api_key: z.string().optional(),\n base_url: z.string().optional(),\n discount: z.number().optional(),\n enabled: z.boolean().optional(),\n })),\n }).optional(),\n pricing: z.object({\n vat: z.number(),\n tourist_tax: z.object({\n type: z.string(),\n value: z.number(),\n }),\n }).optional(),\n discount: z.number().optional(),\n});\n\nexport const ThemeSettingsSchema = z.object({\n logo: z.object({\n path: z.string(),\n height: z.number().optional(),\n }).optional(),\n favicon_path: z.string().optional(),\n colors: z.object({\n primary: z.string(),\n secondary: z.string(),\n }),\n layout: z.object({\n homepage_style: z.string().optional(),\n navigation: z.object({\n variant: z.string().optional(),\n items: z.array(z.any()),\n buttons: z.array(z.any()).optional(),\n }).optional(),\n footer: z.object({\n blog_title: z.string().optional(),\n contact_title: z.string().optional(),\n categories: z.array(z.any()).optional(),\n }).optional(),\n }).optional(),\n});\n\nexport const PropertySettingsSchema = z.object({\n routing: z.object({\n base_url: z.string(),\n }),\n seo: z.object({\n title: z.string(),\n description: z.string(),\n openGraphTitle: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }).optional(),\n index: z.object({\n seo: z.object({\n title: z.string(),\n description: z.string(),\n openGraphTitle: z.string().optional(),\n tags: z.array(z.string()).optional(),\n }),\n }),\n show: z.object({\n hero: z.object({\n provider: z.boolean().optional(),\n address: z.boolean().optional(),\n }).optional(),\n cancellation_policy: z.object({\n description: z.string(),\n }).optional(),\n related_properties: z.object({\n title: z.string(),\n }).optional(),\n }).optional(),\n});\n\nexport const BookingSettingsSchema = z.object({\n booking_confirmation: z.object({\n sections: z.object({\n arrival_description: z.boolean().optional(),\n }).optional(),\n content: z.object({\n body: z.string().optional(),\n help: z.string().optional(),\n }).optional(),\n }).optional(),\n});\n\n// Exported types\nexport type MainSettings = z.infer<typeof MainSettingsSchema>;\nexport type ThemeSettings = z.infer<typeof ThemeSettingsSchema>;\nexport type PropertySettings = z.infer<typeof PropertySettingsSchema>;\nexport type BookingSettings = z.infer<typeof BookingSettingsSchema>;","import { z } from 'zod';\n\n/**\n * Booking-related types and schemas for the 3-step booking wizard\n */\n\n// Enums\nexport type BookingStatus =\n | 'pending_details'\n | 'waiting_payment'\n | 'fresh'\n | 'confirmed'\n | 'cancelled'\n | 'completed';\n\nexport type PaymentMethod = 'stripe' | 'bank_transfer' | 'cash';\n\n// Step 1: Draft Creation\nexport interface BookingDraftRequest {\n property_id: number;\n arrival: string; // YYYY-MM-DD\n departure: string; // YYYY-MM-DD\n amount_adults: number;\n amount_children: number;\n}\n\nexport interface BookingDraftResponse {\n uuid: string;\n status: 'pending_details';\n property_id: number;\n arrival: string;\n departure: string;\n amount_adults: number;\n amount_children: number;\n total_price: number;\n nights: number;\n expires_at: string;\n created_at: string;\n updated_at: string;\n}\n\n// Step 2: Personal Information\nexport interface PersonalInfoRequest {\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n address_1: string;\n address_2?: string;\n postal_code?: string;\n city: string;\n country: string;\n}\n\n// Step 3: Booking Details\nexport interface BookingDetailsRequest {\n time_arrival: string; // HH:MM\n flight?: string;\n notes?: string;\n}\n\n// Step 4: Review & Confirmation\nexport interface ReviewRequest {\n terms_accepted: boolean;\n marketing_consent?: boolean;\n}\n\n// Supporting Types\nexport interface PriceBreakdown {\n base_price: number;\n cleaning_fee: number;\n tourist_tax: number;\n vat: number;\n total: number;\n}\n\nexport interface PropertySummary {\n id: number;\n name: string;\n slug: string;\n city: string;\n image: string;\n max_guests: number;\n}\n\n// Full Booking Response (used for GET and step updates)\nexport interface BookingResponse {\n uuid: string;\n status: BookingStatus;\n property_id: number;\n property?: PropertySummary;\n arrival: string;\n departure: string;\n amount_adults: number;\n amount_children: number;\n first_name?: string;\n last_name?: string;\n email?: string;\n phone?: string;\n address_1?: string;\n address_2?: string;\n postal_code?: string;\n city?: string;\n country?: string;\n time_arrival?: string;\n flight?: string;\n notes?: string;\n terms_accepted?: boolean;\n marketing_consent?: boolean;\n total_price: number;\n price_breakdown?: PriceBreakdown;\n nights: number;\n expires_at: string;\n created_at: string;\n updated_at: string;\n}\n\n// Confirmation Response\nexport interface BookingConfirmResponse {\n message: string;\n data: {\n uuid: string;\n status: BookingStatus;\n property_id: number;\n arrival: string;\n departure: string;\n first_name: string;\n last_name: string;\n email: string;\n phone: string;\n address_1: string;\n address_2?: string;\n postal_code?: string;\n city: string;\n country: string;\n amount_adults: number;\n amount_children: number;\n time_arrival: string;\n flight?: string;\n notes?: string;\n external_id?: string;\n identifier?: string;\n balance_due: number;\n created_at: string;\n updated_at: string;\n };\n stripe_url?: string;\n}\n\n// Zod Schemas for validation\nexport const BookingDraftRequestSchema = z.object({\n property_id: z.number().int().positive(),\n arrival: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n departure: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n amount_adults: z.number().int().min(1),\n amount_children: z.number().int().min(0),\n});\n\nexport const BookingDraftResponseSchema = z.object({\n uuid: z.string().uuid(),\n status: z.literal('pending_details'),\n property_id: z.number(),\n arrival: z.string(),\n departure: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n total_price: z.number(),\n nights: z.number(),\n expires_at: z.string(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const PersonalInfoRequestSchema = z.object({\n first_name: z.string().min(1).max(255),\n last_name: z.string().min(1).max(255),\n email: z.string().email().max(255),\n phone: z.string().max(50),\n address_1: z.string().min(1).max(255),\n address_2: z.string().max(255).optional(),\n postal_code: z.string().max(20).optional(),\n city: z.string().min(1).max(100),\n country: z.string().min(1).max(100),\n});\n\nexport const BookingDetailsRequestSchema = z.object({\n time_arrival: z.string().regex(/^([01]\\d|2[0-3]):([0-5]\\d)$/),\n flight: z.string().max(50).optional(),\n notes: z.string().max(1000).optional(),\n});\n\nexport const ReviewRequestSchema = z.object({\n terms_accepted: z.boolean().refine(val => val === true, {\n message: \"Terms must be accepted\"\n }),\n marketing_consent: z.boolean().optional(),\n});\n\nexport const PropertySummarySchema = z.object({\n id: z.number(),\n name: z.string(),\n slug: z.string(),\n city: z.string(),\n image: z.string(),\n max_guests: z.number(),\n});\n\nexport const PriceBreakdownSchema = z.object({\n base_price: z.number(),\n cleaning_fee: z.number(),\n tourist_tax: z.number(),\n vat: z.number(),\n total: z.number(),\n});\n\n// Pricing Response (from GET /api/v1/bookings/{uuid}/pricing)\nexport interface BookingPricingResponse {\n uuid: string;\n property_id: number;\n arrival: string;\n departure: string;\n amount_adults: number;\n amount_children: number;\n nights: number;\n total_price: number;\n price_per_night: number;\n currency: string;\n}\n\nexport const BookingPricingResponseSchema = z.object({\n uuid: z.string().uuid(),\n property_id: z.number(),\n arrival: z.string(),\n departure: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n nights: z.number(),\n total_price: z.number(),\n price_per_night: z.number(),\n currency: z.string(),\n});\n\nexport const BookingResponseSchema = z.object({\n uuid: z.string().uuid(),\n status: z.enum(['pending_details', 'waiting_payment', 'fresh', 'confirmed', 'cancelled', 'completed']),\n property_id: z.number(),\n property: PropertySummarySchema.optional(),\n arrival: z.string(),\n departure: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n first_name: z.string().nullish(),\n last_name: z.string().nullish(),\n email: z.string().nullish(),\n phone: z.string().nullish(),\n address_1: z.string().nullish(),\n address_2: z.string().nullish(),\n postal_code: z.string().nullish(),\n city: z.string().nullish(),\n country: z.string().nullish(),\n time_arrival: z.string().nullish(),\n flight: z.string().nullish(),\n notes: z.string().nullish(),\n terms_accepted: z.boolean().nullish(),\n marketing_consent: z.boolean().nullish(),\n total_price: z.number(),\n price_breakdown: PriceBreakdownSchema.optional(),\n nights: z.number(),\n expires_at: z.string().nullish(),\n created_at: z.string(),\n updated_at: z.string(),\n});\n\nexport const BookingConfirmResponseSchema = z.object({\n message: z.string(),\n data: z.object({\n uuid: z.string().uuid(),\n status: z.enum(['pending_details', 'waiting_payment', 'fresh', 'confirmed', 'cancelled', 'completed']),\n property_id: z.number(),\n arrival: z.string(),\n departure: z.string(),\n first_name: z.string(),\n last_name: z.string(),\n email: z.string(),\n phone: z.string(),\n address_1: z.string(),\n address_2: z.string().optional(),\n postal_code: z.string().optional(),\n city: z.string(),\n country: z.string(),\n amount_adults: z.number(),\n amount_children: z.number(),\n time_arrival: z.string(),\n flight: z.string().optional(),\n notes: z.string().optional(),\n external_id: z.string().optional(),\n identifier: z.string().optional(),\n balance_due: z.number(),\n created_at: z.string(),\n updated_at: z.string(),\n }),\n stripe_url: z.string().optional(),\n});\n\n","// Main types index - exports all types from categorized modules\n\n// Common types\nexport * from './common';\n\n// Property types\nexport * from './properties';\nexport {\n PropertySchema,\n AvailabilitySchema,\n PropertySearchResultSchema,\n} from './properties';\n\n// Content types\nexport * from './content';\nexport {\n PageSchema,\n PostSchema,\n} from './content';\n\n// Settings types\nexport * from './settings';\nexport {\n MainSettingsSchema,\n ThemeSettingsSchema,\n PropertySettingsSchema,\n BookingSettingsSchema,\n} from './settings';\n\n// Booking types\nexport * from './bookings';\nexport {\n BookingResponseSchema,\n BookingDraftRequestSchema,\n BookingDraftResponseSchema,\n PersonalInfoRequestSchema,\n BookingDetailsRequestSchema,\n ReviewRequestSchema,\n BookingConfirmResponseSchema,\n BookingPricingResponseSchema,\n PropertySummarySchema,\n PriceBreakdownSchema,\n} from './bookings';\n\n// Configuration types\nimport { z } from 'zod';\n\nexport const MoreApartmentsConfigSchema = z.object({\n baseUrl: z.string().optional(),\n apiKey: z.string().optional(),\n instance: z.string().optional(),\n timeout: z.number().optional(),\n retry: z.object({\n attempts: z.number(),\n delay: z.number(),\n }).optional(),\n cache: z.object({\n enabled: z.boolean(),\n ttl: z.number(),\n }).optional(),\n});\n\nexport type MoreApartmentsConfig = z.infer<typeof MoreApartmentsConfigSchema>;","import { z } from 'zod';\nimport type {\n MoreApartmentsConfig,\n Property,\n PaginatedResponse,\n Page,\n Post,\n Category,\n CategorySegment,\n MainSettings,\n ThemeSettings,\n PropertySettings,\n BookingSettings,\n Availability,\n BookingResponse,\n PropertySearchParams,\n PropertySearchResult,\n BookingDraftRequest,\n BookingDraftResponse,\n PersonalInfoRequest,\n BookingDetailsRequest,\n ReviewRequest,\n BookingConfirmResponse,\n BookingPricingResponse,\n PaymentMethod,\n} from './types';\nimport {\n PropertySchema,\n PaginatedResponseSchema,\n PageSchema,\n PostSchema,\n CategorySchema,\n CategorySegmentSchema,\n MainSettingsSchema,\n ThemeSettingsSchema,\n PropertySettingsSchema,\n BookingSettingsSchema,\n AvailabilitySchema,\n BookingResponseSchema,\n ApiErrorSchema,\n PropertySearchParamsSchema,\n PropertySearchResultSchema,\n BookingDraftResponseSchema,\n BookingConfirmResponseSchema,\n BookingPricingResponseSchema,\n} from './types';\n\nexport class MoreApartmentsClient {\n private config: Required<MoreApartmentsConfig>;\n private cache: Map<string, { data: any; timestamp: number }> = new Map();\n\n /**\n * Clear all cached data\n */\n clearCache(): void {\n this.cache.clear();\n }\n\n /**\n * Get cache statistics\n */\n getCacheStats(): { entries: number; size: number } {\n return {\n entries: this.cache.size,\n size: Array.from(this.cache.values()).reduce((total, entry) => {\n return total + JSON.stringify(entry.data).length;\n }, 0),\n };\n }\n\n constructor(config: MoreApartmentsConfig) {\n this.config = {\n baseUrl: config.baseUrl?.replace(/\\/$/, '') || '',\n apiKey: config.apiKey || '',\n instance: config.instance || '',\n timeout: config.timeout || 30000,\n retry: {\n attempts: config.retry?.attempts || 3,\n delay: config.retry?.delay || 1000,\n },\n cache: {\n enabled: config.cache?.enabled ?? true,\n ttl: config.cache?.ttl || 300000, // 5 minutes default\n },\n };\n }\n\n private async fetchWithRetry<T>(\n url: string,\n options: RequestInit = {},\n schema?: any\n ): Promise<T> {\n const cacheKey = `${options.method || 'GET'}:${url}`;\n\n // Check cache for GET requests\n if (this.config.cache?.enabled && (!options.method || options.method === 'GET')) {\n const cached = this.cache.get(cacheKey);\n if (cached && this.config.cache?.ttl && Date.now() - cached.timestamp < this.config.cache.ttl) {\n return cached.data as T;\n }\n }\n\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n ...(this.config.apiKey && { 'Authorization': `Bearer ${this.config.apiKey}` }),\n ...options.headers,\n };\n\n let lastError: Error | null = null;\n\n for (let attempt = 0; attempt < (this.config.retry?.attempts ?? 3); attempt++) {\n try {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => {\n controller.abort();\n }, this.config.timeout);\n\n const response = await fetch(url, {\n ...options,\n headers,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ message: response.statusText }));\n throw new Error(error.message || `HTTP ${response.status}: ${response.statusText}`);\n }\n\n const data = await response.json();\n\n // Validate with schema if provided\n if (schema) {\n const result = schema.safeParse(data);\n if (!result.success) {\n throw new Error(`Invalid response format: ${result.error.message}`);\n }\n const validatedData = result.data as T;\n\n // Cache successful GET requests\n if (this.config.cache?.enabled && (!options.method || options.method === 'GET')) {\n this.cache.set(cacheKey, { data: validatedData, timestamp: Date.now() });\n }\n\n return validatedData;\n }\n\n // Cache successful GET requests\n if (this.config.cache?.enabled && (!options.method || options.method === 'GET')) {\n this.cache.set(cacheKey, { data, timestamp: Date.now() });\n }\n\n return data as T;\n } catch (error) {\n lastError = error as Error;\n\n if (attempt < (this.config.retry?.attempts ?? 3) - 1) {\n await new Promise(resolve => setTimeout(resolve, (this.config.retry?.delay ?? 1000) * (attempt + 1)));\n }\n }\n }\n\n throw lastError || new Error('Request failed');\n }\n\n // Property endpoints\n async getProperties(params?: {\n page?: number;\n per_page?: number;\n }): Promise<PaginatedResponse<Property>> {\n const queryParams = new URLSearchParams();\n if (params?.page) queryParams.append('page', params.page.toString());\n if (params?.per_page) queryParams.append('per_page', params.per_page.toString());\n\n const url = `${this.config.baseUrl}/api/v1/properties${queryParams.toString() ? '?' + queryParams.toString() : ''}`;\n return this.fetchWithRetry(url, {}, PaginatedResponseSchema(PropertySchema));\n }\n\n async getProperty(propertyIdOrSlug: number | string): Promise<Property> {\n const url = `${this.config.baseUrl}/api/v1/properties/${propertyIdOrSlug}`;\n const response = await this.fetchWithRetry<{ data: Property }>(url, {}, z.object({ data: PropertySchema }));\n return response.data;\n }\n\n // Availability endpoints\n async getAvailability(\n propertySlug: string,\n startDate: string,\n endDate: string\n ): Promise<Availability> {\n const queryParams = new URLSearchParams({\n start_date: startDate,\n end_date: endDate,\n });\n const url = `${this.config.baseUrl}/api/v1/properties/${propertySlug}/availability?${queryParams}`;\n const response = await this.fetchWithRetry<{ data: Availability }>(url, {}, z.object({ data: AvailabilitySchema }));\n return response.data;\n }\n\n /**\n * Get property calendar with pricing information (legacy endpoint)\n * Returns daily rates and availability for the specified date range\n */\n async getPropertyCalendar(\n propertySlug: string,\n fromDate: string,\n toDate: string\n ): Promise<Array<{\n date: string;\n available: boolean;\n season: string;\n final_rate: number;\n stay_minimum: number;\n }>> {\n const queryParams = new URLSearchParams({\n from: fromDate,\n to: toDate,\n });\n const url = `${this.config.baseUrl}/api/properties/${propertySlug}/calendars?${queryParams}`;\n const response = await this.fetchWithRetry<{ data: Array<{\n date: string;\n available: boolean;\n season: string;\n final_rate: number;\n stay_minimum: number;\n }> }>(url);\n return response.data;\n }\n\n // Content endpoints\n async getPages(): Promise<Page[]> {\n const url = `${this.config.baseUrl}/api/v1/pages`;\n const response = await this.fetchWithRetry<{ data: Page[] }>(url, {}, z.object({ data: z.array(PageSchema) }));\n return response.data;\n }\n\n async getPage(slug: string): Promise<Page> {\n const url = `${this.config.baseUrl}/api/v1/pages/${slug}`;\n const response = await this.fetchWithRetry<{ data: Page }>(url, {}, z.object({ data: PageSchema }));\n return response.data;\n }\n\n async getPosts(params?: {\n page?: number;\n per_page?: number;\n tag?: string;\n }): Promise<Post[]> {\n const queryParams = new URLSearchParams();\n if (params?.page) queryParams.append('page', params.page.toString());\n if (params?.per_page) queryParams.append('per_page', params.per_page.toString());\n if (params?.tag) queryParams.append('tag', params.tag);\n\n const url = `${this.config.baseUrl}/api/v1/posts${queryParams.toString() ? '?' + queryParams.toString() : ''}`;\n const response = await this.fetchWithRetry<{ data: Post[] }>(url, {}, z.object({ data: z.array(PostSchema) }));\n return response.data;\n }\n\n async getPost(slug: string): Promise<Post> {\n const url = `${this.config.baseUrl}/api/v1/posts/${slug}`;\n const response = await this.fetchWithRetry<{ data: Post }>(url, {}, z.object({ data: PostSchema }));\n return response.data;\n }\n\n async getLocations(): Promise<any> {\n const url = `${this.config.baseUrl}/api/v1/locations`;\n const response = await this.fetchWithRetry<{ data: string[] }>(url, {}, z.object({ data: z.array(z.string()) }));\n return response.data;\n }\n\n async getCategories(): Promise<Category[]> {\n const url = `${this.config.baseUrl}/api/v1/categories`;\n const response = await this.fetchWithRetry<{ data: Category[] }>(url, {}, z.object({ data: z.array(CategorySchema) }));\n return response.data;\n }\n\n async getCategory(slug: string): Promise<Category> {\n const url = `${this.config.baseUrl}/api/v1/categories/${slug}`;\n const response = await this.fetchWithRetry<{ data: Category }>(url, {}, z.object({ data: CategorySchema }));\n return response.data;\n }\n\n async getCategorySegments(slug: string): Promise<CategorySegment[]> {\n const url = `${this.config.baseUrl}/api/v1/categories/${slug}/segments`;\n const response = await this.fetchWithRetry<{ data: CategorySegment[] }>(url, {}, z.object({ data: z.array(CategorySegmentSchema) }));\n return response.data;\n }\n\n async getCategorySegment(slug: string, segment: string): Promise<CategorySegment> {\n const url = `${this.config.baseUrl}/api/v1/categories/${slug}/segments/${segment}`;\n const response = await this.fetchWithRetry<{ data: CategorySegment }>(url, {}, z.object({ data: CategorySegmentSchema }));\n return response.data;\n }\n\n // Settings endpoints\n async getMainSettings(): Promise<MainSettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/main`;\n const response = await this.fetchWithRetry<{ data: MainSettings }>(url, {}, z.object({ data: MainSettingsSchema }));\n return response.data;\n }\n\n async getThemeSettings(): Promise<ThemeSettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/theme`;\n const response = await this.fetchWithRetry<{ data: ThemeSettings }>(url, {}, z.object({ data: ThemeSettingsSchema }));\n return response.data;\n }\n\n async getPropertySettings(): Promise<PropertySettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/properties`;\n const response = await this.fetchWithRetry<{ data: PropertySettings }>(url, {}, z.object({ data: PropertySettingsSchema }));\n return response.data;\n }\n\n async getBookingSettings(): Promise<BookingSettings> {\n const url = `${this.config.baseUrl}/api/v1/settings/booking`;\n const response = await this.fetchWithRetry<{ data: BookingSettings }>(url, {}, z.object({ data: BookingSettingsSchema }));\n return response.data;\n }\n\n // Booking endpoints - 3-step wizard flow\n\n /**\n * Create a booking draft with property and dates\n * @param data Draft booking data (property, dates, guests)\n * @returns BookingDraftResponse with UUID and status\n */\n async createBookingDraft(data: BookingDraftRequest): Promise<BookingDraftResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/draft`;\n const response = await this.fetchWithRetry<BookingDraftResponse>(\n url,\n {\n method: 'POST',\n body: JSON.stringify(data),\n },\n BookingDraftResponseSchema\n );\n return response;\n }\n\n /**\n * Update booking with personal information (Step 1)\n * @param uuid Booking UUID\n * @param data Personal info (name, email, phone, address)\n * @returns Updated BookingResponse\n */\n async updateBookingStep1(\n uuid: string,\n data: PersonalInfoRequest\n ): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/step-1`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Update booking with arrival details (Step 2)\n * @param uuid Booking UUID\n * @param data Arrival time, flight, notes\n * @returns Updated BookingResponse\n */\n async updateBookingStep2(\n uuid: string,\n data: BookingDetailsRequest\n ): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/step-2`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Update booking with review data (Step 3)\n * @param uuid Booking UUID\n * @param data Terms acceptance, marketing consent\n * @returns Updated BookingResponse with price breakdown\n */\n async updateBookingStep3(\n uuid: string,\n data: ReviewRequest\n ): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/step-3`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Confirm booking and get payment URL\n * @param uuid Booking UUID\n * @param paymentMethod Payment method (stripe, bank_transfer, cash)\n * @returns Confirmation response with payment URL\n */\n async confirmBooking(\n uuid: string,\n paymentMethod: PaymentMethod = 'stripe'\n ): Promise<BookingConfirmResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/confirm`;\n const response = await this.fetchWithRetry<BookingConfirmResponse>(\n url,\n {\n method: 'POST',\n body: JSON.stringify({ payment_method: paymentMethod }),\n },\n BookingConfirmResponseSchema\n );\n return response;\n }\n\n /**\n * Get current booking state\n * @param uuid Booking UUID\n * @returns Full BookingResponse with all data\n */\n async getBookingState(uuid: string): Promise<BookingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/state`;\n const response = await this.fetchWithRetry<BookingResponse>(\n url,\n { method: 'GET' },\n BookingResponseSchema\n );\n return response;\n }\n\n /**\n * Get pricing details for a booking\n * @param uuid Booking UUID\n * @returns Pricing breakdown with total, per-night rate, and currency\n */\n async getPricing(uuid: string): Promise<BookingPricingResponse> {\n const url = `${this.config.baseUrl}/api/v1/bookings/${uuid}/pricing`;\n const response = await this.fetchWithRetry<BookingPricingResponse>(\n url,\n { method: 'GET' },\n BookingPricingResponseSchema\n );\n return response;\n }\n\n /**\n * Search properties with advanced filtering\n */\n async searchProperties(params: PropertySearchParams): Promise<Property[]> {\n const searchParams = new URLSearchParams();\n\n // Date filters\n if (params.arrival) searchParams.set('arrival', params.arrival);\n if (params.departure) searchParams.set('departure', params.departure);\n\n // Guest capacity\n if (params.guests) searchParams.set('guests', params.guests.toString());\n\n // General search (deprecated)\n if (params.destination) searchParams.set('destination', params.destination);\n if (params.segment) searchParams.set('segment', params.segment);\n\n // Direct column filters (preferred for headless instances)\n if (params.city) searchParams.set('city', params.city);\n if (params.area) searchParams.set('area', params.area);\n if (params.street) searchParams.set('street', params.street);\n if (params.property_type) searchParams.set('property_type', params.property_type);\n if (params.bedrooms !== undefined && params.bedrooms !== null) searchParams.set('bedrooms', params.bedrooms.toString());\n if (params.bathrooms !== undefined && params.bathrooms !== null) searchParams.set('bathrooms', params.bathrooms.toString());\n if (params.max_persons !== undefined && params.max_persons !== null) searchParams.set('max_persons', params.max_persons.toString());\n if (params.elevator !== undefined) searchParams.set('elevator', params.elevator ? '1' : '0');\n if (params.parking !== undefined) searchParams.set('parking', params.parking ? '1' : '0');\n if (params.balcony !== undefined) searchParams.set('balcony', params.balcony ? '1' : '0');\n\n const url = `${this.config.baseUrl}/api/v1/properties/search?${searchParams.toString()}`;\n const response = await this.fetchWithRetry<PropertySearchResult>(url, {}, PropertySearchResultSchema);\n return response.data;\n }\n\n}\n","import type { Property, PropertyImage } from '../types/properties';\n\n/**\n * Image utility functions for handling property images\n * Following Astro best practices for image handling\n */\n\n/**\n * Get primary image URL from property\n * @param property - Property object with optional images array\n * @param fallbackUrl - Optional fallback image URL\n * @returns Image URL string\n */\nexport function getPrimaryImageUrl(\n\tproperty: Property,\n\tfallbackUrl?: string\n): string {\n\tif (property.images && property.images.length > 0) {\n\t\treturn property.images[0].url;\n\t}\n\tif (fallbackUrl) {\n\t\treturn fallbackUrl;\n\t}\n\tthrow new Error(`Property \"${property.name}\" (ID: ${property.id}) has no images`);\n}\n\n/**\n * Get thumbnail image URL from property\n * Uses small_url (400×300) for efficient thumbnails\n * @param property - Property object with optional images array\n * @param fallbackUrl - Optional fallback image URL\n * @returns Thumbnail URL string\n */\nexport function getThumbnailUrl(\n\tproperty: Property,\n\tfallbackUrl?: string\n): string {\n\tif (property.images && property.images.length > 0) {\n\t\treturn property.images[0].small_url;\n\t}\n\tif (fallbackUrl) {\n\t\treturn fallbackUrl;\n\t}\n\tthrow new Error(`Property \"${property.name}\" (ID: ${property.id}) has no thumbnail images`);\n}\n\n/**\n * Get all image URLs from property\n * @param property - Property object with optional images array\n * @returns Array of image URL strings\n */\nexport function getAllImageUrls(property: Property): string[] {\n\treturn property.images?.map((img) => img.url) || [];\n}\n\n/**\n * Get all thumbnail URLs from property\n * Uses small_url (400×300) for efficient thumbnails\n * @param property - Property object with optional images array\n * @returns Array of thumbnail URL strings\n */\nexport function getAllThumbnailUrls(property: Property): string[] {\n\treturn property.images?.map((img) => img.small_url) || [];\n}\n\n/**\n * Get image with alt text for accessibility\n * @param property - Property object\n * @param index - Image index (default 0)\n * @returns Object with url and alt text\n */\nexport function getImageWithAlt(\n\tproperty: Property,\n\tindex: number = 0\n): { url: string; alt: string } {\n\tconst image = property.images?.[index];\n\tif (!image?.url) {\n\t\tthrow new Error(`Property \"${property.name}\" (ID: ${property.id}) has no image at index ${index}`);\n\t}\n\treturn {\n\t\turl: image.url,\n\t\talt: image.alt || property.name,\n\t};\n}\n\n/**\n * Get complete image object by index\n * @param property - Property object\n * @param index - Image index (default 0)\n * @returns PropertyImage object or null\n */\nexport function getImage(\n\tproperty: Property,\n\tindex: number = 0\n): PropertyImage | null {\n\treturn property.images?.[index] || null;\n}\n\n/**\n * Check if property has images\n * @param property - Property object\n * @returns Boolean indicating if property has images\n */\nexport function hasImages(property: Property): boolean {\n\treturn !!(\n\t\tproperty.images &&\n\t\tArray.isArray(property.images) &&\n\t\tproperty.images.length > 0\n\t);\n}\n\n/**\n * Get image count\n * @param property - Property object\n * @returns Number of images\n */\nexport function getImageCount(property: Property): number {\n\treturn Array.isArray(property.images) ? property.images.length : 0;\n}\n","import type { AstroIntegration, AstroConfig } from 'astro';\nimport type { MoreApartmentsConfig } from './types';\nimport { MoreApartmentsClient } from './client';\n\nexport * from './types';\nexport { MoreApartmentsClient } from './client';\n\n// Export image utilities\nexport {\n\tgetPrimaryImageUrl,\n\tgetThumbnailUrl,\n\tgetAllImageUrls,\n\tgetAllThumbnailUrls,\n\tgetImageWithAlt,\n\tgetImage,\n\thasImages,\n\tgetImageCount,\n} from './utils/images';\n\n// Export components (note: these must be imported as .astro files in user projects)\n// Example: import PropertyBookingWidget from '@shelfwood/more-apartments-astro-integration/components/PropertyBookingWidget.astro';\n\ninterface MoreApartmentsIntegrationOptions extends MoreApartmentsConfig {\n /**\n * Enable virtual modules for importing API data in Astro components\n * @default true\n */\n virtualModules?: boolean;\n\n /**\n * Inject global API client\n * @default true\n */\n injectClient?: boolean;\n\n /**\n * Add API routes for proxying requests (recommended for security)\n * @default true\n */\n addApiRoutes?: boolean;\n\n /**\n * API route prefix when addApiRoutes is true\n * @default '/api/apartments'\n */\n apiRoutePrefix?: string;\n\n /**\n * Path to instance directory for file watching in development\n * Enables hot-reload when instance content changes\n * @example '../prj-more-apartments/instance/stayci.com'\n */\n instancePath?: string;\n\n /**\n * Path to More Apartments project root directory\n * Used for auto-loading .headless-token file during local development\n * @example '../prj-more-apartments'\n */\n projectPath?: string;\n}\n\nexport default function moreApartmentsIntegration(\n options: MoreApartmentsIntegrationOptions\n): AstroIntegration {\n let config: AstroConfig;\n let client: MoreApartmentsClient;\n\n return {\n name: '@shelfwood/more-apartments-astro-integration',\n hooks: {\n 'astro:config:setup': async ({\n config: astroConfig,\n updateConfig,\n injectScript,\n injectRoute,\n logger,\n }) => {\n config = astroConfig;\n\n // Auto-discover API key from project root if available\n let apiKey = options.apiKey;\n let apiKeySource = 'environment variable';\n\n if (options.projectPath && !apiKey) {\n try {\n const fs = await import('fs');\n const path = await import('path');\n const resolvedProjectPath = path.resolve(process.cwd(), options.projectPath);\n const tokenPath = path.join(resolvedProjectPath, '.headless-token');\n\n if (fs.existsSync(tokenPath)) {\n apiKey = fs.readFileSync(tokenPath, 'utf-8').trim();\n apiKeySource = `.headless-token`;\n logger.info(`✓ Using development API key from ${apiKeySource}`);\n } else {\n logger.warn(`Project directory configured but .headless-token not found at ${resolvedProjectPath}`);\n }\n } catch (error) {\n logger.debug(`Could not read .headless-token: ${error}`);\n }\n } else if (apiKey) {\n logger.info(`✓ Using API key from ${apiKeySource}`);\n } else {\n logger.warn('⚠️ No API key configured. Set MORE_APARTMENTS_API_KEY or configure projectPath for auto-discovery');\n }\n\n const clientOptions = { ...options, apiKey };\n client = new MoreApartmentsClient(clientOptions);\n\n // Add virtual modules for easy importing\n if (options.virtualModules !== false) {\n updateConfig({\n vite: {\n plugins: [\n {\n name: 'more-apartments-virtual-modules',\n resolveId(id) {\n if (id === 'virtual:more-apartments/client') {\n return '\\0virtual:more-apartments/client';\n }\n if (id === 'virtual:more-apartments/config') {\n return '\\0virtual:more-apartments/config';\n }\n },\n load(id) {\n if (id === '\\0virtual:more-apartments/client') {\n // Only include safe client-side config, excluding apiKey for security\n const clientConfig = {\n baseUrl: options.baseUrl,\n instance: options.instance,\n // Never include apiKey in client-side code\n };\n return `\n import { MoreApartmentsClient } from '@shelfwood/more-apartments-astro-integration';\n\n const config = ${JSON.stringify(clientConfig)};\n export const client = new MoreApartmentsClient(config);\n export default client;\n `;\n }\n if (id === '\\0virtual:more-apartments/config') {\n // Only include safe configuration for client-side\n const clientConfig = {\n baseUrl: options.baseUrl,\n instance: options.instance,\n };\n return `export default ${JSON.stringify(clientConfig)};`;\n }\n },\n },\n ],\n },\n });\n\n logger.info('Virtual modules configured for More Apartments API');\n }\n\n // Inject global client if requested (client-side safe configuration only)\n if (options.injectClient !== false) {\n injectScript(\n 'before-hydration',\n `\n window.__moreApartments = {\n baseUrl: '${options.baseUrl}',\n instance: '${options.instance || ''}',\n // apiKey intentionally excluded for security\n };\n `\n );\n logger.info('Global More Apartments client injected (client-side safe config)');\n }\n\n // Add API proxy routes if requested (default to true for security)\n if (options.addApiRoutes !== false) {\n const routePrefix = options.apiRoutePrefix || '/api/apartments';\n \n // Properties endpoints\n injectRoute({\n pattern: `${routePrefix}/properties`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/properties.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/properties/[slug]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/property.js',\n });\n \n // Availability endpoint\n injectRoute({\n pattern: `${routePrefix}/properties/[slug]/availability`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/availability.js',\n });\n \n // Content endpoints\n injectRoute({\n pattern: `${routePrefix}/pages`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/pages.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/pages/[slug]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/page.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/posts`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/posts.js',\n });\n \n injectRoute({\n pattern: `${routePrefix}/posts/[slug]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/post.js',\n });\n \n // Settings endpoints\n injectRoute({\n pattern: `${routePrefix}/settings/[type]`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/settings.js',\n });\n \n // Booking endpoints\n injectRoute({\n pattern: `${routePrefix}/bookings`,\n entrypoint: '@shelfwood/more-apartments-astro-integration/routes/bookings.js',\n });\n\n logger.info(`API proxy routes added at ${routePrefix}`);\n }\n },\n\n 'astro:config:done': ({ config: finalConfig, logger }) => {\n config = finalConfig;\n logger.info('More Apartments integration configured successfully');\n },\n\n 'astro:server:setup': async ({ server, logger }) => {\n // Add development server middleware for API requests\n server.middlewares.use((req, res, next) => {\n // Log API requests in development\n if (req.url?.startsWith('/api/apartments')) {\n logger.debug(`API request: ${req.method} ${req.url}`);\n }\n next();\n });\n\n // Debug: Log instancePath value\n logger.info(`Instance path config: ${options.instancePath || 'not set'}`);\n\n // Watch instance directory for changes if path is configured\n if (options.instancePath) {\n const path = await import('path');\n const chokidar = await import('chokidar');\n\n const resolvedPath = path.resolve(process.cwd(), options.instancePath);\n\n logger.info(`Watching instance directory: ${resolvedPath}`);\n\n const watcher = chokidar.watch(resolvedPath, {\n ignored: /(^|[\\/\\\\])\\../, // ignore dotfiles\n persistent: true,\n ignoreInitial: true,\n });\n\n watcher.on('change', (filePath) => {\n logger.info(`Instance file changed: ${path.relative(resolvedPath, filePath)}`);\n // Trigger HMR for all modules to force re-fetch from API\n server.ws.send({\n type: 'full-reload',\n path: '*',\n });\n });\n\n watcher.on('add', (filePath) => {\n logger.info(`Instance file added: ${path.relative(resolvedPath, filePath)}`);\n server.ws.send({\n type: 'full-reload',\n path: '*',\n });\n });\n\n watcher.on('unlink', (filePath) => {\n logger.info(`Instance file removed: ${path.relative(resolvedPath, filePath)}`);\n server.ws.send({\n type: 'full-reload',\n path: '*',\n });\n });\n\n // Clean up watcher on server close\n server.httpServer?.on('close', () => {\n watcher.close();\n });\n }\n },\n\n 'astro:build:done': ({ logger }) => {\n logger.info('More Apartments integration build complete');\n },\n },\n };\n}\n\n/**\n * Helper functions for use in Astro components\n * These functions provide built-in error handling and return safe defaults on failure\n */\n\n/**\n * Fetch paginated properties with error handling\n * @param client - MoreApartmentsClient instance\n * @param params - Optional pagination parameters\n * @returns Properties response with data array, or empty array on error\n * @example\n * ```astro\n * ---\n * import client from 'virtual:more-apartments/client';\n * import { fetchProperties } from '@shelfwood/more-apartments-astro-integration';\n *\n * const properties = await fetchProperties(client, { page: 1, per_page: 10 });\n * ---\n * ```\n */\nexport async function fetchProperties(\n client: MoreApartmentsClient,\n params?: { page?: number; per_page?: number }\n) {\n try {\n return await client.getProperties(params);\n } catch (error) {\n console.error('Error fetching properties:', error);\n return { data: [], links: {}, meta: {} as any };\n }\n}\n\n/**\n * Fetch a single property by ID or slug with error handling\n * @param client - MoreApartmentsClient instance\n * @param idOrSlug - Property ID or slug identifier\n * @returns Property object or null on error\n * @example\n * ```astro\n * ---\n * const property = await fetchProperty(client, 'luxury-apartment-1');\n * ---\n * ```\n */\nexport async function fetchProperty(\n client: MoreApartmentsClient,\n idOrSlug: number | string\n) {\n try {\n return await client.getProperty(idOrSlug);\n } catch (error) {\n console.error('Error fetching property:', error);\n return null;\n }\n}\n\n/**\n * Fetch property availability for a date range with error handling\n * @param client - MoreApartmentsClient instance\n * @param propertySlug - Property slug identifier\n * @param startDate - Start date in YYYY-MM-DD format\n * @param endDate - End date in YYYY-MM-DD format\n * @returns Availability data or null on error\n * @example\n * ```astro\n * ---\n * const availability = await fetchAvailability(client, 'apartment-1', '2024-03-01', '2024-03-15');\n * ---\n * ```\n */\nexport async function fetchAvailability(\n client: MoreApartmentsClient,\n propertySlug: string,\n startDate: string,\n endDate: string\n) {\n try {\n return await client.getAvailability(propertySlug, startDate, endDate);\n } catch (error) {\n console.error('Error fetching availability:', error);\n return null;\n }\n}\n\n/**\n * Fetch all pages with error handling\n * @param client - MoreApartmentsClient instance\n * @returns Array of pages or empty array on error\n */\nexport async function fetchPages(client: MoreApartmentsClient) {\n try {\n return await client.getPages();\n } catch (error) {\n console.error('Error fetching pages:', error);\n return [];\n }\n}\n\n/**\n * Fetch a single page by slug with error handling\n * @param client - MoreApartmentsClient instance\n * @param slug - Page slug identifier\n * @returns Page object or null on error\n */\nexport async function fetchPage(client: MoreApartmentsClient, slug: string) {\n try {\n return await client.getPage(slug);\n } catch (error) {\n console.error('Error fetching page:', error);\n return null;\n }\n}\n\n/**\n * Fetch paginated blog posts with error handling\n * @param client - MoreApartmentsClient instance\n * @param params - Optional pagination and filtering parameters\n * @returns Posts response with data array, or empty array on error\n */\nexport async function fetchPosts(\n client: MoreApartmentsClient,\n params?: { page?: number; per_page?: number; tag?: string }\n) {\n try {\n return await client.getPosts(params);\n } catch (error) {\n console.error('Error fetching posts:', error);\n return { data: [], links: {}, meta: {} as any };\n }\n}\n\n/**\n * Fetch a single blog post by slug with error handling\n * @param client - MoreApartmentsClient instance\n * @param slug - Post slug identifier\n * @returns Post object or null on error\n */\nexport async function fetchPost(client: MoreApartmentsClient, slug: string) {\n try {\n return await client.getPost(slug);\n } catch (error) {\n console.error('Error fetching post:', error);\n return null;\n }\n}\n\n/**\n * Fetch settings by type with error handling\n * @param client - MoreApartmentsClient instance\n * @param type - Settings type: 'main', 'theme', 'properties', or 'booking'\n * @returns Settings object or null on error\n * @example\n * ```astro\n * ---\n * const mainSettings = await fetchSettings(client, 'main');\n * const themeSettings = await fetchSettings(client, 'theme');\n * ---\n * ```\n */\nexport async function fetchSettings(\n client: MoreApartmentsClient,\n type: 'main' | 'theme' | 'properties' | 'booking'\n) {\n try {\n switch (type) {\n case 'main':\n return await client.getMainSettings();\n case 'theme':\n return await client.getThemeSettings();\n case 'properties':\n return await client.getPropertySettings();\n case 'booking':\n return await client.getBookingSettings();\n default:\n throw new Error(`Unknown settings type: ${type}`);\n }\n } catch (error) {\n console.error(`Error fetching ${type} settings:`, error);\n return null;\n }\n}\n\n/**\n * Generate a booking initiation URL for the Laravel backend\n * \n * @param propertyExternalId - The external_id of the property\n * @param arrival - Arrival date in YYYY-MM-DD format\n * @param departure - Departure date in YYYY-MM-DD format \n * @param guests - Number of guests\n * @returns The booking URL to redirect to Laravel booking flow\n */\nexport function generateBookingUrl(\n propertyExternalId: number,\n arrival: string,\n departure: string, \n guests: number,\n baseUrl?: string\n): string {\n const bookingBaseUrl = baseUrl || import.meta.env.PUBLIC_LARAVEL_BOOKING_URL || 'http://prj-more-apartments.test/booking/initiate';\n \n const params = new URLSearchParams({\n property_external_id: propertyExternalId.toString(),\n arrival,\n departure,\n guests: guests.toString(),\n });\n\n return `${bookingBaseUrl}?${params.toString()}`;\n}\n\n/**\n * Search for properties with advanced filtering\n * \n * @param client - The MoreApartmentsClient instance\n * @param params - Search parameters\n * @returns Array of matching properties\n */\nexport async function searchProperties(\n client: MoreApartmentsClient,\n params: import('./types').PropertySearchParams\n) {\n try {\n return await client.searchProperties(params);\n } catch (error) {\n console.error('Error searching properties:', error);\n return [];\n }\n}\n"]}
package/dist/index.mjs CHANGED
@@ -43,10 +43,10 @@ var PropertySearchParamsSchema = z.object({
43
43
  departure: z.string().nullable().optional(),
44
44
  // Guest capacity
45
45
  guests: z.number().nullable().optional(),
46
- // Legacy filters (deprecated)
46
+ // Destination and segment filters
47
47
  destination: z.string().nullable().optional(),
48
48
  segment: z.string().nullable().optional(),
49
- // Direct column filters (preferred)
49
+ // Column filters
50
50
  city: z.string().nullable().optional(),
51
51
  area: z.string().nullable().optional(),
52
52
  street: z.string().nullable().optional(),