@superbright/indexeddb-orm 1.0.2 → 1.0.4
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/README.md +5 -5
- package/dist/adapters/structured-store.cjs +1 -1
- package/dist/adapters/structured-store.cjs.map +1 -1
- package/dist/adapters/structured-store.d.ts +1 -1
- package/dist/adapters/structured-store.mjs +1 -1
- package/dist/adapters/structured-store.mjs.map +1 -1
- package/dist/adapters/zustand-store.cjs +1 -1
- package/dist/adapters/zustand-store.cjs.map +1 -1
- package/dist/adapters/zustand-store.mjs +12 -11
- package/dist/adapters/zustand-store.mjs.map +1 -1
- package/dist/base/property.d.ts +2 -2
- package/dist/base/unit.d.ts +12 -12
- package/dist/base/user.d.ts +4 -4
- package/dist/features/analytics/MixpanelProvider.cjs +1 -1
- package/dist/features/analytics/MixpanelProvider.cjs.map +1 -1
- package/dist/features/analytics/MixpanelProvider.mjs +22 -20
- package/dist/features/analytics/MixpanelProvider.mjs.map +1 -1
- package/dist/features/filters/transformers.cjs +2 -0
- package/dist/features/filters/transformers.cjs.map +1 -0
- package/dist/features/filters/transformers.d.ts +31 -0
- package/dist/features/filters/transformers.mjs +110 -0
- package/dist/features/filters/transformers.mjs.map +1 -0
- package/dist/features/units/transformers.cjs +1 -1
- package/dist/features/units/transformers.cjs.map +1 -1
- package/dist/features/units/transformers.d.ts +12 -10
- package/dist/features/units/transformers.mjs +42 -38
- package/dist/features/units/transformers.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.mjs +80 -76
- package/dist/index.mjs.map +1 -1
- package/dist/schema.cjs +1 -1
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.ts +754 -715
- package/dist/schema.mjs +104 -101
- package/dist/schema.mjs.map +1 -1
- package/dist/stores/store.cjs +1 -1
- package/dist/stores/store.cjs.map +1 -1
- package/dist/stores/store.mjs +229 -240
- package/dist/stores/store.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OpenDBError as t, SchemaMismatchError as o } from "./errors.mjs";
|
|
2
|
-
import { ApiUserSchema as i, AppStoreDataSchema as m, FavoritesSchema as n, FiltersSchema as
|
|
3
|
-
import { getDB as
|
|
4
|
-
import { defaultIdGenerator as
|
|
2
|
+
import { ApiUserSchema as i, AppStoreDataSchema as m, FavoritesSchema as n, FiltersSchema as s, PropertySchema as p, PropertyStoreDataSchema as S, QueryParamsSchema as f, ResultsModeEnum as l, SCHEMA_VERSION as c, SortByEnum as d, TourContactDataSchema as u, UnifiedStoreDataSchema as x, UnitDataSchema as U, UnitFavoriteSchema as h, UnitSchema as M, UserPropertyStateSchema as v, UserSchema as y, UserUnitDataSchema as g, ViewedUnitSchema as E } from "./schema.mjs";
|
|
3
|
+
import { getDB as D, resetDB as F } from "./db.mjs";
|
|
4
|
+
import { defaultIdGenerator as T, ensureUser as R, getUserUUID as I } from "./api/users.mjs";
|
|
5
5
|
import { debugDump as b, exportJSON as k } from "./debug.mjs";
|
|
6
6
|
import { createORMStringStorage as V, kvGet as B, kvRemove as _, kvSet as G } from "./storage.mjs";
|
|
7
7
|
import { getFavoritedUnitsForProperty as L, isUnitFavorited as Q, setFavoriteUnit as N, toggleFavoriteUnit as w } from "./api/favorites.mjs";
|
|
@@ -10,115 +10,119 @@ import { UnifiedStore as q, UnifiedStore as z, store as K } from "./stores/store
|
|
|
10
10
|
import { createUseUnitState as Y, createZustandUnifiedStore as $ } from "./adapters/zustand-store.mjs";
|
|
11
11
|
import { createStructuredStore as re, createStructuredStoreActions as te } from "./adapters/structured-store.mjs";
|
|
12
12
|
import { favorites as ae } from "./units/favorites.mjs";
|
|
13
|
-
import { DEFAULT_PLACEHOLDER_IMAGE as me, DEFAULT_WEB_ORIGIN as ne, buildExploreUrl as
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
13
|
+
import { DEFAULT_PLACEHOLDER_IMAGE as me, DEFAULT_WEB_ORIGIN as ne, buildExploreUrl as se, buildImageUrl as pe, transformUnitsApiResponse as Se, transformUnitsApiResponseToClient as fe, transformUnitsApiResponseToClientFilters as le } from "./features/units/transformers.mjs";
|
|
14
|
+
import { defaultSortParamMap as de, transformFiltersToPreferences as ue, transformFiltersToUnitsSearchParams as xe } from "./features/filters/transformers.mjs";
|
|
15
|
+
import { imperialToMm as he, inchesToMm as Me, mmToInches as ve } from "./utils/dimensions.mjs";
|
|
16
|
+
import { configureValidation as ge } from "./validation.mjs";
|
|
17
|
+
import { OverviewImagesOnPropertyModel as Pe } from "./base/overviewimagesonproperty.mjs";
|
|
18
|
+
import { AmenityImagesOnPropertyModel as Fe } from "./base/amenityimagesonproperty.mjs";
|
|
19
|
+
import { FloorPlanModel as Te } from "./base/floorplan.mjs";
|
|
20
|
+
import { MediaModel as Ie } from "./base/media.mjs";
|
|
21
|
+
import { PropertyModel as be } from "./base/property.mjs";
|
|
22
|
+
import { PropertyHighlightModel as Ce } from "./base/propertyhighlight.mjs";
|
|
23
|
+
import { RoomModel as Be } from "./base/room.mjs";
|
|
24
|
+
import { StyleModel as Ge } from "./base/style.mjs";
|
|
25
|
+
import { UnitModel as Le } from "./base/unit.mjs";
|
|
26
|
+
import { Currency as Ne, DeliveryStatus as we, ExternalService as Je, FurnitureAvailability as We, Highlights as Ze, MediaType as je, QueueJobStatus as qe, RenderStatus as ze, Status as Ke, UserRole as Xe } from "./base/enums.mjs";
|
|
27
|
+
import { RenderedStyleModel as $e } from "./base/renderedstyle.mjs";
|
|
28
|
+
import { PropertyAmenityModel as rr } from "./base/propertyamenity.mjs";
|
|
29
|
+
import { FavoriteUnitModel as or } from "./base/favoriteunit.mjs";
|
|
30
|
+
import { UserModel as ir } from "./base/user.mjs";
|
|
31
|
+
import { MixpanelProvider as nr, useMixpanel as sr } from "./features/analytics/MixpanelProvider.mjs";
|
|
32
|
+
import { generateUserUUID as Sr } from "./features/analytics/generateUserUUID.mjs";
|
|
33
|
+
import { QuestionEnumValues as lr, QuestionnaireInteractionValues as cr, SortEnumValues as dr, buildTrackingEvents as ur, useTrackEvent as xr, useTrackingEvents as Ur } from "./features/analytics/analytics.mjs";
|
|
33
34
|
export {
|
|
34
|
-
|
|
35
|
+
Fe as AmenityImagesOnPropertyModel,
|
|
35
36
|
i as ApiUserSchema,
|
|
36
37
|
m as AppStoreDataSchema,
|
|
37
|
-
|
|
38
|
+
Ne as Currency,
|
|
38
39
|
me as DEFAULT_PLACEHOLDER_IMAGE,
|
|
39
40
|
ne as DEFAULT_WEB_ORIGIN,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
we as DeliveryStatus,
|
|
42
|
+
Je as ExternalService,
|
|
43
|
+
or as FavoriteUnitModel,
|
|
43
44
|
n as FavoritesSchema,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
45
|
+
s as FiltersSchema,
|
|
46
|
+
Te as FloorPlanModel,
|
|
47
|
+
We as FurnitureAvailability,
|
|
48
|
+
Ze as Highlights,
|
|
49
|
+
Ie as MediaModel,
|
|
50
|
+
je as MediaType,
|
|
51
|
+
nr as MixpanelProvider,
|
|
51
52
|
t as OpenDBError,
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
Pe as OverviewImagesOnPropertyModel,
|
|
54
|
+
rr as PropertyAmenityModel,
|
|
55
|
+
Ce as PropertyHighlightModel,
|
|
56
|
+
be as PropertyModel,
|
|
57
|
+
p as PropertySchema,
|
|
57
58
|
W as PropertyStore,
|
|
58
59
|
S as PropertyStoreDataSchema,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
60
|
+
f as QueryParamsSchema,
|
|
61
|
+
lr as QuestionEnumValues,
|
|
62
|
+
cr as QuestionnaireInteractionValues,
|
|
63
|
+
qe as QueueJobStatus,
|
|
64
|
+
ze as RenderStatus,
|
|
65
|
+
$e as RenderedStyleModel,
|
|
66
|
+
l as ResultsModeEnum,
|
|
67
|
+
Be as RoomModel,
|
|
68
|
+
c as SCHEMA_VERSION,
|
|
68
69
|
o as SchemaMismatchError,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
d as SortByEnum,
|
|
71
|
+
dr as SortEnumValues,
|
|
72
|
+
Ke as Status,
|
|
72
73
|
q as Store,
|
|
73
|
-
|
|
74
|
-
|
|
74
|
+
Ge as StyleModel,
|
|
75
|
+
u as TourContactDataSchema,
|
|
75
76
|
z as UnifiedStore,
|
|
76
|
-
|
|
77
|
-
|
|
77
|
+
x as UnifiedStoreDataSchema,
|
|
78
|
+
U as UnitDataSchema,
|
|
78
79
|
h as UnitFavoriteSchema,
|
|
79
|
-
|
|
80
|
+
Le as UnitModel,
|
|
80
81
|
M as UnitSchema,
|
|
81
|
-
|
|
82
|
+
ir as UserModel,
|
|
82
83
|
v as UserPropertyStateSchema,
|
|
83
|
-
|
|
84
|
+
Xe as UserRole,
|
|
84
85
|
y as UserSchema,
|
|
85
86
|
g as UserUnitDataSchema,
|
|
86
87
|
E as ViewedUnitSchema,
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
se as buildExploreUrl,
|
|
89
|
+
pe as buildImageUrl,
|
|
90
|
+
ur as buildTrackingEvents,
|
|
91
|
+
ge as configureValidation,
|
|
91
92
|
V as createORMStringStorage,
|
|
92
93
|
re as createStructuredStore,
|
|
93
94
|
te as createStructuredStoreActions,
|
|
94
95
|
Y as createUseUnitState,
|
|
95
96
|
$ as createZustandUnifiedStore,
|
|
96
97
|
b as debugDump,
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
T as defaultIdGenerator,
|
|
99
|
+
de as defaultSortParamMap,
|
|
100
|
+
R as ensureUser,
|
|
99
101
|
k as exportJSON,
|
|
100
102
|
ae as favorites,
|
|
101
|
-
|
|
102
|
-
|
|
103
|
+
Sr as generateUserUUID,
|
|
104
|
+
D as getDB,
|
|
103
105
|
L as getFavoritedUnitsForProperty,
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
106
|
+
I as getUserUUID,
|
|
107
|
+
he as imperialToMm,
|
|
108
|
+
Me as inchesToMm,
|
|
107
109
|
Q as isUnitFavorited,
|
|
108
110
|
B as kvGet,
|
|
109
111
|
_ as kvRemove,
|
|
110
112
|
G as kvSet,
|
|
111
|
-
|
|
113
|
+
ve as mmToInches,
|
|
112
114
|
Z as propertyStore,
|
|
113
115
|
F as resetDB,
|
|
114
116
|
N as setFavoriteUnit,
|
|
115
117
|
K as store,
|
|
116
118
|
w as toggleFavoriteUnit,
|
|
119
|
+
ue as transformFiltersToPreferences,
|
|
120
|
+
xe as transformFiltersToUnitsSearchParams,
|
|
117
121
|
Se as transformUnitsApiResponse,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
122
|
+
fe as transformUnitsApiResponseToClient,
|
|
123
|
+
le as transformUnitsApiResponseToClientFilters,
|
|
124
|
+
sr as useMixpanel,
|
|
125
|
+
xr as useTrackEvent,
|
|
126
|
+
Ur as useTrackingEvents
|
|
123
127
|
};
|
|
124
128
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
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"),
|
|
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,e=t.union([t.string(),t.number(),t.boolean(),t.record(t.unknown())]),b=t.union([e,t.array(e)]),n=t.object({date_availability:b.nullable().optional(),qty_bedrooms:t.union([t.array(e),t.null()]).optional(),base_price:t.number().nullable().optional(),highlights:t.array(e).optional()}),i=t.enum(["all","bestFit","closestMatch","favorites","loading"]),a=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:a.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:a}),o=t.object({id:t.union([t.number().int(),t.string()]).optional(),title: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(),title: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:a});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=a;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;
|
|
2
2
|
//# sourceMappingURL=schema.cjs.map
|
package/dist/schema.cjs.map
CHANGED
|
@@ -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 availability: FilterCollectionSchema.nullable().optional(),\n bedrooms: z.union([z.array(FilterOptionValueSchema), z.null()]).optional(),\n cost: z.number().nullable().optional(),\n highlights: z.array(FilterOptionValueSchema).optional(),\n});\nexport type Filters = z.infer<typeof FiltersSchema>;\n\nexport const QueryParamsSchema = z.object({\n limit: z.number().default(10),\n page: z.number().default(1),\n availability: z.array(z.string()).optional(),\n bedrooms: z.array(z.number()).optional(),\n cost: z.number().nullable().optional(),\n highlights: z.array(z.string()).optional(),\n});\nexport type QueryParams = z.infer<typeof QueryParamsSchema>;\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\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 title: z.string(),\n slug: z.string().nullable().optional(),\n bedrooms: z.coerce.number().nullable().optional(),\n bathrooms: z.coerce.number().nullable().optional(),\n cost: z.coerce.number().nullable().optional(),\n totalSqFt: z.coerce.number().nullable().optional(),\n propertyId: z.union([z.number().int(), z.string()]).optional(),\n isAvailable: z.boolean().optional(),\n createdAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n 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 externalId: 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 title: z.string(),\n slug: z.string().nullable().optional(),\n description: z.string(),\n contactName: z.string().nullable().optional(),\n contactEmail: z.string().optional(),\n contactPhone: z.string().nullable().optional(),\n notificationEmail: 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 street: z.string().optional(),\n city: z.string().optional(),\n state: z.string().nullable().optional(),\n ingestionFileName: z.string().nullable().optional(),\n zip: z.string().optional(),\n 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 firstName: z.string().optional(),\n lastName: 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","QueryParamsSchema","ResultsModeEnum","z.enum","SortByEnum","AppStoreDataSchema","UnitSchema","z.coerce","PropertySchema","ApiUserSchema","ViewedUnitSchema","TourContactDataSchema","UserPropertyStateSchema","PropertyStoreDataSchema","UnitFavoriteSchema","FavoritesSchema","UnifiedStoreDataSchema"],"mappings":"kKAEaA,EAAiB,EAGjBC,EAAaC,EAAAA,OAAS,CACjC,KAAMC,EAAAA,OAAE,EAAS,KAAA,EAEjB,UAAWA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,CACnC,CAAC,EAIYC,EAAqBF,EAAAA,OAAS,CACzC,WAAYG,EAAAA,QAAE,EAAU,SAAA,EACxB,WAAYF,EAAAA,OAAE,EAAS,SAAA,CACzB,CAAC,EAEYG,EAAiBF,EAIxBG,EAA0BC,EAAAA,MAAQ,CACtCL,SAAE,EACFM,SAAE,EACFJ,UAAE,EACFK,EAAAA,OAASC,EAAAA,QAAE,CAAS,CACtB,CAAC,EAEKC,EAAyBJ,EAAAA,MAAQ,CACrCD,EACAM,EAAAA,MAAQN,CAAuB,CACjC,CAAC,EAEYO,EAAgBZ,EAAAA,OAAS,CACpC,aAAcU,EAAuB,SAAA,EAAW,SAAA,EAChD,SAAUJ,EAAAA,MAAQ,CAACK,QAAQN,CAAuB,EAAGQ,OAAE,CAAM,CAAC,EAAE,SAAA,EAChE,KAAMN,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EAC5B,WAAYI,EAAAA,MAAQN,CAAuB,EAAE,SAAA,CAC/C,CAAC,EAGYS,EAAoBd,EAAAA,OAAS,CACxC,MAAOO,EAAAA,OAAE,EAAS,QAAQ,EAAE,EAC5B,KAAMA,EAAAA,OAAE,EAAS,QAAQ,CAAC,EAC1B,aAAcI,EAAAA,MAAQV,SAAE,CAAQ,EAAE,SAAA,EAClC,SAAUU,EAAAA,MAAQJ,SAAE,CAAQ,EAAE,SAAA,EAC9B,KAAMA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EAC5B,WAAYI,EAAAA,MAAQV,SAAE,CAAQ,EAAE,SAAA,CAClC,CAAC,EAGYc,EAAkBC,EAAAA,KAAO,CAAC,MAAO,UAAW,eAAgB,YAAa,SAAS,CAAC,EAEnFC,EAAaD,EAAAA,KAAO,CAAC,YAAa,SAAU,mBAAoB,kBAAkB,CAAC,EAInFE,EAAqBlB,EAAAA,OAAS,CACzC,KAAMQ,EAAAA,OAASJ,CAAc,EAC7B,QAASQ,EACT,YAAaA,EACb,WAAYE,EACZ,YAAaC,EACb,aAAcd,EAAAA,OAAE,EAAS,SAAA,EACzB,4BAA6BO,EAAAA,OAASG,QAAQV,EAAAA,OAAE,CAAQ,CAAC,EACzD,OAAQgB,CACV,CAAC,EAKYE,EAAanB,EAAAA,OAAS,CACjC,GAAIM,EAAAA,MAAQ,CAACC,SAAE,EAAS,IAAA,EAAON,EAAAA,OAAE,CAAQ,CAAC,EAAE,SAAA,EAC5C,MAAOA,EAAAA,OAAE,EACT,KAAMA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EAC5B,SAAUmB,EAAAA,OAAS,SAAS,SAAA,EAAW,SAAA,EACvC,UAAWA,EAAAA,OAAS,SAAS,SAAA,EAAW,SAAA,EACxC,KAAMA,EAAAA,OAAS,SAAS,SAAA,EAAW,SAAA,EACnC,UAAWA,EAAAA,OAAS,SAAS,SAAA,EAAW,SAAA,EACxC,WAAYd,EAAAA,MAAQ,CAACC,SAAE,EAAS,IAAA,EAAON,EAAAA,OAAE,CAAQ,CAAC,EAAE,SAAA,EACpD,YAAaE,EAAAA,QAAE,EAAU,SAAA,EACzB,UAAWF,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EACjC,UAAWA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EACjC,aAAcA,EAAAA,OAAE,EAAS,WAAW,SAAA,EAAW,SAAA,EAC/C,mBAAoBA,EAAAA,OAAE,EAAS,WAAW,SAAA,EAAW,SAAA,EACrD,YAAaK,EAAAA,MAAQ,CAACC,EAAAA,SAAW,IAAA,EAAON,EAAAA,QAAU,CAAC,EAAE,SAAA,EAAW,SAAA,EAEhE,SAAUQ,EAAAA,QAAE,EAAU,SAAA,EACtB,UAAWE,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EAChC,WAAYE,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EACjC,UAAWA,EAAAA,QAAE,EAAU,SAAA,EAAW,SAAA,EAClC,cAAeE,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EACpC,MAAOA,EAAAA,QAAE,EAAU,SAAA,EAAW,SAAA,EAC9B,eAAgBA,EAAAA,QAAE,EAAU,SAAA,EAAW,SAAA,EACvC,SAAUA,EAAAA,QAAE,EAAU,SAAA,EAAW,SAAA,EACjC,OAAQH,EAAAA,MAAQ,CAACC,SAAE,EAAS,IAAA,EAAON,EAAAA,OAAE,CAAQ,CAAC,EAAE,SAAA,EAChD,KAAMQ,EAAAA,QAAE,EAAU,SAAA,EAClB,OAAQR,EAAAA,OAAE,EAAS,SAAA,EACnB,WAAYA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EAClC,mBAAoBU,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,CAC3C,CAAC,EAIYY,EAAiBrB,EAAAA,OAAS,CAkCrC,GAAIM,EAAAA,MAAQ,CAACC,EAAAA,OAAE,EAAS,IAAA,EAAON,EAAAA,OAAE,CAAQ,CAAC,EAC1C,UAAWA,EAAAA,OAAE,EAAS,SAAA,EACtB,UAAWA,EAAAA,OAAE,EAAS,SAAA,EACtB,MAAOA,EAAAA,OAAE,EACT,KAAMA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EAC5B,YAAaA,EAAAA,OAAE,EACf,YAAaA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EACnC,aAAcA,EAAAA,OAAE,EAAS,SAAA,EACzB,aAAcA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EACpC,kBAAmBA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EACzC,KAAMQ,EAAAA,QAAE,EAAU,SAAA,EAAW,SAAA,EAC7B,UAAWA,EAAAA,QAAE,EAAU,SAAA,EAAW,SAAA,EAClC,eAAgBE,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EACrC,cAAeE,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EACpC,OAAQR,EAAAA,OAAE,EAAS,SAAA,EACnB,KAAMA,EAAAA,OAAE,EAAS,SAAA,EACjB,MAAOA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EAC7B,kBAAmBA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EACzC,IAAKA,EAAAA,OAAE,EAAS,SAAA,EAChB,QAASA,EAAAA,OAAE,EAAS,SAAA,EACpB,MAAOU,EAAAA,MAAQQ,CAAU,EAAE,SAAA,EAC3B,UAAWR,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EAChC,WAAYE,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EACjC,iBAAkBE,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EACvC,OAAQH,EAAAA,MAAQ,CAACC,SAAE,EAAS,IAAA,EAAON,EAAAA,OAAE,CAAQ,CAAC,EAAE,SAAA,EAChD,KAAMQ,EAAAA,QAAE,EAAU,SAAA,EAClB,OAAQR,EAAAA,OAAE,EAAS,SAAA,EACnB,WAAYU,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,CACnC,CAAC,EAKYa,EAAgBtB,EAAAA,OAAS,CACpC,GAAIM,EAAAA,MAAQ,CAACC,SAAE,EAAS,IAAA,EAAON,EAAAA,OAAE,CAAQ,CAAC,EAAE,SAAA,EAC5C,MAAOA,EAAAA,OAAE,EAAS,MAAA,EAAQ,SAAA,EAC1B,UAAWA,EAAAA,OAAE,EAAS,SAAA,EACtB,SAAUA,EAAAA,OAAE,EAAS,SAAA,EACrB,SAAUA,EAAAA,OAAE,EAAS,SAAA,EACrB,KAAMA,EAAAA,OAAE,EAAS,SAAA,EACjB,KAAMA,EAAAA,OAAE,EAAS,SAAA,EACjB,SAAUU,EAAAA,MAAQU,CAAc,EAAE,SAAA,EAClC,KAAMV,EAAAA,MAAQQ,CAAU,EAAE,SAAA,EAC1B,WAAYR,EAAAA,MAAQF,UAAE,CAAS,EAAE,SAAA,EACjC,UAAWR,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,EACjC,UAAWA,EAAAA,OAAE,EAAS,SAAA,EAAW,SAAA,CACnC,CAAC,EAIYsB,EAAmBvB,EAAAA,OAAS,CACvC,OAAQC,EAAAA,OAAE,EACV,WAAYA,EAAAA,OAAE,CAChB,CAAC,EAGYuB,EAAwBxB,EAAAA,OAAS,CAC5C,SAAUC,EAAAA,OAAE,EAAS,SAAA,EACrB,eAAgBU,EAAAA,MAAQS,EAAAA,OAAS,OAAA,CAAQ,EAAE,SAAA,EAC3C,YAAaZ,EAAAA,OAASC,UAAE,CAAS,EAAE,SAAA,CACrC,CAAC,EAGYgB,EAA0BzB,EAAAA,OAAS,CAC9C,GAAIoB,EAAAA,OAAS,OAAA,EACb,KAAMnB,EAAAA,OAAE,EACR,eAAgBU,EAAAA,MAAQV,EAAAA,QAAU,EAClC,gBAAiBA,EAAAA,OAAE,EAAS,SAAA,EAC5B,YAAaU,EAAAA,MAAQY,CAAgB,EACrC,qBAAsBd,EAAAA,QAAE,EAAU,SAAA,EAAW,SAAA,EAC7C,gBAAiBe,EAAsB,SAAA,EAAW,SAAA,EAElD,KAAMH,EAAe,SAAA,CACvB,CAAC,EAGYK,EAA0B1B,EAAAA,OAAS,CAC9C,KAAMQ,EAAAA,OAASiB,CAAuB,EACtC,aAAcxB,EAAAA,OAAE,EAAS,SAAA,EACzB,WAAYA,EAAAA,OAAE,EAAS,SAAA,EACvB,sBAAuBU,EAAAA,MAAQV,UAAU,CAC3C,CAAC,EAIY0B,EAAqB3B,EAAAA,OAAS,CACzC,GAAIO,EAAAA,OAAE,EAAS,IAAA,EACf,OAAQA,EAAAA,OAAE,EAAS,IAAA,EACnB,OAAQA,EAAAA,OAAE,EAAS,IAAA,EACnB,UAAWN,EAAAA,OAAE,EAAS,SAAA,CACxB,CAAC,EAGY2B,EAAkB5B,EAAAA,OAAS,CAEtC,QAASW,EAAAA,MAAQV,EAAAA,QAAU,EAC3B,UAAWA,EAAAA,OAAE,EAAS,SAAA,CACxB,CAAC,EAIY4B,EAAyB7B,EAAAA,OAAS,CAE7C,WAAYQ,EAAAA,OAASiB,CAAuB,EAC5C,kBAAmBxB,EAAAA,OAAE,EAAS,SAAA,EAC9B,oBAAqBA,EAAAA,OAAE,EAAS,SAAA,EAChC,sBAAuBU,EAAAA,MAAQV,EAAAA,QAAU,EAGzC,YAAaU,EAAAA,MAAQQ,CAAU,EAC/B,QAASP,EACT,YAAaA,EACb,WAAYE,EACZ,YAAaC,EACb,4BAA6BP,EAAAA,OAASG,QAAQV,EAAAA,OAAE,CAAQ,CAAC,EACzD,OAAQgB,CACV,CAAC"}
|
|
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 title: 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 title: 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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"}
|