@superbright/indexeddb-orm 1.0.29 → 1.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/adapters/structured-store.cjs +1 -1
  2. package/dist/adapters/structured-store.cjs.map +1 -1
  3. package/dist/adapters/structured-store.d.ts +1 -0
  4. package/dist/adapters/structured-store.mjs +8 -7
  5. package/dist/adapters/structured-store.mjs.map +1 -1
  6. package/dist/adapters/zustand-store.cjs +1 -1
  7. package/dist/adapters/zustand-store.cjs.map +1 -1
  8. package/dist/adapters/zustand-store.d.ts +3 -6
  9. package/dist/adapters/zustand-store.mjs +212 -164
  10. package/dist/adapters/zustand-store.mjs.map +1 -1
  11. package/dist/base/enums.cjs +1 -1
  12. package/dist/base/enums.cjs.map +1 -1
  13. package/dist/base/enums.d.ts +4 -0
  14. package/dist/base/enums.mjs +2 -1
  15. package/dist/base/enums.mjs.map +1 -1
  16. package/dist/base/userinquiry.d.ts +23 -0
  17. package/dist/base/visitor.d.ts +17 -0
  18. package/dist/base/visitorfilter.d.ts +25 -0
  19. package/dist/base/visitorquestionnaire.d.ts +25 -0
  20. package/dist/base/visitorunitengagement.d.ts +24 -0
  21. package/dist/features/units/transformers.cjs.map +1 -1
  22. package/dist/features/units/transformers.d.ts +2 -0
  23. package/dist/features/units/transformers.mjs.map +1 -1
  24. package/dist/index.cjs +1 -1
  25. package/dist/index.d.ts +1 -5
  26. package/dist/index.mjs +111 -127
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/schema.cjs +1 -1
  29. package/dist/schema.cjs.map +1 -1
  30. package/dist/schema.d.ts +13 -41
  31. package/dist/schema.mjs +63 -74
  32. package/dist/schema.mjs.map +1 -1
  33. package/dist/stores/store.cjs +1 -1
  34. package/dist/stores/store.cjs.map +1 -1
  35. package/dist/stores/store.d.ts +3 -14
  36. package/dist/stores/store.mjs +58 -86
  37. package/dist/stores/store.mjs.map +1 -1
  38. package/package.json +1 -1
  39. package/dist/api/favorites.cjs +0 -2
  40. package/dist/api/favorites.cjs.map +0 -1
  41. package/dist/api/favorites.d.ts +0 -4
  42. package/dist/api/favorites.mjs +0 -34
  43. package/dist/api/favorites.mjs.map +0 -1
  44. package/dist/api/properties.cjs +0 -2
  45. package/dist/api/properties.cjs.map +0 -1
  46. package/dist/api/properties.d.ts +0 -22
  47. package/dist/api/properties.mjs +0 -197
  48. package/dist/api/properties.mjs.map +0 -1
  49. package/dist/api/users.cjs +0 -2
  50. package/dist/api/users.cjs.map +0 -1
  51. package/dist/api/users.d.ts +0 -5
  52. package/dist/api/users.mjs +0 -54
  53. package/dist/api/users.mjs.map +0 -1
  54. package/dist/units/favorites.cjs +0 -2
  55. package/dist/units/favorites.cjs.map +0 -1
  56. package/dist/units/favorites.d.ts +0 -7
  57. package/dist/units/favorites.mjs +0 -19
  58. package/dist/units/favorites.mjs.map +0 -1
