@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.
Files changed (101) hide show
  1. package/dist/base/amenityimagesonproperty.cjs +2 -0
  2. package/dist/base/amenityimagesonproperty.cjs.map +1 -0
  3. package/dist/base/amenityimagesonproperty.d.ts +11 -0
  4. package/dist/base/amenityimagesonproperty.mjs +9 -0
  5. package/dist/base/amenityimagesonproperty.mjs.map +1 -0
  6. package/dist/base/enums.cjs +2 -0
  7. package/dist/base/enums.cjs.map +1 -0
  8. package/dist/base/enums.d.ts +69 -0
  9. package/dist/base/enums.mjs +14 -0
  10. package/dist/base/enums.mjs.map +1 -0
  11. package/dist/base/favoriteunit.cjs +2 -0
  12. package/dist/base/favoriteunit.cjs.map +1 -0
  13. package/dist/base/favoriteunit.d.ts +14 -0
  14. package/dist/base/favoriteunit.mjs +10 -0
  15. package/dist/base/favoriteunit.mjs.map +1 -0
  16. package/dist/base/floorplan.cjs +2 -0
  17. package/dist/base/floorplan.cjs.map +1 -0
  18. package/dist/base/floorplan.d.ts +26 -0
  19. package/dist/base/floorplan.mjs +14 -0
  20. package/dist/base/floorplan.mjs.map +1 -0
  21. package/dist/base/index.d.ts +14 -0
  22. package/dist/base/media.cjs +2 -0
  23. package/dist/base/media.cjs.map +1 -0
  24. package/dist/base/media.d.ts +81 -0
  25. package/dist/base/media.mjs +33 -0
  26. package/dist/base/media.mjs.map +1 -0
  27. package/dist/base/overviewimagesonproperty.cjs +2 -0
  28. package/dist/base/overviewimagesonproperty.cjs.map +1 -0
  29. package/dist/base/overviewimagesonproperty.d.ts +11 -0
  30. package/dist/base/overviewimagesonproperty.mjs +9 -0
  31. package/dist/base/overviewimagesonproperty.mjs.map +1 -0
  32. package/dist/base/property.cjs +2 -0
  33. package/dist/base/property.cjs.map +1 -0
  34. package/dist/base/property.d.ts +60 -0
  35. package/dist/base/property.mjs +26 -0
  36. package/dist/base/property.mjs.map +1 -0
  37. package/dist/base/propertyamenity.cjs +2 -0
  38. package/dist/base/propertyamenity.cjs.map +1 -0
  39. package/dist/base/propertyamenity.d.ts +14 -0
  40. package/dist/base/propertyamenity.mjs +10 -0
  41. package/dist/base/propertyamenity.mjs.map +1 -0
  42. package/dist/base/propertyhighlight.cjs +2 -0
  43. package/dist/base/propertyhighlight.cjs.map +1 -0
  44. package/dist/base/propertyhighlight.d.ts +14 -0
  45. package/dist/base/propertyhighlight.mjs +10 -0
  46. package/dist/base/propertyhighlight.mjs.map +1 -0
  47. package/dist/base/renderedstyle.cjs +2 -0
  48. package/dist/base/renderedstyle.cjs.map +1 -0
  49. package/dist/base/renderedstyle.d.ts +20 -0
  50. package/dist/base/renderedstyle.mjs +12 -0
  51. package/dist/base/renderedstyle.mjs.map +1 -0
  52. package/dist/base/room.cjs +2 -0
  53. package/dist/base/room.cjs.map +1 -0
  54. package/dist/base/room.d.ts +20 -0
  55. package/dist/base/room.mjs +12 -0
  56. package/dist/base/room.mjs.map +1 -0
  57. package/dist/base/style.cjs +2 -0
  58. package/dist/base/style.cjs.map +1 -0
  59. package/dist/base/style.d.ts +17 -0
  60. package/dist/base/style.mjs +11 -0
  61. package/dist/base/style.mjs.map +1 -0
  62. package/dist/base/unit.cjs +2 -0
  63. package/dist/base/unit.cjs.map +1 -0
  64. package/dist/base/unit.d.ts +57 -0
  65. package/dist/base/unit.mjs +25 -0
  66. package/dist/base/unit.mjs.map +1 -0
  67. package/dist/base/user.cjs +2 -0
  68. package/dist/base/user.cjs.map +1 -0
  69. package/dist/base/user.d.ts +27 -0
  70. package/dist/base/user.mjs +15 -0
  71. package/dist/base/user.mjs.map +1 -0
  72. package/dist/features/analytics/MixpanelProvider.cjs +2 -0
  73. package/dist/features/analytics/MixpanelProvider.cjs.map +1 -0
  74. package/dist/features/analytics/MixpanelProvider.mjs +44 -0
  75. package/dist/features/analytics/MixpanelProvider.mjs.map +1 -0
  76. package/dist/features/analytics/analytics.cjs +2 -0
  77. package/dist/features/analytics/analytics.cjs.map +1 -0
  78. package/dist/features/analytics/analytics.d.ts +14 -12
  79. package/dist/features/analytics/analytics.mjs +230 -0
  80. package/dist/features/analytics/analytics.mjs.map +1 -0
  81. package/dist/features/analytics/generateUserUUID.cjs +2 -0
  82. package/dist/features/analytics/generateUserUUID.cjs.map +1 -0
  83. package/dist/features/analytics/generateUserUUID.mjs +6 -0
  84. package/dist/features/analytics/generateUserUUID.mjs.map +1 -0
  85. package/dist/index.cjs +1 -1
  86. package/dist/index.d.ts +2 -0
  87. package/dist/index.mjs +98 -49
  88. package/dist/index.mjs.map +1 -1
  89. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs +1 -1
  90. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.cjs.map +1 -1
  91. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs +68 -67
  92. package/dist/node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.mjs.map +1 -1
  93. package/dist/utils/casing.cjs +2 -0
  94. package/dist/utils/casing.cjs.map +1 -0
  95. package/dist/utils/casing.mjs +12 -0
  96. package/dist/utils/casing.mjs.map +1 -0
  97. package/dist/utils/collections.cjs +2 -0
  98. package/dist/utils/collections.cjs.map +1 -0
  99. package/dist/utils/collections.mjs +13 -0
  100. package/dist/utils/collections.mjs.map +1 -0
  101. 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":"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"}
