@voyant-travel/catalog 0.117.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 (243) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +190 -0
  3. package/dist/adapter/booking-forwarding.d.ts +2 -0
  4. package/dist/adapter/booking-forwarding.d.ts.map +1 -0
  5. package/dist/adapter/booking-forwarding.js +1 -0
  6. package/dist/adapter/channel-push-contracts.d.ts +2 -0
  7. package/dist/adapter/channel-push-contracts.d.ts.map +1 -0
  8. package/dist/adapter/channel-push-contracts.js +1 -0
  9. package/dist/adapter/contract.d.ts +2 -0
  10. package/dist/adapter/contract.d.ts.map +1 -0
  11. package/dist/adapter/contract.js +1 -0
  12. package/dist/adapter/contract.test.d.ts +2 -0
  13. package/dist/adapter/contract.test.d.ts.map +1 -0
  14. package/dist/adapter/contract.test.js +390 -0
  15. package/dist/adapter/provider-contracts.d.ts +2 -0
  16. package/dist/adapter/provider-contracts.d.ts.map +1 -0
  17. package/dist/adapter/provider-contracts.js +1 -0
  18. package/dist/adapter/provider-contracts.test.d.ts +2 -0
  19. package/dist/adapter/provider-contracts.test.d.ts.map +1 -0
  20. package/dist/adapter/provider-contracts.test.js +206 -0
  21. package/dist/adapter/schemas.d.ts +2 -0
  22. package/dist/adapter/schemas.d.ts.map +1 -0
  23. package/dist/adapter/schemas.js +1 -0
  24. package/dist/adapter/schemas.test.d.ts +2 -0
  25. package/dist/adapter/schemas.test.d.ts.map +1 -0
  26. package/dist/adapter/schemas.test.js +344 -0
  27. package/dist/booking-engine/book.d.ts +124 -0
  28. package/dist/booking-engine/book.d.ts.map +1 -0
  29. package/dist/booking-engine/book.js +311 -0
  30. package/dist/booking-engine/cancel.d.ts +40 -0
  31. package/dist/booking-engine/cancel.d.ts.map +1 -0
  32. package/dist/booking-engine/cancel.js +56 -0
  33. package/dist/booking-engine/checkout-finalize.d.ts +146 -0
  34. package/dist/booking-engine/checkout-finalize.d.ts.map +1 -0
  35. package/dist/booking-engine/checkout-finalize.js +132 -0
  36. package/dist/booking-engine/contracts.d.ts +9 -0
  37. package/dist/booking-engine/contracts.d.ts.map +1 -0
  38. package/dist/booking-engine/contracts.js +8 -0
  39. package/dist/booking-engine/contracts.test.d.ts +2 -0
  40. package/dist/booking-engine/contracts.test.d.ts.map +1 -0
  41. package/dist/booking-engine/contracts.test.js +116 -0
  42. package/dist/booking-engine/draft-shape.d.ts +10 -0
  43. package/dist/booking-engine/draft-shape.d.ts.map +1 -0
  44. package/dist/booking-engine/draft-shape.js +9 -0
  45. package/dist/booking-engine/draft-shape.test.d.ts +2 -0
  46. package/dist/booking-engine/draft-shape.test.d.ts.map +1 -0
  47. package/dist/booking-engine/draft-shape.test.js +74 -0
  48. package/dist/booking-engine/drafts-schema.d.ts +302 -0
  49. package/dist/booking-engine/drafts-schema.d.ts.map +1 -0
  50. package/dist/booking-engine/drafts-schema.js +53 -0
  51. package/dist/booking-engine/drafts-service.d.ts +41 -0
  52. package/dist/booking-engine/drafts-service.d.ts.map +1 -0
  53. package/dist/booking-engine/drafts-service.js +108 -0
  54. package/dist/booking-engine/errors.d.ts +81 -0
  55. package/dist/booking-engine/errors.d.ts.map +1 -0
  56. package/dist/booking-engine/errors.js +113 -0
  57. package/dist/booking-engine/index.d.ts +36 -0
  58. package/dist/booking-engine/index.d.ts.map +1 -0
  59. package/dist/booking-engine/index.js +34 -0
  60. package/dist/booking-engine/orders.d.ts +41 -0
  61. package/dist/booking-engine/orders.d.ts.map +1 -0
  62. package/dist/booking-engine/orders.js +49 -0
  63. package/dist/booking-engine/owned-handler.d.ts +166 -0
  64. package/dist/booking-engine/owned-handler.d.ts.map +1 -0
  65. package/dist/booking-engine/owned-handler.js +50 -0
  66. package/dist/booking-engine/owned-handler.test.d.ts +2 -0
  67. package/dist/booking-engine/owned-handler.test.d.ts.map +1 -0
  68. package/dist/booking-engine/owned-handler.test.js +63 -0
  69. package/dist/booking-engine/promotions-contract.d.ts +8 -0
  70. package/dist/booking-engine/promotions-contract.d.ts.map +1 -0
  71. package/dist/booking-engine/promotions-contract.js +7 -0
  72. package/dist/booking-engine/quote-enricher.test.d.ts +12 -0
  73. package/dist/booking-engine/quote-enricher.test.d.ts.map +1 -0
  74. package/dist/booking-engine/quote-enricher.test.js +138 -0
  75. package/dist/booking-engine/quote.d.ts +163 -0
  76. package/dist/booking-engine/quote.d.ts.map +1 -0
  77. package/dist/booking-engine/quote.js +259 -0
  78. package/dist/booking-engine/registry.d.ts +85 -0
  79. package/dist/booking-engine/registry.d.ts.map +1 -0
  80. package/dist/booking-engine/registry.js +118 -0
  81. package/dist/booking-engine/registry.test.d.ts +2 -0
  82. package/dist/booking-engine/registry.test.d.ts.map +1 -0
  83. package/dist/booking-engine/registry.test.js +132 -0
  84. package/dist/booking-engine/routes-contracts.d.ts +169 -0
  85. package/dist/booking-engine/routes-contracts.d.ts.map +1 -0
  86. package/dist/booking-engine/routes-contracts.js +63 -0
  87. package/dist/booking-engine/routes.d.ts +7 -0
  88. package/dist/booking-engine/routes.d.ts.map +1 -0
  89. package/dist/booking-engine/routes.js +443 -0
  90. package/dist/booking-engine/routes.test.d.ts +2 -0
  91. package/dist/booking-engine/routes.test.d.ts.map +1 -0
  92. package/dist/booking-engine/routes.test.js +304 -0
  93. package/dist/booking-engine/schema.d.ts +455 -0
  94. package/dist/booking-engine/schema.d.ts.map +1 -0
  95. package/dist/booking-engine/schema.js +75 -0
  96. package/dist/booking-engine/snapshot-content.d.ts +120 -0
  97. package/dist/booking-engine/snapshot-content.d.ts.map +1 -0
  98. package/dist/booking-engine/snapshot-content.js +110 -0
  99. package/dist/booking-engine/snapshot-content.test.d.ts +2 -0
  100. package/dist/booking-engine/snapshot-content.test.d.ts.map +1 -0
  101. package/dist/booking-engine/snapshot-content.test.js +213 -0
  102. package/dist/booking-engine/sync.d.ts +136 -0
  103. package/dist/booking-engine/sync.d.ts.map +1 -0
  104. package/dist/booking-engine/sync.js +177 -0
  105. package/dist/booking-engine/sync.test.d.ts +2 -0
  106. package/dist/booking-engine/sync.test.d.ts.map +1 -0
  107. package/dist/booking-engine/sync.test.js +377 -0
  108. package/dist/contract.d.ts +2 -0
  109. package/dist/contract.d.ts.map +1 -0
  110. package/dist/contract.js +1 -0
  111. package/dist/contract.test.d.ts +2 -0
  112. package/dist/contract.test.d.ts.map +1 -0
  113. package/dist/contract.test.js +107 -0
  114. package/dist/drift/events.d.ts +2 -0
  115. package/dist/drift/events.d.ts.map +1 -0
  116. package/dist/drift/events.js +1 -0
  117. package/dist/drift/events.test.d.ts +2 -0
  118. package/dist/drift/events.test.d.ts.map +1 -0
  119. package/dist/drift/events.test.js +100 -0
  120. package/dist/embeddings/contract.d.ts +85 -0
  121. package/dist/embeddings/contract.d.ts.map +1 -0
  122. package/dist/embeddings/contract.js +42 -0
  123. package/dist/embeddings/contract.test.d.ts +2 -0
  124. package/dist/embeddings/contract.test.d.ts.map +1 -0
  125. package/dist/embeddings/contract.test.js +30 -0
  126. package/dist/embeddings/gemini.d.ts +110 -0
  127. package/dist/embeddings/gemini.d.ts.map +1 -0
  128. package/dist/embeddings/gemini.js +118 -0
  129. package/dist/embeddings/gemini.test.d.ts +2 -0
  130. package/dist/embeddings/gemini.test.d.ts.map +1 -0
  131. package/dist/embeddings/gemini.test.js +132 -0
  132. package/dist/embeddings/model-registry.d.ts +62 -0
  133. package/dist/embeddings/model-registry.d.ts.map +1 -0
  134. package/dist/embeddings/model-registry.js +78 -0
  135. package/dist/embeddings/model-registry.test.d.ts +2 -0
  136. package/dist/embeddings/model-registry.test.d.ts.map +1 -0
  137. package/dist/embeddings/model-registry.test.js +81 -0
  138. package/dist/embeddings/openai.d.ts +81 -0
  139. package/dist/embeddings/openai.d.ts.map +1 -0
  140. package/dist/embeddings/openai.js +123 -0
  141. package/dist/embeddings/openai.test.d.ts +2 -0
  142. package/dist/embeddings/openai.test.d.ts.map +1 -0
  143. package/dist/embeddings/openai.test.js +164 -0
  144. package/dist/events/taxonomy.d.ts +158 -0
  145. package/dist/events/taxonomy.d.ts.map +1 -0
  146. package/dist/events/taxonomy.js +99 -0
  147. package/dist/events/taxonomy.test.d.ts +2 -0
  148. package/dist/events/taxonomy.test.d.ts.map +1 -0
  149. package/dist/events/taxonomy.test.js +48 -0
  150. package/dist/index.d.ts +27 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js +39 -0
  153. package/dist/indexer/contract.d.ts +203 -0
  154. package/dist/indexer/contract.d.ts.map +1 -0
  155. package/dist/indexer/contract.js +16 -0
  156. package/dist/indexer/typesense-search-query.d.ts +31 -0
  157. package/dist/indexer/typesense-search-query.d.ts.map +1 -0
  158. package/dist/indexer/typesense-search-query.js +185 -0
  159. package/dist/indexer/typesense.d.ts +105 -0
  160. package/dist/indexer/typesense.d.ts.map +1 -0
  161. package/dist/indexer/typesense.js +394 -0
  162. package/dist/indexer/typesense.test.d.ts +2 -0
  163. package/dist/indexer/typesense.test.d.ts.map +1 -0
  164. package/dist/indexer/typesense.test.js +253 -0
  165. package/dist/overlay/resolver.d.ts +101 -0
  166. package/dist/overlay/resolver.d.ts.map +1 -0
  167. package/dist/overlay/resolver.js +167 -0
  168. package/dist/overlay/resolver.test.d.ts +2 -0
  169. package/dist/overlay/resolver.test.d.ts.map +1 -0
  170. package/dist/overlay/resolver.test.js +179 -0
  171. package/dist/overlay/schema.d.ts +266 -0
  172. package/dist/overlay/schema.d.ts.map +1 -0
  173. package/dist/overlay/schema.js +71 -0
  174. package/dist/provenance.d.ts +2 -0
  175. package/dist/provenance.d.ts.map +1 -0
  176. package/dist/provenance.js +1 -0
  177. package/dist/schema-sourced-entries.d.ts +344 -0
  178. package/dist/schema-sourced-entries.d.ts.map +1 -0
  179. package/dist/schema-sourced-entries.js +75 -0
  180. package/dist/schema.d.ts +21 -0
  181. package/dist/schema.d.ts.map +1 -0
  182. package/dist/schema.js +20 -0
  183. package/dist/search/federate.d.ts +58 -0
  184. package/dist/search/federate.d.ts.map +1 -0
  185. package/dist/search/federate.js +103 -0
  186. package/dist/search/federate.test.d.ts +2 -0
  187. package/dist/search/federate.test.d.ts.map +1 -0
  188. package/dist/search/federate.test.js +146 -0
  189. package/dist/search/rerank.d.ts +77 -0
  190. package/dist/search/rerank.d.ts.map +1 -0
  191. package/dist/search/rerank.js +68 -0
  192. package/dist/search/rerank.test.d.ts +2 -0
  193. package/dist/search/rerank.test.d.ts.map +1 -0
  194. package/dist/search/rerank.test.js +60 -0
  195. package/dist/search/routes.d.ts +144 -0
  196. package/dist/search/routes.d.ts.map +1 -0
  197. package/dist/search/routes.js +288 -0
  198. package/dist/search/routes.test.d.ts +2 -0
  199. package/dist/search/routes.test.d.ts.map +1 -0
  200. package/dist/search/routes.test.js +322 -0
  201. package/dist/search/semantic.d.ts +63 -0
  202. package/dist/search/semantic.d.ts.map +1 -0
  203. package/dist/search/semantic.js +75 -0
  204. package/dist/search/semantic.test.d.ts +2 -0
  205. package/dist/search/semantic.test.d.ts.map +1 -0
  206. package/dist/search/semantic.test.js +143 -0
  207. package/dist/services/build-indexer-document.test.d.ts +2 -0
  208. package/dist/services/build-indexer-document.test.d.ts.map +1 -0
  209. package/dist/services/build-indexer-document.test.js +102 -0
  210. package/dist/services/content-service.d.ts +125 -0
  211. package/dist/services/content-service.d.ts.map +1 -0
  212. package/dist/services/content-service.js +139 -0
  213. package/dist/services/content-service.test.d.ts +2 -0
  214. package/dist/services/content-service.test.d.ts.map +1 -0
  215. package/dist/services/content-service.test.js +322 -0
  216. package/dist/services/indexer-service.d.ts +109 -0
  217. package/dist/services/indexer-service.d.ts.map +1 -0
  218. package/dist/services/indexer-service.js +123 -0
  219. package/dist/services/indexer-service.test.d.ts +2 -0
  220. package/dist/services/indexer-service.test.d.ts.map +1 -0
  221. package/dist/services/indexer-service.test.js +176 -0
  222. package/dist/services/overlay-service.d.ts +108 -0
  223. package/dist/services/overlay-service.d.ts.map +1 -0
  224. package/dist/services/overlay-service.js +211 -0
  225. package/dist/services/overlay-service.test.d.ts +2 -0
  226. package/dist/services/overlay-service.test.d.ts.map +1 -0
  227. package/dist/services/overlay-service.test.js +79 -0
  228. package/dist/services/snapshot-builder.test.d.ts +2 -0
  229. package/dist/services/snapshot-builder.test.d.ts.map +1 -0
  230. package/dist/services/snapshot-builder.test.js +93 -0
  231. package/dist/services/snapshot-service.d.ts +78 -0
  232. package/dist/services/snapshot-service.d.ts.map +1 -0
  233. package/dist/services/snapshot-service.js +165 -0
  234. package/dist/services/sourced-entry-service.d.ts +142 -0
  235. package/dist/services/sourced-entry-service.d.ts.map +1 -0
  236. package/dist/services/sourced-entry-service.js +203 -0
  237. package/dist/services/sourced-entry-service.test.d.ts +10 -0
  238. package/dist/services/sourced-entry-service.test.d.ts.map +1 -0
  239. package/dist/services/sourced-entry-service.test.js +66 -0
  240. package/dist/snapshot/schema.d.ts +362 -0
  241. package/dist/snapshot/schema.d.ts.map +1 -0
  242. package/dist/snapshot/schema.js +102 -0
  243. package/package.json +210 -0
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Booking snapshot graph — immutable frozen views of CatalogEntries captured
3
+ * at booking commit time.
4
+ *
5
+ * One booking can produce multiple snapshot rows (one per participating
6
+ * CatalogEntry — a TUI package booking captures the package, the referenced
7
+ * hotel, each selected excursion, the chosen departure, the selected flight).
8
+ * Snapshots are never mutated and are preserved through source disconnection.
9
+ *
10
+ * See `docs/architecture/catalog-architecture.md` §5.3 for the full design.
11
+ */
12
+ import { typeId } from "@voyant-travel/db/lib/typeid-column";
13
+ import { sql } from "drizzle-orm";
14
+ import { jsonb, numeric, pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core";
15
+ /**
16
+ * `booking_catalog_snapshot` — frozen view of a CatalogEntry captured at
17
+ * booking commit. One booking may produce many snapshot rows (one per
18
+ * participating CatalogEntry).
19
+ */
20
+ export const bookingCatalogSnapshotTable = pgTable("booking_catalog_snapshot", {
21
+ id: typeId("booking_catalog_snapshot"),
22
+ // Booking the snapshot belongs to. Plain text reference (no FK) to
23
+ // preserve the cross-module decoupling rule (see schema-discipline.md).
24
+ booking_id: text("booking_id").notNull(),
25
+ // Which CatalogEntry this snapshot freezes.
26
+ entity_module: text("entity_module").notNull(),
27
+ entity_id: text("entity_id").notNull(),
28
+ // Source pointer — durable callback handle for post-book operations
29
+ // (modify, cancel, status sync, refund). The snapshot is audit truth;
30
+ // the source pointer is what you call back to.
31
+ source_kind: text("source_kind").notNull(),
32
+ source_provider: text("source_provider"),
33
+ source_connection_id: text("source_connection_id"),
34
+ source_ref: text("source_ref"),
35
+ // Frozen resolved view of the entity at booking time. Includes overlay
36
+ // values applied for the booking's (locale, audience, market). Opaque
37
+ // JSONB; finance queries the structured columns below instead.
38
+ frozen_payload: jsonb("frozen_payload").notNull(),
39
+ // The overlay values that were live at capture time. Audit needs this to
40
+ // reconstruct exactly what the customer saw — distinct from
41
+ // `frozen_payload` which is the resolved view, not the override values.
42
+ overlay_state_at_capture: jsonb("overlay_state_at_capture"),
43
+ // Structured pricing columns alongside the JSONB blob. Finance queries
44
+ // these directly without parsing. `pricing_basis_currency` denormalized
45
+ // to a separate column for indexed queries.
46
+ pricing_base_amount: numeric("pricing_base_amount", { precision: 18, scale: 4 }),
47
+ pricing_taxes: numeric("pricing_taxes", { precision: 18, scale: 4 }),
48
+ pricing_fees: numeric("pricing_fees", { precision: 18, scale: 4 }),
49
+ pricing_surcharges: numeric("pricing_surcharges", { precision: 18, scale: 4 }),
50
+ pricing_currency: text("pricing_currency"),
51
+ pricing_breakdown: jsonb("pricing_breakdown").$type(),
52
+ /**
53
+ * Frozen copy of the offers that applied to the source quote.
54
+ * Mirrors `catalog_quotes.pricing_applied_offers` and survives
55
+ * source-offer mutation / deletion so the audit row reflects what
56
+ * the customer was shown at booking time.
57
+ *
58
+ * Read path: `readPricingBasis` hydrates this onto
59
+ * `PricingBasis.appliedOffers`. The redemption subscriber reads
60
+ * from `catalog_quotes` (not here) to avoid an ordering race with
61
+ * the snapshot capture; this column is for long-term audit only.
62
+ *
63
+ * Per `docs/architecture/promotions-architecture.md` §7.1.3.
64
+ */
65
+ pricing_applied_offers: jsonb("pricing_applied_offers").$type(),
66
+ /**
67
+ * Caller-supplied idempotency key for the commit. When set, a
68
+ * second `bookEntity` call with the same key returns this row's
69
+ * booking instead of creating a new one. Per
70
+ * booking-journey-architecture §12.6.
71
+ */
72
+ idempotency_key: text("idempotency_key"),
73
+ captured_at: timestamp("captured_at", { withTimezone: true }).notNull().defaultNow(),
74
+ }, (table) => [
75
+ // A booking captures at most one snapshot per (entity_module, entity_id)
76
+ // pair — multiple captures of the same entity inside one booking would be
77
+ // a logic bug.
78
+ uniqueIndex("booking_catalog_snapshot_booking_entity_uniq").on(table.booking_id, table.entity_module, table.entity_id),
79
+ // Partial unique on idempotency_key — only enforced when set.
80
+ uniqueIndex("booking_catalog_snapshot_idempotency_uniq")
81
+ .on(table.idempotency_key)
82
+ .where(sql `idempotency_key is not null`),
83
+ ]);
84
+ /**
85
+ * Helper to compose a `PricingBasis` from the structured columns of a
86
+ * snapshot row. Returns `null` if the snapshot has no pricing columns set
87
+ * (volatile-live fields without `on-quote` / `on-book` snapshot mode).
88
+ */
89
+ export function readPricingBasis(row) {
90
+ if (row.pricing_base_amount == null || row.pricing_currency == null) {
91
+ return null;
92
+ }
93
+ return {
94
+ base_amount: Number(row.pricing_base_amount),
95
+ taxes: row.pricing_taxes != null ? Number(row.pricing_taxes) : 0,
96
+ fees: row.pricing_fees != null ? Number(row.pricing_fees) : 0,
97
+ surcharges: row.pricing_surcharges != null ? Number(row.pricing_surcharges) : 0,
98
+ currency: row.pricing_currency,
99
+ breakdown: row.pricing_breakdown ?? undefined,
100
+ appliedOffers: row.pricing_applied_offers ?? undefined,
101
+ };
102
+ }
package/package.json ADDED
@@ -0,0 +1,210 @@
1
+ {
2
+ "name": "@voyant-travel/catalog",
3
+ "version": "0.117.2",
4
+ "license": "Apache-2.0",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./schema": {
13
+ "types": "./dist/schema.d.ts",
14
+ "import": "./dist/schema.js",
15
+ "default": "./dist/schema.js"
16
+ },
17
+ "./schema-sourced-entries": {
18
+ "types": "./dist/schema-sourced-entries.d.ts",
19
+ "import": "./dist/schema-sourced-entries.js",
20
+ "default": "./dist/schema-sourced-entries.js"
21
+ },
22
+ "./contract": {
23
+ "types": "./dist/contract.d.ts",
24
+ "import": "./dist/contract.js",
25
+ "default": "./dist/contract.js"
26
+ },
27
+ "./provenance": {
28
+ "types": "./dist/provenance.d.ts",
29
+ "import": "./dist/provenance.js",
30
+ "default": "./dist/provenance.js"
31
+ },
32
+ "./overlay/schema": {
33
+ "types": "./dist/overlay/schema.d.ts",
34
+ "import": "./dist/overlay/schema.js",
35
+ "default": "./dist/overlay/schema.js"
36
+ },
37
+ "./overlay/resolver": {
38
+ "types": "./dist/overlay/resolver.d.ts",
39
+ "import": "./dist/overlay/resolver.js",
40
+ "default": "./dist/overlay/resolver.js"
41
+ },
42
+ "./snapshot/schema": {
43
+ "types": "./dist/snapshot/schema.d.ts",
44
+ "import": "./dist/snapshot/schema.js",
45
+ "default": "./dist/snapshot/schema.js"
46
+ },
47
+ "./indexer/contract": {
48
+ "types": "./dist/indexer/contract.d.ts",
49
+ "import": "./dist/indexer/contract.js",
50
+ "default": "./dist/indexer/contract.js"
51
+ },
52
+ "./indexer/typesense": {
53
+ "types": "./dist/indexer/typesense.d.ts",
54
+ "import": "./dist/indexer/typesense.js",
55
+ "default": "./dist/indexer/typesense.js"
56
+ },
57
+ "./search/routes": {
58
+ "types": "./dist/search/routes.d.ts",
59
+ "import": "./dist/search/routes.js",
60
+ "default": "./dist/search/routes.js"
61
+ },
62
+ "./search/rerank": {
63
+ "types": "./dist/search/rerank.d.ts",
64
+ "import": "./dist/search/rerank.js",
65
+ "default": "./dist/search/rerank.js"
66
+ },
67
+ "./search/semantic": {
68
+ "types": "./dist/search/semantic.d.ts",
69
+ "import": "./dist/search/semantic.js",
70
+ "default": "./dist/search/semantic.js"
71
+ },
72
+ "./search/federate": {
73
+ "types": "./dist/search/federate.d.ts",
74
+ "import": "./dist/search/federate.js",
75
+ "default": "./dist/search/federate.js"
76
+ },
77
+ "./embeddings/contract": {
78
+ "types": "./dist/embeddings/contract.d.ts",
79
+ "import": "./dist/embeddings/contract.js",
80
+ "default": "./dist/embeddings/contract.js"
81
+ },
82
+ "./embeddings/openai": {
83
+ "types": "./dist/embeddings/openai.d.ts",
84
+ "import": "./dist/embeddings/openai.js",
85
+ "default": "./dist/embeddings/openai.js"
86
+ },
87
+ "./embeddings/gemini": {
88
+ "types": "./dist/embeddings/gemini.d.ts",
89
+ "import": "./dist/embeddings/gemini.js",
90
+ "default": "./dist/embeddings/gemini.js"
91
+ },
92
+ "./embeddings/model-registry": {
93
+ "types": "./dist/embeddings/model-registry.d.ts",
94
+ "import": "./dist/embeddings/model-registry.js",
95
+ "default": "./dist/embeddings/model-registry.js"
96
+ },
97
+ "./drift/events": {
98
+ "types": "./dist/drift/events.d.ts",
99
+ "import": "./dist/drift/events.js",
100
+ "default": "./dist/drift/events.js"
101
+ },
102
+ "./events/taxonomy": {
103
+ "types": "./dist/events/taxonomy.d.ts",
104
+ "import": "./dist/events/taxonomy.js",
105
+ "default": "./dist/events/taxonomy.js"
106
+ },
107
+ "./adapter/contract": {
108
+ "types": "./dist/adapter/contract.d.ts",
109
+ "import": "./dist/adapter/contract.js",
110
+ "default": "./dist/adapter/contract.js"
111
+ },
112
+ "./adapter/schemas": {
113
+ "types": "./dist/adapter/schemas.d.ts",
114
+ "import": "./dist/adapter/schemas.js",
115
+ "default": "./dist/adapter/schemas.js"
116
+ },
117
+ "./services/overlay": {
118
+ "types": "./dist/services/overlay-service.d.ts",
119
+ "import": "./dist/services/overlay-service.js",
120
+ "default": "./dist/services/overlay-service.js"
121
+ },
122
+ "./services/snapshot": {
123
+ "types": "./dist/services/snapshot-service.d.ts",
124
+ "import": "./dist/services/snapshot-service.js",
125
+ "default": "./dist/services/snapshot-service.js"
126
+ },
127
+ "./services/indexer": {
128
+ "types": "./dist/services/indexer-service.d.ts",
129
+ "import": "./dist/services/indexer-service.js",
130
+ "default": "./dist/services/indexer-service.js"
131
+ },
132
+ "./services/sourced-entry": {
133
+ "types": "./dist/services/sourced-entry-service.d.ts",
134
+ "import": "./dist/services/sourced-entry-service.js",
135
+ "default": "./dist/services/sourced-entry-service.js"
136
+ },
137
+ "./services/content": {
138
+ "types": "./dist/services/content-service.d.ts",
139
+ "import": "./dist/services/content-service.js",
140
+ "default": "./dist/services/content-service.js"
141
+ },
142
+ "./booking-engine": {
143
+ "types": "./dist/booking-engine/index.d.ts",
144
+ "import": "./dist/booking-engine/index.js",
145
+ "default": "./dist/booking-engine/index.js"
146
+ },
147
+ "./booking-engine/schema": {
148
+ "types": "./dist/booking-engine/schema.d.ts",
149
+ "import": "./dist/booking-engine/schema.js",
150
+ "default": "./dist/booking-engine/schema.js"
151
+ },
152
+ "./booking-engine/draft-shape": {
153
+ "types": "./dist/booking-engine/draft-shape.d.ts",
154
+ "import": "./dist/booking-engine/draft-shape.js",
155
+ "default": "./dist/booking-engine/draft-shape.js"
156
+ },
157
+ "./booking-engine/contracts": {
158
+ "types": "./dist/booking-engine/contracts.d.ts",
159
+ "import": "./dist/booking-engine/contracts.js",
160
+ "default": "./dist/booking-engine/contracts.js"
161
+ },
162
+ "./booking-engine/drafts-schema": {
163
+ "types": "./dist/booking-engine/drafts-schema.d.ts",
164
+ "import": "./dist/booking-engine/drafts-schema.js",
165
+ "default": "./dist/booking-engine/drafts-schema.js"
166
+ }
167
+ },
168
+ "voyant": {
169
+ "schema": "./schema",
170
+ "requiresSchemas": [
171
+ "@voyant-travel/db"
172
+ ]
173
+ },
174
+ "files": [
175
+ "dist"
176
+ ],
177
+ "publishConfig": {
178
+ "access": "public"
179
+ },
180
+ "dependencies": {
181
+ "drizzle-orm": "^0.45.2",
182
+ "hono": "^4.12.10",
183
+ "zod": "^4.1.4",
184
+ "@voyant-travel/catalog-contracts": "^0.107.1",
185
+ "@voyant-travel/core": "^0.109.0",
186
+ "@voyant-travel/db": "^0.108.0",
187
+ "@voyant-travel/hono": "^0.109.1"
188
+ },
189
+ "devDependencies": {
190
+ "drizzle-kit": "^0.31.10",
191
+ "typescript": "^6.0.2",
192
+ "vitest": "^4.1.2",
193
+ "@voyant-travel/voyant-typescript-config": "^0.1.0"
194
+ },
195
+ "repository": {
196
+ "type": "git",
197
+ "url": "https://github.com/voyant-travel/voyant.git",
198
+ "directory": "packages/catalog"
199
+ },
200
+ "scripts": {
201
+ "typecheck": "tsc --noEmit",
202
+ "lint": "biome check src/",
203
+ "test": "vitest run",
204
+ "build": "tsc -p tsconfig.json",
205
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
206
+ "db:generate": "drizzle-kit generate"
207
+ },
208
+ "main": "./dist/index.js",
209
+ "types": "./dist/index.d.ts"
210
+ }