@voyant-travel/db 0.108.0

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 (336) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +60 -0
  3. package/dist/aggregate-snapshots.d.ts +66 -0
  4. package/dist/aggregate-snapshots.d.ts.map +1 -0
  5. package/dist/aggregate-snapshots.js +110 -0
  6. package/dist/aggregate-snapshots.js.map +1 -0
  7. package/dist/columns/collection.d.ts +37 -0
  8. package/dist/columns/collection.d.ts.map +1 -0
  9. package/dist/columns/collection.js +44 -0
  10. package/dist/columns/collection.js.map +1 -0
  11. package/dist/columns/cruise.d.ts +26 -0
  12. package/dist/columns/cruise.d.ts.map +1 -0
  13. package/dist/columns/cruise.js +31 -0
  14. package/dist/columns/cruise.js.map +1 -0
  15. package/dist/columns/departure-sub-tables.d.ts +179 -0
  16. package/dist/columns/departure-sub-tables.d.ts.map +1 -0
  17. package/dist/columns/departure-sub-tables.js +214 -0
  18. package/dist/columns/departure-sub-tables.js.map +1 -0
  19. package/dist/columns/departure.d.ts +20 -0
  20. package/dist/columns/departure.d.ts.map +1 -0
  21. package/dist/columns/departure.js +23 -0
  22. package/dist/columns/departure.js.map +1 -0
  23. package/dist/columns/destinations.d.ts +21 -0
  24. package/dist/columns/destinations.d.ts.map +1 -0
  25. package/dist/columns/destinations.js +24 -0
  26. package/dist/columns/destinations.js.map +1 -0
  27. package/dist/columns/index.d.ts +31 -0
  28. package/dist/columns/index.d.ts.map +1 -0
  29. package/dist/columns/index.js +57 -0
  30. package/dist/columns/index.js.map +1 -0
  31. package/dist/columns/itinerary-sub-tables.d.ts +177 -0
  32. package/dist/columns/itinerary-sub-tables.d.ts.map +1 -0
  33. package/dist/columns/itinerary-sub-tables.js +122 -0
  34. package/dist/columns/itinerary-sub-tables.js.map +1 -0
  35. package/dist/columns/itinerary.d.ts +17 -0
  36. package/dist/columns/itinerary.d.ts.map +1 -0
  37. package/dist/columns/itinerary.js +20 -0
  38. package/dist/columns/itinerary.js.map +1 -0
  39. package/dist/columns/lodging.d.ts +143 -0
  40. package/dist/columns/lodging.d.ts.map +1 -0
  41. package/dist/columns/lodging.js +164 -0
  42. package/dist/columns/lodging.js.map +1 -0
  43. package/dist/columns/offers.d.ts +31 -0
  44. package/dist/columns/offers.d.ts.map +1 -0
  45. package/dist/columns/offers.js +43 -0
  46. package/dist/columns/offers.js.map +1 -0
  47. package/dist/columns/pricing.d.ts +60 -0
  48. package/dist/columns/pricing.d.ts.map +1 -0
  49. package/dist/columns/pricing.js +71 -0
  50. package/dist/columns/pricing.js.map +1 -0
  51. package/dist/columns/product-accommodation.d.ts +99 -0
  52. package/dist/columns/product-accommodation.d.ts.map +1 -0
  53. package/dist/columns/product-accommodation.js +65 -0
  54. package/dist/columns/product-accommodation.js.map +1 -0
  55. package/dist/columns/product-addons.d.ts +18 -0
  56. package/dist/columns/product-addons.d.ts.map +1 -0
  57. package/dist/columns/product-addons.js +21 -0
  58. package/dist/columns/product-addons.js.map +1 -0
  59. package/dist/columns/product-availability-states.d.ts +65 -0
  60. package/dist/columns/product-availability-states.d.ts.map +1 -0
  61. package/dist/columns/product-availability-states.js +81 -0
  62. package/dist/columns/product-availability-states.js.map +1 -0
  63. package/dist/columns/product-availability.d.ts +21 -0
  64. package/dist/columns/product-availability.d.ts.map +1 -0
  65. package/dist/columns/product-availability.js +24 -0
  66. package/dist/columns/product-availability.js.map +1 -0
  67. package/dist/columns/product-booking-rules.d.ts +45 -0
  68. package/dist/columns/product-booking-rules.d.ts.map +1 -0
  69. package/dist/columns/product-booking-rules.js +55 -0
  70. package/dist/columns/product-booking-rules.js.map +1 -0
  71. package/dist/columns/product-category-assignments.d.ts +17 -0
  72. package/dist/columns/product-category-assignments.d.ts.map +1 -0
  73. package/dist/columns/product-category-assignments.js +20 -0
  74. package/dist/columns/product-category-assignments.js.map +1 -0
  75. package/dist/columns/product-extensions.d.ts +24 -0
  76. package/dist/columns/product-extensions.d.ts.map +1 -0
  77. package/dist/columns/product-extensions.js +27 -0
  78. package/dist/columns/product-extensions.js.map +1 -0
  79. package/dist/columns/product-media.d.ts +19 -0
  80. package/dist/columns/product-media.d.ts.map +1 -0
  81. package/dist/columns/product-media.js +22 -0
  82. package/dist/columns/product-media.js.map +1 -0
  83. package/dist/columns/product-overrides.d.ts +19 -0
  84. package/dist/columns/product-overrides.d.ts.map +1 -0
  85. package/dist/columns/product-overrides.js +22 -0
  86. package/dist/columns/product-overrides.js.map +1 -0
  87. package/dist/columns/product-preferences.d.ts +51 -0
  88. package/dist/columns/product-preferences.d.ts.map +1 -0
  89. package/dist/columns/product-preferences.js +59 -0
  90. package/dist/columns/product-preferences.js.map +1 -0
  91. package/dist/columns/product-publish-settings.d.ts +18 -0
  92. package/dist/columns/product-publish-settings.d.ts.map +1 -0
  93. package/dist/columns/product-publish-settings.js +21 -0
  94. package/dist/columns/product-publish-settings.js.map +1 -0
  95. package/dist/columns/product-rate-plans.d.ts +28 -0
  96. package/dist/columns/product-rate-plans.d.ts.map +1 -0
  97. package/dist/columns/product-rate-plans.js +33 -0
  98. package/dist/columns/product-rate-plans.js.map +1 -0
  99. package/dist/columns/product-translations.d.ts +24 -0
  100. package/dist/columns/product-translations.d.ts.map +1 -0
  101. package/dist/columns/product-translations.js +27 -0
  102. package/dist/columns/product-translations.js.map +1 -0
  103. package/dist/columns/product-versions.d.ts +19 -0
  104. package/dist/columns/product-versions.d.ts.map +1 -0
  105. package/dist/columns/product-versions.js +22 -0
  106. package/dist/columns/product-versions.js.map +1 -0
  107. package/dist/columns/product-visibility.d.ts +16 -0
  108. package/dist/columns/product-visibility.d.ts.map +1 -0
  109. package/dist/columns/product-visibility.js +19 -0
  110. package/dist/columns/product-visibility.js.map +1 -0
  111. package/dist/columns/product.d.ts +56 -0
  112. package/dist/columns/product.d.ts.map +1 -0
  113. package/dist/columns/product.js +44 -0
  114. package/dist/columns/product.js.map +1 -0
  115. package/dist/columns/room.d.ts +117 -0
  116. package/dist/columns/room.d.ts.map +1 -0
  117. package/dist/columns/room.js +86 -0
  118. package/dist/columns/room.js.map +1 -0
  119. package/dist/columns/ship.d.ts +22 -0
  120. package/dist/columns/ship.d.ts.map +1 -0
  121. package/dist/columns/ship.js +25 -0
  122. package/dist/columns/ship.js.map +1 -0
  123. package/dist/columns/tags.d.ts +33 -0
  124. package/dist/columns/tags.d.ts.map +1 -0
  125. package/dist/columns/tags.js +38 -0
  126. package/dist/columns/tags.js.map +1 -0
  127. package/dist/columns/transport.d.ts +53 -0
  128. package/dist/columns/transport.d.ts.map +1 -0
  129. package/dist/columns/transport.js +62 -0
  130. package/dist/columns/transport.js.map +1 -0
  131. package/dist/connection-config.d.ts +101 -0
  132. package/dist/connection-config.d.ts.map +1 -0
  133. package/dist/connection-config.js +106 -0
  134. package/dist/connection-config.js.map +1 -0
  135. package/dist/crud.d.ts +87 -0
  136. package/dist/crud.d.ts.map +1 -0
  137. package/dist/crud.js +190 -0
  138. package/dist/crud.js.map +1 -0
  139. package/dist/helpers.d.ts +33 -0
  140. package/dist/helpers.d.ts.map +1 -0
  141. package/dist/helpers.js +49 -0
  142. package/dist/helpers.js.map +1 -0
  143. package/dist/index.d.ts +109 -0
  144. package/dist/index.d.ts.map +1 -0
  145. package/dist/index.js +155 -0
  146. package/dist/index.js.map +1 -0
  147. package/dist/lib/index.d.ts +3 -0
  148. package/dist/lib/index.d.ts.map +1 -0
  149. package/dist/lib/index.js +5 -0
  150. package/dist/lib/index.js.map +1 -0
  151. package/dist/lib/typeid-column.d.ts +75 -0
  152. package/dist/lib/typeid-column.d.ts.map +1 -0
  153. package/dist/lib/typeid-column.js +92 -0
  154. package/dist/lib/typeid-column.js.map +1 -0
  155. package/dist/lib/typeid-core.d.ts +36 -0
  156. package/dist/lib/typeid-core.d.ts.map +1 -0
  157. package/dist/lib/typeid-core.js +67 -0
  158. package/dist/lib/typeid-core.js.map +1 -0
  159. package/dist/lib/typeid-prefixes.d.ts +342 -0
  160. package/dist/lib/typeid-prefixes.d.ts.map +1 -0
  161. package/dist/lib/typeid-prefixes.js +379 -0
  162. package/dist/lib/typeid-prefixes.js.map +1 -0
  163. package/dist/lib/typeid-schemas.d.ts +206 -0
  164. package/dist/lib/typeid-schemas.d.ts.map +1 -0
  165. package/dist/lib/typeid-schemas.js +207 -0
  166. package/dist/lib/typeid-schemas.js.map +1 -0
  167. package/dist/lib/typeid-zod.d.ts +16 -0
  168. package/dist/lib/typeid-zod.d.ts.map +1 -0
  169. package/dist/lib/typeid-zod.js +29 -0
  170. package/dist/lib/typeid-zod.js.map +1 -0
  171. package/dist/lib/typeid.d.ts +2 -0
  172. package/dist/lib/typeid.d.ts.map +1 -0
  173. package/dist/lib/typeid.js +6 -0
  174. package/dist/lib/typeid.js.map +1 -0
  175. package/dist/lifecycle.d.ts +24 -0
  176. package/dist/lifecycle.d.ts.map +1 -0
  177. package/dist/lifecycle.js +30 -0
  178. package/dist/lifecycle.js.map +1 -0
  179. package/dist/links.d.ts +22 -0
  180. package/dist/links.d.ts.map +1 -0
  181. package/dist/links.js +281 -0
  182. package/dist/links.js.map +1 -0
  183. package/dist/operators.d.ts +9 -0
  184. package/dist/operators.d.ts.map +1 -0
  185. package/dist/operators.js +9 -0
  186. package/dist/operators.js.map +1 -0
  187. package/dist/outbox.d.ts +87 -0
  188. package/dist/outbox.d.ts.map +1 -0
  189. package/dist/outbox.js +245 -0
  190. package/dist/outbox.js.map +1 -0
  191. package/dist/primitives/catalog-schemas.d.ts +101 -0
  192. package/dist/primitives/catalog-schemas.d.ts.map +1 -0
  193. package/dist/primitives/catalog-schemas.js +69 -0
  194. package/dist/primitives/catalog-schemas.js.map +1 -0
  195. package/dist/primitives/catalog.d.ts +47 -0
  196. package/dist/primitives/catalog.d.ts.map +1 -0
  197. package/dist/primitives/catalog.js +94 -0
  198. package/dist/primitives/catalog.js.map +1 -0
  199. package/dist/primitives/index.d.ts +4 -0
  200. package/dist/primitives/index.d.ts.map +1 -0
  201. package/dist/primitives/index.js +4 -0
  202. package/dist/primitives/index.js.map +1 -0
  203. package/dist/primitives/offers.d.ts +224 -0
  204. package/dist/primitives/offers.d.ts.map +1 -0
  205. package/dist/primitives/offers.js +132 -0
  206. package/dist/primitives/offers.js.map +1 -0
  207. package/dist/queries/index.d.ts +18 -0
  208. package/dist/queries/index.d.ts.map +1 -0
  209. package/dist/queries/index.js +30 -0
  210. package/dist/queries/index.js.map +1 -0
  211. package/dist/runtime/index.d.ts +4 -0
  212. package/dist/runtime/index.d.ts.map +1 -0
  213. package/dist/runtime/index.js +5 -0
  214. package/dist/runtime/index.js.map +1 -0
  215. package/dist/runtime/locks.d.ts +5 -0
  216. package/dist/runtime/locks.d.ts.map +1 -0
  217. package/dist/runtime/locks.js +36 -0
  218. package/dist/runtime/locks.js.map +1 -0
  219. package/dist/schema/00_ensure_schemas.d.ts +5 -0
  220. package/dist/schema/00_ensure_schemas.d.ts.map +1 -0
  221. package/dist/schema/00_ensure_schemas.js +6 -0
  222. package/dist/schema/00_ensure_schemas.js.map +1 -0
  223. package/dist/schema/aggregate-snapshots.d.ts +97 -0
  224. package/dist/schema/aggregate-snapshots.d.ts.map +1 -0
  225. package/dist/schema/aggregate-snapshots.js +27 -0
  226. package/dist/schema/aggregate-snapshots.js.map +1 -0
  227. package/dist/schema/iam/apikey.d.ts +396 -0
  228. package/dist/schema/iam/apikey.d.ts.map +1 -0
  229. package/dist/schema/iam/apikey.js +41 -0
  230. package/dist/schema/iam/apikey.js.map +1 -0
  231. package/dist/schema/iam/auth.d.ts +1026 -0
  232. package/dist/schema/iam/auth.d.ts.map +1 -0
  233. package/dist/schema/iam/auth.js +138 -0
  234. package/dist/schema/iam/auth.js.map +1 -0
  235. package/dist/schema/iam/cloud_auth.d.ts +446 -0
  236. package/dist/schema/iam/cloud_auth.d.ts.map +1 -0
  237. package/dist/schema/iam/cloud_auth.js +46 -0
  238. package/dist/schema/iam/cloud_auth.js.map +1 -0
  239. package/dist/schema/iam/index.d.ts +8 -0
  240. package/dist/schema/iam/index.d.ts.map +1 -0
  241. package/dist/schema/iam/index.js +8 -0
  242. package/dist/schema/iam/index.js.map +1 -0
  243. package/dist/schema/iam/invitations.d.ts +173 -0
  244. package/dist/schema/iam/invitations.d.ts.map +1 -0
  245. package/dist/schema/iam/invitations.js +27 -0
  246. package/dist/schema/iam/invitations.js.map +1 -0
  247. package/dist/schema/iam/kms.d.ts +53 -0
  248. package/dist/schema/iam/kms.d.ts.map +1 -0
  249. package/dist/schema/iam/kms.js +40 -0
  250. package/dist/schema/iam/kms.js.map +1 -0
  251. package/dist/schema/iam/roles.d.ts +12 -0
  252. package/dist/schema/iam/roles.d.ts.map +1 -0
  253. package/dist/schema/iam/roles.js +12 -0
  254. package/dist/schema/iam/roles.js.map +1 -0
  255. package/dist/schema/iam/user_profiles.d.ts +442 -0
  256. package/dist/schema/iam/user_profiles.d.ts.map +1 -0
  257. package/dist/schema/iam/user_profiles.js +125 -0
  258. package/dist/schema/iam/user_profiles.js.map +1 -0
  259. package/dist/schema/index.d.ts +5 -0
  260. package/dist/schema/index.d.ts.map +1 -0
  261. package/dist/schema/index.js +5 -0
  262. package/dist/schema/index.js.map +1 -0
  263. package/dist/schema/infra/domains.d.ts +609 -0
  264. package/dist/schema/infra/domains.d.ts.map +1 -0
  265. package/dist/schema/infra/domains.js +108 -0
  266. package/dist/schema/infra/domains.js.map +1 -0
  267. package/dist/schema/infra/email_domain_records.d.ts +255 -0
  268. package/dist/schema/infra/email_domain_records.d.ts.map +1 -0
  269. package/dist/schema/infra/email_domain_records.js +65 -0
  270. package/dist/schema/infra/email_domain_records.js.map +1 -0
  271. package/dist/schema/infra/event_outbox.d.ts +232 -0
  272. package/dist/schema/infra/event_outbox.d.ts.map +1 -0
  273. package/dist/schema/infra/event_outbox.js +59 -0
  274. package/dist/schema/infra/event_outbox.js.map +1 -0
  275. package/dist/schema/infra/idempotency_keys.d.ts +186 -0
  276. package/dist/schema/infra/idempotency_keys.d.ts.map +1 -0
  277. package/dist/schema/infra/idempotency_keys.js +40 -0
  278. package/dist/schema/infra/idempotency_keys.js.map +1 -0
  279. package/dist/schema/infra/index.d.ts +9 -0
  280. package/dist/schema/infra/index.d.ts.map +1 -0
  281. package/dist/schema/infra/index.js +10 -0
  282. package/dist/schema/infra/index.js.map +1 -0
  283. package/dist/schema/infra/public_document_delivery_grants.d.ts +356 -0
  284. package/dist/schema/infra/public_document_delivery_grants.d.ts.map +1 -0
  285. package/dist/schema/infra/public_document_delivery_grants.js +36 -0
  286. package/dist/schema/infra/public_document_delivery_grants.js.map +1 -0
  287. package/dist/schema/infra/rate_limit_buckets.d.ts +138 -0
  288. package/dist/schema/infra/rate_limit_buckets.d.ts.map +1 -0
  289. package/dist/schema/infra/rate_limit_buckets.js +52 -0
  290. package/dist/schema/infra/rate_limit_buckets.js.map +1 -0
  291. package/dist/schema/infra/webhook_deliveries.d.ts +572 -0
  292. package/dist/schema/infra/webhook_deliveries.d.ts.map +1 -0
  293. package/dist/schema/infra/webhook_deliveries.js +136 -0
  294. package/dist/schema/infra/webhook_deliveries.js.map +1 -0
  295. package/dist/schema/infra/webhook_subscriptions.d.ts +284 -0
  296. package/dist/schema/infra/webhook_subscriptions.d.ts.map +1 -0
  297. package/dist/schema/infra/webhook_subscriptions.js +64 -0
  298. package/dist/schema/infra/webhook_subscriptions.js.map +1 -0
  299. package/dist/schema/infra/write_intents.d.ts +185 -0
  300. package/dist/schema/infra/write_intents.d.ts.map +1 -0
  301. package/dist/schema/infra/write_intents.js +50 -0
  302. package/dist/schema/infra/write_intents.js.map +1 -0
  303. package/dist/schema/voyant/bookings.d.ts +2 -0
  304. package/dist/schema/voyant/bookings.d.ts.map +1 -0
  305. package/dist/schema/voyant/bookings.js +2 -0
  306. package/dist/schema/voyant/bookings.js.map +1 -0
  307. package/dist/schema/voyant/finance.d.ts +2 -0
  308. package/dist/schema/voyant/finance.d.ts.map +1 -0
  309. package/dist/schema/voyant/finance.js +2 -0
  310. package/dist/schema/voyant/finance.js.map +1 -0
  311. package/dist/test-utils.d.ts +17 -0
  312. package/dist/test-utils.d.ts.map +1 -0
  313. package/dist/test-utils.js +56 -0
  314. package/dist/test-utils.js.map +1 -0
  315. package/dist/transaction-capability.d.ts +11 -0
  316. package/dist/transaction-capability.d.ts.map +1 -0
  317. package/dist/transaction-capability.js +17 -0
  318. package/dist/transaction-capability.js.map +1 -0
  319. package/dist/transaction.d.ts +31 -0
  320. package/dist/transaction.d.ts.map +1 -0
  321. package/dist/transaction.js +72 -0
  322. package/dist/transaction.js.map +1 -0
  323. package/dist/tsconfig.tsbuildinfo +1 -0
  324. package/dist/types.d.ts +10 -0
  325. package/dist/types.d.ts.map +1 -0
  326. package/dist/types.js +2 -0
  327. package/dist/types.js.map +1 -0
  328. package/dist/utils.d.ts +2 -0
  329. package/dist/utils.d.ts.map +1 -0
  330. package/dist/utils.js +19 -0
  331. package/dist/utils.js.map +1 -0
  332. package/dist/write-intents.d.ts +51 -0
  333. package/dist/write-intents.d.ts.map +1 -0
  334. package/dist/write-intents.js +95 -0
  335. package/dist/write-intents.js.map +1 -0
  336. package/package.json +306 -0
