@superbright/indexeddb-orm 1.0.30 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/dist/adapters/zustand-store.cjs +1 -1
  2. package/dist/adapters/zustand-store.cjs.map +1 -1
  3. package/dist/adapters/zustand-store.d.ts +2 -6
  4. package/dist/adapters/zustand-store.mjs +212 -167
  5. package/dist/adapters/zustand-store.mjs.map +1 -1
  6. package/dist/base/enums.cjs +1 -1
  7. package/dist/base/enums.cjs.map +1 -1
  8. package/dist/base/enums.d.ts +4 -0
  9. package/dist/base/enums.mjs +2 -1
  10. package/dist/base/enums.mjs.map +1 -1
  11. package/dist/base/userinquiry.d.ts +23 -0
  12. package/dist/base/visitor.d.ts +17 -0
  13. package/dist/base/visitorfilter.d.ts +25 -0
  14. package/dist/base/visitorquestionnaire.d.ts +25 -0
  15. package/dist/base/visitorunitengagement.d.ts +24 -0
  16. package/dist/features/units/transformers.cjs.map +1 -1
  17. package/dist/features/units/transformers.d.ts +2 -0
  18. package/dist/features/units/transformers.mjs.map +1 -1
  19. package/dist/index.cjs +1 -1
  20. package/dist/index.d.ts +1 -5
  21. package/dist/index.mjs +111 -127
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/schema.cjs +1 -1
  24. package/dist/schema.cjs.map +1 -1
  25. package/dist/schema.d.ts +13 -41
  26. package/dist/schema.mjs +63 -74
  27. package/dist/schema.mjs.map +1 -1
  28. package/dist/stores/store.cjs +1 -1
  29. package/dist/stores/store.cjs.map +1 -1
  30. package/dist/stores/store.d.ts +5 -73
  31. package/dist/stores/store.mjs +53 -254
  32. package/dist/stores/store.mjs.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/api/favorites.cjs +0 -2
  35. package/dist/api/favorites.cjs.map +0 -1
  36. package/dist/api/favorites.d.ts +0 -4
  37. package/dist/api/favorites.mjs +0 -34
  38. package/dist/api/favorites.mjs.map +0 -1
  39. package/dist/api/properties.cjs +0 -2
  40. package/dist/api/properties.cjs.map +0 -1
  41. package/dist/api/properties.d.ts +0 -22
  42. package/dist/api/properties.mjs +0 -197
  43. package/dist/api/properties.mjs.map +0 -1
  44. package/dist/api/users.cjs +0 -2
  45. package/dist/api/users.cjs.map +0 -1
  46. package/dist/api/users.d.ts +0 -5
  47. package/dist/api/users.mjs +0 -54
  48. package/dist/api/users.mjs.map +0 -1
  49. package/dist/units/favorites.cjs +0 -2
  50. package/dist/units/favorites.cjs.map +0 -1
  51. package/dist/units/favorites.d.ts +0 -7
  52. package/dist/units/favorites.mjs +0 -19
  53. package/dist/units/favorites.mjs.map +0 -1
