@superbright/indexeddb-orm 1.0.1 → 1.0.2
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/base/amenityimagesonproperty.cjs +2 -0
- package/dist/base/amenityimagesonproperty.cjs.map +1 -0
- package/dist/base/amenityimagesonproperty.d.ts +11 -0
- package/dist/base/amenityimagesonproperty.mjs +9 -0
- package/dist/base/amenityimagesonproperty.mjs.map +1 -0
- package/dist/base/enums.cjs +2 -0
- package/dist/base/enums.cjs.map +1 -0
- package/dist/base/enums.d.ts +69 -0
- package/dist/base/enums.mjs +14 -0
- package/dist/base/enums.mjs.map +1 -0
- package/dist/base/favoriteunit.cjs +2 -0
- package/dist/base/favoriteunit.cjs.map +1 -0
- package/dist/base/favoriteunit.d.ts +14 -0
- package/dist/base/favoriteunit.mjs +10 -0
- package/dist/base/favoriteunit.mjs.map +1 -0
- package/dist/base/floorplan.cjs +2 -0
- package/dist/base/floorplan.cjs.map +1 -0
- package/dist/base/floorplan.d.ts +26 -0
- package/dist/base/floorplan.mjs +14 -0
- package/dist/base/floorplan.mjs.map +1 -0
- package/dist/base/index.d.ts +14 -0
- package/dist/base/media.cjs +2 -0
- package/dist/base/media.cjs.map +1 -0
- package/dist/base/media.d.ts +81 -0
- package/dist/base/media.mjs +33 -0
- package/dist/base/media.mjs.map +1 -0
- package/dist/base/overviewimagesonproperty.cjs +2 -0
- package/dist/base/overviewimagesonproperty.cjs.map +1 -0
- package/dist/base/overviewimagesonproperty.d.ts +11 -0
- package/dist/base/overviewimagesonproperty.mjs +9 -0
- package/dist/base/overviewimagesonproperty.mjs.map +1 -0
- package/dist/base/property.cjs +2 -0
- package/dist/base/property.cjs.map +1 -0
- package/dist/base/property.d.ts +60 -0
- package/dist/base/property.mjs +26 -0
- package/dist/base/property.mjs.map +1 -0
- package/dist/base/propertyamenity.cjs +2 -0
- package/dist/base/propertyamenity.cjs.map +1 -0
- package/dist/base/propertyamenity.d.ts +14 -0
- package/dist/base/propertyamenity.mjs +10 -0
- package/dist/base/propertyamenity.mjs.map +1 -0
- package/dist/base/propertyhighlight.cjs +2 -0
- package/dist/base/propertyhighlight.cjs.map +1 -0
- package/dist/base/propertyhighlight.d.ts +14 -0
- package/dist/base/propertyhighlight.mjs +10 -0
- package/dist/base/propertyhighlight.mjs.map +1 -0
- package/dist/base/renderedstyle.cjs +2 -0
- package/dist/base/renderedstyle.cjs.map +1 -0
- package/dist/base/renderedstyle.d.ts +20 -0
- package/dist/base/renderedstyle.mjs +12 -0
- package/dist/base/renderedstyle.mjs.map +1 -0
- package/dist/base/room.cjs +2 -0
- package/dist/base/room.cjs.map +1 -0
- package/dist/base/room.d.ts +20 -0
- package/dist/base/room.mjs +12 -0
- package/dist/base/room.mjs.map +1 -0
- package/dist/base/style.cjs +2 -0
- package/dist/base/style.cjs.map +1 -0
- package/dist/base/style.d.ts +17 -0
- package/dist/base/style.mjs +11 -0
- package/dist/base/style.mjs.map +1 -0
- package/dist/base/unit.cjs +2 -0
- package/dist/base/unit.cjs.map +1 -0
- package/dist/base/unit.d.ts +57 -0
- package/dist/base/unit.mjs +25 -0
- package/dist/base/unit.mjs.map +1 -0
- package/dist/base/user.cjs +2 -0
- package/dist/base/user.cjs.map +1 -0
- package/dist/base/user.d.ts +27 -0
- package/dist/base/user.mjs +15 -0
- package/dist/base/user.mjs.map +1 -0
- package/dist/features/analytics/MixpanelProvider.cjs +2 -0
- package/dist/features/analytics/MixpanelProvider.cjs.map +1 -0
- package/dist/features/analytics/MixpanelProvider.mjs +44 -0
- package/dist/features/analytics/MixpanelProvider.mjs.map +1 -0
- package/dist/features/analytics/analytics.cjs +2 -0
- package/dist/features/analytics/analytics.cjs.map +1 -0
- package/dist/features/analytics/analytics.d.ts +14 -12
- package/dist/features/analytics/analytics.mjs +230 -0
- package/dist/features/analytics/analytics.mjs.map +1 -0
- package/dist/features/analytics/generateUserUUID.cjs +2 -0
- package/dist/features/analytics/generateUserUUID.cjs.map +1 -0
- package/dist/features/analytics/generateUserUUID.mjs +6 -0
- package/dist/features/analytics/generateUserUUID.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.mjs +98 -49
- package/dist/index.mjs.map +1 -1
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs +1 -1
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs.map +1 -1
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs +68 -67
- package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs.map +1 -1
- package/dist/utils/casing.cjs +2 -0
- package/dist/utils/casing.cjs.map +1 -0
- package/dist/utils/casing.mjs +12 -0
- package/dist/utils/casing.mjs.map +1 -0
- package/dist/utils/collections.cjs +2 -0
- package/dist/utils/collections.cjs.map +1 -0
- package/dist/utils/collections.mjs +13 -0
- package/dist/utils/collections.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),n=e.object({id:e.number().int(),unitId:e.number().int().nullish(),styleId:e.number().int(),floorPlanId:e.number().int().nullish(),visibleOnWebsite:e.boolean()});exports.RenderedStyleModel=n;
|
|
2
|
+
//# sourceMappingURL=renderedstyle.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderedstyle.cjs","sources":["../../src/base/renderedstyle.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const RenderedStyleModel = z.object({\n id: z.number().int(),\n unitId: z.number().int().nullish(),\n styleId: z.number().int(),\n floorPlanId: z.number().int().nullish(),\n visibleOnWebsite: z.boolean(),\n });"],"names":["RenderedStyleModel","z.object","z.number","z.boolean"],"mappings":"mKAEaA,EAAqBC,EAAAA,OAAS,CACvC,GAAIC,EAAAA,OAAE,EAAS,IAAA,EACf,OAAQA,EAAAA,OAAE,EAAS,IAAA,EAAM,QAAA,EACzB,QAASA,EAAAA,OAAE,EAAS,IAAA,EACpB,YAAaA,EAAAA,OAAE,EAAS,IAAA,EAAM,QAAA,EAC9B,iBAAkBC,EAAAA,QAAE,CACtB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const RenderedStyleModel: z.ZodObject<{
|
|
3
|
+
id: z.ZodNumber;
|
|
4
|
+
unitId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
5
|
+
styleId: z.ZodNumber;
|
|
6
|
+
floorPlanId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
7
|
+
visibleOnWebsite: z.ZodBoolean;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
id: number;
|
|
10
|
+
styleId: number;
|
|
11
|
+
visibleOnWebsite: boolean;
|
|
12
|
+
floorPlanId?: number | null | undefined;
|
|
13
|
+
unitId?: number | null | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
id: number;
|
|
16
|
+
styleId: number;
|
|
17
|
+
visibleOnWebsite: boolean;
|
|
18
|
+
floorPlanId?: number | null | undefined;
|
|
19
|
+
unitId?: number | null | undefined;
|
|
20
|
+
}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { object as n, boolean as o, number as e } from "../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
|
|
2
|
+
const i = n({
|
|
3
|
+
id: e().int(),
|
|
4
|
+
unitId: e().int().nullish(),
|
|
5
|
+
styleId: e().int(),
|
|
6
|
+
floorPlanId: e().int().nullish(),
|
|
7
|
+
visibleOnWebsite: o()
|
|
8
|
+
});
|
|
9
|
+
export {
|
|
10
|
+
i as RenderedStyleModel
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=renderedstyle.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"renderedstyle.mjs","sources":["../../src/base/renderedstyle.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const RenderedStyleModel = z.object({\n id: z.number().int(),\n unitId: z.number().int().nullish(),\n styleId: z.number().int(),\n floorPlanId: z.number().int().nullish(),\n visibleOnWebsite: z.boolean(),\n });"],"names":["RenderedStyleModel","z.object","z.number","z.boolean"],"mappings":";AAEO,MAAMA,IAAqBC,EAAS;AAAA,EACvC,IAAIC,EAAE,EAAS,IAAA;AAAA,EACf,QAAQA,EAAE,EAAS,IAAA,EAAM,QAAA;AAAA,EACzB,SAASA,EAAE,EAAS,IAAA;AAAA,EACpB,aAAaA,EAAE,EAAS,IAAA,EAAM,QAAA;AAAA,EAC9B,kBAAkBC,EAAE;AACtB,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),n=e.object({id:e.number().int(),name:e.string(),cameras:e.number().int().nullish(),order:e.number().int(),floorPlanId:e.number().int()});exports.RoomModel=n;
|
|
2
|
+
//# sourceMappingURL=room.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room.cjs","sources":["../../src/base/room.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const RoomModel = z.object({\n id: z.number().int(),\n name: z.string(),\n cameras: z.number().int().nullish(),\n order: z.number().int(),\n floorPlanId: z.number().int(),\n });\n"],"names":["RoomModel","z.object","z.number","z.string"],"mappings":"mKAEaA,EAAYC,EAAAA,OAAS,CAC9B,GAAIC,EAAAA,OAAE,EAAS,IAAA,EACf,KAAMC,EAAAA,OAAE,EACR,QAASD,EAAAA,OAAE,EAAS,IAAA,EAAM,QAAA,EAC1B,MAAOA,EAAAA,OAAE,EAAS,IAAA,EAClB,YAAaA,EAAAA,OAAE,EAAS,IAAA,CAC1B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const RoomModel: z.ZodObject<{
|
|
3
|
+
id: z.ZodNumber;
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
cameras: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
6
|
+
order: z.ZodNumber;
|
|
7
|
+
floorPlanId: z.ZodNumber;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
id: number;
|
|
10
|
+
floorPlanId: number;
|
|
11
|
+
name: string;
|
|
12
|
+
order: number;
|
|
13
|
+
cameras?: number | null | undefined;
|
|
14
|
+
}, {
|
|
15
|
+
id: number;
|
|
16
|
+
floorPlanId: number;
|
|
17
|
+
name: string;
|
|
18
|
+
order: number;
|
|
19
|
+
cameras?: number | null | undefined;
|
|
20
|
+
}>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { object as n, number as e, string as o } from "../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
|
|
2
|
+
const t = n({
|
|
3
|
+
id: e().int(),
|
|
4
|
+
name: o(),
|
|
5
|
+
cameras: e().int().nullish(),
|
|
6
|
+
order: e().int(),
|
|
7
|
+
floorPlanId: e().int()
|
|
8
|
+
});
|
|
9
|
+
export {
|
|
10
|
+
t as RoomModel
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=room.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room.mjs","sources":["../../src/base/room.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const RoomModel = z.object({\n id: z.number().int(),\n name: z.string(),\n cameras: z.number().int().nullish(),\n order: z.number().int(),\n floorPlanId: z.number().int(),\n });\n"],"names":["RoomModel","z.object","z.number","z.string"],"mappings":";AAEO,MAAMA,IAAYC,EAAS;AAAA,EAC9B,IAAIC,EAAE,EAAS,IAAA;AAAA,EACf,MAAMC,EAAE;AAAA,EACR,SAASD,EAAE,EAAS,IAAA,EAAM,QAAA;AAAA,EAC1B,OAAOA,EAAE,EAAS,IAAA;AAAA,EAClB,aAAaA,EAAE,EAAS,IAAA;AAC1B,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),t=e.object({id:e.number().int(),name:e.string(),description:e.string(),mediaId:e.number().int().nullish()});exports.StyleModel=t;
|
|
2
|
+
//# sourceMappingURL=style.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.cjs","sources":["../../src/base/style.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const StyleModel = z.object({\n id: z.number().int(),\n name: z.string(),\n description: z.string(),\n mediaId: z.number().int().nullish(),\n });"],"names":["StyleModel","z.object","z.number","z.string"],"mappings":"mKAEaA,EAAaC,EAAAA,OAAS,CAC/B,GAAIC,EAAAA,OAAE,EAAS,IAAA,EACf,KAAMC,EAAAA,OAAE,EACR,YAAaA,EAAAA,OAAE,EACf,QAASD,EAAAA,OAAE,EAAS,IAAA,EAAM,QAAA,CAC5B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const StyleModel: z.ZodObject<{
|
|
3
|
+
id: z.ZodNumber;
|
|
4
|
+
name: z.ZodString;
|
|
5
|
+
description: z.ZodString;
|
|
6
|
+
mediaId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
7
|
+
}, "strip", z.ZodTypeAny, {
|
|
8
|
+
id: number;
|
|
9
|
+
description: string;
|
|
10
|
+
name: string;
|
|
11
|
+
mediaId?: number | null | undefined;
|
|
12
|
+
}, {
|
|
13
|
+
id: number;
|
|
14
|
+
description: string;
|
|
15
|
+
name: string;
|
|
16
|
+
mediaId?: number | null | undefined;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { object as i, number as e, string as t } from "../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
|
|
2
|
+
const o = i({
|
|
3
|
+
id: e().int(),
|
|
4
|
+
name: t(),
|
|
5
|
+
description: t(),
|
|
6
|
+
mediaId: e().int().nullish()
|
|
7
|
+
});
|
|
8
|
+
export {
|
|
9
|
+
o as StyleModel
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=style.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"style.mjs","sources":["../../src/base/style.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const StyleModel = z.object({\n id: z.number().int(),\n name: z.string(),\n description: z.string(),\n mediaId: z.number().int().nullish(),\n });"],"names":["StyleModel","z.object","z.number","z.string"],"mappings":";AAEO,MAAMA,IAAaC,EAAS;AAAA,EAC/B,IAAIC,EAAE,EAAS,IAAA;AAAA,EACf,MAAMC,EAAE;AAAA,EACR,aAAaA,EAAE;AAAA,EACf,SAASD,EAAE,EAAS,IAAA,EAAM,QAAA;AAC5B,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./enums.cjs"),t=require("../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),n=t.object({id:t.number().int(),title:t.string(),slug:t.string().nullish(),qty_bedrooms:t.number().int(),qty_bathrooms:t.number().int(),base_price:t.number(),dim_sq_ft:t.number().int(),propertyId:t.number().int(),is_available:t.boolean(),createdAt:t.date(),updatedAt:t.date(),date_availability:t.date().nullish(),unitSetAvailableOn:t.date().nullish(),floorPlanId:t.number().int().nullish(),userId:t.number().int(),status:t.nativeEnum(e.Status),external_id:t.string().nullish()});exports.UnitModel=n;
|
|
2
|
+
//# sourceMappingURL=unit.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit.cjs","sources":["../../src/base/unit.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Status } from \"./enums\";\n\nexport const UnitModel = z.object({\n id: z.number().int(),\n title: z.string(),\n slug: z.string().nullish(),\n qty_bedrooms: z.number().int(),\n qty_bathrooms: z.number().int(),\n base_price: z.number(),\n dim_sq_ft: z.number().int(),\n propertyId: z.number().int(),\n is_available: z.boolean(),\n createdAt: z.date(),\n updatedAt: z.date(),\n date_availability: z.date().nullish(),\n unitSetAvailableOn: z.date().nullish(),\n floorPlanId: z.number().int().nullish(),\n userId: z.number().int(),\n status: z.nativeEnum(Status),\n external_id: z.string().nullish(),\n})\n "],"names":["UnitModel","z.object","z.number","z.string","z.boolean","z.date","z.nativeEnum","Status"],"mappings":"4LAGaA,EAAYC,EAAAA,OAAS,CAChC,GAAIC,EAAAA,OAAE,EAAS,IAAA,EACf,MAAOC,EAAAA,OAAE,EACT,KAAMA,EAAAA,OAAE,EAAS,QAAA,EACjB,aAAcD,EAAAA,OAAE,EAAS,IAAA,EACzB,cAAeA,EAAAA,OAAE,EAAS,IAAA,EAC1B,WAAYA,EAAAA,OAAE,EACd,UAAWA,EAAAA,OAAE,EAAS,IAAA,EACtB,WAAYA,EAAAA,OAAE,EAAS,IAAA,EACvB,aAAcE,EAAAA,QAAE,EAChB,UAAWC,EAAAA,KAAE,EACb,UAAWA,EAAAA,KAAE,EACb,kBAAmBA,EAAAA,KAAE,EAAO,QAAA,EAC5B,mBAAoBA,EAAAA,KAAE,EAAO,QAAA,EAC7B,YAAaH,EAAAA,OAAE,EAAS,IAAA,EAAM,QAAA,EAC9B,OAAQA,EAAAA,OAAE,EAAS,IAAA,EACnB,OAAQI,EAAAA,WAAaC,QAAM,EAC3B,YAAaJ,EAAAA,OAAE,EAAS,QAAA,CAC1B,CAAC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { Status } from "./enums";
|
|
3
|
+
export declare const UnitModel: z.ZodObject<{
|
|
4
|
+
id: z.ZodNumber;
|
|
5
|
+
title: z.ZodString;
|
|
6
|
+
slug: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
7
|
+
qty_bedrooms: z.ZodNumber;
|
|
8
|
+
qty_bathrooms: z.ZodNumber;
|
|
9
|
+
base_price: z.ZodNumber;
|
|
10
|
+
dim_sq_ft: z.ZodNumber;
|
|
11
|
+
propertyId: z.ZodNumber;
|
|
12
|
+
is_available: z.ZodBoolean;
|
|
13
|
+
createdAt: z.ZodDate;
|
|
14
|
+
updatedAt: z.ZodDate;
|
|
15
|
+
date_availability: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
|
|
16
|
+
unitSetAvailableOn: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
|
|
17
|
+
floorPlanId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
18
|
+
userId: z.ZodNumber;
|
|
19
|
+
status: z.ZodNativeEnum<typeof Status>;
|
|
20
|
+
external_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
createdAt: Date;
|
|
23
|
+
status: Status;
|
|
24
|
+
id: number;
|
|
25
|
+
title: string;
|
|
26
|
+
propertyId: number;
|
|
27
|
+
updatedAt: Date;
|
|
28
|
+
userId: number;
|
|
29
|
+
qty_bedrooms: number;
|
|
30
|
+
qty_bathrooms: number;
|
|
31
|
+
base_price: number;
|
|
32
|
+
dim_sq_ft: number;
|
|
33
|
+
is_available: boolean;
|
|
34
|
+
slug?: string | null | undefined;
|
|
35
|
+
unitSetAvailableOn?: Date | null | undefined;
|
|
36
|
+
floorPlanId?: number | null | undefined;
|
|
37
|
+
date_availability?: Date | null | undefined;
|
|
38
|
+
external_id?: string | null | undefined;
|
|
39
|
+
}, {
|
|
40
|
+
createdAt: Date;
|
|
41
|
+
status: Status;
|
|
42
|
+
id: number;
|
|
43
|
+
title: string;
|
|
44
|
+
propertyId: number;
|
|
45
|
+
updatedAt: Date;
|
|
46
|
+
userId: number;
|
|
47
|
+
qty_bedrooms: number;
|
|
48
|
+
qty_bathrooms: number;
|
|
49
|
+
base_price: number;
|
|
50
|
+
dim_sq_ft: number;
|
|
51
|
+
is_available: boolean;
|
|
52
|
+
slug?: string | null | undefined;
|
|
53
|
+
unitSetAvailableOn?: Date | null | undefined;
|
|
54
|
+
floorPlanId?: number | null | undefined;
|
|
55
|
+
date_availability?: Date | null | undefined;
|
|
56
|
+
external_id?: string | null | undefined;
|
|
57
|
+
}>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Status as a } from "./enums.mjs";
|
|
2
|
+
import { object as n, string as i, nativeEnum as l, number as t, date as e, boolean as s } from "../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
|
|
3
|
+
const u = n({
|
|
4
|
+
id: t().int(),
|
|
5
|
+
title: i(),
|
|
6
|
+
slug: i().nullish(),
|
|
7
|
+
qty_bedrooms: t().int(),
|
|
8
|
+
qty_bathrooms: t().int(),
|
|
9
|
+
base_price: t(),
|
|
10
|
+
dim_sq_ft: t().int(),
|
|
11
|
+
propertyId: t().int(),
|
|
12
|
+
is_available: s(),
|
|
13
|
+
createdAt: e(),
|
|
14
|
+
updatedAt: e(),
|
|
15
|
+
date_availability: e().nullish(),
|
|
16
|
+
unitSetAvailableOn: e().nullish(),
|
|
17
|
+
floorPlanId: t().int().nullish(),
|
|
18
|
+
userId: t().int(),
|
|
19
|
+
status: l(a),
|
|
20
|
+
external_id: i().nullish()
|
|
21
|
+
});
|
|
22
|
+
export {
|
|
23
|
+
u as UnitModel
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=unit.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unit.mjs","sources":["../../src/base/unit.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Status } from \"./enums\";\n\nexport const UnitModel = z.object({\n id: z.number().int(),\n title: z.string(),\n slug: z.string().nullish(),\n qty_bedrooms: z.number().int(),\n qty_bathrooms: z.number().int(),\n base_price: z.number(),\n dim_sq_ft: z.number().int(),\n propertyId: z.number().int(),\n is_available: z.boolean(),\n createdAt: z.date(),\n updatedAt: z.date(),\n date_availability: z.date().nullish(),\n unitSetAvailableOn: z.date().nullish(),\n floorPlanId: z.number().int().nullish(),\n userId: z.number().int(),\n status: z.nativeEnum(Status),\n external_id: z.string().nullish(),\n})\n "],"names":["UnitModel","z.object","z.number","z.string","z.boolean","z.date","z.nativeEnum","Status"],"mappings":";;AAGO,MAAMA,IAAYC,EAAS;AAAA,EAChC,IAAIC,EAAE,EAAS,IAAA;AAAA,EACf,OAAOC,EAAE;AAAA,EACT,MAAMA,EAAE,EAAS,QAAA;AAAA,EACjB,cAAcD,EAAE,EAAS,IAAA;AAAA,EACzB,eAAeA,EAAE,EAAS,IAAA;AAAA,EAC1B,YAAYA,EAAE;AAAA,EACd,WAAWA,EAAE,EAAS,IAAA;AAAA,EACtB,YAAYA,EAAE,EAAS,IAAA;AAAA,EACvB,cAAcE,EAAE;AAAA,EAChB,WAAWC,EAAE;AAAA,EACb,WAAWA,EAAE;AAAA,EACb,mBAAmBA,EAAE,EAAO,QAAA;AAAA,EAC5B,oBAAoBA,EAAE,EAAO,QAAA;AAAA,EAC7B,aAAaH,EAAE,EAAS,IAAA,EAAM,QAAA;AAAA,EAC9B,QAAQA,EAAE,EAAS,IAAA;AAAA,EACnB,QAAQI,EAAaC,CAAM;AAAA,EAC3B,aAAaJ,EAAE,EAAS,QAAA;AAC1B,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./enums.cjs"),e=require("../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),r=e.object({id:e.number().int(),email:e.string(),first_name:e.string(),password:e.string(),last_name:e.string(),salt:e.string(),role:e.nativeEnum(t.UserRole)});exports.UserModel=r;
|
|
2
|
+
//# sourceMappingURL=user.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.cjs","sources":["../../src/base/user.ts"],"sourcesContent":["import {z} from \"zod\";\nimport {UserRole} from \"./enums\";\n\nexport const UserModel = z.object({\n id: z.number().int(),\n email: z.string(),\n first_name: z.string(),\n password: z.string(),\n last_name: z.string(),\n salt: z.string(),\n role: z.nativeEnum(UserRole),\n})"],"names":["UserModel","z.object","z.number","z.string","z.nativeEnum","UserRole"],"mappings":"4LAGaA,EAAYC,EAAAA,OAAS,CAChC,GAAIC,EAAAA,OAAE,EAAS,IAAA,EACf,MAAOC,EAAAA,OAAE,EACT,WAAYA,EAAAA,OAAE,EACd,SAAUA,EAAAA,OAAE,EACZ,UAAWA,EAAAA,OAAE,EACb,KAAMA,EAAAA,OAAE,EACR,KAAMC,EAAAA,WAAaC,EAAAA,QAAQ,CAC7B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { UserRole } from "./enums";
|
|
3
|
+
export declare const UserModel: z.ZodObject<{
|
|
4
|
+
id: z.ZodNumber;
|
|
5
|
+
email: z.ZodString;
|
|
6
|
+
first_name: z.ZodString;
|
|
7
|
+
password: z.ZodString;
|
|
8
|
+
last_name: z.ZodString;
|
|
9
|
+
salt: z.ZodString;
|
|
10
|
+
role: z.ZodNativeEnum<typeof UserRole>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
id: number;
|
|
13
|
+
email: string;
|
|
14
|
+
password: string;
|
|
15
|
+
salt: string;
|
|
16
|
+
role: UserRole;
|
|
17
|
+
first_name: string;
|
|
18
|
+
last_name: string;
|
|
19
|
+
}, {
|
|
20
|
+
id: number;
|
|
21
|
+
email: string;
|
|
22
|
+
password: string;
|
|
23
|
+
salt: string;
|
|
24
|
+
role: UserRole;
|
|
25
|
+
first_name: string;
|
|
26
|
+
last_name: string;
|
|
27
|
+
}>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { UserRole as r } from "./enums.mjs";
|
|
2
|
+
import { object as s, nativeEnum as t, string as e, number as a } from "../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs";
|
|
3
|
+
const m = s({
|
|
4
|
+
id: a().int(),
|
|
5
|
+
email: e(),
|
|
6
|
+
first_name: e(),
|
|
7
|
+
password: e(),
|
|
8
|
+
last_name: e(),
|
|
9
|
+
salt: e(),
|
|
10
|
+
role: t(r)
|
|
11
|
+
});
|
|
12
|
+
export {
|
|
13
|
+
m as UserModel
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=user.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.mjs","sources":["../../src/base/user.ts"],"sourcesContent":["import {z} from \"zod\";\nimport {UserRole} from \"./enums\";\n\nexport const UserModel = z.object({\n id: z.number().int(),\n email: z.string(),\n first_name: z.string(),\n password: z.string(),\n last_name: z.string(),\n salt: z.string(),\n role: z.nativeEnum(UserRole),\n})"],"names":["UserModel","z.object","z.number","z.string","z.nativeEnum","UserRole"],"mappings":";;AAGO,MAAMA,IAAYC,EAAS;AAAA,EAChC,IAAIC,EAAE,EAAS,IAAA;AAAA,EACf,OAAOC,EAAE;AAAA,EACT,YAAYA,EAAE;AAAA,EACd,UAAUA,EAAE;AAAA,EACZ,WAAWA,EAAE;AAAA,EACb,MAAMA,EAAE;AAAA,EACR,MAAMC,EAAaC,CAAQ;AAC7B,CAAC;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var M=Object.create;var u=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var m=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var w=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of f(t))!v.call(e,n)&&n!==r&&u(e,n,{get:()=>t[n],enumerable:!(i=g(t,n))||i.enumerable});return e};var P=(e,t,r)=>(r=e!=null?M(m(e)):{},w(t||!e||!e.__esModule?u(r,"default",{value:e,enumerable:!0}):r,e));Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const b=require("react/jsx-runtime"),s=require("react"),E=require("./generateUserUUID.cjs"),c=s.createContext(null),U=({children:e,token:t,envMode:r})=>{const[i,n]=s.useState(null);return s.useEffect(()=>{const a=(r??"production").toLowerCase(),p=a==="development"||a==="staging",d=a==="development",l="Mixpanel token not set. Pass a token prop to MixpanelProvider or define VITE_MIXPANEL_TOKEN.";if(!t){p?console.error(`❌ ${l}`):console.warn(`⚠️ ${l}`);return}(async()=>{try{const{default:o}=await import("mixpanel-browser");o.init(t,{debug:d,persistence:"localStorage",autocapture:{pageview:"full-url",click:!0,input:!0,rage_click:!0,scroll:!0,submit:!0,capture_text_content:!1}}),n(o);const x=await E.generateUserUUID;o.identify(x)}catch(o){console.error("❌ Failed to initialize Mixpanel:",o)}})()},[r,t]),b.jsx(c.Provider,{value:i,children:e})},y=()=>{const e=s.useContext(c);if(!e)throw new Error("useMixpanel must be used within MixpanelProvider");return e};exports.MixpanelProvider=U;exports.useMixpanel=y;
|
|
2
|
+
//# sourceMappingURL=MixpanelProvider.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MixpanelProvider.cjs","sources":["../../../src/features/analytics/MixpanelProvider.tsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from \"react\";\n\nimport { generateUserUUID } from \"./generateUserUUID\";\n\n// Hold the default export instance type from mixpanel-browser, not the module namespace\ntype MixpanelInstance = typeof import(\"mixpanel-browser\")[\"default\"];\nconst MixpanelContext = createContext<MixpanelInstance | null>(null);\n\ninterface MixpanelProviderProps {\n children: React.ReactNode;\n token?: string;\n envMode?: string;\n}\n\nexport const MixpanelProvider = ({ children, token, envMode }: MixpanelProviderProps) => {\n const [mp, setMp] = useState<MixpanelInstance | null>(null);\n\n useEffect(() => {\n const normalizedMode = (envMode ?? \"production\").toLowerCase();\n const shouldError =\n normalizedMode === \"development\" || normalizedMode === \"staging\";\n const debugEnabled = normalizedMode === \"development\";\n\n const message =\n \"Mixpanel token not set. Pass a token prop to MixpanelProvider or define VITE_MIXPANEL_TOKEN.\";\n\n if (!token) {\n if (shouldError) {\n console.error(`❌ ${message}`);\n } else {\n console.warn(`⚠️ ${message}`);\n }\n return;\n }\n (async () => {\n try {\n const { default: mixpanel } = await import(\"mixpanel-browser\");\n mixpanel.init(token, {\n debug: debugEnabled,\n persistence: \"localStorage\",\n autocapture: {\n pageview: \"full-url\",\n click: true,\n input: true,\n rage_click: true,\n scroll: true,\n submit: true,\n capture_text_content: false,\n },\n });\n setMp(mixpanel);\n\n const uuid = await generateUserUUID;\n mixpanel.identify(uuid);\n } catch (err) {\n console.error(\"❌ Failed to initialize Mixpanel:\", err);\n }\n })();\n }, [envMode, token]);\n\n return (\n <MixpanelContext.Provider value={mp}>\n {children}\n </MixpanelContext.Provider>\n );\n};\n\nexport const useMixpanel = () => {\n const ctx = useContext(MixpanelContext);\n if (!ctx) throw new Error(\"useMixpanel must be used within MixpanelProvider\");\n return ctx;\n};\n"],"names":["MixpanelContext","createContext","MixpanelProvider","children","token","envMode","mp","setMp","useState","useEffect","normalizedMode","shouldError","debugEnabled","message","mixpanel","uuid","generateUserUUID","err","useMixpanel","ctx","useContext"],"mappings":"unBAMMA,EAAkBC,EAAAA,cAAuC,IAAI,EAQtDC,EAAmB,CAAC,CAAE,SAAAC,EAAU,MAAAC,EAAO,QAAAC,KAAqC,CACvF,KAAM,CAACC,EAAIC,CAAK,EAAIC,EAAAA,SAAkC,IAAI,EAE1DC,OAAAA,EAAAA,UAAU,IAAM,CACd,MAAMC,GAAkBL,GAAW,cAAc,YAAA,EAC3CM,EACJD,IAAmB,eAAiBA,IAAmB,UACnDE,EAAeF,IAAmB,cAElCG,EACJ,+FAEF,GAAI,CAACT,EAAO,CACNO,EACF,QAAQ,MAAM,KAAKE,CAAO,EAAE,EAE5B,QAAQ,KAAK,MAAMA,CAAO,EAAE,EAE9B,MACF,EACC,SAAY,CACX,GAAI,CACF,KAAM,CAAE,QAASC,GAAa,KAAM,QAAO,kBAAkB,EAC7DA,EAAS,KAAKV,EAAO,CACnB,MAAOQ,EACP,YAAa,eACb,YAAa,CACX,SAAU,WACV,MAAO,GACP,MAAO,GACP,WAAY,GACZ,OAAQ,GACR,OAAQ,GACR,qBAAsB,EAAA,CACxB,CACD,EACDL,EAAMO,CAAQ,EAEd,MAAMC,EAAO,MAAMC,EAAAA,iBACnBF,EAAS,SAASC,CAAI,CACxB,OAASE,EAAK,CACZ,QAAQ,MAAM,mCAAoCA,CAAG,CACvD,CACF,GAAA,CACF,EAAG,CAACZ,EAASD,CAAK,CAAC,QAGhBJ,EAAgB,SAAhB,CAAyB,MAAOM,EAC9B,SAAAH,EACH,CAEJ,EAEae,EAAc,IAAM,CAC/B,MAAMC,EAAMC,EAAAA,WAAWpB,CAAe,EACtC,GAAI,CAACmB,EAAK,MAAM,IAAI,MAAM,kDAAkD,EAC5E,OAAOA,CACT"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import { useState as x, useEffect as m, createContext as f, useContext as M } from "react";
|
|
3
|
+
import { generateUserUUID as g } from "./generateUserUUID.mjs";
|
|
4
|
+
const s = f(null), P = ({ children: t, token: r, envMode: n }) => {
|
|
5
|
+
const [a, l] = x(null);
|
|
6
|
+
return m(() => {
|
|
7
|
+
const o = (n ?? "production").toLowerCase(), u = o === "development" || o === "staging", c = o === "development", i = "Mixpanel token not set. Pass a token prop to MixpanelProvider or define VITE_MIXPANEL_TOKEN.";
|
|
8
|
+
if (!r) {
|
|
9
|
+
u ? console.error(`❌ ${i}`) : console.warn(`⚠️ ${i}`);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
(async () => {
|
|
13
|
+
try {
|
|
14
|
+
const { default: e } = await import("mixpanel-browser");
|
|
15
|
+
e.init(r, {
|
|
16
|
+
debug: c,
|
|
17
|
+
persistence: "localStorage",
|
|
18
|
+
autocapture: {
|
|
19
|
+
pageview: "full-url",
|
|
20
|
+
click: !0,
|
|
21
|
+
input: !0,
|
|
22
|
+
rage_click: !0,
|
|
23
|
+
scroll: !0,
|
|
24
|
+
submit: !0,
|
|
25
|
+
capture_text_content: !1
|
|
26
|
+
}
|
|
27
|
+
}), l(e);
|
|
28
|
+
const p = await g;
|
|
29
|
+
e.identify(p);
|
|
30
|
+
} catch (e) {
|
|
31
|
+
console.error("❌ Failed to initialize Mixpanel:", e);
|
|
32
|
+
}
|
|
33
|
+
})();
|
|
34
|
+
}, [n, r]), /* @__PURE__ */ d(s.Provider, { value: a, children: t });
|
|
35
|
+
}, b = () => {
|
|
36
|
+
const t = M(s);
|
|
37
|
+
if (!t) throw new Error("useMixpanel must be used within MixpanelProvider");
|
|
38
|
+
return t;
|
|
39
|
+
};
|
|
40
|
+
export {
|
|
41
|
+
P as MixpanelProvider,
|
|
42
|
+
b as useMixpanel
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=MixpanelProvider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MixpanelProvider.mjs","sources":["../../../src/features/analytics/MixpanelProvider.tsx"],"sourcesContent":["import React, { createContext, useContext, useEffect, useState } from \"react\";\n\nimport { generateUserUUID } from \"./generateUserUUID\";\n\n// Hold the default export instance type from mixpanel-browser, not the module namespace\ntype MixpanelInstance = typeof import(\"mixpanel-browser\")[\"default\"];\nconst MixpanelContext = createContext<MixpanelInstance | null>(null);\n\ninterface MixpanelProviderProps {\n children: React.ReactNode;\n token?: string;\n envMode?: string;\n}\n\nexport const MixpanelProvider = ({ children, token, envMode }: MixpanelProviderProps) => {\n const [mp, setMp] = useState<MixpanelInstance | null>(null);\n\n useEffect(() => {\n const normalizedMode = (envMode ?? \"production\").toLowerCase();\n const shouldError =\n normalizedMode === \"development\" || normalizedMode === \"staging\";\n const debugEnabled = normalizedMode === \"development\";\n\n const message =\n \"Mixpanel token not set. Pass a token prop to MixpanelProvider or define VITE_MIXPANEL_TOKEN.\";\n\n if (!token) {\n if (shouldError) {\n console.error(`❌ ${message}`);\n } else {\n console.warn(`⚠️ ${message}`);\n }\n return;\n }\n (async () => {\n try {\n const { default: mixpanel } = await import(\"mixpanel-browser\");\n mixpanel.init(token, {\n debug: debugEnabled,\n persistence: \"localStorage\",\n autocapture: {\n pageview: \"full-url\",\n click: true,\n input: true,\n rage_click: true,\n scroll: true,\n submit: true,\n capture_text_content: false,\n },\n });\n setMp(mixpanel);\n\n const uuid = await generateUserUUID;\n mixpanel.identify(uuid);\n } catch (err) {\n console.error(\"❌ Failed to initialize Mixpanel:\", err);\n }\n })();\n }, [envMode, token]);\n\n return (\n <MixpanelContext.Provider value={mp}>\n {children}\n </MixpanelContext.Provider>\n );\n};\n\nexport const useMixpanel = () => {\n const ctx = useContext(MixpanelContext);\n if (!ctx) throw new Error(\"useMixpanel must be used within MixpanelProvider\");\n return ctx;\n};\n"],"names":["MixpanelContext","createContext","MixpanelProvider","children","token","envMode","mp","setMp","useState","useEffect","normalizedMode","shouldError","debugEnabled","message","mixpanel","uuid","generateUserUUID","err","useMixpanel","ctx","useContext"],"mappings":";;;AAMA,MAAMA,IAAkBC,EAAuC,IAAI,GAQtDC,IAAmB,CAAC,EAAE,UAAAC,GAAU,OAAAC,GAAO,SAAAC,QAAqC;AACvF,QAAM,CAACC,GAAIC,CAAK,IAAIC,EAAkC,IAAI;AAE1D,SAAAC,EAAU,MAAM;AACd,UAAMC,KAAkBL,KAAW,cAAc,YAAA,GAC3CM,IACJD,MAAmB,iBAAiBA,MAAmB,WACnDE,IAAeF,MAAmB,eAElCG,IACJ;AAEF,QAAI,CAACT,GAAO;AACV,MAAIO,IACF,QAAQ,MAAM,KAAKE,CAAO,EAAE,IAE5B,QAAQ,KAAK,MAAMA,CAAO,EAAE;AAE9B;AAAA,IACF;AACA,KAAC,YAAY;AACX,UAAI;AACF,cAAM,EAAE,SAASC,MAAa,MAAM,OAAO,kBAAkB;AAC7D,QAAAA,EAAS,KAAKV,GAAO;AAAA,UACnB,OAAOQ;AAAA,UACP,aAAa;AAAA,UACb,aAAa;AAAA,YACX,UAAU;AAAA,YACV,OAAO;AAAA,YACP,OAAO;AAAA,YACP,YAAY;AAAA,YACZ,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,sBAAsB;AAAA,UAAA;AAAA,QACxB,CACD,GACDL,EAAMO,CAAQ;AAEd,cAAMC,IAAO,MAAMC;AACnB,QAAAF,EAAS,SAASC,CAAI;AAAA,MACxB,SAASE,GAAK;AACZ,gBAAQ,MAAM,oCAAoCA,CAAG;AAAA,MACvD;AAAA,IACF,GAAA;AAAA,EACF,GAAG,CAACZ,GAASD,CAAK,CAAC,qBAGhBJ,EAAgB,UAAhB,EAAyB,OAAOM,GAC9B,UAAAH,GACH;AAEJ,GAEae,IAAc,MAAM;AAC/B,QAAMC,IAAMC,EAAWpB,CAAe;AACtC,MAAI,CAACmB,EAAK,OAAM,IAAI,MAAM,kDAAkD;AAC5E,SAAOA;AACT;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../utils/casing.cjs"),v=require("../../utils/collections.cjs"),b=require("./MixpanelProvider.cjs"),e=require("../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs"),U=["location","budget","size","other"],g=["cost_low_to_high","cost_high_to_low","newest","relevance"],k=["Skip","Continue","Back"],l=e.object({propertyId:e.string().min(1,"propertyId is required"),propertySlug:e.string().min(1,"propertySlug is required")}),u=l.extend({propertyName:e.string().min(1,"propertyName is required")}),x=u.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),E=u.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),d=u.extend({totalUnitsAvailable:e.number().int().nonnegative(),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional(),lifestylePreferences:e.unknown().optional()}),m=u.extend({funnelStep:e.number().int().nonnegative(),profileQuestion:e.string().min(1,"profileQuestion is required"),interactedElement:e.enum(k),questionEnum:e.string().optional()}),q=m.extend({selectedAnswersEnumArray:e.any().transform(a=>v.normalizeToStringArray(a)).refine(a=>Array.isArray(a),{message:"selectedAnswersEnumArray must resolve to an array"})});l.extend({unitId:e.string().min(1,"unitId is required"),unitTitle:e.string().min(1,"unitTitle is required"),unitSlug:e.string().min(1,"unitSlug is required")});const p=u.extend({unitId:e.string().min(1,"unitId is required"),unitTitle:e.string().min(1,"unitTitle is required"),unitSlug:e.string().min(1,"unitSlug is required")}),I=p.extend({favoritedUnit:e.boolean()}),f=e.any().transform(a=>v.normalizeToStringArray(a)).refine(a=>Array.isArray(a),{message:"Selection must resolve to an array"}),w=u.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:f,filterName:e.string().optional()}),S=u.extend({filterIndex:e.number().int().nonnegative(),filterLabel:e.string().min(1,"filterLabel is required"),selectedFiltersEnum:f}),y=l.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(g)}),A=u.extend({sortIndex:e.number().int().nonnegative(),sortEnum:e.enum(g),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()}),P=l.extend({fullQuestionnaireSchemaJson:e.unknown().optional(),resultsJson:e.object({type:e.string().optional(),total:e.number().int().nonnegative().optional(),units:e.array(e.object({unitId:e.string().min(1,"unitId is required"),unitName:e.string().optional()})).optional()}).optional()}),F=p.extend({favoritedUnit:e.boolean()}),K=p.extend({favoritedUnit:e.boolean()}),O=u.extend({unitId:e.string().min(1,"unitId is required"),unitTitle:e.string().min(1,"unitTitle is required"),unitSlug:e.string().min(1,"unitSlug is required"),resultsUnitCount:e.number().int().nonnegative(),unitCountDate:e.string().optional()});function C(){const a=b.useMixpanel();return(o,t)=>{const n=t==null?t:s.convertKeysToSnakeCase(t);a.track(o,n)}}const Q=(a,o,t,n)=>r=>{const i=s.convertKeysToCamelCase(r),c=o.parse(i),h=n!=null&&n.forwardOriginalPayload?r:c;t(a,h,{skipKeyTransform:n==null?void 0:n.skipKeyTransform})};function T(a){const o=(n,r,i)=>{const c=i!=null&&i.skipKeyTransform?r:s.convertKeysToSnakeCase(r);a(n,c)},t=(n,r,i)=>Q(n,r,o,i);return{trackViewAllUnits:n=>{const r=s.convertKeysToCamelCase(n),i=x.parse({unitCountDate:new Date().toISOString(),...r});o("View All Units",i)},trackQuestionnaireSkip:n=>{const r=s.convertKeysToCamelCase(n),i=m.parse({...r,interactedElement:"Skip"});o("Questionnaire Navigated",i)},trackQuestionnaireContinue:n=>{const r=s.convertKeysToCamelCase(n),i=q.parse({...r,interactedElement:"Continue"});o("Questionnaire Navigated",i)},trackQuestionnaireBack:n=>{const r=s.convertKeysToCamelCase(n),i=m.parse({...r,interactedElement:"Back"});o("Questionnaire Navigated",i)},trackClickUnit:t("Unit Card Clicked",F,{skipKeyTransform:!0,forwardOriginalPayload:!0}),trackHoverUnit:t("Unit Hovered",I,{skipKeyTransform:!0,forwardOriginalPayload:!0}),trackLoadMore:n=>{const r=s.convertKeysToCamelCase(n),i=E.parse({unitCountDate:new Date().toISOString(),...r});o("Load More",i)},trackFilterOpened:t("Filter Opened",w),trackFilterCanceled:t("Filter Canceled",S),trackFilterApplied:t("Filter Applied",S),trackOpenSort:n=>{const r=s.convertKeysToCamelCase(n),i=A.parse({unitCountDate:new Date().toISOString(),...r});o("Sort Opened",i)},trackSelectSort:t("Sort Applied",y),trackCancelSort:t("Sort Canceled",y),trackClickUnitFavorites:t("Unit Favorited",K),trackUnitUnfavorited:t("Unit Unfavorited",O),trackQuestionnaireResult:t("Questionnaire Submitted",P),trackScheduleTourFormInteracted:t("Schedule Tour Form Interacted",d,{skipKeyTransform:!0,forwardOriginalPayload:!0}),trackScheduleTourFormSubmitted:t("Schedule Tour Form Submitted",d,{skipKeyTransform:!0,forwardOriginalPayload:!0}),trackScheduleTourUrlClicked:t("Schedule Tour URL Clicked",d,{skipKeyTransform:!0,forwardOriginalPayload:!0})}}function D(){const a=C();return T(a)}exports.QuestionEnumValues=U;exports.QuestionnaireInteractionValues=k;exports.SortEnumValues=g;exports.buildTrackingEvents=T;exports.useTrackEvent=C;exports.useTrackingEvents=D;
|
|
2
|
+
//# sourceMappingURL=analytics.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.cjs","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 { useMixpanel } from \"./MixpanelProvider\";\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});\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 unitTitle: z.string().min(1, \"unitTitle is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\n\nconst unitWithPropertyNameSchema = propertyWithNameSchema.extend({\n unitId: z.string().min(1, \"unitId is required\"),\n unitTitle: z.string().min(1, \"unitTitle is required\"),\n unitSlug: z.string().min(1, \"unitSlug is required\"),\n});\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 unitTitle: z.string().min(1, \"unitTitle 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 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 mixpanel = useMixpanel();\n return (eventName: string, data?: Record<string, any>) => {\n const payload =\n data == null ? data : (convertKeysToSnakeCase(data) as Record<string, any>);\n mixpanel.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?: { skipKeyTransform?: boolean; forwardOriginalPayload?: boolean },\n ) =>\n (payload: AnalyticsPayload<Schema>) => {\n const normalizedPayload = convertKeysToCamelCase(\n payload,\n ) as z.input<Schema>;\n const parsed = schema.parse(normalizedPayload);\n const payloadForDispatch = options?.forwardOriginalPayload\n ? payload\n : parsed;\n dispatch(eventName, payloadForDispatch, {\n skipKeyTransform: options?.skipKeyTransform,\n });\n };\n\nexport function buildTrackingEvents(trackEvent: TrackEventFn) {\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 ) => createStrictTrackerInternal(eventName, schema, dispatch, options);\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 parsed = viewAllUnitsSchema.parse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n dispatch(\"View All Units\", parsed);\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 parsed = questionnaireEventSchema.parse({\n ...normalizedPayload,\n interactedElement: \"Skip\",\n });\n dispatch(\"Questionnaire Navigated\", parsed);\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 parsed = continueQuestionnaireEventSchema.parse({\n ...normalizedPayload,\n interactedElement: \"Continue\",\n });\n dispatch(\"Questionnaire Navigated\", parsed);\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 parsed = questionnaireEventSchema.parse({\n ...normalizedPayload,\n interactedElement: \"Back\",\n });\n dispatch(\"Questionnaire Navigated\", parsed);\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 parsed = loadMoreSchema.parse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n dispatch(\"Load More\", parsed);\n },\n trackFilterOpened: createStrictTracker(\"Filter Opened\", filterOpenSchema),\n trackFilterCanceled: createStrictTracker(\n \"Filter Canceled\",\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 parsed = sortOpenSchema.parse({\n unitCountDate: new Date().toISOString(),\n ...normalizedPayload,\n });\n dispatch(\"Sort Opened\", parsed);\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 };\n}\n\nexport function useTrackingEvents() {\n const trackEvent = useTrackEvent();\n return buildTrackingEvents(trackEvent);\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","hoverUnitSchema","z.boolean","selectionSchema","filterOpenSchema","filterMutationSchema","sortEventSchema","sortOpenSchema","questionnaireResultSchema","z.array","clickUnitSchema","clickUnitFavoritesSchema","unitUnfavoritedSchema","useTrackEvent","mixpanel","useMixpanel","eventName","data","payload","convertKeysToSnakeCase","createStrictTrackerInternal","schema","dispatch","options","normalizedPayload","convertKeysToCamelCase","parsed","payloadForDispatch","buildTrackingEvents","trackEvent","finalPayload","createStrictTracker","useTrackingEvents"],"mappings":"uRAgBaA,EAAqB,CAAC,WAAY,SAAU,OAAQ,OAAO,EAG3DC,EAAiB,CAC5B,mBACA,mBACA,SACA,WACF,EAEaC,EAAiC,CAC5C,OACA,WACA,MACF,EAIMC,EAAwBC,EAAAA,OAAS,CACrC,WAAYC,EAAAA,OAAE,EAAS,IAAI,EAAG,wBAAwB,EACtD,aAAcA,EAAAA,OAAE,EAAS,IAAI,EAAG,0BAA0B,CAC5D,CAAC,EAEKC,EAAyBH,EAAsB,OAAO,CAC1D,aAAcE,EAAAA,OAAE,EAAS,IAAI,EAAG,0BAA0B,CAC5D,CAAC,EAEKE,EAAqBD,EAAuB,OAAO,CACvD,oBAAqBE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACtC,iBAAkBA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,CAC5B,CAAC,EAEKI,EAAiBH,EAAuB,OAAO,CACnD,oBAAqBE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACtC,iBAAkBA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,CAC5B,CAAC,EAEKK,EAAyBJ,EAAuB,OAAO,CAC3D,oBAAqBE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACtC,iBAAkBA,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,EAC1B,qBAAsBM,EAAAA,QAAE,EAAU,SAAA,CACpC,CAAC,EAEKC,EAA2BN,EAAuB,OAAO,CAC7D,WAAYE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC7B,gBAAiBH,EAAAA,OAAE,EAAS,IAAI,EAAG,6BAA6B,EAChE,kBAAmBQ,EAAAA,KAAOX,CAA8B,EACxD,aAAcG,EAAAA,OAAE,EAAS,SAAA,CAC3B,CAAC,EAEKS,EAAmCF,EAAyB,OAAO,CACvE,yBAA0BG,EAAAA,IACvB,EACA,UAAWC,GAAUC,EAAAA,uBAAuBD,CAAK,CAAC,EAClD,OAAQA,GAA6B,MAAM,QAAQA,CAAK,EAAG,CAC1D,QAAS,mDAAA,CACV,CACL,CAAC,EAEuBb,EAAsB,OAAO,CACnD,OAAQE,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EAED,MAAMa,EAA6BZ,EAAuB,OAAO,CAC/D,OAAQD,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,CACpD,CAAC,EAEKc,EAAkBD,EAA2B,OAAO,CACxD,cAAeE,EAAAA,QAAE,CACnB,CAAC,EAEKC,EAAkBN,EAAAA,IACrB,EACA,UAAWC,GAAUC,EAAAA,uBAAuBD,CAAK,CAAC,EAClD,OAAQA,GAA6B,MAAM,QAAQA,CAAK,EAAG,CAC1D,QAAS,oCACX,CAAC,EAEGM,EAAmBhB,EAAuB,OAAO,CACrD,YAAaE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC9B,YAAaH,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,oBAAqBgB,EACrB,WAAYhB,EAAAA,OAAE,EAAS,SAAA,CACzB,CAAC,EAEKkB,EAAuBjB,EAAuB,OAAO,CACzD,YAAaE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC9B,YAAaH,EAAAA,OAAE,EAAS,IAAI,EAAG,yBAAyB,EACxD,oBAAqBgB,CACvB,CAAC,EAEKG,EAAkBrB,EAAsB,OAAO,CACnD,UAAWK,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC5B,SAAUK,EAAAA,KAAOZ,CAAc,CACjC,CAAC,EAEKwB,EAAiBnB,EAAuB,OAAO,CAClD,UAAWE,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EAC5B,SAAUK,EAAAA,KAAOZ,CAAc,EAC/B,iBAAkBO,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,CAC7B,CAAC,EAEKqB,EAA4BvB,EAAsB,OAAO,CAC7D,4BAA6BQ,EAAAA,QAAE,EAAU,SAAA,EACzC,YAAaP,EAAAA,OACH,CACN,KAAMC,EAAAA,OAAE,EAAS,SAAA,EACjB,MAAOG,EAAAA,OAAE,EAAS,MAAM,YAAA,EAAc,SAAA,EACtC,MAAOmB,EAAAA,MAEHvB,SAAS,CACP,OAAQC,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,SAAUA,EAAAA,OAAE,EAAS,SAAA,CAAS,CAC/B,CAAA,EAEF,SAAA,CAAS,CACb,EACA,SAAA,CACL,CAAC,EAEKuB,EAAkBV,EAA2B,OAAO,CACxD,cAAeE,EAAAA,QAAE,CACnB,CAAC,EAEKS,EAA2BX,EAA2B,OAAO,CACjE,cAAeE,EAAAA,QAAE,CACnB,CAAC,EAEKU,EAAwBxB,EAAuB,OAAO,CAC1D,OAAQD,EAAAA,OAAE,EAAS,IAAI,EAAG,oBAAoB,EAC9C,UAAWA,EAAAA,OAAE,EAAS,IAAI,EAAG,uBAAuB,EACpD,SAAUA,EAAAA,OAAE,EAAS,IAAI,EAAG,sBAAsB,EAClD,iBAAkBG,EAAAA,OAAE,EAAS,IAAA,EAAM,YAAA,EACnC,cAAeH,EAAAA,OAAE,EAAS,SAAA,CAC5B,CAAC,EA8BM,SAAS0B,GAAgB,CAC9B,MAAMC,EAAWC,EAAAA,YAAA,EACjB,MAAO,CAACC,EAAmBC,IAA+B,CACxD,MAAMC,EACJD,GAAQ,KAAOA,EAAQE,EAAAA,uBAAuBF,CAAI,EACpDH,EAAS,MAAME,EAAWE,CAAO,CACnC,CACF,CAEA,MAAME,EACJ,CACEJ,EACAK,EACAC,EAKAC,IAEDL,GAAsC,CACrC,MAAMM,EAAoBC,EAAAA,uBACxBP,CAAA,EAEIQ,EAASL,EAAO,MAAMG,CAAiB,EACvCG,EAAqBJ,GAAA,MAAAA,EAAS,uBAChCL,EACAQ,EACJJ,EAASN,EAAWW,EAAoB,CACtC,iBAAkBJ,GAAA,YAAAA,EAAS,gBAAA,CAC5B,CACH,EAEK,SAASK,EAAoBC,EAA0B,CAC5D,MAAMP,EAAW,CACfN,EACAE,EACAK,IACG,CACH,MAAMO,EAAeP,GAAA,MAAAA,EAAS,iBACzBL,EACAC,EAAAA,uBAAuBD,CAAO,EACnCW,EAAWb,EAAWc,CAAY,CACpC,EAEMC,EAAsB,CAC1Bf,EACAK,EACAE,IACGH,EAA4BJ,EAAWK,EAAQC,EAAUC,CAAO,EAErE,MAAO,CACL,kBACEL,GACG,CACH,MAAMM,EAAoBC,EAAAA,uBACxBP,CAAA,EAEIQ,EAASrC,EAAmB,MAAM,CACtC,cAAe,IAAI,KAAA,EAAO,YAAA,EAC1B,GAAGmC,CAAA,CACJ,EACDF,EAAS,iBAAkBI,CAAM,CACnC,EACA,uBACER,GAIG,CACH,MAAMM,EAAoBC,EAAAA,uBACxBP,CAAA,EAKIQ,EAAShC,EAAyB,MAAM,CAC5C,GAAG8B,EACH,kBAAmB,MAAA,CACpB,EACDF,EAAS,0BAA2BI,CAAM,CAC5C,EACA,2BACER,GAIG,CACH,MAAMM,EAAoBC,EAAAA,uBACxBP,CAAA,EAKIQ,EAAS9B,EAAiC,MAAM,CACpD,GAAG4B,EACH,kBAAmB,UAAA,CACpB,EACDF,EAAS,0BAA2BI,CAAM,CAC5C,EACA,uBACER,GAIG,CACH,MAAMM,EAAoBC,EAAAA,uBACxBP,CAAA,EAKIQ,EAAShC,EAAyB,MAAM,CAC5C,GAAG8B,EACH,kBAAmB,MAAA,CACpB,EACDF,EAAS,0BAA2BI,CAAM,CAC5C,EACA,eAAgBK,EAAoB,oBAAqBrB,EAAiB,CACxE,iBAAkB,GAClB,uBAAwB,EAAA,CACzB,EACD,eAAgBqB,EAAoB,eAAgB9B,EAAiB,CACnE,iBAAkB,GAClB,uBAAwB,EAAA,CACzB,EACD,cACEiB,GACG,CACH,MAAMM,EAAoBC,EAAAA,uBACxBP,CAAA,EAEIQ,EAASnC,EAAe,MAAM,CAClC,cAAe,IAAI,KAAA,EAAO,YAAA,EAC1B,GAAGiC,CAAA,CACJ,EACDF,EAAS,YAAaI,CAAM,CAC9B,EACA,kBAAmBK,EAAoB,gBAAiB3B,CAAgB,EACxE,oBAAqB2B,EACnB,kBACA1B,CAAA,EAEF,mBAAoB0B,EAClB,iBACA1B,CAAA,EAEF,cACEa,GACG,CACH,MAAMM,EAAoBC,EAAAA,uBACxBP,CAAA,EAEIQ,EAASnB,EAAe,MAAM,CAClC,cAAe,IAAI,KAAA,EAAO,YAAA,EAC1B,GAAGiB,CAAA,CACJ,EACDF,EAAS,cAAeI,CAAM,CAChC,EACA,gBAAiBK,EAAoB,eAAgBzB,CAAe,EACpE,gBAAiByB,EAAoB,gBAAiBzB,CAAe,EACrE,wBAAyByB,EACvB,iBACApB,CAAA,EAEF,qBAAsBoB,EACpB,mBACAnB,CAAA,EAEF,yBAA0BmB,EACxB,0BACAvB,CAAA,EAEF,gCAAiCuB,EAC/B,gCACAvC,EACA,CAAE,iBAAkB,GAAM,uBAAwB,EAAA,CAAK,EAEzD,+BAAgCuC,EAC9B,+BACAvC,EACA,CAAE,iBAAkB,GAAM,uBAAwB,EAAA,CAAK,EAEzD,4BAA6BuC,EAC3B,4BACAvC,EACA,CAAE,iBAAkB,GAAM,uBAAwB,EAAA,CAAK,CACzD,CAEJ,CAEO,SAASwC,GAAoB,CAClC,MAAMH,EAAahB,EAAA,EACnB,OAAOe,EAAoBC,CAAU,CACvC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
type AnalyticsPayload<Schema extends z.ZodTypeAny> = z.input<Schema>;
|
|
3
|
+
type AnalyticsPayloadWithout<Schema extends z.ZodTypeAny, Keys extends PropertyKey> = Omit<AnalyticsPayload<Schema>, Keys>;
|
|
2
4
|
export declare const QuestionEnumValues: readonly ["location", "budget", "size", "other"];
|
|
3
5
|
export type QuestionEnum = (typeof QuestionEnumValues)[number];
|
|
4
6
|
export type FilterEnum = string;
|
|
@@ -459,10 +461,10 @@ export type TrackingEventWithUnits = FilterEvent & {
|
|
|
459
461
|
export type TrackEventFn = (eventName: string, data?: Record<string, any>) => void;
|
|
460
462
|
export declare function useTrackEvent(): (eventName: string, data?: Record<string, any>) => void;
|
|
461
463
|
export declare function buildTrackingEvents(trackEvent: TrackEventFn): {
|
|
462
|
-
trackViewAllUnits: (payload:
|
|
463
|
-
trackQuestionnaireSkip: (payload:
|
|
464
|
-
trackQuestionnaireContinue: (payload:
|
|
465
|
-
trackQuestionnaireBack: (payload:
|
|
464
|
+
trackViewAllUnits: (payload: AnalyticsPayload<typeof viewAllUnitsSchema>) => void;
|
|
465
|
+
trackQuestionnaireSkip: (payload: AnalyticsPayloadWithout<typeof questionnaireEventSchema, "interactedElement">) => void;
|
|
466
|
+
trackQuestionnaireContinue: (payload: AnalyticsPayloadWithout<typeof continueQuestionnaireEventSchema, "interactedElement">) => void;
|
|
467
|
+
trackQuestionnaireBack: (payload: AnalyticsPayloadWithout<typeof questionnaireEventSchema, "interactedElement">) => void;
|
|
466
468
|
trackClickUnit: (payload: {
|
|
467
469
|
propertySlug: string;
|
|
468
470
|
propertyId: string;
|
|
@@ -481,7 +483,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn): {
|
|
|
481
483
|
unitSlug: string;
|
|
482
484
|
favoritedUnit: boolean;
|
|
483
485
|
}) => void;
|
|
484
|
-
trackLoadMore: (payload:
|
|
486
|
+
trackLoadMore: (payload: AnalyticsPayload<typeof loadMoreSchema>) => void;
|
|
485
487
|
trackFilterOpened: (payload: {
|
|
486
488
|
propertySlug: string;
|
|
487
489
|
propertyId: string;
|
|
@@ -507,7 +509,7 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn): {
|
|
|
507
509
|
filterLabel: string;
|
|
508
510
|
selectedFiltersEnum?: any;
|
|
509
511
|
}) => void;
|
|
510
|
-
trackOpenSort: (payload:
|
|
512
|
+
trackOpenSort: (payload: AnalyticsPayload<typeof sortOpenSchema>) => void;
|
|
511
513
|
trackSelectSort: (payload: {
|
|
512
514
|
propertySlug: string;
|
|
513
515
|
propertyId: string;
|
|
@@ -581,10 +583,10 @@ export declare function buildTrackingEvents(trackEvent: TrackEventFn): {
|
|
|
581
583
|
}) => void;
|
|
582
584
|
};
|
|
583
585
|
export declare function useTrackingEvents(): {
|
|
584
|
-
trackViewAllUnits: (payload:
|
|
585
|
-
trackQuestionnaireSkip: (payload:
|
|
586
|
-
trackQuestionnaireContinue: (payload:
|
|
587
|
-
trackQuestionnaireBack: (payload:
|
|
586
|
+
trackViewAllUnits: (payload: AnalyticsPayload<typeof viewAllUnitsSchema>) => void;
|
|
587
|
+
trackQuestionnaireSkip: (payload: AnalyticsPayloadWithout<typeof questionnaireEventSchema, "interactedElement">) => void;
|
|
588
|
+
trackQuestionnaireContinue: (payload: AnalyticsPayloadWithout<typeof continueQuestionnaireEventSchema, "interactedElement">) => void;
|
|
589
|
+
trackQuestionnaireBack: (payload: AnalyticsPayloadWithout<typeof questionnaireEventSchema, "interactedElement">) => void;
|
|
588
590
|
trackClickUnit: (payload: {
|
|
589
591
|
propertySlug: string;
|
|
590
592
|
propertyId: string;
|
|
@@ -603,7 +605,7 @@ export declare function useTrackingEvents(): {
|
|
|
603
605
|
unitSlug: string;
|
|
604
606
|
favoritedUnit: boolean;
|
|
605
607
|
}) => void;
|
|
606
|
-
trackLoadMore: (payload:
|
|
608
|
+
trackLoadMore: (payload: AnalyticsPayload<typeof loadMoreSchema>) => void;
|
|
607
609
|
trackFilterOpened: (payload: {
|
|
608
610
|
propertySlug: string;
|
|
609
611
|
propertyId: string;
|
|
@@ -629,7 +631,7 @@ export declare function useTrackingEvents(): {
|
|
|
629
631
|
filterLabel: string;
|
|
630
632
|
selectedFiltersEnum?: any;
|
|
631
633
|
}) => void;
|
|
632
|
-
trackOpenSort: (payload:
|
|
634
|
+
trackOpenSort: (payload: AnalyticsPayload<typeof sortOpenSchema>) => void;
|
|
633
635
|
trackSelectSort: (payload: {
|
|
634
636
|
propertySlug: string;
|
|
635
637
|
propertyId: string;
|