@@ -0,0 +1,442 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Seating preference enum for flights
4
+ */
5
+ export declare const seatingPreferences: import("drizzle-orm/pg-core").PgEnum<["aisle", "window", "middle", "no_preference"]>;
6
+ /**
7
+ * User Profiles
8
+ *
9
+ * The user's app profile containing:
10
+ * - Basic profile info (plain text - searchable)
11
+ * - App preferences (plain text - low risk)
12
+ * - Non-sensitive travel preferences (seatingPreference)
13
+ * - Admin flags (isSuperAdmin, isSupportUser)
14
+ *
15
+ * PK is `authUser.id` (Better Auth user ID) — NOT a TypeID.
16
+ * 1:1 with Better Auth's `user` table.
17
+ *
18
+ * Toxic-PII (passport numbers, dietary, accessibility, loyalty,
19
+ * insurance) lives on `crm.people` — that table is the canonical store
20
+ * for facts about a human, regardless of whether they ever log in.
21
+ * Auth-having storefront customers join `auth.user` → `people` via
22
+ * `(people.source = 'auth.user' AND people.sourceRef = userId)`.
23
+ */
24
+ export declare const userProfilesTable: Omit<import("drizzle-orm/pg-core").PgTableWithColumns<{
25
+ name: "user_profiles";
26
+ schema: undefined;
27
+ columns: {
28
+ id: import("drizzle-orm/pg-core").PgColumn<{
29
+ name: "id";
30
+ tableName: "user_profiles";
31
+ dataType: "string";
32
+ columnType: "PgText";
33
+ data: string;
34
+ driverParam: string;
35
+ notNull: true;
36
+ hasDefault: false;
37
+ isPrimaryKey: true;
38
+ isAutoincrement: false;
39
+ hasRuntimeDefault: false;
40
+ enumValues: [string, ...string[]];
41
+ baseColumn: never;
42
+ identity: undefined;
43
+ generated: undefined;
44
+ }, {}, {}>;
45
+ firstName: import("drizzle-orm/pg-core").PgColumn<{
46
+ name: "first_name";
47
+ tableName: "user_profiles";
48
+ dataType: "string";
49
+ columnType: "PgText";
50
+ data: string;
51
+ driverParam: string;
52
+ notNull: false;
53
+ hasDefault: false;
54
+ isPrimaryKey: false;
55
+ isAutoincrement: false;
56
+ hasRuntimeDefault: false;
57
+ enumValues: [string, ...string[]];
58
+ baseColumn: never;
59
+ identity: undefined;
60
+ generated: undefined;
61
+ }, {}, {}>;
62
+ lastName: import("drizzle-orm/pg-core").PgColumn<{
63
+ name: "last_name";
64
+ tableName: "user_profiles";
65
+ dataType: "string";
66
+ columnType: "PgText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: false;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {}>;
79
+ avatarUrl: import("drizzle-orm/pg-core").PgColumn<{
80
+ name: "avatar_url";
81
+ tableName: "user_profiles";
82
+ dataType: "string";
83
+ columnType: "PgText";
84
+ data: string;
85
+ driverParam: string;
86
+ notNull: false;
87
+ hasDefault: false;
88
+ isPrimaryKey: false;
89
+ isAutoincrement: false;
90
+ hasRuntimeDefault: false;
91
+ enumValues: [string, ...string[]];
92
+ baseColumn: never;
93
+ identity: undefined;
94
+ generated: undefined;
95
+ }, {}, {}>;
96
+ locale: import("drizzle-orm/pg-core").PgColumn<{
97
+ name: "locale";
98
+ tableName: "user_profiles";
99
+ dataType: "string";
100
+ columnType: "PgText";
101
+ data: string;
102
+ driverParam: string;
103
+ notNull: true;
104
+ hasDefault: true;
105
+ isPrimaryKey: false;
106
+ isAutoincrement: false;
107
+ hasRuntimeDefault: false;
108
+ enumValues: [string, ...string[]];
109
+ baseColumn: never;
110
+ identity: undefined;
111
+ generated: undefined;
112
+ }, {}, {}>;
113
+ timezone: import("drizzle-orm/pg-core").PgColumn<{
114
+ name: "timezone";
115
+ tableName: "user_profiles";
116
+ dataType: "string";
117
+ columnType: "PgText";
118
+ data: string;
119
+ driverParam: string;
120
+ notNull: false;
121
+ hasDefault: false;
122
+ isPrimaryKey: false;
123
+ isAutoincrement: false;
124
+ hasRuntimeDefault: false;
125
+ enumValues: [string, ...string[]];
126
+ baseColumn: never;
127
+ identity: undefined;
128
+ generated: undefined;
129
+ }, {}, {}>;
130
+ uiPrefs: import("drizzle-orm/pg-core").PgColumn<{
131
+ name: "ui_prefs";
132
+ tableName: "user_profiles";
133
+ dataType: "json";
134
+ columnType: "PgJsonb";
135
+ data: Record<string, unknown>;
136
+ driverParam: unknown;
137
+ notNull: false;
138
+ hasDefault: true;
139
+ isPrimaryKey: false;
140
+ isAutoincrement: false;
141
+ hasRuntimeDefault: false;
142
+ enumValues: undefined;
143
+ baseColumn: never;
144
+ identity: undefined;
145
+ generated: undefined;
146
+ }, {}, {
147
+ $type: Record<string, unknown>;
148
+ }>;
149
+ seatingPreference: import("drizzle-orm/pg-core").PgColumn<{
150
+ name: "seating_preference";
151
+ tableName: "user_profiles";
152
+ dataType: "string";
153
+ columnType: "PgEnumColumn";
154
+ data: "aisle" | "window" | "middle" | "no_preference";
155
+ driverParam: string;
156
+ notNull: false;
157
+ hasDefault: false;
158
+ isPrimaryKey: false;
159
+ isAutoincrement: false;
160
+ hasRuntimeDefault: false;
161
+ enumValues: ["aisle", "window", "middle", "no_preference"];
162
+ baseColumn: never;
163
+ identity: undefined;
164
+ generated: undefined;
165
+ }, {}, {}>;
166
+ isSuperAdmin: import("drizzle-orm/pg-core").PgColumn<{
167
+ name: "is_super_admin";
168
+ tableName: "user_profiles";
169
+ dataType: "boolean";
170
+ columnType: "PgBoolean";
171
+ data: boolean;
172
+ driverParam: boolean;
173
+ notNull: true;
174
+ hasDefault: true;
175
+ isPrimaryKey: false;
176
+ isAutoincrement: false;
177
+ hasRuntimeDefault: false;
178
+ enumValues: undefined;
179
+ baseColumn: never;
180
+ identity: undefined;
181
+ generated: undefined;
182
+ }, {}, {}>;
183
+ isSupportUser: import("drizzle-orm/pg-core").PgColumn<{
184
+ name: "is_support_user";
185
+ tableName: "user_profiles";
186
+ dataType: "boolean";
187
+ columnType: "PgBoolean";
188
+ data: boolean;
189
+ driverParam: boolean;
190
+ notNull: true;
191
+ hasDefault: true;
192
+ isPrimaryKey: false;
193
+ isAutoincrement: false;
194
+ hasRuntimeDefault: false;
195
+ enumValues: undefined;
196
+ baseColumn: never;
197
+ identity: undefined;
198
+ generated: undefined;
199
+ }, {}, {}>;
200
+ termsAcceptedAt: import("drizzle-orm/pg-core").PgColumn<{
201
+ name: "terms_accepted_at";
202
+ tableName: "user_profiles";
203
+ dataType: "date";
204
+ columnType: "PgTimestamp";
205
+ data: Date;
206
+ driverParam: string;
207
+ notNull: false;
208
+ hasDefault: false;
209
+ isPrimaryKey: false;
210
+ isAutoincrement: false;
211
+ hasRuntimeDefault: false;
212
+ enumValues: undefined;
213
+ baseColumn: never;
214
+ identity: undefined;
215
+ generated: undefined;
216
+ }, {}, {}>;
217
+ notificationDefaults: import("drizzle-orm/pg-core").PgColumn<{
218
+ name: "notification_defaults";
219
+ tableName: "user_profiles";
220
+ dataType: "json";
221
+ columnType: "PgJsonb";
222
+ data: Record<string, unknown>;
223
+ driverParam: unknown;
224
+ notNull: false;
225
+ hasDefault: true;
226
+ isPrimaryKey: false;
227
+ isAutoincrement: false;
228
+ hasRuntimeDefault: false;
229
+ enumValues: undefined;
230
+ baseColumn: never;
231
+ identity: undefined;
232
+ generated: undefined;
233
+ }, {}, {
234
+ $type: Record<string, unknown>;
235
+ }>;
236
+ marketingConsent: import("drizzle-orm/pg-core").PgColumn<{
237
+ name: "marketing_consent";
238
+ tableName: "user_profiles";
239
+ dataType: "boolean";
240
+ columnType: "PgBoolean";
241
+ data: boolean;
242
+ driverParam: boolean;
243
+ notNull: true;
244
+ hasDefault: true;
245
+ isPrimaryKey: false;
246
+ isAutoincrement: false;
247
+ hasRuntimeDefault: false;
248
+ enumValues: undefined;
249
+ baseColumn: never;
250
+ identity: undefined;
251
+ generated: undefined;
252
+ }, {}, {}>;
253
+ marketingConsentAt: import("drizzle-orm/pg-core").PgColumn<{
254
+ name: "marketing_consent_at";
255
+ tableName: "user_profiles";
256
+ dataType: "date";
257
+ columnType: "PgTimestamp";
258
+ data: Date;
259
+ driverParam: string;
260
+ notNull: false;
261
+ hasDefault: false;
262
+ isPrimaryKey: false;
263
+ isAutoincrement: false;
264
+ hasRuntimeDefault: false;
265
+ enumValues: undefined;
266
+ baseColumn: never;
267
+ identity: undefined;
268
+ generated: undefined;
269
+ }, {}, {}>;
270
+ marketingConsentSource: import("drizzle-orm/pg-core").PgColumn<{
271
+ name: "marketing_consent_source";
272
+ tableName: "user_profiles";
273
+ dataType: "string";
274
+ columnType: "PgText";
275
+ data: string;
276
+ driverParam: string;
277
+ notNull: false;
278
+ hasDefault: false;
279
+ isPrimaryKey: false;
280
+ isAutoincrement: false;
281
+ hasRuntimeDefault: false;
282
+ enumValues: [string, ...string[]];
283
+ baseColumn: never;
284
+ identity: undefined;
285
+ generated: undefined;
286
+ }, {}, {}>;
287
+ lastActiveAt: import("drizzle-orm/pg-core").PgColumn<{
288
+ name: "last_active_at";
289
+ tableName: "user_profiles";
290
+ dataType: "date";
291
+ columnType: "PgTimestamp";
292
+ data: Date;
293
+ driverParam: string;
294
+ notNull: false;
295
+ hasDefault: false;
296
+ isPrimaryKey: false;
297
+ isAutoincrement: false;
298
+ hasRuntimeDefault: false;
299
+ enumValues: undefined;
300
+ baseColumn: never;
301
+ identity: undefined;
302
+ generated: undefined;
303
+ }, {}, {}>;
304
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
305
+ name: "created_at";
306
+ tableName: "user_profiles";
307
+ dataType: "date";
308
+ columnType: "PgTimestamp";
309
+ data: Date;
310
+ driverParam: string;
311
+ notNull: true;
312
+ hasDefault: true;
313
+ isPrimaryKey: false;
314
+ isAutoincrement: false;
315
+ hasRuntimeDefault: false;
316
+ enumValues: undefined;
317
+ baseColumn: never;
318
+ identity: undefined;
319
+ generated: undefined;
320
+ }, {}, {}>;
321
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
322
+ name: "updated_at";
323
+ tableName: "user_profiles";
324
+ dataType: "date";
325
+ columnType: "PgTimestamp";
326
+ data: Date;
327
+ driverParam: string;
328
+ notNull: true;
329
+ hasDefault: true;
330
+ isPrimaryKey: false;
331
+ isAutoincrement: false;
332
+ hasRuntimeDefault: false;
333
+ enumValues: undefined;
334
+ baseColumn: never;
335
+ identity: undefined;
336
+ generated: undefined;
337
+ }, {}, {}>;
338
+ };
339
+ dialect: "pg";
340
+ }>, "enableRLS">;
341
+ export type InsertUserProfile = typeof userProfilesTable.$inferInsert;
342
+ export type SelectUserProfile = typeof userProfilesTable.$inferSelect;
343
+ export declare const userProfileInsertSchema: z.ZodObject<{
344
+ id: z.ZodString;
345
+ firstName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
346
+ lastName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
347
+ avatarUrl: z.ZodNullable<z.ZodOptional<z.ZodString>>;
348
+ locale: z.ZodDefault<z.ZodString>;
349
+ timezone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
350
+ uiPrefs: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
351
+ seatingPreference: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
352
+ aisle: "aisle";
353
+ window: "window";
354
+ middle: "middle";
355
+ no_preference: "no_preference";
356
+ }>>>;
357
+ isSuperAdmin: z.ZodDefault<z.ZodBoolean>;
358
+ isSupportUser: z.ZodDefault<z.ZodBoolean>;
359
+ termsAcceptedAt: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
360
+ notificationDefaults: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
361
+ marketingConsent: z.ZodDefault<z.ZodBoolean>;
362
+ marketingConsentAt: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
363
+ marketingConsentSource: z.ZodNullable<z.ZodOptional<z.ZodString>>;
364
+ lastActiveAt: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
365
+ }, z.core.$strip>;
366
+ export declare const userProfileUpdateSchema: z.ZodObject<{
367
+ locale: z.ZodOptional<z.ZodDefault<z.ZodString>>;
368
+ timezone: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
369
+ firstName: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
370
+ lastName: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
371
+ avatarUrl: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
372
+ uiPrefs: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
373
+ seatingPreference: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodEnum<{
374
+ aisle: "aisle";
375
+ window: "window";
376
+ middle: "middle";
377
+ no_preference: "no_preference";
378
+ }>>>>;
379
+ isSuperAdmin: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
380
+ isSupportUser: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
381
+ termsAcceptedAt: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodDate>>>;
382
+ notificationDefaults: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
383
+ marketingConsent: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
384
+ marketingConsentAt: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodDate>>>;
385
+ marketingConsentSource: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
386
+ lastActiveAt: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodDate>>>;
387
+ }, z.core.$strip>;
388
+ export declare const userProfileSelectSchema: z.ZodObject<{
389
+ id: z.ZodString;
390
+ firstName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
391
+ lastName: z.ZodNullable<z.ZodOptional<z.ZodString>>;
392
+ avatarUrl: z.ZodNullable<z.ZodOptional<z.ZodString>>;
393
+ locale: z.ZodDefault<z.ZodString>;
394
+ timezone: z.ZodNullable<z.ZodOptional<z.ZodString>>;
395
+ uiPrefs: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
396
+ seatingPreference: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
397
+ aisle: "aisle";
398
+ window: "window";
399
+ middle: "middle";
400
+ no_preference: "no_preference";
401
+ }>>>;
402
+ isSuperAdmin: z.ZodDefault<z.ZodBoolean>;
403
+ isSupportUser: z.ZodDefault<z.ZodBoolean>;
404
+ termsAcceptedAt: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
405
+ notificationDefaults: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
406
+ marketingConsent: z.ZodDefault<z.ZodBoolean>;
407
+ marketingConsentAt: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
408
+ marketingConsentSource: z.ZodNullable<z.ZodOptional<z.ZodString>>;
409
+ lastActiveAt: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
410
+ createdAt: z.ZodDate;
411
+ updatedAt: z.ZodDate;
412
+ }, z.core.$strip>;
413
+ export type UserProfile = z.infer<typeof userProfileSelectSchema>;
414
+ export type NewUserProfile = z.infer<typeof userProfileInsertSchema>;
415
+ export type UpdateUserProfile = z.infer<typeof userProfileUpdateSchema>;
416
+ /**
417
+ * Decrypted user profile shape — toxic-PII fields (documents, dietary,
418
+ * accessibility, loyalty, insurance) now live on `crm.people` and are
419
+ * decrypted by the CRM service rather than user_profiles.
420
+ */
421
+ export declare const decryptedUserProfileSchema: z.ZodObject<{
422
+ id: z.ZodString;
423
+ firstName: z.ZodNullable<z.ZodString>;
424
+ lastName: z.ZodNullable<z.ZodString>;
425
+ avatarUrl: z.ZodNullable<z.ZodString>;
426
+ locale: z.ZodString;
427
+ timezone: z.ZodNullable<z.ZodString>;
428
+ uiPrefs: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
429
+ seatingPreference: z.ZodNullable<z.ZodString>;
430
+ isSuperAdmin: z.ZodBoolean;
431
+ isSupportUser: z.ZodBoolean;
432
+ termsAcceptedAt: z.ZodNullable<z.ZodDate>;
433
+ notificationDefaults: z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
434
+ marketingConsent: z.ZodBoolean;
435
+ marketingConsentAt: z.ZodNullable<z.ZodDate>;
436
+ marketingConsentSource: z.ZodNullable<z.ZodString>;
437
+ lastActiveAt: z.ZodNullable<z.ZodDate>;
438
+ createdAt: z.ZodDate;
439
+ updatedAt: z.ZodDate;
440
+ }, z.core.$strip>;
441
+ export type DecryptedUserProfile = z.infer<typeof decryptedUserProfileSchema>;
442
+ //# sourceMappingURL=user_profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user_profiles.d.ts","sourceRoot":"","sources":["../../../src/schema/iam/user_profiles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB;;GAEG;AACH,eAAO,MAAM,kBAAkB,sFAK7B,CAAA;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA4DjB,CAAA;AAEb,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA;AACrE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,YAAY,CAAA;AAqBrE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;iBAAwB,CAAA;AAC5D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;iBAAqD,CAAA;AACzF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;iBAGlC,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AACpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;AAEvE;;;;GAIG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;iBAmBrC,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA"}
@@ -0,0 +1,125 @@
1
+ import { boolean, index, jsonb, pgEnum, pgTable, text, timestamp } from "drizzle-orm/pg-core";
2
+ import { z } from "zod";
3
+ import { authUser } from "./auth.js";
4
+ /**
5
+ * Seating preference enum for flights
6
+ */
7
+ export const seatingPreferences = pgEnum("seating_preference", [
8
+ "aisle",
9
+ "window",
10
+ "middle",
11
+ "no_preference",
12
+ ]);
13
+ /**
14
+ * User Profiles
15
+ *
16
+ * The user's app profile containing:
17
+ * - Basic profile info (plain text - searchable)
18
+ * - App preferences (plain text - low risk)
19
+ * - Non-sensitive travel preferences (seatingPreference)
20
+ * - Admin flags (isSuperAdmin, isSupportUser)
21
+ *
22
+ * PK is `authUser.id` (Better Auth user ID) — NOT a TypeID.
23
+ * 1:1 with Better Auth's `user` table.
24
+ *
25
+ * Toxic-PII (passport numbers, dietary, accessibility, loyalty,
26
+ * insurance) lives on `crm.people` — that table is the canonical store
27
+ * for facts about a human, regardless of whether they ever log in.
28
+ * Auth-having storefront customers join `auth.user` → `people` via
29
+ * `(people.source = 'auth.user' AND people.sourceRef = userId)`.
30
+ */
31
+ export const userProfilesTable = pgTable("user_profiles", {
32
+ // PK = Better Auth user.id (text, not TypeID)
33
+ id: text("id")
34
+ .primaryKey()
35
+ .references(() => authUser.id, { onDelete: "cascade" }),
36
+ // ============================================
37
+ // PLAIN TEXT FIELDS (searchable, TDE protected)
38
+ // ============================================
39
+ // Basic profile
40
+ firstName: text("first_name"),
41
+ lastName: text("last_name"),
42
+ avatarUrl: text("avatar_url"),
43
+ // App preferences (low risk)
44
+ locale: text("locale").notNull().default("en"),
45
+ timezone: text("timezone"),
46
+ uiPrefs: jsonb("ui_prefs").$type().default({}),
47
+ // Non-sensitive travel preferences
48
+ seatingPreference: seatingPreferences("seating_preference"),
49
+ // ============================================
50
+ // ADMIN FLAGS (moved from identities)
51
+ // ============================================
52
+ /** Platform-level admin flag */
53
+ isSuperAdmin: boolean("is_super_admin").notNull().default(false),
54
+ /** Support user flag - don't count towards seat limits */
55
+ isSupportUser: boolean("is_support_user").notNull().default(false),
56
+ // ============================================
57
+ // USER STATE
58
+ // ============================================
59
+ termsAcceptedAt: timestamp("terms_accepted_at", { withTimezone: true }),
60
+ notificationDefaults: jsonb("notification_defaults")
61
+ .$type()
62
+ .default({}),
63
+ // ============================================
64
+ // CONSENT & AUDIT
65
+ // ============================================
66
+ marketingConsent: boolean("marketing_consent").notNull().default(false),
67
+ marketingConsentAt: timestamp("marketing_consent_at", { withTimezone: true }),
68
+ marketingConsentSource: text("marketing_consent_source"),
69
+ lastActiveAt: timestamp("last_active_at", { withTimezone: true }),
70
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
71
+ updatedAt: timestamp("updated_at", { withTimezone: true }).notNull().defaultNow(),
72
+ }, (t) => [
73
+ // Fast lookup by name for search
74
+ index("idx_user_profiles_name").on(t.firstName, t.lastName),
75
+ ]).enableRLS();
76
+ const userProfileCoreSchema = z.object({
77
+ id: z.string().min(1),
78
+ firstName: z.string().max(200).optional().nullable(),
79
+ lastName: z.string().max(200).optional().nullable(),
80
+ avatarUrl: z.string().url().optional().nullable(),
81
+ locale: z.string().max(10).default("en"),
82
+ timezone: z.string().max(64).optional().nullable(),
83
+ uiPrefs: z.record(z.string(), z.unknown()).optional().nullable(),
84
+ seatingPreference: z.enum(["aisle", "window", "middle", "no_preference"]).optional().nullable(),
85
+ isSuperAdmin: z.boolean().default(false),
86
+ isSupportUser: z.boolean().default(false),
87
+ termsAcceptedAt: z.date().optional().nullable(),
88
+ notificationDefaults: z.record(z.string(), z.unknown()).optional().nullable(),
89
+ marketingConsent: z.boolean().default(false),
90
+ marketingConsentAt: z.date().optional().nullable(),
91
+ marketingConsentSource: z.string().max(255).optional().nullable(),
92
+ lastActiveAt: z.date().optional().nullable(),
93
+ });
94
+ export const userProfileInsertSchema = userProfileCoreSchema;
95
+ export const userProfileUpdateSchema = userProfileCoreSchema.partial().omit({ id: true });
96
+ export const userProfileSelectSchema = userProfileCoreSchema.extend({
97
+ createdAt: z.date(),
98
+ updatedAt: z.date(),
99
+ });
100
+ /**
101
+ * Decrypted user profile shape — toxic-PII fields (documents, dietary,
102
+ * accessibility, loyalty, insurance) now live on `crm.people` and are
103
+ * decrypted by the CRM service rather than user_profiles.
104
+ */
105
+ export const decryptedUserProfileSchema = z.object({
106
+ id: z.string(),
107
+ firstName: z.string().nullable(),
108
+ lastName: z.string().nullable(),
109
+ avatarUrl: z.string().nullable(),
110
+ locale: z.string(),
111
+ timezone: z.string().nullable(),
112
+ uiPrefs: z.record(z.string(), z.unknown()).nullable(),
113
+ seatingPreference: z.string().nullable(),
114
+ isSuperAdmin: z.boolean(),
115
+ isSupportUser: z.boolean(),
116
+ termsAcceptedAt: z.date().nullable(),
117
+ notificationDefaults: z.record(z.string(), z.unknown()).nullable(),
118
+ marketingConsent: z.boolean(),
119
+ marketingConsentAt: z.date().nullable(),
120
+ marketingConsentSource: z.string().nullable(),
121
+ lastActiveAt: z.date().nullable(),
122
+ createdAt: z.date(),
123
+ updatedAt: z.date(),
124
+ });
125
+ //# sourceMappingURL=user_profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user_profiles.js","sourceRoot":"","sources":["../../../src/schema/iam/user_profiles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from "./00_ensure_schemas.js";
2
+ export * from "./aggregate-snapshots.js";
3
+ export * from "./iam/index.js";
4
+ export * from "./infra/index.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from "./00_ensure_schemas.js";
2
+ export * from "./aggregate-snapshots.js";
3
+ export * from "./iam/index.js";
4
+ export * from "./infra/index.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,0BAA0B,CAAA;AACxC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA"}