@superbright/indexeddb-orm 1.0.29 → 1.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/structured-store.cjs +1 -1
- package/dist/adapters/structured-store.cjs.map +1 -1
- package/dist/adapters/structured-store.d.ts +1 -0
- package/dist/adapters/structured-store.mjs +8 -7
- 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.d.ts +3 -6
- package/dist/adapters/zustand-store.mjs +212 -164
- package/dist/adapters/zustand-store.mjs.map +1 -1
- package/dist/base/enums.cjs +1 -1
- package/dist/base/enums.cjs.map +1 -1
- package/dist/base/enums.d.ts +4 -0
- package/dist/base/enums.mjs +2 -1
- package/dist/base/enums.mjs.map +1 -1
- package/dist/base/userinquiry.d.ts +23 -0
- package/dist/base/visitor.d.ts +17 -0
- package/dist/base/visitorfilter.d.ts +25 -0
- package/dist/base/visitorquestionnaire.d.ts +25 -0
- package/dist/base/visitorunitengagement.d.ts +24 -0
- package/dist/features/units/transformers.cjs.map +1 -1
- package/dist/features/units/transformers.d.ts +2 -0
- package/dist/features/units/transformers.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.mjs +111 -127
- 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 +13 -41
- package/dist/schema.mjs +63 -74
- 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 +3 -14
- package/dist/stores/store.mjs +58 -86
- package/dist/stores/store.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/api/favorites.cjs +0 -2
- package/dist/api/favorites.cjs.map +0 -1
- package/dist/api/favorites.d.ts +0 -4
- package/dist/api/favorites.mjs +0 -34
- package/dist/api/favorites.mjs.map +0 -1
- package/dist/api/properties.cjs +0 -2
- package/dist/api/properties.cjs.map +0 -1
- package/dist/api/properties.d.ts +0 -22
- package/dist/api/properties.mjs +0 -197
- package/dist/api/properties.mjs.map +0 -1
- package/dist/api/users.cjs +0 -2
- package/dist/api/users.cjs.map +0 -1
- package/dist/api/users.d.ts +0 -5
- package/dist/api/users.mjs +0 -54
- package/dist/api/users.mjs.map +0 -1
- package/dist/units/favorites.cjs +0 -2
- package/dist/units/favorites.cjs.map +0 -1
- package/dist/units/favorites.d.ts +0 -7
- package/dist/units/favorites.mjs +0 -19
- package/dist/units/favorites.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zustand-store.mjs","sources":["../../src/adapters/zustand-store.ts"],"sourcesContent":["/**\n * Zustand adapter (flat API)\n *\n * This file exposes a flat, unified Zustand store that mirrors the underlying\n * ORM store and keeps React state in sync. It is the low-level bridge.\n *\n * For a friendlier, domain-grouped API, use `createStructuredStore` from\n * `./structured-store`, which wraps this adapter and exposes nested actions\n * like `property.unit.favorites.toggle`, `filters.set`, etc.\n */\nimport { store } from \"../stores/store\";\nimport type { UnifiedStoreData, UserPropertyState, Filters, QueryParams, ResultsMode, SortBy, TourContactData, Unit } from \"../schema\";\n\n// Unified Zustand store interface\nexport interface ZustandUnifiedStoreState {\n // Property data\n properties: Record<string, UserPropertyState>;\n currentPropertyId: string | null;\n currentPropertySlug: string | null;\n hasPreviouslySearched: string[];\n\n // App data\n unitResults: Unit[];\n filters: Filters;\n tempFilters: Filters;\n apiFilters: QueryParams;\n resultsMode: ResultsMode;\n resolvedQuestionnaireValues: Record<string, string[]>;\n sortBy: SortBy;\n filtersLoaded: boolean;\n\n // === PROPERTY OPERATIONS ===\n initializeProperty: (propertyId: string, slug: string) => Promise<void>;\n setCurrentProperty: (propertyId: string, slug?: string) => Promise<void>;\n setCurrentPropertySlug: (slug: string) => Promise<void>;\n setHasPreviouslySearched: (slug: string) => Promise<void>;\n toggleFavorite: (unitId: string) => Promise<void>;\n markUnitAsViewed: (unitId: string, slug: string) => Promise<void>;\n setTourContactedOn: () => Promise<void>;\n getTourContactedOn: () => Promise<string | null>;\n setQuestionnaireResults: (results: unknown) => Promise<void>;\n setTourContactData: (data: TourContactData) => Promise<void>;\n setUnitResults: (units: unknown) => Promise<void>;\n clearUnitResults: () => Promise<void>;\n\n\n // === FILTER OPERATIONS ===\n setFilters: (filters: Partial<Filters>) => Promise<void>;\n setTempFilters: (filters: Partial<Filters>) => Promise<void>;\n setFiltersToDefault: () => Promise<void>;\n setApiFilters: (filters: Partial<QueryParams>) => Promise<void>;\n handleTempFilterChange: <K extends keyof Filters>(key: K, value: Filters[K]) => Promise<void>;\n submitFilterUpdate: () => Promise<void>;\n\n // === RESULTS AND SORTING ===\n setResultsMode: (mode: ResultsMode) => Promise<void>;\n setSortBy: (sortBy: SortBy) => Promise<void>;\n\n // === QUESTIONNAIRE ===\n setResolvedQuestionnaireValues: (name: string, values: string[]) => Promise<void>;\n\n // === UTILITY METHODS ===\n getUnitState: (unitId: string) => {\n isFavorite: boolean;\n viewedDate: string;\n };\n getResultsUrl: () => Promise<string | null>;\n getCurrentProperty: () => Promise<UserPropertyState | null>;\n getPropertyData: (propertyId?: string) => Promise<UserPropertyState | null>;\n\n // === INTERNAL ===\n _hydrate: () => Promise<void>;\n _initialize: () => Promise<void>;\n}\n\n/**\n * @deprecated For new apps, use `createStructuredStore` from `./structured-store`.\n * This flat adapter remains for migration/advanced cases.\n */\nexport function createZustandUnifiedStore(options?: {\n onFilterUpdate?: (apiParams: QueryParams) => void;\n}) {\n return (set: any, get: any): ZustandUnifiedStoreState => {\n // Helper to update local state after ORM operations\n const syncState = async () => {\n const ormState = await store.getFullState();\n set({\n properties: ormState.properties,\n currentPropertyId: ormState.currentPropertyId,\n currentPropertySlug: ormState.currentPropertySlug,\n hasPreviouslySearched: ormState.hasPreviouslySearched,\n unitResults: ormState.unitResults,\n filters: ormState.filters,\n tempFilters: ormState.tempFilters,\n apiFilters: ormState.apiFilters,\n resultsMode: ormState.resultsMode,\n resolvedQuestionnaireValues: ormState.resolvedQuestionnaireValues,\n sortBy: ormState.sortBy,\n });\n };\n\n // Helper to notify of filter updates\n const notifyFilterUpdate = async () => {\n if (options?.onFilterUpdate) {\n const apiFilters = (await store.getFullState()).apiFilters;\n options.onFilterUpdate(apiFilters);\n }\n };\n\n return {\n // Initial state\n properties: {},\n currentPropertyId: null,\n currentPropertySlug: null,\n hasPreviouslySearched: [],\n unitResults: [],\n filters: {\n date_availability: undefined,\n qty_bedrooms: undefined,\n base_price: undefined,\n highlights: undefined,\n },\n tempFilters: {\n date_availability: undefined,\n qty_bedrooms: undefined,\n base_price: undefined,\n highlights: undefined,\n },\n apiFilters: {\n limit: 10,\n page: 1,\n sortBy: \"relevance\",\n },\n resultsMode: \"all\",\n resolvedQuestionnaireValues: {},\n sortBy: \"relevance\",\n filtersLoaded: false,\n\n // === PROPERTY OPERATIONS ===\n async initializeProperty(propertyId, slug) {\n await store.initializeProperty(propertyId, slug);\n await syncState();\n },\n\n async setCurrentProperty(propertyId, slug) {\n await store.setCurrentProperty(propertyId, slug);\n set({\n currentPropertyId: propertyId,\n ...(slug && { currentPropertySlug: slug })\n });\n },\n\n async setCurrentPropertySlug(slug) {\n await store.setCurrentPropertySlug(slug);\n set({ currentPropertySlug: slug });\n },\n\n async setHasPreviouslySearched(slug) {\n await store.setHasPreviouslySearched(slug);\n await syncState();\n },\n\n async toggleFavorite(unitId) {\n await store.toggleFavorite(unitId);\n await syncState();\n },\n\n async markUnitAsViewed(unitId, slug) {\n await store.markUnitAsViewed(unitId, slug);\n await syncState();\n },\n\n async setTourContactedOn() {\n await store.setTourContactedOn();\n await syncState();\n },\n\n getTourContactedOn: store.getTourContactedOn.bind(store),\n\n async setQuestionnaireResults(results) {\n await store.setQuestionnaireResults(results);\n await syncState();\n },\n\n async setTourContactData(data) {\n await store.setTourContactData(data);\n await syncState();\n },\n\n async setUnitResults(units) {\n await store.setUnitResults(units);\n await syncState();\n },\n\n async clearUnitResults() {\n await store.clearUnitResults();\n await syncState();\n },\n\n\n // === FILTER OPERATIONS ===\n async setFilters(filters) {\n await store.setFilters(filters);\n const state = get();\n set({ filters: { ...state.filters, ...filters } });\n },\n\n async setTempFilters(filters) {\n await store.setTempFilters(filters);\n const state = get();\n set({ tempFilters: { ...state.tempFilters, ...filters } });\n },\n\n async setFiltersToDefault() {\n await store.setFiltersToDefault();\n const defaultFilters = {\n date_availability: undefined,\n qty_bedrooms: undefined,\n base_price: undefined,\n highlights: undefined,\n };\n set({ filters: defaultFilters });\n },\n\n async setApiFilters(filters) {\n await store.setApiFilters(filters);\n const state = get();\n set({ apiFilters: { ...state.apiFilters, ...filters } });\n },\n\n async handleTempFilterChange(key, value) {\n await store.handleTempFilterChange(key, value);\n const state = get();\n set({ tempFilters: { ...state.tempFilters, [key]: value } });\n },\n\n async submitFilterUpdate() {\n await store.submitFilterUpdate();\n await syncState();\n await notifyFilterUpdate();\n },\n\n // === RESULTS AND SORTING ===\n async setResultsMode(mode) {\n await store.setResultsMode(mode);\n set({ resultsMode: mode });\n },\n\n async setSortBy(sortBy) {\n await store.setSortBy(sortBy);\n set({ sortBy });\n },\n\n // === QUESTIONNAIRE ===\n async setResolvedQuestionnaireValues(name, values) {\n await store.setResolvedQuestionnaireValues(name, values);\n const state = get();\n set({\n resolvedQuestionnaireValues: {\n ...state.resolvedQuestionnaireValues,\n [name]: values,\n }\n });\n },\n\n // === UTILITY METHODS ===\n getUnitState(unitId: string) {\n const state = get();\n const property = state.currentPropertyId ? state.properties[state.currentPropertyId] : null;\n\n return {\n isFavorite: property?.favoritedUnits.includes(unitId) ?? false,\n viewedDate:\n property?.viewedUnits.find((u: any) => u.unitId === unitId)?.viewedDate ?? \"\",\n };\n },\n\n getResultsUrl: store.getResultsUrl.bind(store),\n getCurrentProperty: store.getCurrentProperty.bind(store),\n getPropertyData: store.getPropertyData.bind(store),\n\n // === INTERNAL ===\n async _hydrate() {\n await syncState();\n },\n\n async _initialize() {\n await store.initialize();\n await syncState();\n set({ filtersLoaded: true });\n },\n };\n };\n}\n\n// Helper hook factory for unit state\nexport function createUseUnitState() {\n return (useStore: any) => (unitId: string) =>\n useStore((state: ZustandUnifiedStoreState) => state.getUnitState(unitId));\n}\n\n// Export types for consuming apps\nexport type { UnitData, UserPropertyState, Filters, QueryParams, ResultsMode, SortBy, TourContactData, Unit } from \"../schema\";\n\n// Intentionally no alias exports in vNext; use `createStructuredStore` or `createZustandUnifiedStore` explicitly.\n"],"names":["createZustandUnifiedStore","options","set","get","syncState","ormState","store","notifyFilterUpdate","apiFilters","propertyId","slug","unitId","results","data","units","filters","state","key","value","mode","sortBy","name","values","property","_a","u","createUseUnitState","useStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"zustand-store.mjs","sources":["../../src/adapters/zustand-store.ts"],"sourcesContent":["/**\n * Zustand adapter (flat API) — pure in-memory, no IndexedDB\n *\n * All engagement state (favorites, viewed, filters, etc.) is held in Zustand\n * only. No IndexedDB writes happen here. State is seeded at runtime from the\n * API (bootstrap endpoint) and updated optimistically by the consuming app.\n *\n * IndexedDB is used exclusively for visitor_uuid — see stores/store.ts.\n *\n * For a friendlier, domain-grouped API, use `createStructuredStore` from\n * `./structured-store`, which wraps this adapter and exposes nested actions\n * like `property.unit.favorites.toggle`, `filters.set`, etc.\n */\nimport { transformFiltersToUnitsSearchParams } from \"../features/filters/transformers\";\nimport { validate } from \"../validation\";\nimport { UnitSchema } from \"../schema\";\nimport type { UserPropertyState, Filters, QueryParams, ResultsMode, SortBy, TourContactData, Unit } from \"../schema\";\n\n// Unified Zustand store interface\nexport interface ZustandUnifiedStoreState {\n // Property data\n properties: Record<string, UserPropertyState>;\n currentPropertyId: string | null;\n currentPropertySlug: string | null;\n hasPreviouslySearched: string[];\n favorite_unit_ids: string[];\n\n // App data\n unitResults: Unit[];\n filters: Filters;\n tempFilters: Filters;\n apiFilters: QueryParams;\n resultsMode: ResultsMode;\n resolvedQuestionnaireValues: Record<string, string[]>;\n sortBy: SortBy;\n filtersLoaded: boolean;\n\n // === PROPERTY OPERATIONS ===\n initializeProperty: (propertyId: string, slug: string) => Promise<void>;\n setCurrentProperty: (propertyId: string, slug?: string) => Promise<void>;\n setCurrentPropertySlug: (slug: string) => Promise<void>;\n setHasPreviouslySearched: (slug: string) => Promise<void>;\n setFavoriteUnitIds: (unitIds: string[]) => Promise<void>;\n toggleFavorite: (unitId: string) => Promise<void>;\n markUnitAsViewed: (unitId: string, url: string) => Promise<void>;\n setTourContactedOn: () => Promise<void>;\n getTourContactedOn: () => Promise<string | null>;\n setQuestionnaireResults: (results: unknown) => Promise<void>;\n setTourContactData: (data: TourContactData) => Promise<void>;\n setUnitResults: (units: unknown) => Promise<void>;\n clearUnitResults: () => Promise<void>;\n\n // === FILTER OPERATIONS ===\n setFilters: (filters: Partial<Filters>) => Promise<void>;\n setTempFilters: (filters: Partial<Filters>) => Promise<void>;\n setFiltersToDefault: () => Promise<void>;\n setApiFilters: (filters: Partial<QueryParams>) => Promise<void>;\n handleTempFilterChange: <K extends keyof Filters>(key: K, value: Filters[K]) => Promise<void>;\n submitFilterUpdate: () => Promise<void>;\n\n // === RESULTS AND SORTING ===\n setResultsMode: (mode: ResultsMode) => Promise<void>;\n setSortBy: (sortBy: SortBy) => Promise<void>;\n\n // === QUESTIONNAIRE ===\n setResolvedQuestionnaireValues: (name: string, values: string[]) => Promise<void>;\n\n // === UTILITY METHODS ===\n getResultsUrl: () => Promise<string | null>;\n getCurrentProperty: () => Promise<UserPropertyState | null>;\n getPropertyData: (propertyId?: string) => Promise<UserPropertyState | null>;\n\n // === INTERNAL ===\n _hydrate: () => Promise<void>;\n _initialize: () => Promise<void>;\n}\n\nconst defaultFilters: Filters = {\n date_availability: undefined,\n qty_bedrooms: undefined,\n base_price: undefined,\n highlights: undefined,\n};\n\n/**\n * @deprecated For new apps, use `createStructuredStore` from `./structured-store`.\n * This flat adapter remains for migration/advanced cases.\n */\nexport function createZustandUnifiedStore(options?: {\n onFilterUpdate?: (apiParams: QueryParams) => void;\n}) {\n return (set: any, get: any): ZustandUnifiedStoreState => {\n return {\n // Initial state\n properties: {},\n currentPropertyId: null,\n currentPropertySlug: null,\n hasPreviouslySearched: [],\n favorite_unit_ids: [],\n unitResults: [],\n filters: { ...defaultFilters },\n tempFilters: { ...defaultFilters },\n apiFilters: {\n limit: 10,\n page: 1,\n sortBy: \"relevance\",\n },\n resultsMode: \"all\",\n resolvedQuestionnaireValues: {},\n sortBy: \"relevance\",\n filtersLoaded: false,\n\n // === PROPERTY OPERATIONS ===\n async initializeProperty(propertyId, slug) {\n const { properties } = get();\n if (properties[propertyId]) {\n set({ currentPropertyId: propertyId, currentPropertySlug: slug });\n return;\n }\n set({\n currentPropertyId: propertyId,\n currentPropertySlug: slug,\n properties: {\n ...properties,\n [propertyId]: {\n id: propertyId,\n slug,\n tourContactedOn: null,\n viewedUnits: [],\n questionnaireResults: null,\n tourContactData: null,\n },\n },\n });\n },\n\n async setCurrentProperty(propertyId, slug) {\n set({\n currentPropertyId: propertyId,\n ...(slug && { currentPropertySlug: slug }),\n });\n },\n\n async setCurrentPropertySlug(slug) {\n set({ currentPropertySlug: slug });\n },\n\n async setHasPreviouslySearched(slug) {\n const { hasPreviouslySearched } = get();\n set({\n hasPreviouslySearched: Array.from(new Set([...hasPreviouslySearched, slug])),\n });\n },\n\n async setFavoriteUnitIds(unitIds) {\n set({ favorite_unit_ids: unitIds });\n },\n\n async toggleFavorite(unitId) {\n const { favorite_unit_ids } = get();\n const isFavorited = favorite_unit_ids.includes(unitId);\n set({\n favorite_unit_ids: isFavorited\n ? favorite_unit_ids.filter((id: string) => id !== unitId)\n : [...favorite_unit_ids, unitId],\n });\n },\n\n async markUnitAsViewed(unitId, url) {\n window.open(url, \"_blank\", \"noopener,noreferrer\");\n const today = new Date();\n const formattedDate = `${String(today.getMonth() + 1).padStart(2, \"0\")}/${String(today.getDate()).padStart(2, \"0\")}`;\n const { currentPropertyId, properties } = get();\n if (!currentPropertyId || !properties[currentPropertyId]) return;\n const property = properties[currentPropertyId];\n set({\n properties: {\n ...properties,\n [currentPropertyId]: {\n ...property,\n viewedUnits: [\n ...property.viewedUnits.filter((u: any) => u.unitId !== unitId),\n { unitId, viewedDate: formattedDate },\n ],\n },\n },\n });\n },\n\n async setTourContactedOn() {\n const { currentPropertyId, properties } = get();\n if (!currentPropertyId || !properties[currentPropertyId]) return;\n set({\n properties: {\n ...properties,\n [currentPropertyId]: {\n ...properties[currentPropertyId],\n tourContactedOn: new Date().toISOString(),\n },\n },\n });\n },\n\n async getTourContactedOn() {\n const { currentPropertyId, properties } = get();\n if (!currentPropertyId) return null;\n return properties[currentPropertyId]?.tourContactedOn ?? null;\n },\n\n async setQuestionnaireResults(results) {\n const { currentPropertyId, properties } = get();\n if (!currentPropertyId || !properties[currentPropertyId]) return;\n set({\n properties: {\n ...properties,\n [currentPropertyId]: { ...properties[currentPropertyId], questionnaireResults: results },\n },\n });\n },\n\n async setTourContactData(data) {\n const { currentPropertyId, properties } = get();\n if (!currentPropertyId || !properties[currentPropertyId]) return;\n set({\n properties: {\n ...properties,\n [currentPropertyId]: { ...properties[currentPropertyId], tourContactData: data },\n },\n });\n },\n\n async setUnitResults(units: unknown) {\n const collection = Array.isArray(units)\n ? units\n : units && typeof units === \"object\"\n ? Object.values(units as Record<string, unknown>)\n : [];\n const validatedUnits: Unit[] = [];\n collection.forEach((unit: unknown, index: number) => {\n const parsed = validate(UnitSchema, unit, `unitResults[${index}]`);\n if (parsed) validatedUnits.push(parsed as Unit);\n });\n set({ unitResults: validatedUnits });\n },\n\n async clearUnitResults() {\n set({ unitResults: [] });\n },\n\n // === FILTER OPERATIONS ===\n async setFilters(filters) {\n const { filters: current } = get();\n set({ filters: { ...current, ...filters } });\n },\n\n async setTempFilters(filters) {\n const { tempFilters } = get();\n set({ tempFilters: { ...tempFilters, ...filters } });\n },\n\n async setFiltersToDefault() {\n set({ filters: { ...defaultFilters } });\n },\n\n async setApiFilters(filters) {\n const { apiFilters } = get();\n set({ apiFilters: { ...apiFilters, ...filters } });\n },\n\n async handleTempFilterChange(key, value) {\n const { tempFilters } = get();\n set({ tempFilters: { ...tempFilters, [key]: value } });\n },\n\n async submitFilterUpdate() {\n const state = get();\n const apiParams = transformFiltersToUnitsSearchParams(\n {\n ...state.filters,\n limit: state.apiFilters.limit,\n page: state.apiFilters.page,\n sortBy: state.sortBy,\n },\n {\n defaultLimit: state.apiFilters.limit,\n defaultPage: state.apiFilters.page,\n defaultSort: state.sortBy,\n },\n );\n set({ apiFilters: apiParams });\n options?.onFilterUpdate?.(apiParams);\n },\n\n // === RESULTS AND SORTING ===\n async setResultsMode(mode) {\n set({ resultsMode: mode });\n },\n\n async setSortBy(sortBy) {\n set({ sortBy });\n },\n\n // === QUESTIONNAIRE ===\n async setResolvedQuestionnaireValues(name, values) {\n const { resolvedQuestionnaireValues } = get();\n set({\n resolvedQuestionnaireValues: {\n ...resolvedQuestionnaireValues,\n [name]: values,\n },\n });\n },\n\n // === UTILITY METHODS ===\n async getResultsUrl() {\n const { currentPropertySlug } = get();\n return currentPropertySlug ? `/${currentPropertySlug}/results` : null;\n },\n\n async getCurrentProperty() {\n const { currentPropertyId, properties } = get();\n return currentPropertyId ? properties[currentPropertyId] ?? null : null;\n },\n\n async getPropertyData(propertyId) {\n const { currentPropertyId, properties } = get();\n const id = propertyId ?? currentPropertyId;\n return id ? properties[id] ?? null : null;\n },\n\n // === INTERNAL ===\n async _hydrate() {\n // No-op: state is seeded from API (bootstrap), not from IndexedDB.\n },\n\n async _initialize() {\n // No IndexedDB sync needed. Mark filters as loaded so the UI unblocks.\n set({ filtersLoaded: true });\n },\n };\n };\n}\n\n// Export types for consuming apps\nexport type { UnitData, UserPropertyState, Filters, QueryParams, ResultsMode, SortBy, TourContactData, Unit } from \"../schema\";\n\n// Intentionally no alias exports in vNext; use `createStructuredStore` or `createZustandUnifiedStore` explicitly.\n"],"names":["defaultFilters","createZustandUnifiedStore","options","set","get","propertyId","slug","properties","hasPreviouslySearched","unitIds","unitId","favorite_unit_ids","isFavorited","id","url","today","formattedDate","currentPropertyId","property","u","_a","results","data","units","collection","validatedUnits","unit","index","parsed","validate","UnitSchema","filters","current","tempFilters","apiFilters","key","value","state","apiParams","transformFiltersToUnitsSearchParams","mode","sortBy","name","values","resolvedQuestionnaireValues","currentPropertySlug"],"mappings":"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"}
|
package/dist/base/enums.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var _=(E=>(E.UN_RENDERED="UN_RENDERED",E.IN_QUEUE="IN_QUEUE",E.RENDERING="RENDERING",E.RENDERED="RENDERED",E.FAILED="FAILED",E))(_||{}),O=(E=>(E.NOT_STARTED="NOT_STARTED",E.IN_QUEUE="IN_QUEUE",E.IN_PROGRESS="IN_PROGRESS",E.COMPLETED="COMPLETED",E.FAILED="FAILED",E))(O||{}),S=(E=>(E.Hyly="Hyly",E.GoogleAnalytics="GoogleAnalytics",E))(S||{}),I=(E=>(E.Pending="Pending",E.Failed="Failed",E.Success="Success",E))(I||{}),T=(E=>(E.image="image",E.video="video",E.model="model",E.audio="audio",E.json="json",E.blend="blend",E.logs="logs",E))(T||{}),N=(E=>(E.USER="USER",E.ADMIN="ADMIN",E))(N||{}),A=(E=>(E.archived="archived",E.active="active",E))(A||{}),R=(E=>(E.IN_STOCK="IN_STOCK",E.SOLD_OUT="SOLD_OUT",E.WAIT_LIST="WAIT_LIST",E))(R||{}),L=(E=>(E.USD="USD",E.GBP="GBP",E))(L||{}),D=(E=>(E.GOOD_VIEW="GOOD_VIEW",E.SUNSET_VIEWS="SUNSET_VIEWS",E.GOOD_FOR_HOSTING="GOOD_FOR_HOSTING",E.LOTS_OF_WINDOWS="LOTS_OF_WINDOWS",E.BATHTUB="BATHTUB",E.SOUTH_FACING="SOUTH_FACING",E.CLOSE_TO_ELEVATOR="CLOSE_TO_ELEVATOR",E.PEACE_AND_QUIET="PEACE_AND_QUIET",E.LARGE_LIVING_ROOM="LARGE_LIVING_ROOM",E.LARGE_BEDROOM="LARGE_BEDROOM",E.PRIVATE_TERRACE="PRIVATE_TERRACE",E.WALK_IN_CLOSET="WALK_IN_CLOSET",E.LOTS_OF_LIGHT="LOTS_OF_LIGHT",E.LOTS_OF_STORAGE="LOTS_OF_STORAGE",E.HIS_AND_HERS_SINKS="HIS_AND_HERS_SINKS",E.COUNTER_SPACE="COUNTER_SPACE",E.BALCONY="BALCONY",E.WHEELCHAIR_ACCESSIBLE="WHEELCHAIR_ACCESSIBLE",E))(D||{});exports.Currency=L;exports.DeliveryStatus=I;exports.ExternalService=S;exports.FurnitureAvailability=R;exports.Highlights=D;exports.MediaType=T;exports.QueueJobStatus=O;exports.RenderStatus=_;exports.Status=A;exports.UserRole=N;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var _=(E=>(E.UN_RENDERED="UN_RENDERED",E.IN_QUEUE="IN_QUEUE",E.RENDERING="RENDERING",E.RENDERED="RENDERED",E.FAILED="FAILED",E))(_||{}),O=(E=>(E.NOT_STARTED="NOT_STARTED",E.IN_QUEUE="IN_QUEUE",E.IN_PROGRESS="IN_PROGRESS",E.COMPLETED="COMPLETED",E.FAILED="FAILED",E))(O||{}),S=(E=>(E.Hyly="Hyly",E.GoogleAnalytics="GoogleAnalytics",E))(S||{}),I=(E=>(E.Pending="Pending",E.Failed="Failed",E.Success="Success",E))(I||{}),T=(E=>(E.image="image",E.video="video",E.model="model",E.audio="audio",E.json="json",E.blend="blend",E.logs="logs",E))(T||{}),N=(E=>(E.USER="USER",E.ADMIN="ADMIN",E))(N||{}),A=(E=>(E.archived="archived",E.active="active",E))(A||{}),R=(E=>(E.IN_STOCK="IN_STOCK",E.SOLD_OUT="SOLD_OUT",E.WAIT_LIST="WAIT_LIST",E))(R||{}),L=(E=>(E.USD="USD",E.GBP="GBP",E))(L||{}),D=(E=>(E.GOOD_VIEW="GOOD_VIEW",E.SUNSET_VIEWS="SUNSET_VIEWS",E.GOOD_FOR_HOSTING="GOOD_FOR_HOSTING",E.LOTS_OF_WINDOWS="LOTS_OF_WINDOWS",E.BATHTUB="BATHTUB",E.SOUTH_FACING="SOUTH_FACING",E.CLOSE_TO_ELEVATOR="CLOSE_TO_ELEVATOR",E.PEACE_AND_QUIET="PEACE_AND_QUIET",E.LARGE_LIVING_ROOM="LARGE_LIVING_ROOM",E.LARGE_BEDROOM="LARGE_BEDROOM",E.PRIVATE_TERRACE="PRIVATE_TERRACE",E.WALK_IN_CLOSET="WALK_IN_CLOSET",E.LOTS_OF_LIGHT="LOTS_OF_LIGHT",E.LOTS_OF_STORAGE="LOTS_OF_STORAGE",E.HIS_AND_HERS_SINKS="HIS_AND_HERS_SINKS",E.COUNTER_SPACE="COUNTER_SPACE",E.BALCONY="BALCONY",E.WHEELCHAIR_ACCESSIBLE="WHEELCHAIR_ACCESSIBLE",E))(D||{}),r=(E=>(E.FAVORITE="FAVORITE",E.SEEN="SEEN",E))(r||{});exports.Currency=L;exports.DeliveryStatus=I;exports.EngagementType=r;exports.ExternalService=S;exports.FurnitureAvailability=R;exports.Highlights=D;exports.MediaType=T;exports.QueueJobStatus=O;exports.RenderStatus=_;exports.Status=A;exports.UserRole=N;
|
|
2
2
|
//# sourceMappingURL=enums.cjs.map
|
package/dist/base/enums.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.cjs","sources":["../../src/base/enums.ts"],"sourcesContent":["export enum RenderStatus {\n UN_RENDERED = 'UN_RENDERED',\n IN_QUEUE = 'IN_QUEUE',\n RENDERING = 'RENDERING',\n RENDERED = 'RENDERED',\n FAILED = 'FAILED',\n }\n \n export enum QueueJobStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_QUEUE = 'IN_QUEUE',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n }\n \n export enum ExternalService {\n Hyly = 'Hyly',\n GoogleAnalytics = 'GoogleAnalytics',\n }\n \n export enum DeliveryStatus {\n Pending = 'Pending',\n Failed = 'Failed',\n Success = 'Success',\n }\n \n export enum MediaType {\n image = 'image',\n video = 'video',\n model = 'model',\n audio = 'audio',\n json = 'json',\n blend = 'blend',\n logs = 'logs',\n }\n \n export enum UserRole {\n USER = 'USER',\n ADMIN = 'ADMIN',\n }\n
|
|
1
|
+
{"version":3,"file":"enums.cjs","sources":["../../src/base/enums.ts"],"sourcesContent":["export enum RenderStatus {\n UN_RENDERED = 'UN_RENDERED',\n IN_QUEUE = 'IN_QUEUE',\n RENDERING = 'RENDERING',\n RENDERED = 'RENDERED',\n FAILED = 'FAILED',\n }\n \n export enum QueueJobStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_QUEUE = 'IN_QUEUE',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n }\n \n export enum ExternalService {\n Hyly = 'Hyly',\n GoogleAnalytics = 'GoogleAnalytics',\n }\n \n export enum DeliveryStatus {\n Pending = 'Pending',\n Failed = 'Failed',\n Success = 'Success',\n }\n \n export enum MediaType {\n image = 'image',\n video = 'video',\n model = 'model',\n audio = 'audio',\n json = 'json',\n blend = 'blend',\n logs = 'logs',\n }\n \n export enum UserRole {\n USER = 'USER',\n ADMIN = 'ADMIN',\n }\n\n export enum Status {\n archived = 'archived',\n active = 'active',\n }\n \n export enum FurnitureAvailability {\n IN_STOCK = 'IN_STOCK',\n SOLD_OUT = 'SOLD_OUT',\n WAIT_LIST = 'WAIT_LIST',\n }\n \n export enum Currency {\n USD = 'USD',\n GBP = 'GBP',\n }\n \n export enum Highlights {\n GOOD_VIEW = 'GOOD_VIEW',\n SUNSET_VIEWS = 'SUNSET_VIEWS',\n GOOD_FOR_HOSTING = 'GOOD_FOR_HOSTING',\n LOTS_OF_WINDOWS = 'LOTS_OF_WINDOWS',\n BATHTUB = 'BATHTUB',\n SOUTH_FACING = 'SOUTH_FACING',\n CLOSE_TO_ELEVATOR = 'CLOSE_TO_ELEVATOR',\n PEACE_AND_QUIET = 'PEACE_AND_QUIET',\n LARGE_LIVING_ROOM = 'LARGE_LIVING_ROOM',\n LARGE_BEDROOM = 'LARGE_BEDROOM',\n PRIVATE_TERRACE = 'PRIVATE_TERRACE',\n WALK_IN_CLOSET = 'WALK_IN_CLOSET',\n LOTS_OF_LIGHT = 'LOTS_OF_LIGHT',\n LOTS_OF_STORAGE = 'LOTS_OF_STORAGE',\n HIS_AND_HERS_SINKS = 'HIS_AND_HERS_SINKS',\n COUNTER_SPACE = 'COUNTER_SPACE',\n BALCONY = 'BALCONY',\n WHEELCHAIR_ACCESSIBLE = 'WHEELCHAIR_ACCESSIBLE',\n }\n \n export enum EngagementType {\n FAVORITE = 'FAVORITE',\n SEEN = 'SEEN'\n };\n"],"names":["RenderStatus","QueueJobStatus","ExternalService","DeliveryStatus","MediaType","UserRole","Status","FurnitureAvailability","Currency","Highlights","EngagementType"],"mappings":"gFAAO,IAAKA,GAAAA,IACRA,EAAA,YAAc,cACdA,EAAA,SAAW,WACXA,EAAA,UAAY,YACZA,EAAA,SAAW,WACXA,EAAA,OAAS,SALDA,IAAAA,GAAA,CAAA,CAAA,EAQEC,GAAAA,IACVA,EAAA,YAAc,cACdA,EAAA,SAAW,WACXA,EAAA,YAAc,cACdA,EAAA,UAAY,YACZA,EAAA,OAAS,SALCA,IAAAA,GAAA,CAAA,CAAA,EAQAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,gBAAkB,kBAFRA,IAAAA,GAAA,CAAA,CAAA,EAKAC,GAAAA,IACVA,EAAA,QAAU,UACVA,EAAA,OAAS,SACTA,EAAA,QAAU,UAHAA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,MAAQ,QACRA,EAAA,KAAO,OACPA,EAAA,MAAQ,QACRA,EAAA,KAAO,OAPGA,IAAAA,GAAA,CAAA,CAAA,EAUAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,MAAQ,QAFEA,IAAAA,GAAA,CAAA,CAAA,EAKAC,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,OAAS,SAFCA,IAAAA,GAAA,CAAA,CAAA,EAKAC,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,SAAW,WACXA,EAAA,UAAY,YAHFA,IAAAA,GAAA,CAAA,CAAA,EAMAC,GAAAA,IACVA,EAAA,IAAM,MACNA,EAAA,IAAM,MAFIA,IAAAA,GAAA,CAAA,CAAA,EAKAC,GAAAA,IACVA,EAAA,UAAY,YACZA,EAAA,aAAe,eACfA,EAAA,iBAAmB,mBACnBA,EAAA,gBAAkB,kBAClBA,EAAA,QAAU,UACVA,EAAA,aAAe,eACfA,EAAA,kBAAoB,oBACpBA,EAAA,gBAAkB,kBAClBA,EAAA,kBAAoB,oBACpBA,EAAA,cAAgB,gBAChBA,EAAA,gBAAkB,kBAClBA,EAAA,eAAiB,iBACjBA,EAAA,cAAgB,gBAChBA,EAAA,gBAAkB,kBAClBA,EAAA,mBAAqB,qBACrBA,EAAA,cAAgB,gBAChBA,EAAA,QAAU,UACVA,EAAA,sBAAwB,wBAlBdA,IAAAA,GAAA,CAAA,CAAA,EAqBAC,GAAAA,IACVA,EAAA,SAAW,WACXA,EAAA,KAAO,OAFGA,IAAAA,GAAA,CAAA,CAAA"}
|
package/dist/base/enums.d.ts
CHANGED
package/dist/base/enums.mjs
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
var _ = /* @__PURE__ */ ((E) => (E.UN_RENDERED = "UN_RENDERED", E.IN_QUEUE = "IN_QUEUE", E.RENDERING = "RENDERING", E.RENDERED = "RENDERED", E.FAILED = "FAILED", E))(_ || {}), O = /* @__PURE__ */ ((E) => (E.NOT_STARTED = "NOT_STARTED", E.IN_QUEUE = "IN_QUEUE", E.IN_PROGRESS = "IN_PROGRESS", E.COMPLETED = "COMPLETED", E.FAILED = "FAILED", E))(O || {}), I = /* @__PURE__ */ ((E) => (E.Hyly = "Hyly", E.GoogleAnalytics = "GoogleAnalytics", E))(I || {}), N = /* @__PURE__ */ ((E) => (E.Pending = "Pending", E.Failed = "Failed", E.Success = "Success", E))(N || {}), S = /* @__PURE__ */ ((E) => (E.image = "image", E.video = "video", E.model = "model", E.audio = "audio", E.json = "json", E.blend = "blend", E.logs = "logs", E))(S || {}), T = /* @__PURE__ */ ((E) => (E.USER = "USER", E.ADMIN = "ADMIN", E))(T || {}), A = /* @__PURE__ */ ((E) => (E.archived = "archived", E.active = "active", E))(A || {}), R = /* @__PURE__ */ ((E) => (E.IN_STOCK = "IN_STOCK", E.SOLD_OUT = "SOLD_OUT", E.WAIT_LIST = "WAIT_LIST", E))(R || {}), L = /* @__PURE__ */ ((E) => (E.USD = "USD", E.GBP = "GBP", E))(L || {}), D = /* @__PURE__ */ ((E) => (E.GOOD_VIEW = "GOOD_VIEW", E.SUNSET_VIEWS = "SUNSET_VIEWS", E.GOOD_FOR_HOSTING = "GOOD_FOR_HOSTING", E.LOTS_OF_WINDOWS = "LOTS_OF_WINDOWS", E.BATHTUB = "BATHTUB", E.SOUTH_FACING = "SOUTH_FACING", E.CLOSE_TO_ELEVATOR = "CLOSE_TO_ELEVATOR", E.PEACE_AND_QUIET = "PEACE_AND_QUIET", E.LARGE_LIVING_ROOM = "LARGE_LIVING_ROOM", E.LARGE_BEDROOM = "LARGE_BEDROOM", E.PRIVATE_TERRACE = "PRIVATE_TERRACE", E.WALK_IN_CLOSET = "WALK_IN_CLOSET", E.LOTS_OF_LIGHT = "LOTS_OF_LIGHT", E.LOTS_OF_STORAGE = "LOTS_OF_STORAGE", E.HIS_AND_HERS_SINKS = "HIS_AND_HERS_SINKS", E.COUNTER_SPACE = "COUNTER_SPACE", E.BALCONY = "BALCONY", E.WHEELCHAIR_ACCESSIBLE = "WHEELCHAIR_ACCESSIBLE", E))(D || {});
|
|
1
|
+
var _ = /* @__PURE__ */ ((E) => (E.UN_RENDERED = "UN_RENDERED", E.IN_QUEUE = "IN_QUEUE", E.RENDERING = "RENDERING", E.RENDERED = "RENDERED", E.FAILED = "FAILED", E))(_ || {}), O = /* @__PURE__ */ ((E) => (E.NOT_STARTED = "NOT_STARTED", E.IN_QUEUE = "IN_QUEUE", E.IN_PROGRESS = "IN_PROGRESS", E.COMPLETED = "COMPLETED", E.FAILED = "FAILED", E))(O || {}), I = /* @__PURE__ */ ((E) => (E.Hyly = "Hyly", E.GoogleAnalytics = "GoogleAnalytics", E))(I || {}), N = /* @__PURE__ */ ((E) => (E.Pending = "Pending", E.Failed = "Failed", E.Success = "Success", E))(N || {}), S = /* @__PURE__ */ ((E) => (E.image = "image", E.video = "video", E.model = "model", E.audio = "audio", E.json = "json", E.blend = "blend", E.logs = "logs", E))(S || {}), T = /* @__PURE__ */ ((E) => (E.USER = "USER", E.ADMIN = "ADMIN", E))(T || {}), A = /* @__PURE__ */ ((E) => (E.archived = "archived", E.active = "active", E))(A || {}), R = /* @__PURE__ */ ((E) => (E.IN_STOCK = "IN_STOCK", E.SOLD_OUT = "SOLD_OUT", E.WAIT_LIST = "WAIT_LIST", E))(R || {}), L = /* @__PURE__ */ ((E) => (E.USD = "USD", E.GBP = "GBP", E))(L || {}), D = /* @__PURE__ */ ((E) => (E.GOOD_VIEW = "GOOD_VIEW", E.SUNSET_VIEWS = "SUNSET_VIEWS", E.GOOD_FOR_HOSTING = "GOOD_FOR_HOSTING", E.LOTS_OF_WINDOWS = "LOTS_OF_WINDOWS", E.BATHTUB = "BATHTUB", E.SOUTH_FACING = "SOUTH_FACING", E.CLOSE_TO_ELEVATOR = "CLOSE_TO_ELEVATOR", E.PEACE_AND_QUIET = "PEACE_AND_QUIET", E.LARGE_LIVING_ROOM = "LARGE_LIVING_ROOM", E.LARGE_BEDROOM = "LARGE_BEDROOM", E.PRIVATE_TERRACE = "PRIVATE_TERRACE", E.WALK_IN_CLOSET = "WALK_IN_CLOSET", E.LOTS_OF_LIGHT = "LOTS_OF_LIGHT", E.LOTS_OF_STORAGE = "LOTS_OF_STORAGE", E.HIS_AND_HERS_SINKS = "HIS_AND_HERS_SINKS", E.COUNTER_SPACE = "COUNTER_SPACE", E.BALCONY = "BALCONY", E.WHEELCHAIR_ACCESSIBLE = "WHEELCHAIR_ACCESSIBLE", E))(D || {}), G = /* @__PURE__ */ ((E) => (E.FAVORITE = "FAVORITE", E.SEEN = "SEEN", E))(G || {});
|
|
2
2
|
export {
|
|
3
3
|
L as Currency,
|
|
4
4
|
N as DeliveryStatus,
|
|
5
|
+
G as EngagementType,
|
|
5
6
|
I as ExternalService,
|
|
6
7
|
R as FurnitureAvailability,
|
|
7
8
|
D as Highlights,
|
package/dist/base/enums.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.mjs","sources":["../../src/base/enums.ts"],"sourcesContent":["export enum RenderStatus {\n UN_RENDERED = 'UN_RENDERED',\n IN_QUEUE = 'IN_QUEUE',\n RENDERING = 'RENDERING',\n RENDERED = 'RENDERED',\n FAILED = 'FAILED',\n }\n \n export enum QueueJobStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_QUEUE = 'IN_QUEUE',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n }\n \n export enum ExternalService {\n Hyly = 'Hyly',\n GoogleAnalytics = 'GoogleAnalytics',\n }\n \n export enum DeliveryStatus {\n Pending = 'Pending',\n Failed = 'Failed',\n Success = 'Success',\n }\n \n export enum MediaType {\n image = 'image',\n video = 'video',\n model = 'model',\n audio = 'audio',\n json = 'json',\n blend = 'blend',\n logs = 'logs',\n }\n \n export enum UserRole {\n USER = 'USER',\n ADMIN = 'ADMIN',\n }\n
|
|
1
|
+
{"version":3,"file":"enums.mjs","sources":["../../src/base/enums.ts"],"sourcesContent":["export enum RenderStatus {\n UN_RENDERED = 'UN_RENDERED',\n IN_QUEUE = 'IN_QUEUE',\n RENDERING = 'RENDERING',\n RENDERED = 'RENDERED',\n FAILED = 'FAILED',\n }\n \n export enum QueueJobStatus {\n NOT_STARTED = 'NOT_STARTED',\n IN_QUEUE = 'IN_QUEUE',\n IN_PROGRESS = 'IN_PROGRESS',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n }\n \n export enum ExternalService {\n Hyly = 'Hyly',\n GoogleAnalytics = 'GoogleAnalytics',\n }\n \n export enum DeliveryStatus {\n Pending = 'Pending',\n Failed = 'Failed',\n Success = 'Success',\n }\n \n export enum MediaType {\n image = 'image',\n video = 'video',\n model = 'model',\n audio = 'audio',\n json = 'json',\n blend = 'blend',\n logs = 'logs',\n }\n \n export enum UserRole {\n USER = 'USER',\n ADMIN = 'ADMIN',\n }\n\n export enum Status {\n archived = 'archived',\n active = 'active',\n }\n \n export enum FurnitureAvailability {\n IN_STOCK = 'IN_STOCK',\n SOLD_OUT = 'SOLD_OUT',\n WAIT_LIST = 'WAIT_LIST',\n }\n \n export enum Currency {\n USD = 'USD',\n GBP = 'GBP',\n }\n \n export enum Highlights {\n GOOD_VIEW = 'GOOD_VIEW',\n SUNSET_VIEWS = 'SUNSET_VIEWS',\n GOOD_FOR_HOSTING = 'GOOD_FOR_HOSTING',\n LOTS_OF_WINDOWS = 'LOTS_OF_WINDOWS',\n BATHTUB = 'BATHTUB',\n SOUTH_FACING = 'SOUTH_FACING',\n CLOSE_TO_ELEVATOR = 'CLOSE_TO_ELEVATOR',\n PEACE_AND_QUIET = 'PEACE_AND_QUIET',\n LARGE_LIVING_ROOM = 'LARGE_LIVING_ROOM',\n LARGE_BEDROOM = 'LARGE_BEDROOM',\n PRIVATE_TERRACE = 'PRIVATE_TERRACE',\n WALK_IN_CLOSET = 'WALK_IN_CLOSET',\n LOTS_OF_LIGHT = 'LOTS_OF_LIGHT',\n LOTS_OF_STORAGE = 'LOTS_OF_STORAGE',\n HIS_AND_HERS_SINKS = 'HIS_AND_HERS_SINKS',\n COUNTER_SPACE = 'COUNTER_SPACE',\n BALCONY = 'BALCONY',\n WHEELCHAIR_ACCESSIBLE = 'WHEELCHAIR_ACCESSIBLE',\n }\n \n export enum EngagementType {\n FAVORITE = 'FAVORITE',\n SEEN = 'SEEN'\n };\n"],"names":["RenderStatus","QueueJobStatus","ExternalService","DeliveryStatus","MediaType","UserRole","Status","FurnitureAvailability","Currency","Highlights","EngagementType"],"mappings":"AAAO,IAAKA,sBAAAA,OACRA,EAAA,cAAc,eACdA,EAAA,WAAW,YACXA,EAAA,YAAY,aACZA,EAAA,WAAW,YACXA,EAAA,SAAS,UALDA,IAAAA,KAAA,CAAA,CAAA,GAQEC,sBAAAA,OACVA,EAAA,cAAc,eACdA,EAAA,WAAW,YACXA,EAAA,cAAc,eACdA,EAAA,YAAY,aACZA,EAAA,SAAS,UALCA,IAAAA,KAAA,CAAA,CAAA,GAQAC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,kBAAkB,mBAFRA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,SAAS,UACTA,EAAA,UAAU,WAHAA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SACRA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,OAAO,QAPGA,IAAAA,KAAA,CAAA,CAAA,GAUAC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,QAAQ,SAFEA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAA,WAAW,YACXA,EAAA,SAAS,UAFCA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAA,WAAW,YACXA,EAAA,WAAW,YACXA,EAAA,YAAY,aAHFA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,MAAM,OACNA,EAAA,MAAM,OAFIA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,eAAe,gBACfA,EAAA,mBAAmB,oBACnBA,EAAA,kBAAkB,mBAClBA,EAAA,UAAU,WACVA,EAAA,eAAe,gBACfA,EAAA,oBAAoB,qBACpBA,EAAA,kBAAkB,mBAClBA,EAAA,oBAAoB,qBACpBA,EAAA,gBAAgB,iBAChBA,EAAA,kBAAkB,mBAClBA,EAAA,iBAAiB,kBACjBA,EAAA,gBAAgB,iBAChBA,EAAA,kBAAkB,mBAClBA,EAAA,qBAAqB,sBACrBA,EAAA,gBAAgB,iBAChBA,EAAA,UAAU,WACVA,EAAA,wBAAwB,yBAlBdA,IAAAA,KAAA,CAAA,CAAA,GAqBAC,sBAAAA,OACVA,EAAA,WAAW,YACXA,EAAA,OAAO,QAFGA,IAAAA,KAAA,CAAA,CAAA;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
export declare const UserInquiryModel: z.ZodObject<{
|
|
3
|
+
id: z.ZodNumber;
|
|
4
|
+
createdAt: z.ZodDate;
|
|
5
|
+
scheduledAt: z.ZodDate;
|
|
6
|
+
userId: z.ZodNumber;
|
|
7
|
+
propertyId: z.ZodNumber;
|
|
8
|
+
unitId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
createdAt: Date;
|
|
11
|
+
id: number;
|
|
12
|
+
propertyId: number;
|
|
13
|
+
userId: number;
|
|
14
|
+
scheduledAt: Date;
|
|
15
|
+
unitId?: number | null | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
createdAt: Date;
|
|
18
|
+
id: number;
|
|
19
|
+
propertyId: number;
|
|
20
|
+
userId: number;
|
|
21
|
+
scheduledAt: Date;
|
|
22
|
+
unitId?: number | null | undefined;
|
|
23
|
+
}>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
export declare const VisitorModel: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
userId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
5
|
+
createdAt: z.ZodDate;
|
|
6
|
+
lastSeenAt: z.ZodDate;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
createdAt: Date;
|
|
9
|
+
id: string;
|
|
10
|
+
lastSeenAt: Date;
|
|
11
|
+
userId?: number | null | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
id: string;
|
|
15
|
+
lastSeenAt: Date;
|
|
16
|
+
userId?: number | null | undefined;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
type Literal = boolean | number | string;
|
|
3
|
+
type Json = Literal | {
|
|
4
|
+
[key: string]: Json;
|
|
5
|
+
} | Json[];
|
|
6
|
+
export declare const VisitorFilterModel: z.ZodObject<{
|
|
7
|
+
id: z.ZodNumber;
|
|
8
|
+
visitorId: z.ZodString;
|
|
9
|
+
propertyId: z.ZodNumber;
|
|
10
|
+
filter: z.ZodType<Json, z.ZodTypeDef, Json>;
|
|
11
|
+
createdAt: z.ZodDate;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
filter: Json;
|
|
15
|
+
id: number;
|
|
16
|
+
propertyId: number;
|
|
17
|
+
visitorId: string;
|
|
18
|
+
}, {
|
|
19
|
+
createdAt: Date;
|
|
20
|
+
filter: Json;
|
|
21
|
+
id: number;
|
|
22
|
+
propertyId: number;
|
|
23
|
+
visitorId: string;
|
|
24
|
+
}>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
type Literal = boolean | number | string;
|
|
3
|
+
type Json = Literal | {
|
|
4
|
+
[key: string]: Json;
|
|
5
|
+
} | Json[];
|
|
6
|
+
export declare const VisitorQuestionnaireModel: z.ZodObject<{
|
|
7
|
+
id: z.ZodNumber;
|
|
8
|
+
visitorId: z.ZodString;
|
|
9
|
+
propertyId: z.ZodNumber;
|
|
10
|
+
data: z.ZodType<Json, z.ZodTypeDef, Json>;
|
|
11
|
+
createdAt: z.ZodDate;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
createdAt: Date;
|
|
14
|
+
data: Json;
|
|
15
|
+
id: number;
|
|
16
|
+
propertyId: number;
|
|
17
|
+
visitorId: string;
|
|
18
|
+
}, {
|
|
19
|
+
createdAt: Date;
|
|
20
|
+
data: Json;
|
|
21
|
+
id: number;
|
|
22
|
+
propertyId: number;
|
|
23
|
+
visitorId: string;
|
|
24
|
+
}>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import { EngagementType } from './enums';
|
|
3
|
+
export declare const VisitorUnitEngagementModel: z.ZodObject<{
|
|
4
|
+
id: z.ZodNumber;
|
|
5
|
+
visitorId: z.ZodString;
|
|
6
|
+
propertyId: z.ZodNumber;
|
|
7
|
+
unitId: z.ZodNumber;
|
|
8
|
+
engagementType: z.ZodNativeEnum<typeof EngagementType>;
|
|
9
|
+
createdAt: z.ZodDate;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
id: number;
|
|
13
|
+
propertyId: number;
|
|
14
|
+
unitId: number;
|
|
15
|
+
visitorId: string;
|
|
16
|
+
engagementType: EngagementType;
|
|
17
|
+
}, {
|
|
18
|
+
createdAt: Date;
|
|
19
|
+
id: number;
|
|
20
|
+
propertyId: number;
|
|
21
|
+
unitId: number;
|
|
22
|
+
visitorId: string;
|
|
23
|
+
engagementType: EngagementType;
|
|
24
|
+
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.cjs","sources":["../../../src/features/units/transformers.ts"],"sourcesContent":["export const DEFAULT_WEB_ORIGIN = \"//web.inresiapp.com\";\nexport const DEFAULT_PLACEHOLDER_IMAGE = \"/placeholder.jpg\";\n\nexport interface UnitImageApiResponse {\n CFURL?: string;\n name?: string;\n imageSignature?: string;\n}\n\nexport interface UnitSourceApiResponse extends Record<string, unknown> {\n id?: number | string;\n name?: string;\n title?: string;\n slug?: string;\n base_price?: number;\n qty_bedrooms?: number | string;\n qty_bathrooms?: number | string;\n totalSqFt?: number;\n dim_sq_ft?: number | string;\n amenities?: unknown;\n highlights?: unknown;\n date_availability?: string | Date | null;\n unitSetAvailableOn?: string | Date | null;\n image: UnitImageApiResponse;\n additionalImages?: UnitImageApiResponse[];\n}\n\nexport interface UnitHitApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n _index?: string;\n _id?: string;\n _score?: number;\n _source?: Source;\n}\n\nexport interface UnitsTotalInfo {\n value: number;\n relation?: string;\n}\n\nexport interface UnitsDataApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total?: UnitsTotalInfo;\n max_score?: number | null;\n hits?: UnitHitApiResponse<Source>[];\n type?: string;\n imageSignature?: string;\n}\n\nexport interface UnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n data: UnitsDataApiResponse<Source>;\n}\n\nexport type TransformedUnit<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> = Source & {\n name: string;\n imageUrl: string;\n secondaryImageUrl?: string;\n tertiaryImageUrl?: string;\n};\n\nexport interface UnitsClientList<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total: number;\n maxScore: number | null;\n type: string;\n hits: TransformedUnit<Source>[];\n}\n\nexport interface TransformUnitsOptions {\n origin?: string;\n placeholderImage?: string;\n}\n\nconst normalizeSignature = (signature?: string): string => {\n if (!signature) return \"\";\n return signature.startsWith(\"?\") ? signature : `?${signature}`;\n};\n\nconst coerceString = (value: unknown): string | undefined => {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return undefined;\n};\n\nconst propertySlugFallback = (\n defaultSlug: string,\n source: UnitSourceApiResponse,\n): string | undefined => {\n const slug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug);\n return slug ?? defaultSlug;\n};\n\nexport const buildExploreUrl = (\n unitSlug: string,\n propertySlug: string,\n origin = DEFAULT_WEB_ORIGIN,\n): string => `${origin}/${propertySlug}/unit/${unitSlug}/explore`;\n\nexport const buildImageUrl = (\n image: UnitImageApiResponse | undefined,\n placeholder = DEFAULT_PLACEHOLDER_IMAGE,\n fallbackSignature?: string,\n): string => {\n const signature = image?.imageSignature ?? fallbackSignature;\n if (!image?.CFURL || !image?.name || !signature) return placeholder;\n return `${image.CFURL}${image.name}${normalizeSignature(signature)}`;\n};\n\nexport function transformUnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(apiResponse: UnitsDataApiResponse<Source>): UnitsApiResponse<Source> {\n return { data: apiResponse };\n}\n\nexport function transformUnitsApiResponseToClient<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(\n apiResponse: UnitsDataApiResponse<Source>,\n propertySlug: string,\n options?: TransformUnitsOptions,\n): UnitsClientList<Source> {\n const origin = options?.origin ?? DEFAULT_WEB_ORIGIN;\n const placeholderImage = options?.placeholderImage ?? DEFAULT_PLACEHOLDER_IMAGE;\n\n const hits =\n apiResponse.hits?.map((hit) => {\n const source = (hit._source ?? {}) as Source & UnitSourceApiResponse;\n const unit_name =\n typeof source.name === \"string\"\n ? source.name\n : typeof source.title === \"string\"\n ? source.title\n : \"\";\n\n const slugCandidate =\n coerceString(source.slug) ?? coerceString((source as any).unit_slug) ?? \"\";\n const resolvedPropertySlug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug) ??\n propertySlugFallback(propertySlug, source) ??\n propertySlug;\n\n const normalized: TransformedUnit<Source> = {\n ...(source as Source),\n name: unit_name,\n imageUrl: buildImageUrl(source.image, placeholderImage, apiResponse.imageSignature),\n secondaryImageUrl: buildImageUrl(source.additionalImages?.[0], placeholderImage, apiResponse.imageSignature),\n tertiaryImageUrl: buildImageUrl(source.additionalImages?.[1], placeholderImage, apiResponse.imageSignature),\n };\n\n\n\n if (\n resolvedPropertySlug &&\n !(normalized as Record<string, unknown>).propertySlug\n ) {\n (normalized as Record<string, unknown>).propertySlug = resolvedPropertySlug;\n }\n\n return normalized;\n }) ?? [];\n return {\n total: apiResponse.total?.value ?? hits.length,\n maxScore: apiResponse.max_score ?? null,\n type: apiResponse.type ?? \"units\",\n hits,\n };\n}\n\nexport interface UnitsFilterParams {\n date_availability?: string[];\n qty_bedrooms?: (number | string)[];\n base_price?: number | null;\n highlights?: string[];\n}\n\nexport interface UnitsClientFilters {\n date_availability?: string[];\n qty_bedrooms?: string[];\n base_price?: number;\n highlights: string[];\n}\n\nconst reverseAvailabilityMap: Record<string, string> = {\n asap: \"ASAP\",\n next_month: \"Next Month\",\n \"2_3_months\": \"2-3 Months\",\n all: \"Just Browsing\",\n};\n\nconst reverseBedroomMap: Record<number, string> = {\n 0: \"Studio\",\n 1: \"1 Bed\",\n 2: \"2 Bed\",\n 3: \"3+ Bed\",\n};\n\nconst bedroomLabels = new Set(Object.values(reverseBedroomMap));\n\nconst normalizeBedrooms = (\n bedrooms?: (number | string)[],\n): string[] | undefined => {\n if (!bedrooms || bedrooms.length === 0) return undefined;\n\n const result = new Set<string>();\n\n for (const bedroom of bedrooms) {\n if (typeof bedroom === \"number\") {\n const label = reverseBedroomMap[bedroom];\n if (label) result.add(label);\n continue;\n }\n\n const values = bedroom.split(\",\").map((v) => v.trim());\n\n for (const value of values) {\n const parsed = Number.parseInt(value, 10);\n if (!Number.isNaN(parsed) && reverseBedroomMap[parsed]) {\n result.add(reverseBedroomMap[parsed]);\n } else if (bedroomLabels.has(value)) {\n result.add(value);\n }\n }\n }\n\n return result.size > 0 ? Array.from(result) : undefined;\n};\n\nexport const transformUnitsApiResponseToClientFilters = (\n params: UnitsFilterParams,\n): UnitsClientFilters => {\n const dateAvailabilityLabels =\n params.date_availability && params.date_availability.length > 0\n ? params.date_availability.map(\n (value) => reverseAvailabilityMap[value] ?? value,\n )\n : undefined;\n\n return {\n date_availability: dateAvailabilityLabels,\n qty_bedrooms: normalizeBedrooms(params.qty_bedrooms),\n base_price: params.base_price ?? undefined,\n highlights: params.highlights ?? [],\n };\n};\n"],"names":["DEFAULT_WEB_ORIGIN","DEFAULT_PLACEHOLDER_IMAGE","normalizeSignature","signature","coerceString","value","propertySlugFallback","defaultSlug","source","buildExploreUrl","unitSlug","propertySlug","origin","buildImageUrl","image","placeholder","fallbackSignature","transformUnitsApiResponse","apiResponse","transformUnitsApiResponseToClient","options","placeholderImage","hits","_a","hit","unit_name","resolvedPropertySlug","normalized","_b","reverseAvailabilityMap","reverseBedroomMap","bedroomLabels","normalizeBedrooms","bedrooms","result","bedroom","label","values","v","parsed","transformUnitsApiResponseToClientFilters","params"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transformers.cjs","sources":["../../../src/features/units/transformers.ts"],"sourcesContent":["export const DEFAULT_WEB_ORIGIN = \"//web.inresiapp.com\";\nexport const DEFAULT_PLACEHOLDER_IMAGE = \"/placeholder.jpg\";\n\nexport interface UnitImageApiResponse {\n CFURL?: string;\n name?: string;\n imageSignature?: string;\n}\n\nexport interface UnitSourceApiResponse extends Record<string, unknown> {\n id?: number | string;\n name?: string;\n title?: string;\n slug?: string;\n base_price?: number;\n qty_bedrooms?: number | string;\n qty_bathrooms?: number | string;\n totalSqFt?: number;\n dim_sq_ft?: number | string;\n amenities?: unknown;\n highlights?: unknown;\n date_availability?: string | Date | null;\n unitSetAvailableOn?: string | Date | null;\n image: UnitImageApiResponse;\n additionalImages?: UnitImageApiResponse[];\n is_favorite?: boolean;\n seen_on?: string | null;\n}\n\nexport interface UnitHitApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n _index?: string;\n _id?: string;\n _score?: number;\n _source?: Source;\n}\n\nexport interface UnitsTotalInfo {\n value: number;\n relation?: string;\n}\n\nexport interface UnitsDataApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total?: UnitsTotalInfo;\n max_score?: number | null;\n hits?: UnitHitApiResponse<Source>[];\n type?: string;\n imageSignature?: string;\n}\n\nexport interface UnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n data: UnitsDataApiResponse<Source>;\n}\n\nexport type TransformedUnit<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> = Source & {\n name: string;\n imageUrl: string;\n secondaryImageUrl?: string;\n tertiaryImageUrl?: string;\n};\n\nexport interface UnitsClientList<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total: number;\n maxScore: number | null;\n type: string;\n hits: TransformedUnit<Source>[];\n}\n\nexport interface TransformUnitsOptions {\n origin?: string;\n placeholderImage?: string;\n}\n\nconst normalizeSignature = (signature?: string): string => {\n if (!signature) return \"\";\n return signature.startsWith(\"?\") ? signature : `?${signature}`;\n};\n\nconst coerceString = (value: unknown): string | undefined => {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return undefined;\n};\n\nconst propertySlugFallback = (\n defaultSlug: string,\n source: UnitSourceApiResponse,\n): string | undefined => {\n const slug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug);\n return slug ?? defaultSlug;\n};\n\nexport const buildExploreUrl = (\n unitSlug: string,\n propertySlug: string,\n origin = DEFAULT_WEB_ORIGIN,\n): string => `${origin}/${propertySlug}/unit/${unitSlug}/explore`;\n\nexport const buildImageUrl = (\n image: UnitImageApiResponse | undefined,\n placeholder = DEFAULT_PLACEHOLDER_IMAGE,\n fallbackSignature?: string,\n): string => {\n const signature = image?.imageSignature ?? fallbackSignature;\n if (!image?.CFURL || !image?.name || !signature) return placeholder;\n return `${image.CFURL}${image.name}${normalizeSignature(signature)}`;\n};\n\nexport function transformUnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(apiResponse: UnitsDataApiResponse<Source>): UnitsApiResponse<Source> {\n return { data: apiResponse };\n}\n\nexport function transformUnitsApiResponseToClient<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(\n apiResponse: UnitsDataApiResponse<Source>,\n propertySlug: string,\n options?: TransformUnitsOptions,\n): UnitsClientList<Source> {\n const origin = options?.origin ?? DEFAULT_WEB_ORIGIN;\n const placeholderImage = options?.placeholderImage ?? DEFAULT_PLACEHOLDER_IMAGE;\n\n const hits =\n apiResponse.hits?.map((hit) => {\n const source = (hit._source ?? {}) as Source & UnitSourceApiResponse;\n const unit_name =\n typeof source.name === \"string\"\n ? source.name\n : typeof source.title === \"string\"\n ? source.title\n : \"\";\n\n const slugCandidate =\n coerceString(source.slug) ?? coerceString((source as any).unit_slug) ?? \"\";\n const resolvedPropertySlug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug) ??\n propertySlugFallback(propertySlug, source) ??\n propertySlug;\n\n const normalized: TransformedUnit<Source> = {\n ...(source as Source),\n name: unit_name,\n imageUrl: buildImageUrl(source.image, placeholderImage, apiResponse.imageSignature),\n secondaryImageUrl: buildImageUrl(source.additionalImages?.[0], placeholderImage, apiResponse.imageSignature),\n tertiaryImageUrl: buildImageUrl(source.additionalImages?.[1], placeholderImage, apiResponse.imageSignature),\n };\n\n\n\n if (\n resolvedPropertySlug &&\n !(normalized as Record<string, unknown>).propertySlug\n ) {\n (normalized as Record<string, unknown>).propertySlug = resolvedPropertySlug;\n }\n\n return normalized;\n }) ?? [];\n return {\n total: apiResponse.total?.value ?? hits.length,\n maxScore: apiResponse.max_score ?? null,\n type: apiResponse.type ?? \"units\",\n hits,\n };\n}\n\nexport interface UnitsFilterParams {\n date_availability?: string[];\n qty_bedrooms?: (number | string)[];\n base_price?: number | null;\n highlights?: string[];\n}\n\nexport interface UnitsClientFilters {\n date_availability?: string[];\n qty_bedrooms?: string[];\n base_price?: number;\n highlights: string[];\n}\n\nconst reverseAvailabilityMap: Record<string, string> = {\n asap: \"ASAP\",\n next_month: \"Next Month\",\n \"2_3_months\": \"2-3 Months\",\n all: \"Just Browsing\",\n};\n\nconst reverseBedroomMap: Record<number, string> = {\n 0: \"Studio\",\n 1: \"1 Bed\",\n 2: \"2 Bed\",\n 3: \"3+ Bed\",\n};\n\nconst bedroomLabels = new Set(Object.values(reverseBedroomMap));\n\nconst normalizeBedrooms = (\n bedrooms?: (number | string)[],\n): string[] | undefined => {\n if (!bedrooms || bedrooms.length === 0) return undefined;\n\n const result = new Set<string>();\n\n for (const bedroom of bedrooms) {\n if (typeof bedroom === \"number\") {\n const label = reverseBedroomMap[bedroom];\n if (label) result.add(label);\n continue;\n }\n\n const values = bedroom.split(\",\").map((v) => v.trim());\n\n for (const value of values) {\n const parsed = Number.parseInt(value, 10);\n if (!Number.isNaN(parsed) && reverseBedroomMap[parsed]) {\n result.add(reverseBedroomMap[parsed]);\n } else if (bedroomLabels.has(value)) {\n result.add(value);\n }\n }\n }\n\n return result.size > 0 ? Array.from(result) : undefined;\n};\n\nexport const transformUnitsApiResponseToClientFilters = (\n params: UnitsFilterParams,\n): UnitsClientFilters => {\n const dateAvailabilityLabels =\n params.date_availability && params.date_availability.length > 0\n ? params.date_availability.map(\n (value) => reverseAvailabilityMap[value] ?? value,\n )\n : undefined;\n\n return {\n date_availability: dateAvailabilityLabels,\n qty_bedrooms: normalizeBedrooms(params.qty_bedrooms),\n base_price: params.base_price ?? undefined,\n highlights: params.highlights ?? [],\n };\n};\n"],"names":["DEFAULT_WEB_ORIGIN","DEFAULT_PLACEHOLDER_IMAGE","normalizeSignature","signature","coerceString","value","propertySlugFallback","defaultSlug","source","buildExploreUrl","unitSlug","propertySlug","origin","buildImageUrl","image","placeholder","fallbackSignature","transformUnitsApiResponse","apiResponse","transformUnitsApiResponseToClient","options","placeholderImage","hits","_a","hit","unit_name","resolvedPropertySlug","normalized","_b","reverseAvailabilityMap","reverseBedroomMap","bedroomLabels","normalizeBedrooms","bedrooms","result","bedroom","label","values","v","parsed","transformUnitsApiResponseToClientFilters","params"],"mappings":"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"}
|
|
@@ -21,6 +21,8 @@ export interface UnitSourceApiResponse extends Record<string, unknown> {
|
|
|
21
21
|
unitSetAvailableOn?: string | Date | null;
|
|
22
22
|
image: UnitImageApiResponse;
|
|
23
23
|
additionalImages?: UnitImageApiResponse[];
|
|
24
|
+
is_favorite?: boolean;
|
|
25
|
+
seen_on?: string | null;
|
|
24
26
|
}
|
|
25
27
|
export interface UnitHitApiResponse<Source extends Record<string, unknown> = UnitSourceApiResponse> {
|
|
26
28
|
_index?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformers.mjs","sources":["../../../src/features/units/transformers.ts"],"sourcesContent":["export const DEFAULT_WEB_ORIGIN = \"//web.inresiapp.com\";\nexport const DEFAULT_PLACEHOLDER_IMAGE = \"/placeholder.jpg\";\n\nexport interface UnitImageApiResponse {\n CFURL?: string;\n name?: string;\n imageSignature?: string;\n}\n\nexport interface UnitSourceApiResponse extends Record<string, unknown> {\n id?: number | string;\n name?: string;\n title?: string;\n slug?: string;\n base_price?: number;\n qty_bedrooms?: number | string;\n qty_bathrooms?: number | string;\n totalSqFt?: number;\n dim_sq_ft?: number | string;\n amenities?: unknown;\n highlights?: unknown;\n date_availability?: string | Date | null;\n unitSetAvailableOn?: string | Date | null;\n image: UnitImageApiResponse;\n additionalImages?: UnitImageApiResponse[];\n}\n\nexport interface UnitHitApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n _index?: string;\n _id?: string;\n _score?: number;\n _source?: Source;\n}\n\nexport interface UnitsTotalInfo {\n value: number;\n relation?: string;\n}\n\nexport interface UnitsDataApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total?: UnitsTotalInfo;\n max_score?: number | null;\n hits?: UnitHitApiResponse<Source>[];\n type?: string;\n imageSignature?: string;\n}\n\nexport interface UnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n data: UnitsDataApiResponse<Source>;\n}\n\nexport type TransformedUnit<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> = Source & {\n name: string;\n imageUrl: string;\n secondaryImageUrl?: string;\n tertiaryImageUrl?: string;\n};\n\nexport interface UnitsClientList<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total: number;\n maxScore: number | null;\n type: string;\n hits: TransformedUnit<Source>[];\n}\n\nexport interface TransformUnitsOptions {\n origin?: string;\n placeholderImage?: string;\n}\n\nconst normalizeSignature = (signature?: string): string => {\n if (!signature) return \"\";\n return signature.startsWith(\"?\") ? signature : `?${signature}`;\n};\n\nconst coerceString = (value: unknown): string | undefined => {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return undefined;\n};\n\nconst propertySlugFallback = (\n defaultSlug: string,\n source: UnitSourceApiResponse,\n): string | undefined => {\n const slug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug);\n return slug ?? defaultSlug;\n};\n\nexport const buildExploreUrl = (\n unitSlug: string,\n propertySlug: string,\n origin = DEFAULT_WEB_ORIGIN,\n): string => `${origin}/${propertySlug}/unit/${unitSlug}/explore`;\n\nexport const buildImageUrl = (\n image: UnitImageApiResponse | undefined,\n placeholder = DEFAULT_PLACEHOLDER_IMAGE,\n fallbackSignature?: string,\n): string => {\n const signature = image?.imageSignature ?? fallbackSignature;\n if (!image?.CFURL || !image?.name || !signature) return placeholder;\n return `${image.CFURL}${image.name}${normalizeSignature(signature)}`;\n};\n\nexport function transformUnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(apiResponse: UnitsDataApiResponse<Source>): UnitsApiResponse<Source> {\n return { data: apiResponse };\n}\n\nexport function transformUnitsApiResponseToClient<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(\n apiResponse: UnitsDataApiResponse<Source>,\n propertySlug: string,\n options?: TransformUnitsOptions,\n): UnitsClientList<Source> {\n const origin = options?.origin ?? DEFAULT_WEB_ORIGIN;\n const placeholderImage = options?.placeholderImage ?? DEFAULT_PLACEHOLDER_IMAGE;\n\n const hits =\n apiResponse.hits?.map((hit) => {\n const source = (hit._source ?? {}) as Source & UnitSourceApiResponse;\n const unit_name =\n typeof source.name === \"string\"\n ? source.name\n : typeof source.title === \"string\"\n ? source.title\n : \"\";\n\n const slugCandidate =\n coerceString(source.slug) ?? coerceString((source as any).unit_slug) ?? \"\";\n const resolvedPropertySlug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug) ??\n propertySlugFallback(propertySlug, source) ??\n propertySlug;\n\n const normalized: TransformedUnit<Source> = {\n ...(source as Source),\n name: unit_name,\n imageUrl: buildImageUrl(source.image, placeholderImage, apiResponse.imageSignature),\n secondaryImageUrl: buildImageUrl(source.additionalImages?.[0], placeholderImage, apiResponse.imageSignature),\n tertiaryImageUrl: buildImageUrl(source.additionalImages?.[1], placeholderImage, apiResponse.imageSignature),\n };\n\n\n\n if (\n resolvedPropertySlug &&\n !(normalized as Record<string, unknown>).propertySlug\n ) {\n (normalized as Record<string, unknown>).propertySlug = resolvedPropertySlug;\n }\n\n return normalized;\n }) ?? [];\n return {\n total: apiResponse.total?.value ?? hits.length,\n maxScore: apiResponse.max_score ?? null,\n type: apiResponse.type ?? \"units\",\n hits,\n };\n}\n\nexport interface UnitsFilterParams {\n date_availability?: string[];\n qty_bedrooms?: (number | string)[];\n base_price?: number | null;\n highlights?: string[];\n}\n\nexport interface UnitsClientFilters {\n date_availability?: string[];\n qty_bedrooms?: string[];\n base_price?: number;\n highlights: string[];\n}\n\nconst reverseAvailabilityMap: Record<string, string> = {\n asap: \"ASAP\",\n next_month: \"Next Month\",\n \"2_3_months\": \"2-3 Months\",\n all: \"Just Browsing\",\n};\n\nconst reverseBedroomMap: Record<number, string> = {\n 0: \"Studio\",\n 1: \"1 Bed\",\n 2: \"2 Bed\",\n 3: \"3+ Bed\",\n};\n\nconst bedroomLabels = new Set(Object.values(reverseBedroomMap));\n\nconst normalizeBedrooms = (\n bedrooms?: (number | string)[],\n): string[] | undefined => {\n if (!bedrooms || bedrooms.length === 0) return undefined;\n\n const result = new Set<string>();\n\n for (const bedroom of bedrooms) {\n if (typeof bedroom === \"number\") {\n const label = reverseBedroomMap[bedroom];\n if (label) result.add(label);\n continue;\n }\n\n const values = bedroom.split(\",\").map((v) => v.trim());\n\n for (const value of values) {\n const parsed = Number.parseInt(value, 10);\n if (!Number.isNaN(parsed) && reverseBedroomMap[parsed]) {\n result.add(reverseBedroomMap[parsed]);\n } else if (bedroomLabels.has(value)) {\n result.add(value);\n }\n }\n }\n\n return result.size > 0 ? Array.from(result) : undefined;\n};\n\nexport const transformUnitsApiResponseToClientFilters = (\n params: UnitsFilterParams,\n): UnitsClientFilters => {\n const dateAvailabilityLabels =\n params.date_availability && params.date_availability.length > 0\n ? params.date_availability.map(\n (value) => reverseAvailabilityMap[value] ?? value,\n )\n : undefined;\n\n return {\n date_availability: dateAvailabilityLabels,\n qty_bedrooms: normalizeBedrooms(params.qty_bedrooms),\n base_price: params.base_price ?? undefined,\n highlights: params.highlights ?? [],\n };\n};\n"],"names":["DEFAULT_WEB_ORIGIN","DEFAULT_PLACEHOLDER_IMAGE","normalizeSignature","signature","coerceString","value","propertySlugFallback","defaultSlug","source","buildExploreUrl","unitSlug","propertySlug","origin","buildImageUrl","image","placeholder","fallbackSignature","transformUnitsApiResponse","apiResponse","transformUnitsApiResponseToClient","options","_a","_b","placeholderImage","hits","hit","unit_name","resolvedPropertySlug","normalized","reverseAvailabilityMap","reverseBedroomMap","bedroomLabels","normalizeBedrooms","bedrooms","result","bedroom","label","values","v","parsed","transformUnitsApiResponseToClientFilters","params"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transformers.mjs","sources":["../../../src/features/units/transformers.ts"],"sourcesContent":["export const DEFAULT_WEB_ORIGIN = \"//web.inresiapp.com\";\nexport const DEFAULT_PLACEHOLDER_IMAGE = \"/placeholder.jpg\";\n\nexport interface UnitImageApiResponse {\n CFURL?: string;\n name?: string;\n imageSignature?: string;\n}\n\nexport interface UnitSourceApiResponse extends Record<string, unknown> {\n id?: number | string;\n name?: string;\n title?: string;\n slug?: string;\n base_price?: number;\n qty_bedrooms?: number | string;\n qty_bathrooms?: number | string;\n totalSqFt?: number;\n dim_sq_ft?: number | string;\n amenities?: unknown;\n highlights?: unknown;\n date_availability?: string | Date | null;\n unitSetAvailableOn?: string | Date | null;\n image: UnitImageApiResponse;\n additionalImages?: UnitImageApiResponse[];\n is_favorite?: boolean;\n seen_on?: string | null;\n}\n\nexport interface UnitHitApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n _index?: string;\n _id?: string;\n _score?: number;\n _source?: Source;\n}\n\nexport interface UnitsTotalInfo {\n value: number;\n relation?: string;\n}\n\nexport interface UnitsDataApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total?: UnitsTotalInfo;\n max_score?: number | null;\n hits?: UnitHitApiResponse<Source>[];\n type?: string;\n imageSignature?: string;\n}\n\nexport interface UnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n data: UnitsDataApiResponse<Source>;\n}\n\nexport type TransformedUnit<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> = Source & {\n name: string;\n imageUrl: string;\n secondaryImageUrl?: string;\n tertiaryImageUrl?: string;\n};\n\nexport interface UnitsClientList<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n> {\n total: number;\n maxScore: number | null;\n type: string;\n hits: TransformedUnit<Source>[];\n}\n\nexport interface TransformUnitsOptions {\n origin?: string;\n placeholderImage?: string;\n}\n\nconst normalizeSignature = (signature?: string): string => {\n if (!signature) return \"\";\n return signature.startsWith(\"?\") ? signature : `?${signature}`;\n};\n\nconst coerceString = (value: unknown): string | undefined => {\n if (typeof value === \"string\") return value;\n if (typeof value === \"number\" || typeof value === \"boolean\") {\n return String(value);\n }\n return undefined;\n};\n\nconst propertySlugFallback = (\n defaultSlug: string,\n source: UnitSourceApiResponse,\n): string | undefined => {\n const slug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug);\n return slug ?? defaultSlug;\n};\n\nexport const buildExploreUrl = (\n unitSlug: string,\n propertySlug: string,\n origin = DEFAULT_WEB_ORIGIN,\n): string => `${origin}/${propertySlug}/unit/${unitSlug}/explore`;\n\nexport const buildImageUrl = (\n image: UnitImageApiResponse | undefined,\n placeholder = DEFAULT_PLACEHOLDER_IMAGE,\n fallbackSignature?: string,\n): string => {\n const signature = image?.imageSignature ?? fallbackSignature;\n if (!image?.CFURL || !image?.name || !signature) return placeholder;\n return `${image.CFURL}${image.name}${normalizeSignature(signature)}`;\n};\n\nexport function transformUnitsApiResponse<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(apiResponse: UnitsDataApiResponse<Source>): UnitsApiResponse<Source> {\n return { data: apiResponse };\n}\n\nexport function transformUnitsApiResponseToClient<\n Source extends Record<string, unknown> = UnitSourceApiResponse,\n>(\n apiResponse: UnitsDataApiResponse<Source>,\n propertySlug: string,\n options?: TransformUnitsOptions,\n): UnitsClientList<Source> {\n const origin = options?.origin ?? DEFAULT_WEB_ORIGIN;\n const placeholderImage = options?.placeholderImage ?? DEFAULT_PLACEHOLDER_IMAGE;\n\n const hits =\n apiResponse.hits?.map((hit) => {\n const source = (hit._source ?? {}) as Source & UnitSourceApiResponse;\n const unit_name =\n typeof source.name === \"string\"\n ? source.name\n : typeof source.title === \"string\"\n ? source.title\n : \"\";\n\n const slugCandidate =\n coerceString(source.slug) ?? coerceString((source as any).unit_slug) ?? \"\";\n const resolvedPropertySlug =\n coerceString((source as any).propertySlug) ??\n coerceString((source as any).property_slug) ??\n propertySlugFallback(propertySlug, source) ??\n propertySlug;\n\n const normalized: TransformedUnit<Source> = {\n ...(source as Source),\n name: unit_name,\n imageUrl: buildImageUrl(source.image, placeholderImage, apiResponse.imageSignature),\n secondaryImageUrl: buildImageUrl(source.additionalImages?.[0], placeholderImage, apiResponse.imageSignature),\n tertiaryImageUrl: buildImageUrl(source.additionalImages?.[1], placeholderImage, apiResponse.imageSignature),\n };\n\n\n\n if (\n resolvedPropertySlug &&\n !(normalized as Record<string, unknown>).propertySlug\n ) {\n (normalized as Record<string, unknown>).propertySlug = resolvedPropertySlug;\n }\n\n return normalized;\n }) ?? [];\n return {\n total: apiResponse.total?.value ?? hits.length,\n maxScore: apiResponse.max_score ?? null,\n type: apiResponse.type ?? \"units\",\n hits,\n };\n}\n\nexport interface UnitsFilterParams {\n date_availability?: string[];\n qty_bedrooms?: (number | string)[];\n base_price?: number | null;\n highlights?: string[];\n}\n\nexport interface UnitsClientFilters {\n date_availability?: string[];\n qty_bedrooms?: string[];\n base_price?: number;\n highlights: string[];\n}\n\nconst reverseAvailabilityMap: Record<string, string> = {\n asap: \"ASAP\",\n next_month: \"Next Month\",\n \"2_3_months\": \"2-3 Months\",\n all: \"Just Browsing\",\n};\n\nconst reverseBedroomMap: Record<number, string> = {\n 0: \"Studio\",\n 1: \"1 Bed\",\n 2: \"2 Bed\",\n 3: \"3+ Bed\",\n};\n\nconst bedroomLabels = new Set(Object.values(reverseBedroomMap));\n\nconst normalizeBedrooms = (\n bedrooms?: (number | string)[],\n): string[] | undefined => {\n if (!bedrooms || bedrooms.length === 0) return undefined;\n\n const result = new Set<string>();\n\n for (const bedroom of bedrooms) {\n if (typeof bedroom === \"number\") {\n const label = reverseBedroomMap[bedroom];\n if (label) result.add(label);\n continue;\n }\n\n const values = bedroom.split(\",\").map((v) => v.trim());\n\n for (const value of values) {\n const parsed = Number.parseInt(value, 10);\n if (!Number.isNaN(parsed) && reverseBedroomMap[parsed]) {\n result.add(reverseBedroomMap[parsed]);\n } else if (bedroomLabels.has(value)) {\n result.add(value);\n }\n }\n }\n\n return result.size > 0 ? Array.from(result) : undefined;\n};\n\nexport const transformUnitsApiResponseToClientFilters = (\n params: UnitsFilterParams,\n): UnitsClientFilters => {\n const dateAvailabilityLabels =\n params.date_availability && params.date_availability.length > 0\n ? params.date_availability.map(\n (value) => reverseAvailabilityMap[value] ?? value,\n )\n : undefined;\n\n return {\n date_availability: dateAvailabilityLabels,\n qty_bedrooms: normalizeBedrooms(params.qty_bedrooms),\n base_price: params.base_price ?? undefined,\n highlights: params.highlights ?? [],\n };\n};\n"],"names":["DEFAULT_WEB_ORIGIN","DEFAULT_PLACEHOLDER_IMAGE","normalizeSignature","signature","coerceString","value","propertySlugFallback","defaultSlug","source","buildExploreUrl","unitSlug","propertySlug","origin","buildImageUrl","image","placeholder","fallbackSignature","transformUnitsApiResponse","apiResponse","transformUnitsApiResponseToClient","options","_a","_b","placeholderImage","hits","hit","unit_name","resolvedPropertySlug","normalized","reverseAvailabilityMap","reverseBedroomMap","bedroomLabels","normalizeBedrooms","bedrooms","result","bedroom","label","values","v","parsed","transformUnitsApiResponseToClientFilters","params"],"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 u=require("./errors.cjs"),e=require("./schema.cjs"),c=require("./db.cjs"),l=require("./debug.cjs"),n=require("./storage.cjs"),a=require("./stores/store.cjs"),d=require("./adapters/zustand-store.cjs"),m=require("./adapters/structured-store.cjs"),t=require("./features/units/transformers.cjs"),s=require("./features/filters/transformers.cjs"),o=require("./utils/dimensions.cjs"),p=require("./validation.cjs"),y=require("./base/overviewimagesonproperty.cjs"),h=require("./base/amenityimagesonproperty.cjs"),M=require("./base/floorplan.cjs"),U=require("./base/media.cjs"),g=require("./base/property.cjs"),E=require("./base/propertyhighlight.cjs"),v=require("./base/room.cjs"),P=require("./base/style.cjs"),A=require("./base/unit.cjs"),r=require("./base/enums.cjs"),T=require("./base/renderedstyle.cjs"),D=require("./base/propertyamenity.cjs"),f=require("./base/favoriteunit.cjs"),q=require("./base/user.cjs"),R=require("./base/propertylink.cjs"),S=require("./features/analytics/AnalyticsProvider.cjs"),i=require("./features/analytics/analytics.cjs");exports.OpenDBError=u.OpenDBError;exports.SchemaMismatchError=u.SchemaMismatchError;exports.ApiUserSchema=e.ApiUserSchema;exports.AppStoreDataSchema=e.AppStoreDataSchema;exports.FiltersSchema=e.FiltersSchema;exports.PropertySchema=e.PropertySchema;exports.PropertyStoreDataSchema=e.PropertyStoreDataSchema;exports.QueryParamsSchema=e.QueryParamsSchema;exports.ResultsModeEnum=e.ResultsModeEnum;exports.SCHEMA_VERSION=e.SCHEMA_VERSION;exports.SortByEnum=e.SortByEnum;exports.TourContactDataSchema=e.TourContactDataSchema;exports.UnifiedStoreDataSchema=e.UnifiedStoreDataSchema;exports.UnitDataSchema=e.UnitDataSchema;exports.UnitSchema=e.UnitSchema;exports.UserPropertyStateSchema=e.UserPropertyStateSchema;exports.UserSchema=e.UserSchema;exports.UserUnitDataSchema=e.UserUnitDataSchema;exports.ViewedUnitSchema=e.ViewedUnitSchema;exports.getDB=c.getDB;exports.resetDB=c.resetDB;exports.debugDump=l.debugDump;exports.exportJSON=l.exportJSON;exports.createORMStringStorage=n.createORMStringStorage;exports.kvGet=n.kvGet;exports.kvRemove=n.kvRemove;exports.kvSet=n.kvSet;exports.Store=a.UnifiedStore;exports.UnifiedStore=a.UnifiedStore;exports.store=a.store;exports.createZustandUnifiedStore=d.createZustandUnifiedStore;exports.createStructuredStore=m.createStructuredStore;exports.createStructuredStoreActions=m.createStructuredStoreActions;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=s.defaultSortParamMap;exports.transformFiltersToPreferences=s.transformFiltersToPreferences;exports.transformFiltersToUnitsSearchParams=s.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=h.AmenityImagesOnPropertyModel;exports.FloorPlanModel=M.FloorPlanModel;exports.MediaModel=U.MediaModel;exports.PropertyModel=g.PropertyModel;exports.PropertyHighlightModel=E.PropertyHighlightModel;exports.RoomModel=v.RoomModel;exports.StyleModel=P.StyleModel;exports.UnitModel=A.UnitModel;exports.Currency=r.Currency;exports.DeliveryStatus=r.DeliveryStatus;exports.EngagementType=r.EngagementType;exports.ExternalService=r.ExternalService;exports.FurnitureAvailability=r.FurnitureAvailability;exports.Highlights=r.Highlights;exports.MediaType=r.MediaType;exports.QueueJobStatus=r.QueueJobStatus;exports.RenderStatus=r.RenderStatus;exports.Status=r.Status;exports.UserRole=r.UserRole;exports.RenderedStyleModel=T.RenderedStyleModel;exports.PropertyAmenityModel=D.PropertyAmenityModel;exports.FavoriteUnitModel=f.FavoriteUnitModel;exports.UserModel=q.UserModel;exports.PropertyLinkModel=R.PropertyLinkModel;exports.AnalyticsProvider=S.AnalyticsProvider;exports.useAnalytics=S.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
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
export * from "./errors";
|
|
2
2
|
export * from "./schema";
|
|
3
3
|
export * from "./db";
|
|
4
|
-
export * from "./api/users";
|
|
5
4
|
export * from "./debug";
|
|
6
5
|
export * from "./storage";
|
|
7
|
-
export * from "./api/favorites";
|
|
8
|
-
export { PropertyStore, propertyStore, type UserPropertyState, type PropertyStoreData, } from "./api/properties";
|
|
9
6
|
export { UnifiedStore, Store, store } from "./stores/store";
|
|
10
|
-
export { createZustandUnifiedStore,
|
|
7
|
+
export { createZustandUnifiedStore, type ZustandUnifiedStoreState } from "./adapters/zustand-store";
|
|
11
8
|
export { createStructuredStore, createStructuredStoreActions, type StructuredStore, type StructuredStoreActions } from "./adapters/structured-store";
|
|
12
|
-
export { favorites } from "./units/favorites";
|
|
13
9
|
export * from "./features/units/transformers";
|
|
14
10
|
export * from "./features/filters/transformers";
|
|
15
11
|
export * from "./utils/dimensions";
|