package/dist/schema.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),m=1,g=t.object({uuid:t.string().uuid(),createdAt:t.string().datetime().optional()}),u=t.object({isFavorite:t.boolean().optional(),viewedDate:t.string().optional()}),c=u,a=t.union([t.string(),t.number(),t.boolean(),t.record(t.unknown())]),b=t.union([a,t.array(a)]),n=t.object({date_availability:b.nullable().optional(),qty_bedrooms:t.union([t.array(a),t.null()]).optional(),base_price:t.number().nullable().optional(),highlights:t.array(a).optional()}),i=t.enum(["all","bestFit","closestMatch","favorites","loading"]),e=t.enum(["relevance","newest","cost_low_to_high","cost_high_to_low"]),r=t.object({limit:t.number().default(10),page:t.number().default(1),sortBy:e.default("relevance"),base_price:t.number().nullable().optional(),date_availability:t.array(t.string()).optional(),qty_bedrooms:t.array(t.number()).optional(),highlights:t.array(t.string()).optional(),nearBuilding:t.array(t.string()).optional(),nearNeighbourhood:t.array(t.string()).optional()}),y=t.object({data:t.record(c),filters:n,tempFilters:n,apiFilters:r,resultsMode:i,propertySlug:t.string().nullable(),resolvedQuestionnaireValues:t.record(t.array(t.string())),sortBy:e}),o=t.object({id:t.union([t.number().int(),t.string()]).optional(),name:t.string(),slug:t.string().nullable().optional(),qty_bedrooms:t.coerce.number().nullable().optional(),qty_bathrooms:t.coerce.number().nullable().optional(),base_price:t.coerce.number().nullable().optional(),dim_sq_ft:t.coerce.number().nullable().optional(),propertyId:t.union([t.number().int(),t.string()]).optional(),is_available:t.boolean().optional(),createdAt:t.string().datetime().optional(),updatedAt:t.string().datetime().optional(),date_availability:t.string().datetime().nullable().optional(),unitSetAvailableOn:t.string().datetime().nullable().optional(),floorPlanId:t.union([t.number().int(),t.string()]).nullable().optional(),property:t.unknown().optional(),amenities:t.array(t.unknown()).optional(),highlights:t.array(t.unknown()).optional(),floorPlan:t.unknown().nullable().optional(),renderedStyle:t.array(t.unknown()).optional(),video:t.unknown().nullable().optional(),videoThumbnail:t.unknown().nullable().optional(),embedGif:t.unknown().nullable().optional(),userId:t.union([t.number().int(),t.string()]).optional(),user:t.unknown().optional(),status:t.string().optional(),external_id:t.string().nullable().optional(),unitRenderedStyles:t.array(t.unknown()).optional()}),l=t.object({id:t.union([t.number().int(),t.string()]),createdAt:t.string().datetime(),updatedAt:t.string().datetime(),name:t.string(),slug:t.string().nullable().optional(),description:t.string(),contact_name:t.string().nullable().optional(),contact_email:t.string().optional(),contact_phone:t.string().nullable().optional(),notification_email:t.string().nullable().optional(),logo:t.unknown().nullable().optional(),leadMedia:t.unknown().nullable().optional(),overviewImages:t.array(t.unknown()).optional(),amenityImages:t.array(t.unknown()).optional(),address_street:t.string().optional(),address_city:t.string().optional(),address_state:t.string().nullable().optional(),ingestionFileName:t.string().nullable().optional(),address_zip:t.string().optional(),address_country:t.string().optional(),units:t.array(o).optional(),amenities:t.array(t.unknown()).optional(),highlights:t.array(t.unknown()).optional(),externalServices:t.array(t.unknown()).optional(),userId:t.union([t.number().int(),t.string()]).optional(),user:t.unknown().optional(),status:t.string().optional(),floorPlans:t.array(t.unknown()).optional()}),h=t.object({id:t.union([t.number().int(),t.string()]).optional(),email:t.string().email().optional(),first_name:t.string().optional(),last_name:t.string().optional(),password:t.string().optional(),salt:t.string().optional(),role:t.string().optional(),Property:t.array(l).optional(),Unit:t.array(o).optional(),floorPlans:t.array(t.unknown()).optional(),createdAt:t.string().datetime().optional(),updatedAt:t.string().datetime().optional()}),p=t.object({unitId:t.string(),viewedDate:t.string()}),d=t.object({timezone:t.string().optional(),favouriteUnits:t.array(t.coerce.string()).optional(),preferences:t.record(t.unknown()).optional()}),s=t.object({id:t.coerce.string(),slug:t.string(),favoritedUnits:t.array(t.string()),tourContactedOn:t.string().nullable(),viewedUnits:t.array(p),questionnaireResults:t.unknown().nullable().optional(),tourContactData:d.nullable().optional(),data:l.optional()}),S=t.object({data:t.record(s),propertySlug:t.string().nullable(),propertyId:t.string().nullable(),hasPreviouslySearched:t.array(t.string())}),w=t.object({id:t.number().int(),userId:t.number().int(),unitId:t.number().int(),createdAt:t.string().datetime()}),_=t.object({unitIds:t.array(t.string()),updatedAt:t.string().datetime()}),v=t.object({properties:t.record(s),currentPropertyId:t.string().nullable(),currentPropertySlug:t.string().nullable(),hasPreviouslySearched:t.array(t.string()),unitResults:t.array(o),filters:n,tempFilters:n,apiFilters:r,resultsMode:i,resolvedQuestionnaireValues:t.record(t.array(t.string())),sortBy:e});exports.ApiUserSchema=h;exports.AppStoreDataSchema=y;exports.FavoritesSchema=_;exports.FiltersSchema=n;exports.PropertySchema=l;exports.PropertyStoreDataSchema=S;exports.QueryParamsSchema=r;exports.ResultsModeEnum=i;exports.SCHEMA_VERSION=m;exports.SortByEnum=e;exports.TourContactDataSchema=d;exports.UnifiedStoreDataSchema=v;exports.UnitDataSchema=c;exports.UnitFavoriteSchema=w;exports.UnitSchema=o;exports.UserPropertyStateSchema=s;exports.UserSchema=g;exports.UserUnitDataSchema=u;exports.ViewedUnitSchema=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),m=1,g=n.object({uuid:n.string().uuid(),createdAt:n.string().datetime().optional()}),u=n.object({isFavorite:n.boolean().optional(),viewedDate:n.string().optional()}),p=u,a=n.union([n.string(),n.number(),n.boolean(),n.record(n.unknown())]),b=n.union([a,n.array(a)]),t=n.object({date_availability:b.nullable().optional(),qty_bedrooms:n.union([n.array(a),n.null()]).optional(),base_price:n.number().nullable().optional(),highlights:n.array(a).optional()}),i=n.enum(["all","bestFit","closestMatch","favorites","loading"]),o=n.enum(["relevance","newest","cost_low_to_high","cost_high_to_low"]),r=n.object({limit:n.number().default(10),page:n.number().default(1),sortBy:o.default("relevance"),base_price:n.number().nullable().optional(),date_availability:n.array(n.string()).optional(),qty_bedrooms:n.array(n.number()).optional(),highlights:n.array(n.string()).optional(),nearBuilding:n.array(n.string()).optional(),nearNeighbourhood:n.array(n.string()).optional()}),y=n.object({data:n.record(p),filters:t,tempFilters:t,apiFilters:r,resultsMode:i,propertySlug:n.string().nullable(),resolvedQuestionnaireValues:n.record(n.array(n.string())),sortBy:o}),e=n.object({id:n.union([n.number().int(),n.string()]).optional(),name:n.string(),slug:n.string().nullable().optional(),qty_bedrooms:n.coerce.number().nullable().optional(),qty_bathrooms:n.coerce.number().nullable().optional(),base_price:n.coerce.number().nullable().optional(),dim_sq_ft:n.coerce.number().nullable().optional(),propertyId:n.union([n.number().int(),n.string()]).optional(),is_available:n.boolean().optional(),createdAt:n.string().datetime().optional(),updatedAt:n.string().datetime().optional(),date_availability:n.string().datetime().nullable().optional(),unitSetAvailableOn:n.string().datetime().nullable().optional(),floorPlanId:n.union([n.number().int(),n.string()]).nullable().optional(),property:n.unknown().optional(),amenities:n.array(n.unknown()).optional(),highlights:n.array(n.unknown()).optional(),floorPlan:n.unknown().nullable().optional(),renderedStyle:n.array(n.unknown()).optional(),video:n.unknown().nullable().optional(),videoThumbnail:n.unknown().nullable().optional(),embedGif:n.unknown().nullable().optional(),userId:n.union([n.number().int(),n.string()]).optional(),user:n.unknown().optional(),status:n.string().optional(),external_id:n.string().nullable().optional(),unitRenderedStyles:n.array(n.unknown()).optional()}),l=n.object({id:n.union([n.number().int(),n.string()]),createdAt:n.string().datetime(),updatedAt:n.string().datetime(),name:n.string(),slug:n.string().nullable().optional(),description:n.string(),contact_name:n.string().nullable().optional(),contact_email:n.string().optional(),contact_phone:n.string().nullable().optional(),notification_email:n.string().nullable().optional(),logo:n.unknown().nullable().optional(),leadMedia:n.unknown().nullable().optional(),overviewImages:n.array(n.unknown()).optional(),amenityImages:n.array(n.unknown()).optional(),address_street:n.string().optional(),address_city:n.string().optional(),address_state:n.string().nullable().optional(),ingestionFileName:n.string().nullable().optional(),address_zip:n.string().optional(),address_country:n.string().optional(),units:n.array(e).optional(),amenities:n.array(n.unknown()).optional(),highlights:n.array(n.unknown()).optional(),externalServices:n.array(n.unknown()).optional(),userId:n.union([n.number().int(),n.string()]).optional(),user:n.unknown().optional(),status:n.string().optional(),floorPlans:n.array(n.unknown()).optional()}),h=n.object({id:n.union([n.number().int(),n.string()]).optional(),email:n.string().email().optional(),first_name:n.string().optional(),last_name:n.string().optional(),password:n.string().optional(),salt:n.string().optional(),role:n.string().optional(),Property:n.array(l).optional(),Unit:n.array(e).optional(),floorPlans:n.array(n.unknown()).optional(),createdAt:n.string().datetime().optional(),updatedAt:n.string().datetime().optional()}),c=n.object({unitId:n.string(),viewedDate:n.string()}),d=n.object({timezone:n.string().optional(),favouriteUnits:n.array(n.coerce.string()).optional(),preferences:n.record(n.unknown()).optional()}),s=n.object({id:n.coerce.string(),slug:n.string(),favoritedUnits:n.array(n.string()).optional(),tourContactedOn:n.string().nullable(),viewedUnits:n.array(c),questionnaireResults:n.unknown().nullable().optional(),tourContactData:d.nullable().optional(),data:l.optional()}),S=n.object({data:n.record(s),propertySlug:n.string().nullable(),propertyId:n.string().nullable(),hasPreviouslySearched:n.array(n.string())}),w=n.object({properties:n.record(s),currentPropertyId:n.string().nullable(),currentPropertySlug:n.string().nullable(),hasPreviouslySearched:n.array(n.string()),unitResults:n.array(e),filters:t,tempFilters:t,apiFilters:r,resultsMode:i,resolvedQuestionnaireValues:n.record(n.array(n.string())),sortBy:o});exports.ApiUserSchema=h;exports.AppStoreDataSchema=y;exports.FiltersSchema=t;exports.PropertySchema=l;exports.PropertyStoreDataSchema=S;exports.QueryParamsSchema=r;exports.ResultsModeEnum=i;exports.SCHEMA_VERSION=m;exports.SortByEnum=o;exports.TourContactDataSchema=d;exports.UnifiedStoreDataSchema=w;exports.UnitDataSchema=p;exports.UnitSchema=e;exports.UserPropertyStateSchema=s;exports.UserSchema=g;exports.UserUnitDataSchema=u;exports.ViewedUnitSchema=c;
2
2
  //# sourceMappingURL=schema.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.cjs","sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const SCHEMA_VERSION = 1 as const;\n\n// Entities\nexport const UserSchema = z.object({\n uuid: z.string().uuid(),\n // stored as ISO string; include to match ensureUser()\n createdAt: z.string().datetime().optional(),\n});\nexport type User = z.infer<typeof UserSchema>;\n\n// User-specific Unit state\nexport const UserUnitDataSchema = z.object({\n isFavorite: z.boolean().optional(),\n viewedDate: z.string().optional(),\n});\n// Back-compat alias (to be deprecated): keep existing name\nexport const UnitDataSchema = UserUnitDataSchema;\nexport type UnitData = z.infer<typeof UserUnitDataSchema>;\n\n// Filters and query params\nconst FilterOptionValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.record(z.unknown()),\n]);\n\nconst FilterCollectionSchema = z.union([\n FilterOptionValueSchema,\n z.array(FilterOptionValueSchema),\n]);\n\nexport const FiltersSchema = z.object({\n date_availability: FilterCollectionSchema.nullable().optional(),\n qty_bedrooms: z.union([z.array(FilterOptionValueSchema), z.null()]).optional(),\n base_price: z.number().nullable().optional(),\n highlights: z.array(FilterOptionValueSchema).optional(),\n});\nexport type Filters = z.infer<typeof FiltersSchema>;\n\nexport const ResultsModeEnum = z.enum([\"all\", \"bestFit\", \"closestMatch\", \"favorites\", \"loading\"]);\nexport type ResultsMode = z.infer<typeof ResultsModeEnum>;\nexport const SortByEnum = z.enum([\"relevance\", \"newest\", \"cost_low_to_high\", \"cost_high_to_low\"]);\nexport type SortBy = z.infer<typeof SortByEnum>;\n\nexport const QueryParamsSchema = z.object({\n limit: z.number().default(10),\n page: z.number().default(1),\n sortBy: SortByEnum.default(\"relevance\"),\n base_price: z.number().nullable().optional(),\n date_availability: z.array(z.string()).optional(),\n qty_bedrooms: z.array(z.number()).optional(),\n highlights: z.array(z.string()).optional(),\n nearBuilding: z.array(z.string()).optional(),\n nearNeighbourhood: z.array(z.string()).optional(),\n});\nexport type QueryParams = z.infer<typeof QueryParamsSchema>;\n\n// App (standalone) persisted state\nexport const AppStoreDataSchema = z.object({\n data: z.record(UnitDataSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n propertySlug: z.string().nullable(),\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type AppStoreData = z.infer<typeof AppStoreDataSchema>;\n\n// Domain models (optional fields to mirror API shape without breaking)\n// Mirrors the backend Unit model with relaxed optional fields\nexport const UnitSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n qty_bedrooms: z.coerce.number().nullable().optional(),\n qty_bathrooms: z.coerce.number().nullable().optional(),\n base_price: z.coerce.number().nullable().optional(),\n dim_sq_ft: z.coerce.number().nullable().optional(),\n propertyId: z.union([z.number().int(), z.string()]).optional(),\n is_available: z.boolean().optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n date_availability: z.string().datetime().nullable().optional(),\n unitSetAvailableOn: z.string().datetime().nullable().optional(),\n floorPlanId: z.union([z.number().int(), z.string()]).nullable().optional(),\n // Relations and nested structures kept loose to avoid coupling\n property: z.unknown().optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n floorPlan: z.unknown().nullable().optional(),\n renderedStyle: z.array(z.unknown()).optional(),\n video: z.unknown().nullable().optional(),\n videoThumbnail: z.unknown().nullable().optional(),\n embedGif: z.unknown().nullable().optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n external_id: z.string().nullable().optional(),\n unitRenderedStyles: z.array(z.unknown()).optional(),\n});\nexport type Unit = z.infer<typeof UnitSchema>;\n\n// Mirrors the backend Property model with relaxed optional fields\nexport const PropertySchema = z.object({\n /**\n * Property (readable shape)\n *\n * interface Property {\n * id: number | string\n * createdAt: string // ISO\n * updatedAt: string // ISO\n * title: string\n * slug?: string | null\n * description: string\n * contactName?: string | null\n * contactEmail?: string\n * contactPhone?: string | null\n * notificationEmail?: string | null\n * logo?: unknown | null\n * leadMedia?: unknown | null\n * overviewImages?: unknown[]\n * amenityImages?: unknown[]\n * street?: string\n * city?: string\n * state?: string | null\n * zip?: string\n * country?: string\n * units?: Unit[]\n * amenities?: unknown[]\n * highlights?: unknown[]\n * externalServices?: unknown[]\n * userId?: number | string\n * user?: unknown\n * status?: string\n * floorPlans?: unknown[]\n * }\n */\n id: z.union([z.number().int(), z.string()]),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n description: z.string(),\n contact_name: z.string().nullable().optional(),\n contact_email: z.string().optional(),\n contact_phone: z.string().nullable().optional(),\n notification_email: z.string().nullable().optional(),\n logo: z.unknown().nullable().optional(),\n leadMedia: z.unknown().nullable().optional(),\n overviewImages: z.array(z.unknown()).optional(),\n amenityImages: z.array(z.unknown()).optional(),\n address_street: z.string().optional(),\n address_city: z.string().optional(),\n address_state: z.string().nullable().optional(),\n ingestionFileName: z.string().nullable().optional(),\n address_zip: z.string().optional(),\n address_country: z.string().optional(),\n units: z.array(UnitSchema).optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n externalServices: z.array(z.unknown()).optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n floorPlans: z.array(z.unknown()).optional(),\n});\nexport type Property = z.infer<typeof PropertySchema>;\n\n// Mirrors the backend User model with relaxed optional fields\n// Named ApiUserSchema to avoid conflict with local UserSchema (uuid-only)\nexport const ApiUserSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n email: z.string().email().optional(),\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n password: z.string().optional(),\n salt: z.string().optional(),\n role: z.string().optional(),\n Property: z.array(PropertySchema).optional(),\n Unit: z.array(UnitSchema).optional(),\n floorPlans: z.array(z.unknown()).optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n});\nexport type ApiUser = z.infer<typeof ApiUserSchema>;\n\n// Property-related schemas used by the PropertyStore and UnifiedStore\nexport const ViewedUnitSchema = z.object({\n unitId: z.string(),\n viewedDate: z.string(),\n});\nexport type ViewedUnit = z.infer<typeof ViewedUnitSchema>;\n\nexport const TourContactDataSchema = z.object({\n timezone: z.string().optional(),\n favouriteUnits: z.array(z.coerce.string()).optional(),\n preferences: z.record(z.unknown()).optional(),\n});\nexport type TourContactData = z.infer<typeof TourContactDataSchema>;\n\nexport const UserPropertyStateSchema = z.object({\n id: z.coerce.string(),\n slug: z.string(),\n favoritedUnits: z.array(z.string()),\n tourContactedOn: z.string().nullable(),\n viewedUnits: z.array(ViewedUnitSchema),\n questionnaireResults: z.unknown().nullable().optional(),\n tourContactData: TourContactDataSchema.nullable().optional(),\n // Full property payload persisted alongside per-property state\n data: PropertySchema.optional(),\n});\nexport type UserPropertyState = z.infer<typeof UserPropertyStateSchema>;\n\nexport const PropertyStoreDataSchema = z.object({\n data: z.record(UserPropertyStateSchema),\n propertySlug: z.string().nullable(),\n propertyId: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n});\nexport type PropertyStoreData = z.infer<typeof PropertyStoreDataSchema>;\n\n// favorites\nexport const UnitFavoriteSchema = z.object({\n id: z.number().int(),\n userId: z.number().int(),\n unitId: z.number().int(),\n createdAt: z.string().datetime(),\n});\nexport type UnitFavorite = z.infer<typeof UnitFavoriteSchema>;\n\nexport const FavoritesSchema = z.object({\n // per-property favorites are stored under a KV key, so propertyId is implicit\n unitIds: z.array(z.string()),\n updatedAt: z.string().datetime(),\n});\nexport type Favorites = z.infer<typeof FavoritesSchema>;\n\n// Unified store schema (combines property + app persistent bits)\nexport const UnifiedStoreDataSchema = z.object({\n // Property-related data\n properties: z.record(UserPropertyStateSchema),\n currentPropertyId: z.string().nullable(),\n currentPropertySlug: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n\n // App-level data\n unitResults: z.array(UnitSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type UnifiedStoreData = z.infer<typeof UnifiedStoreDataSchema>;\n"],"names":["SCHEMA_VERSION","UserSchema","z.object","z.string","UserUnitDataSchema","z.boolean","UnitDataSchema","FilterOptionValueSchema","z.union","z.number","z.record","z.unknown","FilterCollectionSchema","z.array","FiltersSchema","z.null","ResultsModeEnum","z.enum","SortByEnum","QueryParamsSchema","AppStoreDataSchema","UnitSchema","z.coerce","PropertySchema","ApiUserSchema","ViewedUnitSchema","TourContactDataSchema","UserPropertyStateSchema","PropertyStoreDataSchema","UnitFavoriteSchema","FavoritesSchema","UnifiedStoreDataSchema"],"mappings":"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"}