@@ -1,22 +0,0 @@
1
- import { type TourContactData, type UserPropertyState, type PropertyStoreData } from "../schema";
2
- export type { ViewedUnit, TourContactData, UserPropertyState, PropertyStoreData } from "../schema";
3
- export declare class PropertyStore {
4
- private getState;
5
- private setState;
6
- setHasPreviouslySearched(slug: string): Promise<void>;
7
- setTourContactedOn(): Promise<void>;
8
- getTourContactedOn(): Promise<string | null>;
9
- setQuestionnaireResults(results: unknown): Promise<void>;
10
- setTourContactData(data: TourContactData): Promise<void>;
11
- toggleFavorite(unitId: string): Promise<void>;
12
- markUnitAsViewed(unitId: string, slug: string): Promise<void>;
13
- getUnitState(unitId: string): Promise<{
14
- isFavorite: boolean;
15
- viewedDate: string;
16
- }>;
17
- getPropertyData(propertyId?: string | number): Promise<UserPropertyState | null>;
18
- getCurrentProperty(): Promise<UserPropertyState | null>;
19
- getFullState(): Promise<PropertyStoreData>;
20
- initializeProperty(propertyId: string | number, slug: string): Promise<void>;
21
- }
22
- export declare const propertyStore: PropertyStore;
@@ -1,197 +0,0 @@
1
- import { kvGet as y, kvSet as l } from "../storage.mjs";
2
- import { PropertyStoreDataSchema as p, UserPropertyStateSchema as S } from "../schema.mjs";
3
- const c = {
4
- data: {},
5
- propertySlug: null,
6
- propertyId: null,
7
- hasPreviouslySearched: []
8
- };
9
- class f {
10
- async getState() {
11
- const e = await y("property");
12
- if (!e) return c;
13
- const t = {
14
- ...e,
15
- propertyId: e.propertyId == null ? null : String(e.propertyId),
16
- propertySlug: e.propertySlug ?? null,
17
- hasPreviouslySearched: Array.isArray(e.hasPreviouslySearched) ? e.hasPreviouslySearched.map(String) : []
18
- }, r = p.safeParse(t);
19
- if (r.success) return r.data;
20
- const a = Object.entries(t.data ?? {}).reduce((i, [s, d]) => {
21
- const u = S.safeParse(d);
22
- return u.success && (i[s] = u.data), i;
23
- }, {}), n = {
24
- ...c,
25
- ...t,
26
- data: a
27
- }, o = p.safeParse(n);
28
- return o.success ? o.data : c;
29
- }
30
- async setState(e) {
31
- const t = await this.getState(), r = e(t), a = p.parse(r);
32
- await l("property", a);
33
- }
34
- // Basic state operations (legacy direct setters removed in vNext)
35
- async setHasPreviouslySearched(e) {
36
- await this.setState((t) => ({
37
- ...t,
38
- hasPreviouslySearched: Array.from(
39
- /* @__PURE__ */ new Set([...t.hasPreviouslySearched, e])
40
- )
41
- }));
42
- }
43
- // Property-specific operations
44
- async setTourContactedOn() {
45
- await this.setState((e) => {
46
- const t = e.propertyId;
47
- if (!t) return e;
48
- const r = e.data[t];
49
- return r ? {
50
- ...e,
51
- data: {
52
- ...e.data,
53
- [t]: {
54
- ...r,
55
- tourContactedOn: (/* @__PURE__ */ new Date()).toISOString()
56
- }
57
- }
58
- } : e;
59
- });
60
- }
61
- async getTourContactedOn() {
62
- var r;
63
- const e = await this.getState(), t = e.propertyId;
64
- return t ? ((r = e.data[t]) == null ? void 0 : r.tourContactedOn) ?? null : null;
65
- }
66
- async setQuestionnaireResults(e) {
67
- await this.setState((t) => {
68
- const r = t.propertyId;
69
- if (!r) return t;
70
- const a = t.data[r];
71
- return a ? {
72
- ...t,
73
- data: {
74
- ...t.data,
75
- [r]: {
76
- ...a,
77
- questionnaireResults: e
78
- }
79
- }
80
- } : t;
81
- });
82
- }
83
- async setTourContactData(e) {
84
- await this.setState((t) => {
85
- const r = t.propertyId;
86
- if (!r) return t;
87
- const a = t.data[r];
88
- return a ? {
89
- ...t,
90
- data: {
91
- ...t.data,
92
- [r]: {
93
- ...a,
94
- tourContactData: e
95
- }
96
- }
97
- } : t;
98
- });
99
- }
100
- async toggleFavorite(e) {
101
- await this.setState((t) => {
102
- const r = t.propertyId;
103
- if (!r) return t;
104
- const a = t.data[r];
105
- if (!a) return t;
106
- const o = a.favoritedUnits.includes(e) ? a.favoritedUnits.filter((i) => i !== e) : [...a.favoritedUnits, e];
107
- return {
108
- ...t,
109
- data: {
110
- ...t.data,
111
- [r]: {
112
- ...a,
113
- favoritedUnits: o
114
- }
115
- }
116
- };
117
- });
118
- }
119
- async markUnitAsViewed(e, t) {
120
- const r = /* @__PURE__ */ new Date(), a = `${String(r.getMonth() + 1).padStart(
121
- 2,
122
- "0"
123
- )}/${String(r.getDate()).padStart(2, "0")}`;
124
- await this.setState((n) => {
125
- const o = n.propertyId;
126
- if (!o) return n;
127
- const i = n.data[o];
128
- if (!i) return n;
129
- const s = [
130
- // Remove existing entry if it exists
131
- ...i.viewedUnits.filter((d) => d.unitId !== e),
132
- // Add updated one
133
- {
134
- unitId: e,
135
- viewedDate: a
136
- }
137
- ];
138
- return {
139
- ...n,
140
- data: {
141
- ...n.data,
142
- [o]: {
143
- ...i,
144
- viewedUnits: s
145
- }
146
- }
147
- };
148
- }), typeof window < "u" && window.open(`//${t}`, "_blank");
149
- }
150
- // Utility methods for getting specific data
151
- async getUnitState(e) {
152
- var a;
153
- const t = await this.getState(), r = t.propertyId ? t.data[t.propertyId] : null;
154
- return {
155
- isFavorite: (r == null ? void 0 : r.favoritedUnits.includes(e)) ?? !1,
156
- viewedDate: ((a = r == null ? void 0 : r.viewedUnits.find((n) => n.unitId === e)) == null ? void 0 : a.viewedDate) ?? ""
157
- };
158
- }
159
- async getPropertyData(e) {
160
- const t = await this.getState(), r = e == null ? t.propertyId : String(e);
161
- return r ? t.data[r] ?? null : null;
162
- }
163
- async getCurrentProperty() {
164
- const e = await this.getState();
165
- return e.propertyId ? e.data[e.propertyId] ?? null : null;
166
- }
167
- async getFullState() {
168
- return this.getState();
169
- }
170
- // Initialize property if it doesn't exist
171
- async initializeProperty(e, t) {
172
- const r = String(e);
173
- await this.setState((a) => a.data[r] ? { ...a, propertyId: r, propertySlug: t } : {
174
- ...a,
175
- propertyId: r,
176
- propertySlug: t,
177
- data: {
178
- ...a.data,
179
- [r]: {
180
- id: r,
181
- slug: t,
182
- favoritedUnits: [],
183
- tourContactedOn: null,
184
- viewedUnits: [],
185
- questionnaireResults: null,
186
- tourContactData: null
187
- }
188
- }
189
- });
190
- }
191
- }
192
- const g = new f();
193
- export {
194
- f as PropertyStore,
195
- g as propertyStore
196
- };
197
- //# sourceMappingURL=properties.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"properties.mjs","sources":["../../src/api/properties.ts"],"sourcesContent":["import { kvGet, kvSet } from \"../storage\";\nimport {\n ViewedUnitSchema,\n TourContactDataSchema,\n UserPropertyStateSchema,\n PropertyStoreDataSchema,\n type ViewedUnit,\n type TourContactData,\n type UserPropertyState,\n type PropertyStoreData,\n} from \"../schema\";\n\n// Re-export types for legacy import paths\nexport type { ViewedUnit, TourContactData, UserPropertyState, PropertyStoreData } from \"../schema\";\n\n// Default state\nconst defaultPropertyStoreData: PropertyStoreData = {\n data: {},\n propertySlug: null,\n propertyId: null,\n hasPreviouslySearched: [],\n};\n\n// Core property store API\nexport class PropertyStore {\n private async getState(): Promise<PropertyStoreData> {\n const state = await kvGet<PropertyStoreData>(\"property\");\n if (!state) return defaultPropertyStoreData;\n\n const normalized = {\n ...state,\n propertyId: state.propertyId == null ? null : String(state.propertyId),\n propertySlug: state.propertySlug ?? null,\n hasPreviouslySearched: Array.isArray(state.hasPreviouslySearched)\n ? state.hasPreviouslySearched.map(String)\n : [],\n };\n\n const parsed = PropertyStoreDataSchema.safeParse(normalized);\n if (parsed.success) return parsed.data;\n\n const sanitizedData = Object.entries(normalized.data ?? {}).reduce<\n Record<string, UserPropertyState>\n >((acc, [key, value]) => {\n const entry = UserPropertyStateSchema.safeParse(value);\n if (entry.success) acc[key] = entry.data;\n return acc;\n }, {});\n\n const fallbackState = {\n ...defaultPropertyStoreData,\n ...normalized,\n data: sanitizedData,\n };\n\n const fallbackParsed = PropertyStoreDataSchema.safeParse(fallbackState);\n return fallbackParsed.success ? fallbackParsed.data : defaultPropertyStoreData;\n }\n\n private async setState(updater: (state: PropertyStoreData) => PropertyStoreData): Promise<void> {\n const currentState = await this.getState();\n const newState = updater(currentState);\n const validatedState = PropertyStoreDataSchema.parse(newState);\n await kvSet(\"property\", validatedState);\n }\n\n // Basic state operations (legacy direct setters removed in vNext)\n\n async setHasPreviouslySearched(slug: string): Promise<void> {\n await this.setState(state => ({\n ...state,\n hasPreviouslySearched: Array.from(\n new Set([...state.hasPreviouslySearched, slug])\n ),\n }));\n }\n\n // Property-specific operations\n async setTourContactedOn(): Promise<void> {\n await this.setState(state => {\n const propertyId = state.propertyId;\n if (!propertyId) return state;\n\n const property = state.data[propertyId];\n if (!property) return state;\n\n return {\n ...state,\n data: {\n ...state.data,\n [propertyId]: {\n ...property,\n tourContactedOn: new Date().toISOString(),\n },\n },\n };\n });\n }\n\n async getTourContactedOn(): Promise<string | null> {\n const state = await this.getState();\n const propertyId = state.propertyId;\n if (!propertyId) return null;\n\n return state.data[propertyId]?.tourContactedOn ?? null;\n }\n\n async setQuestionnaireResults(results: unknown): Promise<void> {\n await this.setState(state => {\n const propertyId = state.propertyId;\n if (!propertyId) return state;\n\n const property = state.data[propertyId];\n if (!property) return state;\n\n return {\n ...state,\n data: {\n ...state.data,\n [propertyId]: {\n ...property,\n questionnaireResults: results,\n },\n },\n };\n });\n }\n\n async setTourContactData(data: TourContactData): Promise<void> {\n await this.setState(state => {\n const propertyId = state.propertyId;\n if (!propertyId) return state;\n\n const property = state.data[propertyId];\n if (!property) return state;\n\n return {\n ...state,\n data: {\n ...state.data,\n [propertyId]: {\n ...property,\n tourContactData: data,\n },\n },\n };\n });\n }\n\n async toggleFavorite(unitId: string): Promise<void> {\n await this.setState(state => {\n const propertyId = state.propertyId;\n if (!propertyId) return state;\n\n const property = state.data[propertyId];\n if (!property) return state;\n\n const isFavorited = property.favoritedUnits.includes(unitId);\n const updatedFavoritedUnits = isFavorited\n ? property.favoritedUnits.filter((id) => id !== unitId)\n : [...property.favoritedUnits, unitId];\n\n return {\n ...state,\n data: {\n ...state.data,\n [propertyId]: {\n ...property,\n favoritedUnits: updatedFavoritedUnits,\n },\n },\n };\n });\n }\n\n async markUnitAsViewed(unitId: string, slug: string): Promise<void> {\n const today = new Date();\n const formattedDate = `${String(today.getMonth() + 1).padStart(\n 2,\n \"0\"\n )}/${String(today.getDate()).padStart(2, \"0\")}`;\n\n await this.setState(state => {\n const propertyId = state.propertyId;\n if (!propertyId) return state;\n\n const property = state.data[propertyId];\n if (!property) return state;\n\n const updatedViewedUnits = [\n // Remove existing entry if it exists\n ...property.viewedUnits.filter((u) => u.unitId !== unitId),\n // Add updated one\n {\n unitId,\n viewedDate: formattedDate,\n },\n ];\n\n return {\n ...state,\n data: {\n ...state.data,\n [propertyId]: {\n ...property,\n viewedUnits: updatedViewedUnits,\n },\n },\n };\n });\n\n // Note: This opens a new window - you might want to handle this in the consuming app\n if (typeof window !== 'undefined') {\n window.open(`//${slug}`, \"_blank\");\n }\n }\n\n // Utility methods for getting specific data\n async getUnitState(unitId: string): Promise<{\n isFavorite: boolean;\n viewedDate: string;\n }> {\n const state = await this.getState();\n const property = state.propertyId ? state.data[state.propertyId] : null;\n\n return {\n isFavorite: property?.favoritedUnits.includes(unitId) ?? false,\n viewedDate:\n property?.viewedUnits.find((u) => u.unitId === unitId)?.viewedDate ?? \"\",\n };\n }\n\n async getPropertyData(propertyId?: string | number): Promise<UserPropertyState | null> {\n const state = await this.getState();\n const id = propertyId == null ? state.propertyId : String(propertyId);\n return id ? state.data[id] ?? null : null;\n }\n\n async getCurrentProperty(): Promise<UserPropertyState | null> {\n const state = await this.getState();\n return state.propertyId ? state.data[state.propertyId] ?? null : null;\n }\n\n async getFullState(): Promise<PropertyStoreData> {\n return this.getState();\n }\n\n // Initialize property if it doesn't exist\n async initializeProperty(propertyId: string | number, slug: string): Promise<void> {\n const id = String(propertyId);\n await this.setState(state => {\n if (state.data[id]) {\n return { ...state, propertyId: id, propertySlug: slug };\n }\n\n return {\n ...state,\n propertyId: id,\n propertySlug: slug,\n data: {\n ...state.data,\n [id]: {\n id,\n slug,\n favoritedUnits: [],\n tourContactedOn: null,\n viewedUnits: [],\n questionnaireResults: null,\n tourContactData: null,\n },\n },\n };\n });\n }\n}\n\n// Export singleton instance\nexport const propertyStore = new PropertyStore();\n"],"names":["defaultPropertyStoreData","PropertyStore","state","kvGet","normalized","parsed","PropertyStoreDataSchema","sanitizedData","acc","key","value","entry","UserPropertyStateSchema","fallbackState","fallbackParsed","updater","currentState","newState","validatedState","kvSet","slug","propertyId","property","_a","results","data","unitId","updatedFavoritedUnits","id","today","formattedDate","updatedViewedUnits","u","propertyStore"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("../db.cjs"),i=require("../schema.cjs"),u="user",d=()=>{var a;return typeof((a=globalThis.crypto)==null?void 0:a.randomUUID)=="function"?globalThis.crypto.randomUUID():(()=>{var t,r;const e=((r=(t=globalThis.crypto)==null?void 0:t.getRandomValues)==null?void 0:r.call(t,new Uint8Array(16)))??Uint8Array.from({length:16},()=>Math.random()*256|0);e[6]=e[6]&15|64,e[8]=e[8]&63|128;const s=[...e].map(n=>n.toString(16).padStart(2,"0")).join("");return`${s.slice(0,8)}-${s.slice(8,12)}-${s.slice(12,16)}-${s.slice(16,20)}-${s.slice(20)}`})()},c=a=>{var e,s;return((e=a==null?void 0:a.value)==null?void 0:e.useruuid)??((s=a==null?void 0:a.value)==null?void 0:s.uuid)};async function U(a=d){const e=await g.getDB(),s=c(await e.kv.get(u));if(s){const t=await e.users.get(s);if(t)return i.UserSchema.parse(t)}try{return await e.transaction("rw",e.kv,e.users,async()=>{const t=c(await e.kv.get(u));if(t){const o=await e.users.get(t);if(o)return i.UserSchema.parse(o)}const r=a();await e.kv.add({key:u,value:{useruuid:r}});const n=i.UserSchema.parse({uuid:r,createdAt:new Date().toISOString()});return await e.users.add(n),n})}catch(t){if((t==null?void 0:t.name)==="ConstraintError"){const r=c(await e.kv.get(u));if(r){const n=await e.users.get(r);if(n)return i.UserSchema.parse(n)}}throw t}}const l=async a=>(await U(a)).uuid;exports.defaultIdGenerator=d;exports.ensureUser=U;exports.getUserUUID=l;
2
- //# sourceMappingURL=users.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"users.cjs","sources":["../../src/api/users.ts"],"sourcesContent":["import { getDB } from \"../db\";\nimport { UserSchema, type User } from \"../schema\";\n\nconst USER_POINTER_KEY = \"user\";\n\nexport type IdGenerator = () => string;\nexport const defaultIdGenerator: IdGenerator = () =>\n typeof globalThis.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID()\n : (() => {\n const b =\n globalThis.crypto?.getRandomValues?.(new Uint8Array(16)) ??\n Uint8Array.from({ length: 16 }, () => (Math.random() * 256) | 0);\n b[6] = (b[6] & 0x0f) | 0x40; // v4\n b[8] = (b[8] & 0x3f) | 0x80; // variant\n const h = [...b].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;\n })();\n\nconst getPointerUuid = (row: any) => row?.value?.useruuid ?? row?.value?.uuid;\n\nexport async function ensureUser(\n gen: IdGenerator = defaultIdGenerator,\n): Promise<User> {\n const db = await getDB();\n\n // Fast path\n const ptrUuid = getPointerUuid(await db.kv.get(USER_POINTER_KEY));\n if (ptrUuid) {\n const existing = await db.users.get(ptrUuid);\n if (existing) return UserSchema.parse(existing);\n }\n\n // Race-safe creation\n try {\n return await db.transaction(\"rw\", db.kv, db.users, async () => {\n const insideUuid = getPointerUuid(await db.kv.get(USER_POINTER_KEY));\n if (insideUuid) {\n const existing = await db.users.get(insideUuid);\n if (existing) return UserSchema.parse(existing);\n }\n\n const uuid = gen();\n await db.kv.add({ key: USER_POINTER_KEY, value: { useruuid: uuid } }); // claim pointer\n const newUser: User = UserSchema.parse({\n uuid,\n createdAt: new Date().toISOString(),\n });\n await db.users.add(newUser);\n return newUser;\n });\n } catch (e: any) {\n if (e?.name === \"ConstraintError\") {\n // Lost the race → read winner\n const uuid = getPointerUuid(await db.kv.get(USER_POINTER_KEY));\n if (uuid) {\n const winner = await db.users.get(uuid);\n if (winner) return UserSchema.parse(winner);\n }\n }\n throw e;\n }\n}\n\nexport const getUserUUID = async (gen?: IdGenerator) =>\n (await ensureUser(gen)).uuid;\n"],"names":["USER_POINTER_KEY","defaultIdGenerator","_a","b","_b","h","x","getPointerUuid","row","ensureUser","gen","db","getDB","ptrUuid","existing","UserSchema","insideUuid","uuid","newUser","e","winner","getUserUUID"],"mappings":"wIAGMA,EAAmB,OAGZC,EAAkC,IAAA,OAC7C,eAAOC,EAAA,WAAW,SAAX,YAAAA,EAAmB,aAAe,WACrC,WAAW,OAAO,WAAA,GACjB,IAAM,SACL,MAAMC,IACJC,GAAAF,EAAA,WAAW,SAAX,YAAAA,EAAmB,kBAAnB,YAAAE,EAAA,KAAAF,EAAqC,IAAI,WAAW,EAAE,KACtD,WAAW,KAAK,CAAE,OAAQ,IAAM,IAAO,KAAK,OAAA,EAAW,IAAO,CAAC,EACjEC,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,GAAQ,GACvBA,EAAE,CAAC,EAAKA,EAAE,CAAC,EAAI,GAAQ,IACvB,MAAME,EAAI,CAAC,GAAGF,CAAC,EAAE,IAAKG,GAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAAE,KAAK,EAAE,EACpE,MAAO,GAAGD,EAAE,MAAM,EAAG,CAAC,CAAC,IAAIA,EAAE,MAAM,EAAG,EAAE,CAAC,IAAIA,EAAE,MAAM,GAAI,EAAE,CAAC,IAAIA,EAAE,MAAM,GAAI,EAAE,CAAC,IAAIA,EAAE,MAAM,EAAE,CAAC,EAChG,GAAA,GAEAE,EAAkBC,YAAa,QAAAN,EAAAM,GAAA,YAAAA,EAAK,QAAL,YAAAN,EAAY,aAAYE,EAAAI,GAAA,YAAAA,EAAK,QAAL,YAAAJ,EAAY,OAEzE,eAAsBK,EACpBC,EAAmBT,EACJ,CACf,MAAMU,EAAK,MAAMC,QAAA,EAGXC,EAAUN,EAAe,MAAMI,EAAG,GAAG,IAAIX,CAAgB,CAAC,EAChE,GAAIa,EAAS,CACX,MAAMC,EAAW,MAAMH,EAAG,MAAM,IAAIE,CAAO,EAC3C,GAAIC,EAAU,OAAOC,aAAW,MAAMD,CAAQ,CAChD,CAGA,GAAI,CACF,OAAO,MAAMH,EAAG,YAAY,KAAMA,EAAG,GAAIA,EAAG,MAAO,SAAY,CAC7D,MAAMK,EAAaT,EAAe,MAAMI,EAAG,GAAG,IAAIX,CAAgB,CAAC,EACnE,GAAIgB,EAAY,CACd,MAAMF,EAAW,MAAMH,EAAG,MAAM,IAAIK,CAAU,EAC9C,GAAIF,EAAU,OAAOC,aAAW,MAAMD,CAAQ,CAChD,CAEA,MAAMG,EAAOP,EAAA,EACb,MAAMC,EAAG,GAAG,IAAI,CAAE,IAAKX,EAAkB,MAAO,CAAE,SAAUiB,CAAA,EAAQ,EACpE,MAAMC,EAAgBH,EAAAA,WAAW,MAAM,CACrC,KAAAE,EACA,UAAW,IAAI,KAAA,EAAO,YAAA,CAAY,CACnC,EACD,aAAMN,EAAG,MAAM,IAAIO,CAAO,EACnBA,CACT,CAAC,CACH,OAASC,EAAQ,CACf,IAAIA,GAAA,YAAAA,EAAG,QAAS,kBAAmB,CAEjC,MAAMF,EAAOV,EAAe,MAAMI,EAAG,GAAG,IAAIX,CAAgB,CAAC,EAC7D,GAAIiB,EAAM,CACR,MAAMG,EAAS,MAAMT,EAAG,MAAM,IAAIM,CAAI,EACtC,GAAIG,EAAQ,OAAOL,aAAW,MAAMK,CAAM,CAC5C,CACF,CACA,MAAMD,CACR,CACF,CAEO,MAAME,EAAc,MAAOX,IAC/B,MAAMD,EAAWC,CAAG,GAAG"}
@@ -1,5 +0,0 @@
1
- import { type User } from "../schema";
2
- export type IdGenerator = () => string;
3
- export declare const defaultIdGenerator: IdGenerator;
4
- export declare function ensureUser(gen?: IdGenerator): Promise<User>;
5
- export declare const getUserUUID: (gen?: IdGenerator) => Promise<string>;
@@ -1,54 +0,0 @@
1
- import { getDB as d } from "../db.mjs";
2
- import { UserSchema as r } from "../schema.mjs";
3
- const u = "user", g = () => {
4
- var a;
5
- return typeof ((a = globalThis.crypto) == null ? void 0 : a.randomUUID) == "function" ? globalThis.crypto.randomUUID() : (() => {
6
- var e, n;
7
- const t = ((n = (e = globalThis.crypto) == null ? void 0 : e.getRandomValues) == null ? void 0 : n.call(e, new Uint8Array(16))) ?? Uint8Array.from({ length: 16 }, () => Math.random() * 256 | 0);
8
- t[6] = t[6] & 15 | 64, t[8] = t[8] & 63 | 128;
9
- const i = [...t].map((s) => s.toString(16).padStart(2, "0")).join("");
10
- return `${i.slice(0, 8)}-${i.slice(8, 12)}-${i.slice(12, 16)}-${i.slice(16, 20)}-${i.slice(20)}`;
11
- })();
12
- }, o = (a) => {
13
- var t, i;
14
- return ((t = a == null ? void 0 : a.value) == null ? void 0 : t.useruuid) ?? ((i = a == null ? void 0 : a.value) == null ? void 0 : i.uuid);
15
- };
16
- async function l(a = g) {
17
- const t = await d(), i = o(await t.kv.get(u));
18
- if (i) {
19
- const e = await t.users.get(i);
20
- if (e) return r.parse(e);
21
- }
22
- try {
23
- return await t.transaction("rw", t.kv, t.users, async () => {
24
- const e = o(await t.kv.get(u));
25
- if (e) {
26
- const c = await t.users.get(e);
27
- if (c) return r.parse(c);
28
- }
29
- const n = a();
30
- await t.kv.add({ key: u, value: { useruuid: n } });
31
- const s = r.parse({
32
- uuid: n,
33
- createdAt: (/* @__PURE__ */ new Date()).toISOString()
34
- });
35
- return await t.users.add(s), s;
36
- });
37
- } catch (e) {
38
- if ((e == null ? void 0 : e.name) === "ConstraintError") {
39
- const n = o(await t.kv.get(u));
40
- if (n) {
41
- const s = await t.users.get(n);
42
- if (s) return r.parse(s);
43
- }
44
- }
45
- throw e;
46
- }
47
- }
48
- const p = async (a) => (await l(a)).uuid;
49
- export {
50
- g as defaultIdGenerator,
51
- l as ensureUser,
52
- p as getUserUUID
53
- };
54
- //# sourceMappingURL=users.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"users.mjs","sources":["../../src/api/users.ts"],"sourcesContent":["import { getDB } from \"../db\";\nimport { UserSchema, type User } from \"../schema\";\n\nconst USER_POINTER_KEY = \"user\";\n\nexport type IdGenerator = () => string;\nexport const defaultIdGenerator: IdGenerator = () =>\n typeof globalThis.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID()\n : (() => {\n const b =\n globalThis.crypto?.getRandomValues?.(new Uint8Array(16)) ??\n Uint8Array.from({ length: 16 }, () => (Math.random() * 256) | 0);\n b[6] = (b[6] & 0x0f) | 0x40; // v4\n b[8] = (b[8] & 0x3f) | 0x80; // variant\n const h = [...b].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;\n })();\n\nconst getPointerUuid = (row: any) => row?.value?.useruuid ?? row?.value?.uuid;\n\nexport async function ensureUser(\n gen: IdGenerator = defaultIdGenerator,\n): Promise<User> {\n const db = await getDB();\n\n // Fast path\n const ptrUuid = getPointerUuid(await db.kv.get(USER_POINTER_KEY));\n if (ptrUuid) {\n const existing = await db.users.get(ptrUuid);\n if (existing) return UserSchema.parse(existing);\n }\n\n // Race-safe creation\n try {\n return await db.transaction(\"rw\", db.kv, db.users, async () => {\n const insideUuid = getPointerUuid(await db.kv.get(USER_POINTER_KEY));\n if (insideUuid) {\n const existing = await db.users.get(insideUuid);\n if (existing) return UserSchema.parse(existing);\n }\n\n const uuid = gen();\n await db.kv.add({ key: USER_POINTER_KEY, value: { useruuid: uuid } }); // claim pointer\n const newUser: User = UserSchema.parse({\n uuid,\n createdAt: new Date().toISOString(),\n });\n await db.users.add(newUser);\n return newUser;\n });\n } catch (e: any) {\n if (e?.name === \"ConstraintError\") {\n // Lost the race → read winner\n const uuid = getPointerUuid(await db.kv.get(USER_POINTER_KEY));\n if (uuid) {\n const winner = await db.users.get(uuid);\n if (winner) return UserSchema.parse(winner);\n }\n }\n throw e;\n }\n}\n\nexport const getUserUUID = async (gen?: IdGenerator) =>\n (await ensureUser(gen)).uuid;\n"],"names":["USER_POINTER_KEY","defaultIdGenerator","_a","b","_b","h","x","getPointerUuid","row","ensureUser","gen","db","getDB","ptrUuid","existing","UserSchema","insideUuid","uuid","newUser","winner","getUserUUID"],"mappings":";;AAGA,MAAMA,IAAmB,QAGZC,IAAkC,MAAA;;AAC7C,kBAAOC,IAAA,WAAW,WAAX,gBAAAA,EAAmB,eAAe,aACrC,WAAW,OAAO,WAAA,KACjB,MAAM;;AACL,UAAMC,MACJC,KAAAF,IAAA,WAAW,WAAX,gBAAAA,EAAmB,oBAAnB,gBAAAE,EAAA,KAAAF,GAAqC,IAAI,WAAW,EAAE,OACtD,WAAW,KAAK,EAAE,QAAQ,MAAM,MAAO,KAAK,OAAA,IAAW,MAAO,CAAC;AACjE,IAAAC,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,KAAQ,IACvBA,EAAE,CAAC,IAAKA,EAAE,CAAC,IAAI,KAAQ;AACvB,UAAME,IAAI,CAAC,GAAGF,CAAC,EAAE,IAAI,CAACG,MAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AACpE,WAAO,GAAGD,EAAE,MAAM,GAAG,CAAC,CAAC,IAAIA,EAAE,MAAM,GAAG,EAAE,CAAC,IAAIA,EAAE,MAAM,IAAI,EAAE,CAAC,IAAIA,EAAE,MAAM,IAAI,EAAE,CAAC,IAAIA,EAAE,MAAM,EAAE,CAAC;AAAA,EAChG,GAAA;AAAA,GAEAE,IAAiB,CAACC;;AAAa,WAAAN,IAAAM,KAAA,gBAAAA,EAAK,UAAL,gBAAAN,EAAY,eAAYE,IAAAI,KAAA,gBAAAA,EAAK,UAAL,gBAAAJ,EAAY;AAAA;AAEzE,eAAsBK,EACpBC,IAAmBT,GACJ;AACf,QAAMU,IAAK,MAAMC,EAAA,GAGXC,IAAUN,EAAe,MAAMI,EAAG,GAAG,IAAIX,CAAgB,CAAC;AAChE,MAAIa,GAAS;AACX,UAAMC,IAAW,MAAMH,EAAG,MAAM,IAAIE,CAAO;AAC3C,QAAIC,EAAU,QAAOC,EAAW,MAAMD,CAAQ;AAAA,EAChD;AAGA,MAAI;AACF,WAAO,MAAMH,EAAG,YAAY,MAAMA,EAAG,IAAIA,EAAG,OAAO,YAAY;AAC7D,YAAMK,IAAaT,EAAe,MAAMI,EAAG,GAAG,IAAIX,CAAgB,CAAC;AACnE,UAAIgB,GAAY;AACd,cAAMF,IAAW,MAAMH,EAAG,MAAM,IAAIK,CAAU;AAC9C,YAAIF,EAAU,QAAOC,EAAW,MAAMD,CAAQ;AAAA,MAChD;AAEA,YAAMG,IAAOP,EAAA;AACb,YAAMC,EAAG,GAAG,IAAI,EAAE,KAAKX,GAAkB,OAAO,EAAE,UAAUiB,EAAA,GAAQ;AACpE,YAAMC,IAAgBH,EAAW,MAAM;AAAA,QACrC,MAAAE;AAAA,QACA,YAAW,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAY,CACnC;AACD,mBAAMN,EAAG,MAAM,IAAIO,CAAO,GACnBA;AAAA,IACT,CAAC;AAAA,EACH,SAAS,GAAQ;AACf,SAAI,uBAAG,UAAS,mBAAmB;AAEjC,YAAMD,IAAOV,EAAe,MAAMI,EAAG,GAAG,IAAIX,CAAgB,CAAC;AAC7D,UAAIiB,GAAM;AACR,cAAME,IAAS,MAAMR,EAAG,MAAM,IAAIM,CAAI;AACtC,YAAIE,EAAQ,QAAOJ,EAAW,MAAMI,CAAM;AAAA,MAC5C;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;AAEO,MAAMC,IAAc,OAAOV,OAC/B,MAAMD,EAAWC,CAAG,GAAG;"}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../api/favorites.cjs"),o={async isFavorite(t,e){return r.isUnitFavorited(t,e)},async toggle(t,e){return r.toggleFavoriteUnit(t,e)},async set(t,e,i){return r.setFavoriteUnit(t,e,i)},async getAll(t){return r.getFavoritedUnitsForProperty(t)}};exports.favorites=o;
2
- //# sourceMappingURL=favorites.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"favorites.cjs","sources":["../../src/units/favorites.ts"],"sourcesContent":["// src/units/favorites.ts\nimport * as api from \"../api/favorites\";\n\nconst favorites = {\n async isFavorite(propertyId: string | number, unitId: string): Promise<boolean> {\n return api.isUnitFavorited(propertyId, unitId);\n },\n async toggle(propertyId: string | number, unitId: string): Promise<string[]> {\n return api.toggleFavoriteUnit(propertyId, unitId);\n },\n async set(propertyId: string | number, unitId: string, on: boolean): Promise<string[]> {\n return api.setFavoriteUnit(propertyId, unitId, on);\n },\n async getAll(propertyId: string | number): Promise<string[]> {\n return api.getFavoritedUnitsForProperty(propertyId);\n },\n};\n\nexport {favorites}\n"],"names":["favorites","propertyId","unitId","api.isUnitFavorited","api.toggleFavoriteUnit","on","api.setFavoriteUnit","api.getFavoritedUnitsForProperty"],"mappings":"wHAGMA,EAAY,CAChB,MAAM,WAAWC,EAA6BC,EAAkC,CAC9E,OAAOC,EAAAA,gBAAoBF,EAAYC,CAAM,CAC/C,EACA,MAAM,OAAOD,EAA6BC,EAAmC,CAC3E,OAAOE,EAAAA,mBAAuBH,EAAYC,CAAM,CAClD,EACA,MAAM,IAAID,EAA6BC,EAAgBG,EAAgC,CACrF,OAAOC,kBAAoBL,EAAYC,EAAQG,CAAE,CACnD,EACA,MAAM,OAAOJ,EAAgD,CAC3D,OAAOM,EAAAA,6BAAiCN,CAAU,CACpD,CACF"}
@@ -1,7 +0,0 @@
1
- declare const favorites: {
2
- isFavorite(propertyId: string | number, unitId: string): Promise<boolean>;
3
- toggle(propertyId: string | number, unitId: string): Promise<string[]>;
4
- set(propertyId: string | number, unitId: string, on: boolean): Promise<string[]>;
5
- getAll(propertyId: string | number): Promise<string[]>;
6
- };
7
- export { favorites };
@@ -1,19 +0,0 @@
1
- import { getFavoritedUnitsForProperty as o, setFavoriteUnit as i, toggleFavoriteUnit as n, isUnitFavorited as s } from "../api/favorites.mjs";
2
- const g = {
3
- async isFavorite(t, r) {
4
- return s(t, r);
5
- },
6
- async toggle(t, r) {
7
- return n(t, r);
8
- },
9
- async set(t, r, e) {
10
- return i(t, r, e);
11
- },
12
- async getAll(t) {
13
- return o(t);
14
- }
15
- };
16
- export {
17
- g as favorites
18
- };
19
- //# sourceMappingURL=favorites.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"favorites.mjs","sources":["../../src/units/favorites.ts"],"sourcesContent":["// src/units/favorites.ts\nimport * as api from \"../api/favorites\";\n\nconst favorites = {\n async isFavorite(propertyId: string | number, unitId: string): Promise<boolean> {\n return api.isUnitFavorited(propertyId, unitId);\n },\n async toggle(propertyId: string | number, unitId: string): Promise<string[]> {\n return api.toggleFavoriteUnit(propertyId, unitId);\n },\n async set(propertyId: string | number, unitId: string, on: boolean): Promise<string[]> {\n return api.setFavoriteUnit(propertyId, unitId, on);\n },\n async getAll(propertyId: string | number): Promise<string[]> {\n return api.getFavoritedUnitsForProperty(propertyId);\n },\n};\n\nexport {favorites}\n"],"names":["favorites","propertyId","unitId","api.isUnitFavorited","api.toggleFavoriteUnit","on","api.setFavoriteUnit","api.getFavoritedUnitsForProperty"],"mappings":";AAGA,MAAMA,IAAY;AAAA,EAChB,MAAM,WAAWC,GAA6BC,GAAkC;AAC9E,WAAOC,EAAoBF,GAAYC,CAAM;AAAA,EAC/C;AAAA,EACA,MAAM,OAAOD,GAA6BC,GAAmC;AAC3E,WAAOE,EAAuBH,GAAYC,CAAM;AAAA,EAClD;AAAA,EACA,MAAM,IAAID,GAA6BC,GAAgBG,GAAgC;AACrF,WAAOC,EAAoBL,GAAYC,GAAQG,CAAE;AAAA,EACnD;AAAA,EACA,MAAM,OAAOJ,GAAgD;AAC3D,WAAOM,EAAiCN,CAAU;AAAA,EACpD;AACF;"}