@superbright/indexeddb-orm 1.0.33 → 1.0.35
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 +44 -359
- package/dist/adapters/dexie.cjs +1 -1
- package/dist/adapters/dexie.cjs.map +1 -1
- package/dist/adapters/dexie.d.ts +3 -4
- package/dist/adapters/dexie.mjs +6 -9
- package/dist/adapters/dexie.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.d.ts +20 -41
- package/dist/adapters/zustand-store.mjs +34 -194
- package/dist/adapters/zustand-store.mjs.map +1 -1
- package/dist/base/furniture.d.ts +2 -2
- package/dist/base/index.d.ts +0 -1
- package/dist/base/visitorquestionnaire.d.ts +2 -2
- package/dist/db.cjs +1 -1
- package/dist/db.cjs.map +1 -1
- package/dist/db.mjs +57 -75
- package/dist/db.mjs.map +1 -1
- package/dist/features/analytics/analytics.cjs +1 -1
- package/dist/features/analytics/analytics.cjs.map +1 -1
- package/dist/features/analytics/analytics.d.ts +481 -152
- package/dist/features/analytics/analytics.mjs +230 -175
- package/dist/features/analytics/analytics.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.mjs +92 -107
- 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 +1 -2088
- package/dist/schema.mjs +105 -161
- 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.d.ts +7 -158
- package/dist/stores/store.mjs +13 -427
- package/dist/stores/store.mjs.map +1 -1
- package/dist/utils/casing.cjs +1 -1
- package/dist/utils/casing.cjs.map +1 -1
- package/dist/utils/casing.d.ts +0 -4
- package/dist/utils/casing.mjs +1 -4
- package/dist/utils/casing.mjs.map +1 -1
- package/dist/validation.cjs +1 -1
- package/dist/validation.cjs.map +1 -1
- package/dist/validation.d.ts +0 -2
- package/dist/validation.mjs +3 -14
- package/dist/validation.mjs.map +1 -1
- package/package.json +5 -1
- package/dist/adapters/structured-store.cjs +0 -2
- package/dist/adapters/structured-store.cjs.map +0 -1
- package/dist/adapters/structured-store.d.ts +0 -45
- package/dist/adapters/structured-store.mjs +0 -51
- package/dist/adapters/structured-store.mjs.map +0 -1
- package/dist/base/favoriteunit.cjs +0 -2
- package/dist/base/favoriteunit.cjs.map +0 -1
- package/dist/base/favoriteunit.d.ts +0 -14
- package/dist/base/favoriteunit.mjs +0 -10
- package/dist/base/favoriteunit.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.mjs","sources":["../../../src/features/analytics/analytics.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport {\n convertKeysToCamelCase,\n convertKeysToSnakeCase,\n} from \"../../utils/casing\";\nimport { normalizeToStringArray } from \"../../utils/collections\";\nimport { useAnalytics } from \"./AnalyticsProvider\";\n\ntype AnalyticsPayload<Schema extends z.ZodTypeAny> = z.input<Schema>;\n\ntype AnalyticsPayloadWithout<\n Schema extends z.ZodTypeAny,\n Keys extends PropertyKey,\n> = Omit<AnalyticsPayload<Schema>, Keys>;\n\nexport const QuestionEnumValues = [\"location\", \"budget\", \"size\", \"other\"] as const;\nexport type QuestionEnum = (typeof QuestionEnumValues)[number];\nexport type FilterEnum = string;\nexport const SortEnumValues = [\n \"cost_low_to_high\",\n \"cost_high_to_low\",\n \"newest\",\n \"relevance\",\n] as const;\nexport type SortEnum = (typeof SortEnumValues)[number];\nexport const QuestionnaireInteractionValues = [\n \"Skip\",\n \"Continue\",\n \"Back\",\n] as const;\nexport type QuestionnaireInteraction =\n (typeof QuestionnaireInteractionValues)[number];\n\nconst propertyContextSchema = z.object({\n propertyId: z.string().min(1, \"propertyId is required\"),\n propertySlug: z.string().min(1, \"propertySlug is required\"),\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst propertyWithNameSchema = propertyContextSchema.extend({\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst viewAllUnitsSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst loadMoreSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst scheduleTourFormSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n lifestylePreferences: z.unknown().optional(),\n});\n\nconst questionnaireEventSchema = propertyWithNameSchema.extend({\n funnelStep: z.number().int().nonnegative(),\n profileQuestion: z.string().min(1, \"profileQuestion is required\"),\n interactedElement: z.enum(QuestionnaireInteractionValues),\n questionEnum: z.string().optional(),\n});\n\nconst continueQuestionnaireEventSchema = questionnaireEventSchema.extend({\n selectedAnswersEnumArray: z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"selectedAnswersEnumArray must resolve to an array\",\n }),\n});\n\nconst unitEventSchema = propertyContextSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst unitWithPropertyNameSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst getInTouchFormSchema = unitWithPropertyNameSchema.extend({\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n favoritedUnit: z.boolean(),\n});\nconst styleDrawerSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n favoritedUnit: z.boolean(),\n});\nconst furnitureInteractionSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n type: z.enum([\"click\", \"hover_on\", \"hover_off\"]),\n})\nconst furnitureExternalUrlSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n link: z.string().min(1, \"link is required\"),\n type: z.string().min(1, \"type is required\"),\n favoritedUnit: z.boolean(),\n})\nconst furnitureSavedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n})\nconst furnitureModalOpenedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n})\nconst furnitureCarouselSchema = unitWithPropertyNameSchema.extend({\n method: z.enum([\"Prev\", \"Next\"]),\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n})\n\nconst roomEnteredSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"Navigation\", \"Map\"]),\n})\nconst roomLeftSchema = roomEnteredSchema.extend({\n timeInRoom: z.number().int().nonnegative(),\n})\n\nconst videoStartedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"On Click Play\"]),\n videoCurrentTime: z.number().int().nonnegative(),\n videoDuration: z.number().int().nonnegative(),\n videoPercent: z.number().int().nonnegative(),\n videoFilename: z.string().min(1, \"videoFilename is required\"),\n})\nconst emailTrackedSchema = unitWithPropertyNameSchema.extend({\n utmSource: z.string().min(1, \"utm_source is required\"),\n utmMedium: z.string().min(1, \"utm_medium is required\"),\n utmName: z.string().min(1, \"utm_name is required\"),\n\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n favoritedUnit: z.boolean(),\n})\nconst webPageViewedBaseSchema = unitWithPropertyNameSchema.extend({\n fullUrl: z.string().min(1, \"fullUrl is required\"),\n datestamp: z.string().min(1, \"datestamp is required\"),\n})\n// 360 app only\nconst webPageViewedSchema = webPageViewedBaseSchema.extend({\n pageName: z.string().min(1, \"pageName is required\"),\n})\nconst webPageRoomViewedSchema = webPageViewedBaseSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n})\nconst embedPageViewedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n})\n\n// property_slug, property_id, property_name, unit_id, unit_slug, unit_title, unit_bedrooms\n\nconst toastSchema = unitWithPropertyNameSchema.extend({\n toastCopy: z.string().min(1, \"toastCopy is required\"),\n})\nconst contentModalOpenedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n})\n\nconst buildingDetailsModalSchema = propertyWithNameSchema\n\nconst hoverUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n});\n\nconst selectionSchema = z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"Selection must resolve to an array\",\n });\n\nconst filterOpenSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n filterName: z.string().optional(),\n});\n\nconst filterMutationSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n});\n\nconst sortEventSchema = propertyContextSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n});\n\nconst sortOpenSchema = propertyWithNameSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst questionnaireResultSchema = propertyContextSchema.extend({\n fullQuestionnaireSchemaJson: z.unknown().optional(),\n resultsJson: z\n .object({\n type: z.string().optional(),\n total: z.number().int().nonnegative().optional(),\n units: z\n .array(\n z.object({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().optional(),\n })\n )\n .optional(),\n })\n .optional(),\n});\n\nconst clickUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n});\n\nconst clickUnitFavoritesSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n});\n\nconst unitUnfavoritedSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nexport type BaseEvent = z.infer<typeof propertyContextSchema>;\nexport type ViewAllUnitsEvent = z.infer<typeof viewAllUnitsSchema>;\nexport type LoadMoreEvent = z.infer<typeof loadMoreSchema>;\nexport type QuestionnaireEvent = z.infer<typeof questionnaireEventSchema>;\nexport type ContinueQuestionnaireEvent = z.infer<\n typeof continueQuestionnaireEventSchema\n>;\nexport type ClickUnitEvent = z.infer<typeof clickUnitSchema>;\nexport type UnitEvent = z.infer<typeof unitEventSchema>;\nexport type HoverUnitEvent = z.infer<typeof hoverUnitSchema>;\nexport type FilterEvent = z.infer<typeof filterMutationSchema>;\nexport type FilterOpenEvent = z.infer<typeof filterOpenSchema>;\nexport type SortEvent = z.infer<typeof sortEventSchema>;\nexport type SortOpenEvent = z.infer<typeof sortOpenSchema>;\nexport type QuestionnaireResultEvent = z.infer<\n typeof questionnaireResultSchema\n>;\nexport type ClickUnitFavoritesEvent = z.infer<typeof clickUnitFavoritesSchema>;\nexport type ScheduleTourFormEvent = z.infer<typeof scheduleTourFormSchema>;\nexport type UnitUnfavoritedEvent = z.infer<typeof unitUnfavoritedSchema>;\n\nexport type GetInTouchFormEvent = z.infer<typeof getInTouchFormSchema>;\nexport type StyleDrawerEvent = z.infer<typeof styleDrawerSchema>;\nexport type FurnitureInteractionEvent = z.infer<typeof furnitureInteractionSchema>;\nexport type FurnitureExternalUrlClickedEvent = z.infer<typeof furnitureExternalUrlSchema>;\nexport type FurnitureSavedEvent = z.infer<typeof furnitureSavedSchema>;\nexport type FurnitureModalOpenedEvent = z.infer<typeof furnitureModalOpenedSchema>;\nexport type FurnitureCarouselEvent = z.infer<typeof furnitureCarouselSchema>;\nexport type RoomEnteredEvent = z.infer<typeof roomEnteredSchema>;\nexport type RoomLeftEvent = z.infer<typeof roomLeftSchema>;\nexport type VideoStartedEvent = z.infer<typeof videoStartedSchema>;\nexport type EmailTrackedEvent = z.infer<typeof emailTrackedSchema>;\nexport type ToastEvent = z.infer<typeof toastSchema>;\nexport type ContentModalOpenedEvent = z.infer<typeof contentModalOpenedSchema>;\nexport type BuildingDetailsModalEvent = z.infer<typeof buildingDetailsModalSchema>;\nexport type WebPageViewedEvent = z.infer<typeof webPageViewedSchema>;\nexport type WebPageRoomViewedEvent = z.infer<typeof webPageRoomViewedSchema>;\n\n\nexport type TrackingEventWithUnits = FilterEvent & {\n trackingEvent: (payload: FilterEvent) => void;\n [metadata: string]: unknown;\n};\n\nexport type TrackEventFn = (eventName: string, data?: Record<string, any>) => void;\n\nexport function useTrackEvent() {\n const analytics = useAnalytics();\n return (eventName: string, data?: Record<string, any>) => {\n const payload =\n data == null ? data : (convertKeysToSnakeCase(data) as Record<string, any>);\n analytics.track(eventName, payload);\n };\n}\n\nconst createStrictTrackerInternal =\n <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n dispatch: (\n eventName: string,\n payload: unknown,\n options?: { skipKeyTransform?: boolean },\n ) => void,\n options?: {\n skipKeyTransform?: boolean;\n forwardOriginalPayload?: boolean;\n isDev?: boolean;\n },\n ) =>\n (payload: AnalyticsPayload<Schema>) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<Schema>;\n const result = schema.safeParse(normalizedPayload);\n if (!result.success) {\n if (options?.isDev) {\n // eslint-disable-next-line no-console\n console.warn(\n `[Analytics] Invalid payload for \"${eventName}\":`,\n result.error.flatten(),\n );\n }\n return;\n }\n const payloadForDispatch = options?.forwardOriginalPayload\n ? payload\n : result.data;\n dispatch(eventName, payloadForDispatch, {\n skipKeyTransform: options?.skipKeyTransform,\n });\n };\n\nexport function buildTrackingEvents(trackEvent: TrackEventFn, isDev = false) {\n const dispatch = (\n eventName: string,\n payload: unknown,\n options?: { skipKeyTransform?: boolean },\n ) => {\n const finalPayload = options?.skipKeyTransform\n ? (payload as Record<string, any>)\n : (convertKeysToSnakeCase(payload) as Record<string, any>);\n trackEvent(eventName, finalPayload);\n };\n\n const createStrictTracker = <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n options?: { skipKeyTransform?: boolean; forwardOriginalPayload?: boolean },\n ) =>\n createStrictTrackerInternal(eventName, schema, dispatch, { ...options, isDev });\n\n return {\n trackViewAllUnits: (\n payload: AnalyticsPayload<typeof viewAllUnitsSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof viewAllUnitsSchema>;\n const result = viewAllUnitsSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"View All Units\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"View All Units\", result.data);\n },\n trackQuestionnaireSkip: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Skip\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Skip):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireContinue: (\n payload: AnalyticsPayloadWithout<\n typeof continueQuestionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof continueQuestionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = continueQuestionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Continue\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Continue):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireBack: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Back\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Back):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackClickUnit: createStrictTracker(\"Unit Card Clicked\", clickUnitSchema, {\n skipKeyTransform: true,\n forwardOriginalPayload: true,\n }),\n trackHoverUnit: createStrictTracker(\"Unit Hovered\", hoverUnitSchema, {\n skipKeyTransform: true,\n forwardOriginalPayload: true,\n }),\n trackLoadMore: (\n payload: AnalyticsPayload<typeof loadMoreSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof loadMoreSchema>;\n const result = loadMoreSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"More Units Loaded\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"More Units Loaded\", result.data);\n },\n trackFilterOpened: createStrictTracker(\"Filter Opened\", filterOpenSchema),\n trackFilterCanceled: createStrictTracker(\n \"Filter Cleared\",\n filterMutationSchema,\n ),\n trackFilterApplied: createStrictTracker(\n \"Filter Applied\",\n filterMutationSchema,\n ),\n trackOpenSort: (\n payload: AnalyticsPayload<typeof sortOpenSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof sortOpenSchema>;\n const result = sortOpenSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Sort Opened\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Sort Opened\", result.data);\n },\n trackSelectSort: createStrictTracker(\"Sort Applied\", sortEventSchema),\n trackCancelSort: createStrictTracker(\"Sort Canceled\", sortEventSchema),\n trackClickUnitFavorites: createStrictTracker(\n \"Unit Favorited\",\n clickUnitFavoritesSchema,\n ),\n trackUnitUnfavorited: createStrictTracker(\n \"Unit Unfavorited\",\n unitUnfavoritedSchema,\n ),\n trackQuestionnaireResult: createStrictTracker(\n \"Questionnaire Submitted\",\n questionnaireResultSchema,\n ),\n trackScheduleTourFormInteracted: createStrictTracker(\n \"Schedule Tour Form Interacted\",\n scheduleTourFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackScheduleTourFormSubmitted: createStrictTracker(\n \"Schedule Tour Form Submitted\",\n scheduleTourFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackScheduleTourUrlClicked: createStrictTracker(\n \"Schedule Tour URL Clicked\",\n scheduleTourFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackGetInTouchFormOpened: createStrictTracker(\n \"Form Opened\",\n getInTouchFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackGetInTouchFormSubmitted: createStrictTracker(\n \"Form Submitted\",\n getInTouchFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackStyleDrawerOpened: createStrictTracker(\n \"Style Menu Opened\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackStyleDrawerChanged: createStrictTracker(\n \"Style Changed\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackOpeningStyleImpression: createStrictTracker(\n \"Opening Style Modal Impression\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackOpeningStyleSlected: createStrictTracker(\n \"Opening Style Selected\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureViewed: createStrictTracker(\n \"Furniture Viewed\",\n furnitureInteractionSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureExternalUrlClicked: createStrictTracker(\n \"Purchase Link Clicked\",\n furnitureExternalUrlSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureSaved: createStrictTracker(\n \"Furniture Saved\",\n furnitureSavedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureModalOpened: createStrictTracker(\n \"Furniture Modal Opened\",\n furnitureModalOpenedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureCarouselToggled: createStrictTracker(\n \"Furniture Carousel Toggled\",\n furnitureCarouselSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackRoomEntered: createStrictTracker(\n \"Room Entered\",\n roomEnteredSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackRoomLeft: createStrictTracker(\n \"Room Left\",\n roomLeftSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackVideoStarted: createStrictTracker(\n \"Video Started\",\n videoStartedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackEmailRedirect: createStrictTracker(\n \"Email Tracked\",\n emailTrackedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackToastImpression: createStrictTracker(\n \"Toast Impression\",\n toastSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackToastClicked: createStrictTracker(\n \"Toast Clicked\",\n toastSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackToastClosed: createStrictTracker(\n \"Toast Closed\",\n toastSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackContentModalOpened: createStrictTracker(\n \"Content Modal Opened\",\n contentModalOpenedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackBuildingDetailsModalOpened: createStrictTracker(\n \"Building Details Modal\",\n buildingDetailsModalSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackWebPageViewed: createStrictTracker(\n \"Page Viewed\",\n webPageViewedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackWebPageRoomViewed: createStrictTracker(\n \"Page Viewed\",\n webPageRoomViewedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackEmbedPageViewed: createStrictTracker(\n \"Embed Impression\",\n embedPageViewedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n };\n}\n\nexport function useTrackingEvents() {\n const { isDev } = useAnalytics();\n const trackEvent = useTrackEvent();\n return buildTrackingEvents(trackEvent, isDev);\n}\n"],"names":["QuestionEnumValues","SortEnumValues","QuestionnaireInteractionValues","propertyContextSchema","z.object","z.string","propertyWithNameSchema","viewAllUnitsSchema","z.number","loadMoreSchema","scheduleTourFormSchema","z.unknown","questionnaireEventSchema","z.enum","continueQuestionnaireEventSchema","z.any","value","normalizeToStringArray","unitWithPropertyNameSchema","getInTouchFormSchema","z.boolean","styleDrawerSchema","furnitureInteractionSchema","furnitureExternalUrlSchema","furnitureSavedSchema","furnitureModalOpenedSchema","furnitureCarouselSchema","roomEnteredSchema","roomLeftSchema","videoStartedSchema","emailTrackedSchema","webPageViewedBaseSchema","webPageViewedSchema","webPageRoomViewedSchema","embedPageViewedSchema","toastSchema","contentModalOpenedSchema","buildingDetailsModalSchema","hoverUnitSchema","selectionSchema","filterOpenSchema","filterMutationSchema","sortEventSchema","sortOpenSchema","questionnaireResultSchema","z.array","clickUnitSchema","clickUnitFavoritesSchema","unitUnfavoritedSchema","useTrackEvent","analytics","useAnalytics","eventName","data","payload","convertKeysToSnakeCase","createStrictTrackerInternal","schema","dispatch","options","normalizedPayload","convertKeysToCamelCase","result","payloadForDispatch","buildTrackingEvents","trackEvent","isDev","finalPayload","createStrictTracker","useTrackingEvents"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analytics.mjs","sources":["../../../src/features/analytics/analytics.ts"],"sourcesContent":["import { z } from \"zod\";\n\nimport {\n convertKeysToCamelCase,\n convertKeysToSnakeCase,\n} from \"../../utils/casing\";\nimport { normalizeToStringArray } from \"../../utils/collections\";\nimport { useAnalytics } from \"./AnalyticsProvider\";\n\ntype AnalyticsPayload<Schema extends z.ZodTypeAny> = z.input<Schema>;\n\ntype AnalyticsPayloadWithout<\n Schema extends z.ZodTypeAny,\n Keys extends PropertyKey,\n> = Omit<AnalyticsPayload<Schema>, Keys>;\n\nexport const QuestionEnumValues = [\"location\", \"budget\", \"size\", \"other\"] as const;\nexport type QuestionEnum = (typeof QuestionEnumValues)[number];\nexport type FilterEnum = string;\nexport const SortEnumValues = [\n \"cost_low_to_high\",\n \"cost_high_to_low\",\n \"newest\",\n \"relevance\",\n] as const;\nexport type SortEnum = (typeof SortEnumValues)[number];\nexport const QuestionnaireInteractionValues = [\n \"Skip\",\n \"Continue\",\n \"Back\",\n] as const;\nexport type QuestionnaireInteraction =\n (typeof QuestionnaireInteractionValues)[number];\n\nconst propertyContextSchema = z.object({\n propertyId: z.string().min(1, \"propertyId is required\"),\n propertySlug: z.string().min(1, \"propertySlug is required\"),\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst propertyWithNameSchema = propertyContextSchema.extend({\n propertyName: z.string().min(1, \"propertyName is required\"),\n});\n\nconst viewAllUnitsSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst loadMoreSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst scheduleTourFormSchema = propertyWithNameSchema.extend({\n totalUnitsAvailable: z.number().int().nonnegative(),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n lifestylePreferences: z.unknown().optional(),\n});\n\nconst questionnaireEventSchema = propertyWithNameSchema.extend({\n funnelStep: z.number().int().nonnegative(),\n profileQuestion: z.string().min(1, \"profileQuestion is required\"),\n interactedElement: z.enum(QuestionnaireInteractionValues),\n questionEnum: z.string().optional(),\n});\n\nconst continueQuestionnaireEventSchema = questionnaireEventSchema.extend({\n selectedAnswersEnumArray: z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"selectedAnswersEnumArray must resolve to an array\",\n }),\n});\n\nconst unitEventSchema = propertyContextSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst unitWithPropertyNameSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\nconst getInTouchFormSchema = unitWithPropertyNameSchema.extend({\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n favoritedUnit: z.boolean(),\n});\nconst styleDrawerSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n favoritedUnit: z.boolean(),\n});\nconst furnitureInteractionSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n type: z.enum([\"click\", \"hover_on\", \"hover_off\"]),\n})\nconst furnitureExternalUrlSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n link: z.string().min(1, \"link is required\"),\n type: z.string().min(1, \"type is required\"),\n favoritedUnit: z.boolean(),\n})\nconst furnitureSavedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n})\nconst furnitureModalOpenedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n})\nconst furnitureCarouselSchema = unitWithPropertyNameSchema.extend({\n method: z.enum([\"Prev\", \"Next\"]),\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n furnitureId: z.string().min(1, \"furnitureId is required\"),\n furnitureName: z.string().min(1, \"furnitureName is required\"),\n})\n\nconst roomEnteredSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"Navigation\", \"Map\"]),\n})\nconst roomLeftSchema = roomEnteredSchema.extend({\n timeInRoom: z.number().int().nonnegative(),\n})\n\nconst videoStartedSchema = unitWithPropertyNameSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n method: z.enum([\"On Click Play\"]),\n videoCurrentTime: z.number().int().nonnegative(),\n videoDuration: z.number().int().nonnegative(),\n videoPercent: z.number().int().nonnegative(),\n videoFilename: z.string().min(1, \"videoFilename is required\"),\n})\nconst emailTrackedSchema = unitWithPropertyNameSchema.extend({\n utmSource: z.string().min(1, \"utm_source is required\"),\n utmMedium: z.string().min(1, \"utm_medium is required\"),\n utmName: z.string().min(1, \"utm_name is required\"),\n\n unitBedrooms: z.number().int().nonnegative(),\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n\n favoritedUnit: z.boolean(),\n})\nconst webPageViewedBaseSchema = unitWithPropertyNameSchema.extend({\n fullUrl: z.string().min(1, \"fullUrl is required\"),\n datestamp: z.string().min(1, \"datestamp is required\"),\n})\n// 360 app only\nconst webPageViewedSchema = webPageViewedBaseSchema.extend({\n pageName: z.string().min(1, \"pageName is required\"),\n})\nconst webPageRoomViewedSchema = webPageViewedBaseSchema.extend({\n roomName: z.string().min(1, \"roomName is required\"),\n})\nconst embedPageViewedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n})\nconst embedPageViewSchemaWithUTM = unitWithPropertyNameSchema.extend({\n utmSource: z.string().min(1, \"utm_source is required\"),\n utmMedium: z.string().min(1, \"utm_medium is required\"),\n utmName: z.string().min(1, \"utm_name is required\"),\n})\n\n// property_slug, property_id, property_name, unit_id, unit_slug, unit_title, unit_bedrooms\n\nconst toastSchema = unitWithPropertyNameSchema.extend({\n toastCopy: z.string().min(1, \"toastCopy is required\"),\n})\nconst contentModalOpenedSchema = unitWithPropertyNameSchema.extend({\n unitBedrooms: z.number().int().nonnegative(),\n\n styleId: z.string().min(1, \"styleId is required\"),\n styleName: z.string().min(1, \"styleName is required\"),\n})\n\nconst buildingDetailsModalSchema = propertyWithNameSchema;\n\nconst subscriptionImpressionSchema = propertyWithNameSchema.extend({\n name: z.string().min(1, \"name is required\"),\n\n})\n\nconst subscriptionInteractedSchema = z.object({\n name: z.string().min(1, \"name is required\"),\n properties: z.object({ \n propertyContextSchema,\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n pageName: z.string().min(1, \"pageName is required\"),\n fieldName: z.string().min(1, \"fieldName is required\"),\n }),\n});\n\nconst subscriptionSubmittedSchema = z.object({\n name: z.string().min(1, \"name is required\"),\n properties: z.object({\n propertyContextSchema,\n buttonName: z.string().min(1, \"buttonName is required\"),\n formName: z.string().min(1, \"formName is required\"),\n pageName: z.string().min(1, \"pageName is required\"),\n bedrooms: z.array(z.union([z.string(), z.number()])).optional(),\n price: z.number().nullable().optional(),\n }),\n});\n\nconst subscriptionRemovedSchema = propertyWithNameSchema.extend({\n\n bedrooms: z.array(z.number()).optional(),\n price_min: z.number().optional(),\n price_max: z.number().optional(),\n highlights: z.array(z.string()).optional(),\n\n\n page_name: z.string().optional(),\n});\n\nconst hoverUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nconst selectionSchema = z\n .any()\n .transform((value) => normalizeToStringArray(value))\n .refine((value): value is string[] => Array.isArray(value), {\n message: \"Selection must resolve to an array\",\n });\n\nconst filterOpenSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n filterName: z.string().optional(),\n});\n\nconst filterMutationSchema = propertyWithNameSchema.extend({\n filterIndex: z.number().int().nonnegative(),\n filterLabel: z.string().min(1, \"filterLabel is required\"),\n selectedFiltersEnum: selectionSchema,\n});\n\nconst sortEventSchema = propertyContextSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n});\n\nconst sortOpenSchema = propertyWithNameSchema.extend({\n sortIndex: z.number().int().nonnegative(),\n sortEnum: z.enum(SortEnumValues),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n});\n\nconst questionnaireResultSchema = propertyContextSchema.extend({\n fullQuestionnaireSchemaJson: z.unknown().optional(),\n resultsJson: z\n .object({\n type: z.string().optional(),\n total: z.number().int().nonnegative().optional(),\n units: z\n .array(\n z.object({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().optional(),\n })\n )\n .optional(),\n })\n .optional(),\n});\n\nconst clickUnitSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nconst clickUnitFavoritesSchema = unitWithPropertyNameSchema.extend({\n favoritedUnit: z.boolean(),\n unitIndex: z.number().int().nonnegative(),\n\n});\n\nconst unitUnfavoritedSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitName: z.string().min(1, \"unitName is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n resultsUnitCount: z.number().int().nonnegative(),\n unitCountDate: z.string().optional(),\n unitIndex: z.number().int().nonnegative(),\n});\n\nexport type BaseEvent = z.infer<typeof propertyContextSchema>;\nexport type ViewAllUnitsEvent = z.infer<typeof viewAllUnitsSchema>;\nexport type LoadMoreEvent = z.infer<typeof loadMoreSchema>;\nexport type QuestionnaireEvent = z.infer<typeof questionnaireEventSchema>;\nexport type ContinueQuestionnaireEvent = z.infer<\n typeof continueQuestionnaireEventSchema\n>;\nexport type ClickUnitEvent = z.infer<typeof clickUnitSchema>;\nexport type UnitEvent = z.infer<typeof unitEventSchema>;\nexport type HoverUnitEvent = z.infer<typeof hoverUnitSchema>;\nexport type FilterEvent = z.infer<typeof filterMutationSchema>;\nexport type FilterOpenEvent = z.infer<typeof filterOpenSchema>;\nexport type SortEvent = z.infer<typeof sortEventSchema>;\nexport type SortOpenEvent = z.infer<typeof sortOpenSchema>;\nexport type QuestionnaireResultEvent = z.infer<\n typeof questionnaireResultSchema\n>;\nexport type ClickUnitFavoritesEvent = z.infer<typeof clickUnitFavoritesSchema>;\nexport type ScheduleTourFormEvent = z.infer<typeof scheduleTourFormSchema>;\nexport type UnitUnfavoritedEvent = z.infer<typeof unitUnfavoritedSchema>;\n\nexport type GetInTouchFormEvent = z.infer<typeof getInTouchFormSchema>;\nexport type StyleDrawerEvent = z.infer<typeof styleDrawerSchema>;\nexport type FurnitureInteractionEvent = z.infer<typeof furnitureInteractionSchema>;\nexport type FurnitureExternalUrlClickedEvent = z.infer<typeof furnitureExternalUrlSchema>;\nexport type FurnitureSavedEvent = z.infer<typeof furnitureSavedSchema>;\nexport type FurnitureModalOpenedEvent = z.infer<typeof furnitureModalOpenedSchema>;\nexport type FurnitureCarouselEvent = z.infer<typeof furnitureCarouselSchema>;\nexport type RoomEnteredEvent = z.infer<typeof roomEnteredSchema>;\nexport type RoomLeftEvent = z.infer<typeof roomLeftSchema>;\nexport type VideoStartedEvent = z.infer<typeof videoStartedSchema>;\nexport type EmailTrackedEvent = z.infer<typeof emailTrackedSchema>;\nexport type ToastEvent = z.infer<typeof toastSchema>;\nexport type ContentModalOpenedEvent = z.infer<typeof contentModalOpenedSchema>;\nexport type BuildingDetailsModalEvent = z.infer<typeof buildingDetailsModalSchema>;\nexport type SubscriptionImpressionEvent = z.infer<typeof subscriptionImpressionSchema>;\nexport type SubscriptionInteractedEvent = z.infer<typeof subscriptionInteractedSchema>;\nexport type SubscriptionSubmittedEvent = z.infer<typeof subscriptionSubmittedSchema>;\nexport type SubscriptionRemovedEvent = z.infer<typeof subscriptionRemovedSchema>;\nexport type WebPageViewedEvent = z.infer<typeof webPageViewedSchema>;\nexport type WebPageRoomViewedEvent = z.infer<typeof webPageRoomViewedSchema>;\n\n\nexport type TrackingEventWithUnits = FilterEvent & {\n trackingEvent: (payload: FilterEvent) => void;\n [metadata: string]: unknown;\n};\n\nexport type TrackEventFn = (eventName: string, data?: Record<string, any>) => void;\n\nexport function useTrackEvent() {\n const analytics = useAnalytics();\n return (eventName: string, data?: Record<string, any>) => {\n const payload =\n data == null ? data : (convertKeysToSnakeCase(data) as Record<string, any>);\n analytics.track(eventName, payload);\n };\n}\n\nconst createStrictTrackerInternal =\n <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n dispatch: (\n eventName: string,\n payload: unknown,\n options?: { skipKeyTransform?: boolean },\n ) => void,\n options?: {\n skipKeyTransform?: boolean;\n forwardOriginalPayload?: boolean;\n isDev?: boolean;\n },\n ) =>\n (payload: AnalyticsPayload<Schema>) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<Schema>;\n const result = schema.safeParse(normalizedPayload);\n if (!result.success) {\n if (options?.isDev) {\n // eslint-disable-next-line no-console\n console.warn(\n `[Analytics] Invalid payload for \"${eventName}\":`,\n result.error.flatten(),\n );\n }\n return;\n }\n const payloadForDispatch = options?.forwardOriginalPayload\n ? payload\n : result.data;\n dispatch(eventName, payloadForDispatch, {\n skipKeyTransform: options?.skipKeyTransform,\n });\n };\n\nexport function buildTrackingEvents(trackEvent: TrackEventFn, isDev = false) {\n const dispatch = (\n eventName: string,\n payload: unknown,\n options?: { skipKeyTransform?: boolean },\n ) => {\n const finalPayload = options?.skipKeyTransform\n ? (payload as Record<string, any>)\n : (convertKeysToSnakeCase(payload) as Record<string, any>);\n trackEvent(eventName, finalPayload);\n };\n\n const createStrictTracker = <Schema extends z.ZodTypeAny>(\n eventName: string,\n schema: Schema,\n options?: { skipKeyTransform?: boolean; forwardOriginalPayload?: boolean },\n ) =>\n createStrictTrackerInternal(eventName, schema, dispatch, { ...options, isDev });\n\n return {\n trackViewAllUnits: (\n payload: AnalyticsPayload<typeof viewAllUnitsSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof viewAllUnitsSchema>;\n const result = viewAllUnitsSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"View All Units\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"View All Units\", result.data);\n },\n trackQuestionnaireSkip: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Skip\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Skip):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireContinue: (\n payload: AnalyticsPayloadWithout<\n typeof continueQuestionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof continueQuestionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = continueQuestionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Continue\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Continue):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackQuestionnaireBack: (\n payload: AnalyticsPayloadWithout<\n typeof questionnaireEventSchema,\n \"interactedElement\"\n >,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as Omit<\n z.input<typeof questionnaireEventSchema>,\n \"interactedElement\"\n >;\n const result = questionnaireEventSchema.safeParse({\n ...normalizedPayload,\n interactedElement: \"Back\",\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Questionnaire Navigated\\\" (Back):\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Questionnaire Navigated\", result.data);\n },\n trackClickUnit: createStrictTracker(\"Unit Card Clicked\", clickUnitSchema, {\n skipKeyTransform: true,\n forwardOriginalPayload: true,\n }),\n trackHoverUnit: createStrictTracker(\"Unit Hovered\", hoverUnitSchema, {\n skipKeyTransform: true,\n forwardOriginalPayload: true,\n }),\n trackLoadMore: (\n payload: AnalyticsPayload<typeof loadMoreSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof loadMoreSchema>;\n const result = loadMoreSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"More Units Loaded\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"More Units Loaded\", result.data);\n },\n trackFilterOpened: createStrictTracker(\"Filter Opened\", filterOpenSchema),\n trackFilterCanceled: createStrictTracker(\n \"Filter Cleared\",\n filterMutationSchema,\n ),\n trackFilterApplied: createStrictTracker(\n \"Filter Applied\",\n filterMutationSchema,\n ),\n trackOpenSort: (\n payload: AnalyticsPayload<typeof sortOpenSchema>,\n ) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<typeof sortOpenSchema>;\n const result = sortOpenSchema.safeParse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n if (!result.success) {\n if (isDev) console.warn(\"[Analytics] Invalid payload for \\\"Sort Opened\\\":\", result.error.flatten()); // eslint-disable-line no-console\n return;\n }\n dispatch(\"Sort Opened\", result.data);\n },\n trackSelectSort: createStrictTracker(\"Sort Applied\", sortEventSchema),\n trackCancelSort: createStrictTracker(\"Sort Canceled\", sortEventSchema),\n trackClickUnitFavorites: createStrictTracker(\n \"Unit Favorited\",\n clickUnitFavoritesSchema,\n ),\n trackUnitUnfavorited: createStrictTracker(\n \"Unit Unfavorited\",\n unitUnfavoritedSchema,\n ),\n trackQuestionnaireResult: createStrictTracker(\n \"Questionnaire Submitted\",\n questionnaireResultSchema,\n ),\n trackScheduleTourFormInteracted: createStrictTracker(\n \"Schedule Tour Form Interacted\",\n scheduleTourFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackScheduleTourFormSubmitted: createStrictTracker(\n \"Schedule Tour Form Submitted\",\n scheduleTourFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackScheduleTourUrlClicked: createStrictTracker(\n \"Schedule Tour URL Clicked\",\n scheduleTourFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackGetInTouchFormOpened: createStrictTracker(\n \"Form Opened\",\n getInTouchFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackGetInTouchFormSubmitted: createStrictTracker(\n \"Form Submitted\",\n getInTouchFormSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackStyleDrawerOpened: createStrictTracker(\n \"Style Menu Opened\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackStyleDrawerChanged: createStrictTracker(\n \"Style Changed\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackOpeningStyleImpression: createStrictTracker(\n \"Opening Style Modal Impression\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackOpeningStyleSlected: createStrictTracker(\n \"Opening Style Selected\",\n styleDrawerSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureViewed: createStrictTracker(\n \"Furniture Viewed\",\n furnitureInteractionSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureExternalUrlClicked: createStrictTracker(\n \"Purchase Link Clicked\",\n furnitureExternalUrlSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureSaved: createStrictTracker(\n \"Furniture Saved\",\n furnitureSavedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureModalOpened: createStrictTracker(\n \"Furniture Modal Opened\",\n furnitureModalOpenedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackFurnitureCarouselToggled: createStrictTracker(\n \"Furniture Carousel Toggled\",\n furnitureCarouselSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackRoomEntered: createStrictTracker(\n \"Room Entered\",\n roomEnteredSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackRoomLeft: createStrictTracker(\n \"Room Left\",\n roomLeftSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackVideoStarted: createStrictTracker(\n \"Video Started\",\n videoStartedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackEmailRedirect: createStrictTracker(\n \"Email Tracked\",\n emailTrackedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackToastImpression: createStrictTracker(\n \"Toast Impression\",\n toastSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackToastClicked: createStrictTracker(\n \"Toast Clicked\",\n toastSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackToastClosed: createStrictTracker(\n \"Toast Closed\",\n toastSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackContentModalOpened: createStrictTracker(\n \"Content Modal Opened\",\n contentModalOpenedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackBuildingDetailsModalOpened: createStrictTracker(\n \"Building Details Modal\",\n buildingDetailsModalSchema,\n ),\n trackSubscriptionImpression: createStrictTracker(\n \"Subscription Impression\",\n subscriptionImpressionSchema,\n ),\n trackSubscriptionInteracted: createStrictTracker(\n \"Subscription Interacted\",\n subscriptionInteractedSchema,\n ),\n trackSubscriptionSubmitted: createStrictTracker(\n \"Subscription Submitted\",\n subscriptionSubmittedSchema,\n ),\n trackSubscriptionRemoved: createStrictTracker(\n \"Subscription Removed\",\n subscriptionRemovedSchema,\n ),\n trackWebPageViewed: createStrictTracker(\n \"Page Viewed\",\n webPageViewedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackWebPageRoomViewed: createStrictTracker(\n \"Page Viewed\",\n webPageRoomViewedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackEmbedPageViewed: createStrictTracker(\n \"Embed Impression\",\n embedPageViewedSchema,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n trackEmailClick: (data: { event_name: string }) => createStrictTracker(\n `Email Interaction - ${data.event_name}`,\n embedPageViewSchemaWithUTM,\n { skipKeyTransform: true, forwardOriginalPayload: true },\n ),\n };\n}\n\nexport function useTrackingEvents() {\n const { isDev } = useAnalytics();\n const trackEvent = useTrackEvent();\n return buildTrackingEvents(trackEvent, isDev);\n}\n"],"names":["QuestionEnumValues","SortEnumValues","QuestionnaireInteractionValues","propertyContextSchema","z.object","z.string","propertyWithNameSchema","viewAllUnitsSchema","z.number","loadMoreSchema","scheduleTourFormSchema","z.unknown","questionnaireEventSchema","z.enum","continueQuestionnaireEventSchema","z.any","value","normalizeToStringArray","unitWithPropertyNameSchema","getInTouchFormSchema","z.boolean","styleDrawerSchema","furnitureInteractionSchema","furnitureExternalUrlSchema","furnitureSavedSchema","furnitureModalOpenedSchema","furnitureCarouselSchema","roomEnteredSchema","roomLeftSchema","videoStartedSchema","emailTrackedSchema","webPageViewedBaseSchema","webPageViewedSchema","webPageRoomViewedSchema","embedPageViewedSchema","embedPageViewSchemaWithUTM","toastSchema","contentModalOpenedSchema","buildingDetailsModalSchema","subscriptionImpressionSchema","subscriptionInteractedSchema","subscriptionSubmittedSchema","z.array","z.union","subscriptionRemovedSchema","hoverUnitSchema","selectionSchema","filterOpenSchema","filterMutationSchema","sortEventSchema","sortOpenSchema","questionnaireResultSchema","clickUnitSchema","clickUnitFavoritesSchema","unitUnfavoritedSchema","useTrackEvent","analytics","useAnalytics","eventName","data","payload","convertKeysToSnakeCase","createStrictTrackerInternal","schema","dispatch","options","normalizedPayload","convertKeysToCamelCase","result","payloadForDispatch","buildTrackingEvents","trackEvent","isDev","finalPayload","createStrictTracker","useTrackingEvents"],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("./errors.cjs"),r=require("./schema.cjs"),l=require("./db.cjs"),u=require("./debug.cjs"),s=require("./storage.cjs"),c=require("./stores/store.cjs"),d=require("./adapters/zustand-store.cjs"),t=require("./features/units/transformers.cjs"),n=require("./features/filters/transformers.cjs"),o=require("./utils/dimensions.cjs"),p=require("./validation.cjs"),y=require("./base/overviewimagesonproperty.cjs"),S=require("./base/amenityimagesonproperty.cjs"),M=require("./base/floorplan.cjs"),g=require("./base/media.cjs"),E=require("./base/property.cjs"),h=require("./base/propertyhighlight.cjs"),v=require("./base/room.cjs"),T=require("./base/style.cjs"),P=require("./base/unit.cjs"),e=require("./base/enums.cjs"),R=require("./base/renderedstyle.cjs"),A=require("./base/propertyamenity.cjs"),U=require("./base/user.cjs"),q=require("./base/propertylink.cjs"),m=require("./features/analytics/AnalyticsProvider.cjs"),i=require("./features/analytics/analytics.cjs");exports.OpenDBError=a.OpenDBError;exports.SchemaMismatchError=a.SchemaMismatchError;exports.ApiUserSchema=r.ApiUserSchema;exports.FiltersSchema=r.FiltersSchema;exports.PropertySchema=r.PropertySchema;exports.QueryParamsSchema=r.QueryParamsSchema;exports.ResultsModeEnum=r.ResultsModeEnum;exports.SCHEMA_VERSION=r.SCHEMA_VERSION;exports.SortByEnum=r.SortByEnum;exports.UnitSchema=r.UnitSchema;exports.UserSchema=r.UserSchema;exports.getDB=l.getDB;exports.resetDB=l.resetDB;exports.debugDump=u.debugDump;exports.exportJSON=u.exportJSON;exports.createORMStringStorage=s.createORMStringStorage;exports.kvGet=s.kvGet;exports.kvRemove=s.kvRemove;exports.kvSet=s.kvSet;exports.inResiOrmStore=c.inResiOrmStore;exports.useInResiStore=d.useInResiStore;exports.DEFAULT_PLACEHOLDER_IMAGE=t.DEFAULT_PLACEHOLDER_IMAGE;exports.DEFAULT_WEB_ORIGIN=t.DEFAULT_WEB_ORIGIN;exports.buildExploreUrl=t.buildExploreUrl;exports.buildImageUrl=t.buildImageUrl;exports.transformUnitsApiResponse=t.transformUnitsApiResponse;exports.transformUnitsApiResponseToClient=t.transformUnitsApiResponseToClient;exports.transformUnitsApiResponseToClientFilters=t.transformUnitsApiResponseToClientFilters;exports.defaultSortParamMap=n.defaultSortParamMap;exports.transformFiltersToPreferences=n.transformFiltersToPreferences;exports.transformFiltersToUnitsSearchParams=n.transformFiltersToUnitsSearchParams;exports.dimensionToMmNumber=o.dimensionToMmNumber;exports.formatDimensions=o.formatDimensions;exports.imperialToMm=o.imperialToMm;exports.inchesToMm=o.inchesToMm;exports.mmToInches=o.mmToInches;exports.toInchesDisplay=o.toInchesDisplay;exports.configureValidation=p.configureValidation;exports.OverviewImagesOnPropertyModel=y.OverviewImagesOnPropertyModel;exports.AmenityImagesOnPropertyModel=S.AmenityImagesOnPropertyModel;exports.FloorPlanModel=M.FloorPlanModel;exports.MediaModel=g.MediaModel;exports.PropertyModel=E.PropertyModel;exports.PropertyHighlightModel=h.PropertyHighlightModel;exports.RoomModel=v.RoomModel;exports.StyleModel=T.StyleModel;exports.UnitModel=P.UnitModel;exports.Currency=e.Currency;exports.DeliveryStatus=e.DeliveryStatus;exports.EngagementType=e.EngagementType;exports.ExternalService=e.ExternalService;exports.FurnitureAvailability=e.FurnitureAvailability;exports.Highlights=e.Highlights;exports.MediaType=e.MediaType;exports.QueueJobStatus=e.QueueJobStatus;exports.RenderStatus=e.RenderStatus;exports.Status=e.Status;exports.UserRole=e.UserRole;exports.RenderedStyleModel=R.RenderedStyleModel;exports.PropertyAmenityModel=A.PropertyAmenityModel;exports.UserModel=U.UserModel;exports.PropertyLinkModel=q.PropertyLinkModel;exports.AnalyticsProvider=m.AnalyticsProvider;exports.useAnalytics=m.useAnalytics;exports.QuestionEnumValues=i.QuestionEnumValues;exports.QuestionnaireInteractionValues=i.QuestionnaireInteractionValues;exports.SortEnumValues=i.SortEnumValues;exports.buildTrackingEvents=i.buildTrackingEvents;exports.useTrackEvent=i.useTrackEvent;exports.useTrackingEvents=i.useTrackingEvents;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.d.ts
CHANGED
|
@@ -3,9 +3,8 @@ export * from "./schema";
|
|
|
3
3
|
export * from "./db";
|
|
4
4
|
export * from "./debug";
|
|
5
5
|
export * from "./storage";
|
|
6
|
-
export {
|
|
7
|
-
export {
|
|
8
|
-
export { createStructuredStore, createStructuredStoreActions, type StructuredStore, type StructuredStoreActions } from "./adapters/structured-store";
|
|
6
|
+
export { inResiOrmStore } from "./stores/store";
|
|
7
|
+
export { useInResiStore, type InResiOrmStore } from "./adapters/zustand-store";
|
|
9
8
|
export * from "./features/units/transformers";
|
|
10
9
|
export * from "./features/filters/transformers";
|
|
11
10
|
export * from "./utils/dimensions";
|
package/dist/index.mjs
CHANGED
|
@@ -1,115 +1,100 @@
|
|
|
1
1
|
import { OpenDBError as o, SchemaMismatchError as t } from "./errors.mjs";
|
|
2
|
-
import { ApiUserSchema as
|
|
3
|
-
import { getDB as
|
|
4
|
-
import { debugDump as
|
|
5
|
-
import { createORMStringStorage as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
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 { AnalyticsProvider as Ke, useAnalytics as Xe } from "./features/analytics/AnalyticsProvider.mjs";
|
|
29
|
-
import { QuestionEnumValues as $e, QuestionnaireInteractionValues as er, SortEnumValues as rr, buildTrackingEvents as or, useTrackEvent as tr, useTrackingEvents as ar } from "./features/analytics/analytics.mjs";
|
|
2
|
+
import { ApiUserSchema as i, FiltersSchema as n, PropertySchema as s, QueryParamsSchema as a, ResultsModeEnum as p, SCHEMA_VERSION as l, SortByEnum as f, UnitSchema as u, UserSchema as x } from "./schema.mjs";
|
|
3
|
+
import { getDB as S, resetDB as M } from "./db.mjs";
|
|
4
|
+
import { debugDump as y, exportJSON as E } from "./debug.mjs";
|
|
5
|
+
import { createORMStringStorage as h, kvGet as R, kvRemove as T, kvSet as A } from "./storage.mjs";
|
|
6
|
+
import { inResiOrmStore as U } from "./stores/store.mjs";
|
|
7
|
+
import { useInResiStore as I } from "./adapters/zustand-store.mjs";
|
|
8
|
+
import { DEFAULT_PLACEHOLDER_IMAGE as O, DEFAULT_WEB_ORIGIN as F, buildExploreUrl as b, buildImageUrl as k, transformUnitsApiResponse as B, transformUnitsApiResponseToClient as C, transformUnitsApiResponseToClientFilters as L } from "./features/units/transformers.mjs";
|
|
9
|
+
import { defaultSortParamMap as _, transformFiltersToPreferences as H, transformFiltersToUnitsSearchParams as N } from "./features/filters/transformers.mjs";
|
|
10
|
+
import { dimensionToMmNumber as G, formatDimensions as J, imperialToMm as w, inchesToMm as W, mmToInches as j, toInchesDisplay as q } from "./utils/dimensions.mjs";
|
|
11
|
+
import { configureValidation as K } from "./validation.mjs";
|
|
12
|
+
import { OverviewImagesOnPropertyModel as Y } from "./base/overviewimagesonproperty.mjs";
|
|
13
|
+
import { AmenityImagesOnPropertyModel as $ } from "./base/amenityimagesonproperty.mjs";
|
|
14
|
+
import { FloorPlanModel as re } from "./base/floorplan.mjs";
|
|
15
|
+
import { MediaModel as te } from "./base/media.mjs";
|
|
16
|
+
import { PropertyModel as ie } from "./base/property.mjs";
|
|
17
|
+
import { PropertyHighlightModel as se } from "./base/propertyhighlight.mjs";
|
|
18
|
+
import { RoomModel as pe } from "./base/room.mjs";
|
|
19
|
+
import { StyleModel as fe } from "./base/style.mjs";
|
|
20
|
+
import { UnitModel as xe } from "./base/unit.mjs";
|
|
21
|
+
import { Currency as Se, DeliveryStatus as Me, EngagementType as ce, ExternalService as ye, FurnitureAvailability as Ee, Highlights as ge, MediaType as he, QueueJobStatus as Re, RenderStatus as Te, Status as Ae, UserRole as Pe } from "./base/enums.mjs";
|
|
22
|
+
import { RenderedStyleModel as ve } from "./base/renderedstyle.mjs";
|
|
23
|
+
import { PropertyAmenityModel as De } from "./base/propertyamenity.mjs";
|
|
24
|
+
import { UserModel as Fe } from "./base/user.mjs";
|
|
25
|
+
import { PropertyLinkModel as ke } from "./base/propertylink.mjs";
|
|
26
|
+
import { AnalyticsProvider as Ce, useAnalytics as Le } from "./features/analytics/AnalyticsProvider.mjs";
|
|
27
|
+
import { QuestionEnumValues as _e, QuestionnaireInteractionValues as He, SortEnumValues as Ne, buildTrackingEvents as Qe, useTrackEvent as Ge, useTrackingEvents as Je } from "./features/analytics/analytics.mjs";
|
|
30
28
|
export {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
Oe as ExternalService,
|
|
41
|
-
Je as FavoriteUnitModel,
|
|
29
|
+
$ as AmenityImagesOnPropertyModel,
|
|
30
|
+
Ce as AnalyticsProvider,
|
|
31
|
+
i as ApiUserSchema,
|
|
32
|
+
Se as Currency,
|
|
33
|
+
O as DEFAULT_PLACEHOLDER_IMAGE,
|
|
34
|
+
F as DEFAULT_WEB_ORIGIN,
|
|
35
|
+
Me as DeliveryStatus,
|
|
36
|
+
ce as EngagementType,
|
|
37
|
+
ye as ExternalService,
|
|
42
38
|
n as FiltersSchema,
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
39
|
+
re as FloorPlanModel,
|
|
40
|
+
Ee as FurnitureAvailability,
|
|
41
|
+
ge as Highlights,
|
|
42
|
+
te as MediaModel,
|
|
43
|
+
he as MediaType,
|
|
48
44
|
o as OpenDBError,
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
Y as OverviewImagesOnPropertyModel,
|
|
46
|
+
De as PropertyAmenityModel,
|
|
47
|
+
se as PropertyHighlightModel,
|
|
48
|
+
ke as PropertyLinkModel,
|
|
49
|
+
ie as PropertyModel,
|
|
54
50
|
s as PropertySchema,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
f as SCHEMA_VERSION,
|
|
51
|
+
a as QueryParamsSchema,
|
|
52
|
+
_e as QuestionEnumValues,
|
|
53
|
+
He as QuestionnaireInteractionValues,
|
|
54
|
+
Re as QueueJobStatus,
|
|
55
|
+
Te as RenderStatus,
|
|
56
|
+
ve as RenderedStyleModel,
|
|
57
|
+
p as ResultsModeEnum,
|
|
58
|
+
pe as RoomModel,
|
|
59
|
+
l as SCHEMA_VERSION,
|
|
65
60
|
t as SchemaMismatchError,
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
u as
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
x as
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
B as store,
|
|
105
|
-
ie as toInchesDisplay,
|
|
106
|
-
Y as transformFiltersToPreferences,
|
|
107
|
-
$ as transformFiltersToUnitsSearchParams,
|
|
108
|
-
j as transformUnitsApiResponse,
|
|
109
|
-
q as transformUnitsApiResponseToClient,
|
|
110
|
-
z as transformUnitsApiResponseToClientFilters,
|
|
111
|
-
Xe as useAnalytics,
|
|
112
|
-
tr as useTrackEvent,
|
|
113
|
-
ar as useTrackingEvents
|
|
61
|
+
f as SortByEnum,
|
|
62
|
+
Ne as SortEnumValues,
|
|
63
|
+
Ae as Status,
|
|
64
|
+
fe as StyleModel,
|
|
65
|
+
xe as UnitModel,
|
|
66
|
+
u as UnitSchema,
|
|
67
|
+
Fe as UserModel,
|
|
68
|
+
Pe as UserRole,
|
|
69
|
+
x as UserSchema,
|
|
70
|
+
b as buildExploreUrl,
|
|
71
|
+
k as buildImageUrl,
|
|
72
|
+
Qe as buildTrackingEvents,
|
|
73
|
+
K as configureValidation,
|
|
74
|
+
h as createORMStringStorage,
|
|
75
|
+
y as debugDump,
|
|
76
|
+
_ as defaultSortParamMap,
|
|
77
|
+
G as dimensionToMmNumber,
|
|
78
|
+
E as exportJSON,
|
|
79
|
+
J as formatDimensions,
|
|
80
|
+
S as getDB,
|
|
81
|
+
w as imperialToMm,
|
|
82
|
+
U as inResiOrmStore,
|
|
83
|
+
W as inchesToMm,
|
|
84
|
+
R as kvGet,
|
|
85
|
+
T as kvRemove,
|
|
86
|
+
A as kvSet,
|
|
87
|
+
j as mmToInches,
|
|
88
|
+
M as resetDB,
|
|
89
|
+
q as toInchesDisplay,
|
|
90
|
+
H as transformFiltersToPreferences,
|
|
91
|
+
N as transformFiltersToUnitsSearchParams,
|
|
92
|
+
B as transformUnitsApiResponse,
|
|
93
|
+
C as transformUnitsApiResponseToClient,
|
|
94
|
+
L as transformUnitsApiResponseToClientFilters,
|
|
95
|
+
Le as useAnalytics,
|
|
96
|
+
I as useInResiStore,
|
|
97
|
+
Ge as useTrackEvent,
|
|
98
|
+
Je as useTrackingEvents
|
|
114
99
|
};
|
|
115
100
|
//# 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 n=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 n=require("./node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),e=2,l=n.object({uuid:n.string().uuid(),createdAt:n.string().datetime().optional()}),t=n.union([n.string(),n.number(),n.boolean(),n.record(n.unknown())]),r=n.union([t,n.array(t)]),s=n.object({date_availability:r.nullable().optional(),qty_bedrooms:n.union([n.array(t),n.null()]).optional(),base_price:n.number().nullable().optional(),highlights:n.array(t).optional()}),u=n.enum(["all","bestFit","closestMatch","favorites","loading"]),a=n.enum(["relevance","newest","cost_low_to_high","cost_high_to_low"]),p=n.object({limit:n.number().default(10),page:n.number().default(1),sortBy:a.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()}),o=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()}),i=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(o).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()}),m=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(i).optional(),Unit:n.array(o).optional(),floorPlans:n.array(n.unknown()).optional(),createdAt:n.string().datetime().optional(),updatedAt:n.string().datetime().optional()});exports.ApiUserSchema=m;exports.FiltersSchema=s;exports.PropertySchema=i;exports.QueryParamsSchema=p;exports.ResultsModeEnum=u;exports.SCHEMA_VERSION=e;exports.SortByEnum=a;exports.UnitSchema=o;exports.UserSchema=l;
|
|
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 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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"}
|
|
1
|
+
{"version":3,"file":"schema.cjs","sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const SCHEMA_VERSION = 2 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\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\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\n"],"names":["SCHEMA_VERSION","UserSchema","z.object","z.string","FilterOptionValueSchema","z.union","z.number","z.boolean","z.record","z.unknown","FilterCollectionSchema","z.array","FiltersSchema","z.null","ResultsModeEnum","z.enum","SortByEnum","QueryParamsSchema","UnitSchema","z.coerce","PropertySchema","ApiUserSchema"],"mappings":"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"}
|