1
+ {"version":3,"file":"schema.cjs","sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const SCHEMA_VERSION = 1 as const;\n\n// Entities\nexport const UserSchema = z.object({\n uuid: z.string().uuid(),\n // stored as ISO string; include to match ensureUser()\n createdAt: z.string().datetime().optional(),\n});\nexport type User = z.infer<typeof UserSchema>;\n\n// User-specific Unit state\nexport const UserUnitDataSchema = z.object({\n isFavorite: z.boolean().optional(),\n viewedDate: z.string().optional(),\n});\n// Back-compat alias (to be deprecated): keep existing name\nexport const UnitDataSchema = UserUnitDataSchema;\nexport type UnitData = z.infer<typeof UserUnitDataSchema>;\n\n// Filters and query params\nconst FilterOptionValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.record(z.unknown()),\n]);\n\nconst FilterCollectionSchema = z.union([\n FilterOptionValueSchema,\n z.array(FilterOptionValueSchema),\n]);\n\nexport const FiltersSchema = z.object({\n date_availability: FilterCollectionSchema.nullable().optional(),\n qty_bedrooms: z.union([z.array(FilterOptionValueSchema), z.null()]).optional(),\n base_price: z.number().nullable().optional(),\n highlights: z.array(FilterOptionValueSchema).optional(),\n});\nexport type Filters = z.infer<typeof FiltersSchema>;\n\nexport const ResultsModeEnum = z.enum([\"all\", \"bestFit\", \"closestMatch\", \"favorites\", \"loading\"]);\nexport type ResultsMode = z.infer<typeof ResultsModeEnum>;\nexport const SortByEnum = z.enum([\"relevance\", \"newest\", \"cost_low_to_high\", \"cost_high_to_low\"]);\nexport type SortBy = z.infer<typeof SortByEnum>;\n\nexport const QueryParamsSchema = z.object({\n limit: z.number().default(10),\n page: z.number().default(1),\n sortBy: SortByEnum.default(\"relevance\"),\n base_price: z.number().nullable().optional(),\n date_availability: z.array(z.string()).optional(),\n qty_bedrooms: z.array(z.number()).optional(),\n highlights: z.array(z.string()).optional(),\n nearBuilding: z.array(z.string()).optional(),\n nearNeighbourhood: z.array(z.string()).optional(),\n});\nexport type QueryParams = z.infer<typeof QueryParamsSchema>;\n\n// App (standalone) persisted state\nexport const AppStoreDataSchema = z.object({\n data: z.record(UnitDataSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n propertySlug: z.string().nullable(),\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type AppStoreData = z.infer<typeof AppStoreDataSchema>;\n\n// Domain models (optional fields to mirror API shape without breaking)\n// Mirrors the backend Unit model with relaxed optional fields\nexport const UnitSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n qty_bedrooms: z.coerce.number().nullable().optional(),\n qty_bathrooms: z.coerce.number().nullable().optional(),\n base_price: z.coerce.number().nullable().optional(),\n dim_sq_ft: z.coerce.number().nullable().optional(),\n propertyId: z.union([z.number().int(), z.string()]).optional(),\n is_available: z.boolean().optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n date_availability: z.string().datetime().nullable().optional(),\n unitSetAvailableOn: z.string().datetime().nullable().optional(),\n floorPlanId: z.union([z.number().int(), z.string()]).nullable().optional(),\n // Relations and nested structures kept loose to avoid coupling\n property: z.unknown().optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n floorPlan: z.unknown().nullable().optional(),\n renderedStyle: z.array(z.unknown()).optional(),\n video: z.unknown().nullable().optional(),\n videoThumbnail: z.unknown().nullable().optional(),\n embedGif: z.unknown().nullable().optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n external_id: z.string().nullable().optional(),\n unitRenderedStyles: z.array(z.unknown()).optional(),\n});\nexport type Unit = z.infer<typeof UnitSchema>;\n\n// Mirrors the backend Property model with relaxed optional fields\nexport const PropertySchema = z.object({\n /**\n * Property (readable shape)\n *\n * interface Property {\n * id: number | string\n * createdAt: string // ISO\n * updatedAt: string // ISO\n * title: string\n * slug?: string | null\n * description: string\n * contactName?: string | null\n * contactEmail?: string\n * contactPhone?: string | null\n * notificationEmail?: string | null\n * logo?: unknown | null\n * leadMedia?: unknown | null\n * overviewImages?: unknown[]\n * amenityImages?: unknown[]\n * street?: string\n * city?: string\n * state?: string | null\n * zip?: string\n * country?: string\n * units?: Unit[]\n * amenities?: unknown[]\n * highlights?: unknown[]\n * externalServices?: unknown[]\n * userId?: number | string\n * user?: unknown\n * status?: string\n * floorPlans?: unknown[]\n * }\n */\n id: z.union([z.number().int(), z.string()]),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n description: z.string(),\n contact_name: z.string().nullable().optional(),\n contact_email: z.string().optional(),\n contact_phone: z.string().nullable().optional(),\n notification_email: z.string().nullable().optional(),\n logo: z.unknown().nullable().optional(),\n leadMedia: z.unknown().nullable().optional(),\n overviewImages: z.array(z.unknown()).optional(),\n amenityImages: z.array(z.unknown()).optional(),\n address_street: z.string().optional(),\n address_city: z.string().optional(),\n address_state: z.string().nullable().optional(),\n ingestionFileName: z.string().nullable().optional(),\n address_zip: z.string().optional(),\n address_country: z.string().optional(),\n units: z.array(UnitSchema).optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n externalServices: z.array(z.unknown()).optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n floorPlans: z.array(z.unknown()).optional(),\n});\nexport type Property = z.infer<typeof PropertySchema>;\n\n// Mirrors the backend User model with relaxed optional fields\n// Named ApiUserSchema to avoid conflict with local UserSchema (uuid-only)\nexport const ApiUserSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n email: z.string().email().optional(),\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n password: z.string().optional(),\n salt: z.string().optional(),\n role: z.string().optional(),\n Property: z.array(PropertySchema).optional(),\n Unit: z.array(UnitSchema).optional(),\n floorPlans: z.array(z.unknown()).optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n});\nexport type ApiUser = z.infer<typeof ApiUserSchema>;\n\n// Property-related schemas used by the PropertyStore and UnifiedStore\nexport const ViewedUnitSchema = z.object({\n unitId: z.string(),\n viewedDate: z.string(),\n});\nexport type ViewedUnit = z.infer<typeof ViewedUnitSchema>;\n\nexport const TourContactDataSchema = z.object({\n timezone: z.string().optional(),\n favouriteUnits: z.array(z.coerce.string()).optional(),\n preferences: z.record(z.unknown()).optional(),\n});\nexport type TourContactData = z.infer<typeof TourContactDataSchema>;\n\nexport const UserPropertyStateSchema = z.object({\n id: z.coerce.string(),\n slug: z.string(),\n favoritedUnits: z.array(z.string()).optional(),\n tourContactedOn: z.string().nullable(),\n viewedUnits: z.array(ViewedUnitSchema),\n questionnaireResults: z.unknown().nullable().optional(),\n tourContactData: TourContactDataSchema.nullable().optional(),\n // Full property payload persisted alongside per-property state\n data: PropertySchema.optional(),\n});\nexport type UserPropertyState = z.infer<typeof UserPropertyStateSchema>;\n\nexport const PropertyStoreDataSchema = z.object({\n data: z.record(UserPropertyStateSchema),\n propertySlug: z.string().nullable(),\n propertyId: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n});\nexport type PropertyStoreData = z.infer<typeof PropertyStoreDataSchema>;\n\n// Unified store schema (combines property + app persistent bits)\nexport const UnifiedStoreDataSchema = z.object({\n // Property-related data\n properties: z.record(UserPropertyStateSchema),\n currentPropertyId: z.string().nullable(),\n currentPropertySlug: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n\n // App-level data\n unitResults: z.array(UnitSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type UnifiedStoreData = z.infer<typeof UnifiedStoreDataSchema>;\n"],"names":["SCHEMA_VERSION","UserSchema","z.object","z.string","UserUnitDataSchema","z.boolean","UnitDataSchema","FilterOptionValueSchema","z.union","z.number","z.record","z.unknown","FilterCollectionSchema","z.array","FiltersSchema","z.null","ResultsModeEnum","z.enum","SortByEnum","QueryParamsSchema","AppStoreDataSchema","UnitSchema","z.coerce","PropertySchema","ApiUserSchema","ViewedUnitSchema","TourContactDataSchema","UserPropertyStateSchema","PropertyStoreDataSchema","UnifiedStoreDataSchema"],"mappings":"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"}
package/dist/schema.d.ts CHANGED
@@ -1160,7 +1160,7 @@ export type TourContactData = z.infer<typeof TourContactDataSchema>;
1160
1160
  export declare const UserPropertyStateSchema: z.ZodObject<{
1161
1161
  id: z.ZodString;
1162
1162
  slug: z.ZodString;
1163
- favoritedUnits: z.ZodArray<z.ZodString, "many">;
1163
+ favoritedUnits: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1164
1164
  tourContactedOn: z.ZodNullable<z.ZodString>;
1165
1165
  viewedUnits: z.ZodArray<z.ZodObject<{
1166
1166
  unitId: z.ZodString;
@@ -1450,7 +1450,6 @@ export declare const UserPropertyStateSchema: z.ZodObject<{
1450
1450
  }, "strip", z.ZodTypeAny, {
1451
1451
  id: string;
1452
1452
  slug: string;
1453
- favoritedUnits: string[];
1454
1453
  tourContactedOn: string | null;
1455
1454
  viewedUnits: {
1456
1455
  viewedDate: string;
@@ -1514,6 +1513,7 @@ export declare const UserPropertyStateSchema: z.ZodObject<{
1514
1513
  externalServices?: unknown[] | undefined;
1515
1514
  floorPlans?: unknown[] | undefined;
1516
1515
  } | undefined;
1516
+ favoritedUnits?: string[] | undefined;
1517
1517
  questionnaireResults?: unknown;
1518
1518
  tourContactData?: {
1519
1519
  timezone?: string | undefined;
@@ -1523,7 +1523,6 @@ export declare const UserPropertyStateSchema: z.ZodObject<{
1523
1523
  }, {
1524
1524
  id: string;
1525
1525
  slug: string;
1526
- favoritedUnits: string[];
1527
1526
  tourContactedOn: string | null;
1528
1527
  viewedUnits: {
1529
1528
  viewedDate: string;
@@ -1587,6 +1586,7 @@ export declare const UserPropertyStateSchema: z.ZodObject<{
1587
1586
  externalServices?: unknown[] | undefined;
1588
1587
  floorPlans?: unknown[] | undefined;
1589
1588
  } | undefined;
1589
+ favoritedUnits?: string[] | undefined;
1590
1590
  questionnaireResults?: unknown;
1591
1591
  tourContactData?: {
1592
1592
  timezone?: string | undefined;
@@ -1599,7 +1599,7 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
1599
1599
  data: z.ZodRecord<z.ZodString, z.ZodObject<{
1600
1600
  id: z.ZodString;
1601
1601
  slug: z.ZodString;
1602
- favoritedUnits: z.ZodArray<z.ZodString, "many">;
1602
+ favoritedUnits: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1603
1603
  tourContactedOn: z.ZodNullable<z.ZodString>;
1604
1604
  viewedUnits: z.ZodArray<z.ZodObject<{
1605
1605
  unitId: z.ZodString;
@@ -1889,7 +1889,6 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
1889
1889
  }, "strip", z.ZodTypeAny, {
1890
1890
  id: string;
1891
1891
  slug: string;
1892
- favoritedUnits: string[];
1893
1892
  tourContactedOn: string | null;
1894
1893
  viewedUnits: {
1895
1894
  viewedDate: string;
@@ -1953,6 +1952,7 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
1953
1952
  externalServices?: unknown[] | undefined;
1954
1953
  floorPlans?: unknown[] | undefined;
1955
1954
  } | undefined;
1955
+ favoritedUnits?: string[] | undefined;
1956
1956
  questionnaireResults?: unknown;
1957
1957
  tourContactData?: {
1958
1958
  timezone?: string | undefined;
@@ -1962,7 +1962,6 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
1962
1962
  }, {
1963
1963
  id: string;
1964
1964
  slug: string;
1965
- favoritedUnits: string[];
1966
1965
  tourContactedOn: string | null;
1967
1966
  viewedUnits: {
1968
1967
  viewedDate: string;
@@ -2026,6 +2025,7 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
2026
2025
  externalServices?: unknown[] | undefined;
2027
2026
  floorPlans?: unknown[] | undefined;
2028
2027
  } | undefined;
2028
+ favoritedUnits?: string[] | undefined;
2029
2029
  questionnaireResults?: unknown;
2030
2030
  tourContactData?: {
2031
2031
  timezone?: string | undefined;
@@ -2040,7 +2040,6 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
2040
2040
  data: Record<string, {
2041
2041
  id: string;
2042
2042
  slug: string;
2043
- favoritedUnits: string[];
2044
2043
  tourContactedOn: string | null;
2045
2044
  viewedUnits: {
2046
2045
  viewedDate: string;
@@ -2104,6 +2103,7 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
2104
2103
  externalServices?: unknown[] | undefined;
2105
2104
  floorPlans?: unknown[] | undefined;
2106
2105
  } | undefined;
2106
+ favoritedUnits?: string[] | undefined;
2107
2107
  questionnaireResults?: unknown;
2108
2108
  tourContactData?: {
2109
2109
  timezone?: string | undefined;
@@ -2118,7 +2118,6 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
2118
2118
  data: Record<string, {
2119
2119
  id: string;
2120
2120
  slug: string;
2121
- favoritedUnits: string[];
2122
2121
  tourContactedOn: string | null;
2123
2122
  viewedUnits: {
2124
2123
  viewedDate: string;
@@ -2182,6 +2181,7 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
2182
2181
  externalServices?: unknown[] | undefined;
2183
2182
  floorPlans?: unknown[] | undefined;
2184
2183
  } | undefined;
2184
+ favoritedUnits?: string[] | undefined;
2185
2185
  questionnaireResults?: unknown;
2186
2186
  tourContactData?: {
2187
2187
  timezone?: string | undefined;
@@ -2194,39 +2194,11 @@ export declare const PropertyStoreDataSchema: z.ZodObject<{
2194
2194
  hasPreviouslySearched: string[];
2195
2195
  }>;
2196
2196
  export type PropertyStoreData = z.infer<typeof PropertyStoreDataSchema>;
2197
- export declare const UnitFavoriteSchema: z.ZodObject<{
2198
- id: z.ZodNumber;
2199
- userId: z.ZodNumber;
2200
- unitId: z.ZodNumber;
2201
- createdAt: z.ZodString;
2202
- }, "strip", z.ZodTypeAny, {
2203
- createdAt: string;
2204
- id: number;
2205
- userId: number;
2206
- unitId: number;
2207
- }, {
2208
- createdAt: string;
2209
- id: number;
2210
- userId: number;
2211
- unitId: number;
2212
- }>;
2213
- export type UnitFavorite = z.infer<typeof UnitFavoriteSchema>;
2214
- export declare const FavoritesSchema: z.ZodObject<{
2215
- unitIds: z.ZodArray<z.ZodString, "many">;
2216
- updatedAt: z.ZodString;
2217
- }, "strip", z.ZodTypeAny, {
2218
- updatedAt: string;
2219
- unitIds: string[];
2220
- }, {
2221
- updatedAt: string;
2222
- unitIds: string[];
2223
- }>;
2224
- export type Favorites = z.infer<typeof FavoritesSchema>;
2225
2197
  export declare const UnifiedStoreDataSchema: z.ZodObject<{
2226
2198
  properties: z.ZodRecord<z.ZodString, z.ZodObject<{
2227
2199
  id: z.ZodString;
2228
2200
  slug: z.ZodString;
2229
- favoritedUnits: z.ZodArray<z.ZodString, "many">;
2201
+ favoritedUnits: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
2230
2202
  tourContactedOn: z.ZodNullable<z.ZodString>;
2231
2203
  viewedUnits: z.ZodArray<z.ZodObject<{
2232
2204
  unitId: z.ZodString;
@@ -2516,7 +2488,6 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
2516
2488
  }, "strip", z.ZodTypeAny, {
2517
2489
  id: string;
2518
2490
  slug: string;
2519
- favoritedUnits: string[];
2520
2491
  tourContactedOn: string | null;
2521
2492
  viewedUnits: {
2522
2493
  viewedDate: string;
@@ -2580,6 +2551,7 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
2580
2551
  externalServices?: unknown[] | undefined;
2581
2552
  floorPlans?: unknown[] | undefined;
2582
2553
  } | undefined;
2554
+ favoritedUnits?: string[] | undefined;
2583
2555
  questionnaireResults?: unknown;
2584
2556
  tourContactData?: {
2585
2557
  timezone?: string | undefined;
@@ -2589,7 +2561,6 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
2589
2561
  }, {
2590
2562
  id: string;
2591
2563
  slug: string;
2592
- favoritedUnits: string[];
2593
2564
  tourContactedOn: string | null;
2594
2565
  viewedUnits: {
2595
2566
  viewedDate: string;
@@ -2653,6 +2624,7 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
2653
2624
  externalServices?: unknown[] | undefined;
2654
2625
  floorPlans?: unknown[] | undefined;
2655
2626
  } | undefined;
2627
+ favoritedUnits?: string[] | undefined;
2656
2628
  questionnaireResults?: unknown;
2657
2629
  tourContactData?: {
2658
2630
  timezone?: string | undefined;
@@ -2845,7 +2817,6 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
2845
2817
  properties: Record<string, {
2846
2818
  id: string;
2847
2819
  slug: string;
2848
- favoritedUnits: string[];
2849
2820
  tourContactedOn: string | null;
2850
2821
  viewedUnits: {
2851
2822
  viewedDate: string;
@@ -2909,6 +2880,7 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
2909
2880
  externalServices?: unknown[] | undefined;
2910
2881
  floorPlans?: unknown[] | undefined;
2911
2882
  } | undefined;
2883
+ favoritedUnits?: string[] | undefined;
2912
2884
  questionnaireResults?: unknown;
2913
2885
  tourContactData?: {
2914
2886
  timezone?: string | undefined;
@@ -2978,7 +2950,6 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
2978
2950
  properties: Record<string, {
2979
2951
  id: string;
2980
2952
  slug: string;
2981
- favoritedUnits: string[];
2982
2953
  tourContactedOn: string | null;
2983
2954
  viewedUnits: {
2984
2955
  viewedDate: string;
@@ -3042,6 +3013,7 @@ export declare const UnifiedStoreDataSchema: z.ZodObject<{
3042
3013
  externalServices?: unknown[] | undefined;
3043
3014
  floorPlans?: unknown[] | undefined;
3044
3015
  } | undefined;
3016
+ favoritedUnits?: string[] | undefined;
3045
3017
  questionnaireResults?: unknown;
3046
3018
  tourContactData?: {
3047
3019
  timezone?: string | undefined;
package/dist/schema.mjs CHANGED
@@ -1,51 +1,51 @@
1
- import { object as l, enum as m, string as t, boolean as u, array as e, number as a, union as n, null as _, record as i, unknown as o, coerce as s } from "./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
2
- const P = 1, F = l({
1
+ import { object as l, enum as m, string as t, boolean as u, array as o, number as a, union as n, null as _, record as i, unknown as e, coerce as r } from "./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
2
+ const w = 1, A = l({
3
3
  uuid: t().uuid(),
4
4
  // stored as ISO string; include to match ensureUser()
5
5
  createdAt: t().datetime().optional()
6
6
  }), g = l({
7
7
  isFavorite: u().optional(),
8
8
  viewedDate: t().optional()
9
- }), v = g, r = n([
9
+ }), v = g, s = n([
10
10
  t(),
11
11
  a(),
12
12
  u(),
13
- i(o())
13
+ i(e())
14
14
  ]), f = n([
15
- r,
16
- e(r)
15
+ s,
16
+ o(s)
17
17
  ]), p = l({
18
18
  date_availability: f.nullable().optional(),
19
- qty_bedrooms: n([e(r), _()]).optional(),
19
+ qty_bedrooms: n([o(s), _()]).optional(),
20
20
  base_price: a().nullable().optional(),
21
- highlights: e(r).optional()
21
+ highlights: o(s).optional()
22
22
  }), b = m(["all", "bestFit", "closestMatch", "favorites", "loading"]), d = m(["relevance", "newest", "cost_low_to_high", "cost_high_to_low"]), h = l({
23
23
  limit: a().default(10),
24
24
  page: a().default(1),
25
25
  sortBy: d.default("relevance"),
26
26
  base_price: a().nullable().optional(),
27
- date_availability: e(t()).optional(),
28
- qty_bedrooms: e(a()).optional(),
29
- highlights: e(t()).optional(),
30
- nearBuilding: e(t()).optional(),
31
- nearNeighbourhood: e(t()).optional()
32
- }), T = l({
27
+ date_availability: o(t()).optional(),
28
+ qty_bedrooms: o(a()).optional(),
29
+ highlights: o(t()).optional(),
30
+ nearBuilding: o(t()).optional(),
31
+ nearNeighbourhood: o(t()).optional()
32
+ }), F = l({
33
33
  data: i(v),
34
34
  filters: p,
35
35
  tempFilters: p,
36
36
  apiFilters: h,
37
37
  resultsMode: b,
38
38
  propertySlug: t().nullable(),
39
- resolvedQuestionnaireValues: i(e(t())),
39
+ resolvedQuestionnaireValues: i(o(t())),
40
40
  sortBy: d
41
41
  }), c = l({
42
42
  id: n([a().int(), t()]).optional(),
43
43
  name: t(),
44
44
  slug: t().nullable().optional(),
45
- qty_bedrooms: s.number().nullable().optional(),
46
- qty_bathrooms: s.number().nullable().optional(),
47
- base_price: s.number().nullable().optional(),
48
- dim_sq_ft: s.number().nullable().optional(),
45
+ qty_bedrooms: r.number().nullable().optional(),
46
+ qty_bathrooms: r.number().nullable().optional(),
47
+ base_price: r.number().nullable().optional(),
48
+ dim_sq_ft: r.number().nullable().optional(),
49
49
  propertyId: n([a().int(), t()]).optional(),
50
50
  is_available: u().optional(),
51
51
  createdAt: t().datetime().optional(),
@@ -54,19 +54,19 @@ const P = 1, F = l({
54
54
  unitSetAvailableOn: t().datetime().nullable().optional(),
55
55
  floorPlanId: n([a().int(), t()]).nullable().optional(),
56
56
  // Relations and nested structures kept loose to avoid coupling
57
- property: o().optional(),
58
- amenities: e(o()).optional(),
59
- highlights: e(o()).optional(),
60
- floorPlan: o().nullable().optional(),
61
- renderedStyle: e(o()).optional(),
62
- video: o().nullable().optional(),
63
- videoThumbnail: o().nullable().optional(),
64
- embedGif: o().nullable().optional(),
57
+ property: e().optional(),
58
+ amenities: o(e()).optional(),
59
+ highlights: o(e()).optional(),
60
+ floorPlan: e().nullable().optional(),
61
+ renderedStyle: o(e()).optional(),
62
+ video: e().nullable().optional(),
63
+ videoThumbnail: e().nullable().optional(),
64
+ embedGif: e().nullable().optional(),
65
65
  userId: n([a().int(), t()]).optional(),
66
- user: o().optional(),
66
+ user: e().optional(),
67
67
  status: t().optional(),
68
68
  external_id: t().nullable().optional(),
69
- unitRenderedStyles: e(o()).optional()
69
+ unitRenderedStyles: o(e()).optional()
70
70
  }), y = l({
71
71
  /**
72
72
  * Property (readable shape)
@@ -111,25 +111,25 @@ const P = 1, F = l({
111
111
  contact_email: t().optional(),
112
112
  contact_phone: t().nullable().optional(),
113
113
  notification_email: t().nullable().optional(),
114
- logo: o().nullable().optional(),
115
- leadMedia: o().nullable().optional(),
116
- overviewImages: e(o()).optional(),
117
- amenityImages: e(o()).optional(),
114
+ logo: e().nullable().optional(),
115
+ leadMedia: e().nullable().optional(),
116
+ overviewImages: o(e()).optional(),
117
+ amenityImages: o(e()).optional(),
118
118
  address_street: t().optional(),
119
119
  address_city: t().optional(),
120
120
  address_state: t().nullable().optional(),
121
121
  ingestionFileName: t().nullable().optional(),
122
122
  address_zip: t().optional(),
123
123
  address_country: t().optional(),
124
- units: e(c).optional(),
125
- amenities: e(o()).optional(),
126
- highlights: e(o()).optional(),
127
- externalServices: e(o()).optional(),
124
+ units: o(c).optional(),
125
+ amenities: o(e()).optional(),
126
+ highlights: o(e()).optional(),
127
+ externalServices: o(e()).optional(),
128
128
  userId: n([a().int(), t()]).optional(),
129
- user: o().optional(),
129
+ user: e().optional(),
130
130
  status: t().optional(),
131
- floorPlans: e(o()).optional()
132
- }), w = l({
131
+ floorPlans: o(e()).optional()
132
+ }), I = l({
133
133
  id: n([a().int(), t()]).optional(),
134
134
  email: t().email().optional(),
135
135
  first_name: t().optional(),
@@ -137,76 +137,65 @@ const P = 1, F = l({
137
137
  password: t().optional(),
138
138
  salt: t().optional(),
139
139
  role: t().optional(),
140
- Property: e(y).optional(),
141
- Unit: e(c).optional(),
142
- floorPlans: e(o()).optional(),
140
+ Property: o(y).optional(),
141
+ Unit: o(c).optional(),
142
+ floorPlans: o(e()).optional(),
143
143
  createdAt: t().datetime().optional(),
144
144
  updatedAt: t().datetime().optional()
145
- }), U = l({
145
+ }), P = l({
146
146
  unitId: t(),
147
147
  viewedDate: t()
148
- }), A = l({
148
+ }), U = l({
149
149
  timezone: t().optional(),
150
- favouriteUnits: e(s.string()).optional(),
151
- preferences: i(o()).optional()
150
+ favouriteUnits: o(r.string()).optional(),
151
+ preferences: i(e()).optional()
152
152
  }), S = l({
153
- id: s.string(),
153
+ id: r.string(),
154
154
  slug: t(),
155
- favoritedUnits: e(t()),
155
+ favoritedUnits: o(t()).optional(),
156
156
  tourContactedOn: t().nullable(),
157
- viewedUnits: e(U),
158
- questionnaireResults: o().nullable().optional(),
159
- tourContactData: A.nullable().optional(),
157
+ viewedUnits: o(P),
158
+ questionnaireResults: e().nullable().optional(),
159
+ tourContactData: U.nullable().optional(),
160
160
  // Full property payload persisted alongside per-property state
161
161
  data: y.optional()
162
162
  }), D = l({
163
163
  data: i(S),
164
164
  propertySlug: t().nullable(),
165
165
  propertyId: t().nullable(),
166
- hasPreviouslySearched: e(t())
166
+ hasPreviouslySearched: o(t())
167
167
  }), q = l({
168
- id: a().int(),
169
- userId: a().int(),
170
- unitId: a().int(),
171
- createdAt: t().datetime()
172
- }), M = l({
173
- // per-property favorites are stored under a KV key, so propertyId is implicit
174
- unitIds: e(t()),
175
- updatedAt: t().datetime()
176
- }), B = l({
177
168
  // Property-related data
178
169
  properties: i(S),
179
170
  currentPropertyId: t().nullable(),
180
171
  currentPropertySlug: t().nullable(),
181
- hasPreviouslySearched: e(t()),
172
+ hasPreviouslySearched: o(t()),
182
173
  // App-level data
183
- unitResults: e(c),
174
+ unitResults: o(c),
184
175
  filters: p,
185
176
  tempFilters: p,
186
177
  apiFilters: h,
187
178
  resultsMode: b,
188
- resolvedQuestionnaireValues: i(e(t())),
179
+ resolvedQuestionnaireValues: i(o(t())),
189
180
  sortBy: d
190
181
  });
191
182
  export {
192
- w as ApiUserSchema,
193
- T as AppStoreDataSchema,
194
- M as FavoritesSchema,
183
+ I as ApiUserSchema,
184
+ F as AppStoreDataSchema,
195
185
  p as FiltersSchema,
196
186
  y as PropertySchema,
197
187
  D as PropertyStoreDataSchema,
198
188
  h as QueryParamsSchema,
199
189
  b as ResultsModeEnum,
200
- P as SCHEMA_VERSION,
190
+ w as SCHEMA_VERSION,
201
191
  d as SortByEnum,
202
- A as TourContactDataSchema,
203
- B as UnifiedStoreDataSchema,
192
+ U as TourContactDataSchema,
193
+ q as UnifiedStoreDataSchema,
204
194
  v as UnitDataSchema,
205
- q as UnitFavoriteSchema,
206
195
  c as UnitSchema,
207
196
  S as UserPropertyStateSchema,
208
- F as UserSchema,
197
+ A as UserSchema,
209
198
  g as UserUnitDataSchema,
210
- U as ViewedUnitSchema
199
+ P as ViewedUnitSchema
211
200
  };
212
201
  //# sourceMappingURL=schema.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.mjs","sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const SCHEMA_VERSION = 1 as const;\n\n// Entities\nexport const UserSchema = z.object({\n uuid: z.string().uuid(),\n // stored as ISO string; include to match ensureUser()\n createdAt: z.string().datetime().optional(),\n});\nexport type User = z.infer<typeof UserSchema>;\n\n// User-specific Unit state\nexport const UserUnitDataSchema = z.object({\n isFavorite: z.boolean().optional(),\n viewedDate: z.string().optional(),\n});\n// Back-compat alias (to be deprecated): keep existing name\nexport const UnitDataSchema = UserUnitDataSchema;\nexport type UnitData = z.infer<typeof UserUnitDataSchema>;\n\n// Filters and query params\nconst FilterOptionValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.record(z.unknown()),\n]);\n\nconst FilterCollectionSchema = z.union([\n FilterOptionValueSchema,\n z.array(FilterOptionValueSchema),\n]);\n\nexport const FiltersSchema = z.object({\n date_availability: FilterCollectionSchema.nullable().optional(),\n qty_bedrooms: z.union([z.array(FilterOptionValueSchema), z.null()]).optional(),\n base_price: z.number().nullable().optional(),\n highlights: z.array(FilterOptionValueSchema).optional(),\n});\nexport type Filters = z.infer<typeof FiltersSchema>;\n\nexport const ResultsModeEnum = z.enum([\"all\", \"bestFit\", \"closestMatch\", \"favorites\", \"loading\"]);\nexport type ResultsMode = z.infer<typeof ResultsModeEnum>;\nexport const SortByEnum = z.enum([\"relevance\", \"newest\", \"cost_low_to_high\", \"cost_high_to_low\"]);\nexport type SortBy = z.infer<typeof SortByEnum>;\n\nexport const QueryParamsSchema = z.object({\n limit: z.number().default(10),\n page: z.number().default(1),\n sortBy: SortByEnum.default(\"relevance\"),\n base_price: z.number().nullable().optional(),\n date_availability: z.array(z.string()).optional(),\n qty_bedrooms: z.array(z.number()).optional(),\n highlights: z.array(z.string()).optional(),\n nearBuilding: z.array(z.string()).optional(),\n nearNeighbourhood: z.array(z.string()).optional(),\n});\nexport type QueryParams = z.infer<typeof QueryParamsSchema>;\n\n// App (standalone) persisted state\nexport const AppStoreDataSchema = z.object({\n data: z.record(UnitDataSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n propertySlug: z.string().nullable(),\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type AppStoreData = z.infer<typeof AppStoreDataSchema>;\n\n// Domain models (optional fields to mirror API shape without breaking)\n// Mirrors the backend Unit model with relaxed optional fields\nexport const UnitSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n qty_bedrooms: z.coerce.number().nullable().optional(),\n qty_bathrooms: z.coerce.number().nullable().optional(),\n base_price: z.coerce.number().nullable().optional(),\n dim_sq_ft: z.coerce.number().nullable().optional(),\n propertyId: z.union([z.number().int(), z.string()]).optional(),\n is_available: z.boolean().optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n date_availability: z.string().datetime().nullable().optional(),\n unitSetAvailableOn: z.string().datetime().nullable().optional(),\n floorPlanId: z.union([z.number().int(), z.string()]).nullable().optional(),\n // Relations and nested structures kept loose to avoid coupling\n property: z.unknown().optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n floorPlan: z.unknown().nullable().optional(),\n renderedStyle: z.array(z.unknown()).optional(),\n video: z.unknown().nullable().optional(),\n videoThumbnail: z.unknown().nullable().optional(),\n embedGif: z.unknown().nullable().optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n external_id: z.string().nullable().optional(),\n unitRenderedStyles: z.array(z.unknown()).optional(),\n});\nexport type Unit = z.infer<typeof UnitSchema>;\n\n// Mirrors the backend Property model with relaxed optional fields\nexport const PropertySchema = z.object({\n /**\n * Property (readable shape)\n *\n * interface Property {\n * id: number | string\n * createdAt: string // ISO\n * updatedAt: string // ISO\n * title: string\n * slug?: string | null\n * description: string\n * contactName?: string | null\n * contactEmail?: string\n * contactPhone?: string | null\n * notificationEmail?: string | null\n * logo?: unknown | null\n * leadMedia?: unknown | null\n * overviewImages?: unknown[]\n * amenityImages?: unknown[]\n * street?: string\n * city?: string\n * state?: string | null\n * zip?: string\n * country?: string\n * units?: Unit[]\n * amenities?: unknown[]\n * highlights?: unknown[]\n * externalServices?: unknown[]\n * userId?: number | string\n * user?: unknown\n * status?: string\n * floorPlans?: unknown[]\n * }\n */\n id: z.union([z.number().int(), z.string()]),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n description: z.string(),\n contact_name: z.string().nullable().optional(),\n contact_email: z.string().optional(),\n contact_phone: z.string().nullable().optional(),\n notification_email: z.string().nullable().optional(),\n logo: z.unknown().nullable().optional(),\n leadMedia: z.unknown().nullable().optional(),\n overviewImages: z.array(z.unknown()).optional(),\n amenityImages: z.array(z.unknown()).optional(),\n address_street: z.string().optional(),\n address_city: z.string().optional(),\n address_state: z.string().nullable().optional(),\n ingestionFileName: z.string().nullable().optional(),\n address_zip: z.string().optional(),\n address_country: z.string().optional(),\n units: z.array(UnitSchema).optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n externalServices: z.array(z.unknown()).optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n floorPlans: z.array(z.unknown()).optional(),\n});\nexport type Property = z.infer<typeof PropertySchema>;\n\n// Mirrors the backend User model with relaxed optional fields\n// Named ApiUserSchema to avoid conflict with local UserSchema (uuid-only)\nexport const ApiUserSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n email: z.string().email().optional(),\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n password: z.string().optional(),\n salt: z.string().optional(),\n role: z.string().optional(),\n Property: z.array(PropertySchema).optional(),\n Unit: z.array(UnitSchema).optional(),\n floorPlans: z.array(z.unknown()).optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n});\nexport type ApiUser = z.infer<typeof ApiUserSchema>;\n\n// Property-related schemas used by the PropertyStore and UnifiedStore\nexport const ViewedUnitSchema = z.object({\n unitId: z.string(),\n viewedDate: z.string(),\n});\nexport type ViewedUnit = z.infer<typeof ViewedUnitSchema>;\n\nexport const TourContactDataSchema = z.object({\n timezone: z.string().optional(),\n favouriteUnits: z.array(z.coerce.string()).optional(),\n preferences: z.record(z.unknown()).optional(),\n});\nexport type TourContactData = z.infer<typeof TourContactDataSchema>;\n\nexport const UserPropertyStateSchema = z.object({\n id: z.coerce.string(),\n slug: z.string(),\n favoritedUnits: z.array(z.string()),\n tourContactedOn: z.string().nullable(),\n viewedUnits: z.array(ViewedUnitSchema),\n questionnaireResults: z.unknown().nullable().optional(),\n tourContactData: TourContactDataSchema.nullable().optional(),\n // Full property payload persisted alongside per-property state\n data: PropertySchema.optional(),\n});\nexport type UserPropertyState = z.infer<typeof UserPropertyStateSchema>;\n\nexport const PropertyStoreDataSchema = z.object({\n data: z.record(UserPropertyStateSchema),\n propertySlug: z.string().nullable(),\n propertyId: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n});\nexport type PropertyStoreData = z.infer<typeof PropertyStoreDataSchema>;\n\n// favorites\nexport const UnitFavoriteSchema = z.object({\n id: z.number().int(),\n userId: z.number().int(),\n unitId: z.number().int(),\n createdAt: z.string().datetime(),\n});\nexport type UnitFavorite = z.infer<typeof UnitFavoriteSchema>;\n\nexport const FavoritesSchema = z.object({\n // per-property favorites are stored under a KV key, so propertyId is implicit\n unitIds: z.array(z.string()),\n updatedAt: z.string().datetime(),\n});\nexport type Favorites = z.infer<typeof FavoritesSchema>;\n\n// Unified store schema (combines property + app persistent bits)\nexport const UnifiedStoreDataSchema = z.object({\n // Property-related data\n properties: z.record(UserPropertyStateSchema),\n currentPropertyId: z.string().nullable(),\n currentPropertySlug: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n\n // App-level data\n unitResults: z.array(UnitSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type UnifiedStoreData = z.infer<typeof UnifiedStoreDataSchema>;\n"],"names":["SCHEMA_VERSION","UserSchema","z.object","z.string","UserUnitDataSchema","z.boolean","UnitDataSchema","FilterOptionValueSchema","z.union","z.number","z.record","z.unknown","FilterCollectionSchema","z.array","FiltersSchema","z.null","ResultsModeEnum","z.enum","SortByEnum","QueryParamsSchema","AppStoreDataSchema","UnitSchema","z.coerce","PropertySchema","ApiUserSchema","ViewedUnitSchema","TourContactDataSchema","UserPropertyStateSchema","PropertyStoreDataSchema","UnitFavoriteSchema","FavoritesSchema","UnifiedStoreDataSchema"],"mappings":"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"}
1
+ {"version":3,"file":"schema.mjs","sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const SCHEMA_VERSION = 1 as const;\n\n// Entities\nexport const UserSchema = z.object({\n uuid: z.string().uuid(),\n // stored as ISO string; include to match ensureUser()\n createdAt: z.string().datetime().optional(),\n});\nexport type User = z.infer<typeof UserSchema>;\n\n// User-specific Unit state\nexport const UserUnitDataSchema = z.object({\n isFavorite: z.boolean().optional(),\n viewedDate: z.string().optional(),\n});\n// Back-compat alias (to be deprecated): keep existing name\nexport const UnitDataSchema = UserUnitDataSchema;\nexport type UnitData = z.infer<typeof UserUnitDataSchema>;\n\n// Filters and query params\nconst FilterOptionValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.record(z.unknown()),\n]);\n\nconst FilterCollectionSchema = z.union([\n FilterOptionValueSchema,\n z.array(FilterOptionValueSchema),\n]);\n\nexport const FiltersSchema = z.object({\n date_availability: FilterCollectionSchema.nullable().optional(),\n qty_bedrooms: z.union([z.array(FilterOptionValueSchema), z.null()]).optional(),\n base_price: z.number().nullable().optional(),\n highlights: z.array(FilterOptionValueSchema).optional(),\n});\nexport type Filters = z.infer<typeof FiltersSchema>;\n\nexport const ResultsModeEnum = z.enum([\"all\", \"bestFit\", \"closestMatch\", \"favorites\", \"loading\"]);\nexport type ResultsMode = z.infer<typeof ResultsModeEnum>;\nexport const SortByEnum = z.enum([\"relevance\", \"newest\", \"cost_low_to_high\", \"cost_high_to_low\"]);\nexport type SortBy = z.infer<typeof SortByEnum>;\n\nexport const QueryParamsSchema = z.object({\n limit: z.number().default(10),\n page: z.number().default(1),\n sortBy: SortByEnum.default(\"relevance\"),\n base_price: z.number().nullable().optional(),\n date_availability: z.array(z.string()).optional(),\n qty_bedrooms: z.array(z.number()).optional(),\n highlights: z.array(z.string()).optional(),\n nearBuilding: z.array(z.string()).optional(),\n nearNeighbourhood: z.array(z.string()).optional(),\n});\nexport type QueryParams = z.infer<typeof QueryParamsSchema>;\n\n// App (standalone) persisted state\nexport const AppStoreDataSchema = z.object({\n data: z.record(UnitDataSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n propertySlug: z.string().nullable(),\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type AppStoreData = z.infer<typeof AppStoreDataSchema>;\n\n// Domain models (optional fields to mirror API shape without breaking)\n// Mirrors the backend Unit model with relaxed optional fields\nexport const UnitSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n qty_bedrooms: z.coerce.number().nullable().optional(),\n qty_bathrooms: z.coerce.number().nullable().optional(),\n base_price: z.coerce.number().nullable().optional(),\n dim_sq_ft: z.coerce.number().nullable().optional(),\n propertyId: z.union([z.number().int(), z.string()]).optional(),\n is_available: z.boolean().optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n date_availability: z.string().datetime().nullable().optional(),\n unitSetAvailableOn: z.string().datetime().nullable().optional(),\n floorPlanId: z.union([z.number().int(), z.string()]).nullable().optional(),\n // Relations and nested structures kept loose to avoid coupling\n property: z.unknown().optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n floorPlan: z.unknown().nullable().optional(),\n renderedStyle: z.array(z.unknown()).optional(),\n video: z.unknown().nullable().optional(),\n videoThumbnail: z.unknown().nullable().optional(),\n embedGif: z.unknown().nullable().optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n external_id: z.string().nullable().optional(),\n unitRenderedStyles: z.array(z.unknown()).optional(),\n});\nexport type Unit = z.infer<typeof UnitSchema>;\n\n// Mirrors the backend Property model with relaxed optional fields\nexport const PropertySchema = z.object({\n /**\n * Property (readable shape)\n *\n * interface Property {\n * id: number | string\n * createdAt: string // ISO\n * updatedAt: string // ISO\n * title: string\n * slug?: string | null\n * description: string\n * contactName?: string | null\n * contactEmail?: string\n * contactPhone?: string | null\n * notificationEmail?: string | null\n * logo?: unknown | null\n * leadMedia?: unknown | null\n * overviewImages?: unknown[]\n * amenityImages?: unknown[]\n * street?: string\n * city?: string\n * state?: string | null\n * zip?: string\n * country?: string\n * units?: Unit[]\n * amenities?: unknown[]\n * highlights?: unknown[]\n * externalServices?: unknown[]\n * userId?: number | string\n * user?: unknown\n * status?: string\n * floorPlans?: unknown[]\n * }\n */\n id: z.union([z.number().int(), z.string()]),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n name: z.string(),\n slug: z.string().nullable().optional(),\n description: z.string(),\n contact_name: z.string().nullable().optional(),\n contact_email: z.string().optional(),\n contact_phone: z.string().nullable().optional(),\n notification_email: z.string().nullable().optional(),\n logo: z.unknown().nullable().optional(),\n leadMedia: z.unknown().nullable().optional(),\n overviewImages: z.array(z.unknown()).optional(),\n amenityImages: z.array(z.unknown()).optional(),\n address_street: z.string().optional(),\n address_city: z.string().optional(),\n address_state: z.string().nullable().optional(),\n ingestionFileName: z.string().nullable().optional(),\n address_zip: z.string().optional(),\n address_country: z.string().optional(),\n units: z.array(UnitSchema).optional(),\n amenities: z.array(z.unknown()).optional(),\n highlights: z.array(z.unknown()).optional(),\n externalServices: z.array(z.unknown()).optional(),\n userId: z.union([z.number().int(), z.string()]).optional(),\n user: z.unknown().optional(),\n status: z.string().optional(),\n floorPlans: z.array(z.unknown()).optional(),\n});\nexport type Property = z.infer<typeof PropertySchema>;\n\n// Mirrors the backend User model with relaxed optional fields\n// Named ApiUserSchema to avoid conflict with local UserSchema (uuid-only)\nexport const ApiUserSchema = z.object({\n id: z.union([z.number().int(), z.string()]).optional(),\n email: z.string().email().optional(),\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n password: z.string().optional(),\n salt: z.string().optional(),\n role: z.string().optional(),\n Property: z.array(PropertySchema).optional(),\n Unit: z.array(UnitSchema).optional(),\n floorPlans: z.array(z.unknown()).optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n});\nexport type ApiUser = z.infer<typeof ApiUserSchema>;\n\n// Property-related schemas used by the PropertyStore and UnifiedStore\nexport const ViewedUnitSchema = z.object({\n unitId: z.string(),\n viewedDate: z.string(),\n});\nexport type ViewedUnit = z.infer<typeof ViewedUnitSchema>;\n\nexport const TourContactDataSchema = z.object({\n timezone: z.string().optional(),\n favouriteUnits: z.array(z.coerce.string()).optional(),\n preferences: z.record(z.unknown()).optional(),\n});\nexport type TourContactData = z.infer<typeof TourContactDataSchema>;\n\nexport const UserPropertyStateSchema = z.object({\n id: z.coerce.string(),\n slug: z.string(),\n favoritedUnits: z.array(z.string()).optional(),\n tourContactedOn: z.string().nullable(),\n viewedUnits: z.array(ViewedUnitSchema),\n questionnaireResults: z.unknown().nullable().optional(),\n tourContactData: TourContactDataSchema.nullable().optional(),\n // Full property payload persisted alongside per-property state\n data: PropertySchema.optional(),\n});\nexport type UserPropertyState = z.infer<typeof UserPropertyStateSchema>;\n\nexport const PropertyStoreDataSchema = z.object({\n data: z.record(UserPropertyStateSchema),\n propertySlug: z.string().nullable(),\n propertyId: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n});\nexport type PropertyStoreData = z.infer<typeof PropertyStoreDataSchema>;\n\n// Unified store schema (combines property + app persistent bits)\nexport const UnifiedStoreDataSchema = z.object({\n // Property-related data\n properties: z.record(UserPropertyStateSchema),\n currentPropertyId: z.string().nullable(),\n currentPropertySlug: z.string().nullable(),\n hasPreviouslySearched: z.array(z.string()),\n\n // App-level data\n unitResults: z.array(UnitSchema),\n filters: FiltersSchema,\n tempFilters: FiltersSchema,\n apiFilters: QueryParamsSchema,\n resultsMode: ResultsModeEnum,\n resolvedQuestionnaireValues: z.record(z.array(z.string())),\n sortBy: SortByEnum,\n});\nexport type UnifiedStoreData = z.infer<typeof UnifiedStoreDataSchema>;\n"],"names":["SCHEMA_VERSION","UserSchema","z.object","z.string","UserUnitDataSchema","z.boolean","UnitDataSchema","FilterOptionValueSchema","z.union","z.number","z.record","z.unknown","FilterCollectionSchema","z.array","FiltersSchema","z.null","ResultsModeEnum","z.enum","SortByEnum","QueryParamsSchema","AppStoreDataSchema","UnitSchema","z.coerce","PropertySchema","ApiUserSchema","ViewedUnitSchema","TourContactDataSchema","UserPropertyStateSchema","PropertyStoreDataSchema","UnifiedStoreDataSchema"],"mappings":"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"}