@@ -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: z.input<typeof viewAllUnitsSchema>) => void;
463
- trackQuestionnaireSkip: (payload: Omit<z.input<typeof questionnaireEventSchema>, "interactedElement">) => void;
464
- trackQuestionnaireContinue: (payload: Omit<z.input<typeof continueQuestionnaireEventSchema>, "interactedElement">) => void;
465
- trackQuestionnaireBack: (payload: Omit<z.input<typeof questionnaireEventSchema>, "interactedElement">) => void;
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: z.input<typeof loadMoreSchema>) => void;
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: z.input<typeof sortOpenSchema>) => void;
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: z.input<typeof viewAllUnitsSchema>) => void;
585
- trackQuestionnaireSkip: (payload: Omit<z.input<typeof questionnaireEventSchema>, "interactedElement">) => void;
586
- trackQuestionnaireContinue: (payload: Omit<z.input<typeof continueQuestionnaireEventSchema>, "interactedElement">) => void;
587
- trackQuestionnaireBack: (payload: Omit<z.input<typeof questionnaireEventSchema>, "interactedElement">) => void;
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: z.input<typeof loadMoreSchema>) => void;
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: z.input<typeof sortOpenSchema>) => void;
634
+ trackOpenSort: (payload: AnalyticsPayload<typeof sortOpenSchema>) => void;
633
635
  trackSelectSort: (payload: {
634
636
  propertySlug: string;
635
637
  propertyId: string;