@mohasinac/appkit 4.52.5 → 4.53.1

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 (1018) hide show
  1. package/dist/.build-stamp.json +4 -4
  2. package/dist/_internal/client/features/sticker-trace/canvas-codec.d.ts +2 -0
  3. package/dist/_internal/client/features/sticker-trace/canvas-codec.js +148 -0
  4. package/dist/_internal/client/scaffolds/AppShell.js +1 -1
  5. package/dist/_internal/server/features/auctions/actions.js +1 -1
  6. package/dist/_internal/server/features/auctions/og.d.ts +3 -1
  7. package/dist/_internal/server/features/auctions/og.js +3 -1
  8. package/dist/_internal/server/features/bundles/actions.js +1 -1
  9. package/dist/_internal/server/features/business-documents/download.d.ts +41 -0
  10. package/dist/_internal/server/features/business-documents/download.js +91 -0
  11. package/dist/_internal/server/features/categories/adapters.d.ts +1 -1
  12. package/dist/_internal/server/features/categories/adapters.js +10 -0
  13. package/dist/_internal/server/features/categories/data.js +23 -7
  14. package/dist/_internal/server/features/checkout/actions.d.ts +14 -0
  15. package/dist/_internal/server/features/checkout/actions.js +116 -15
  16. package/dist/_internal/server/features/checkout/bundle-expansion.js +17 -0
  17. package/dist/_internal/server/features/checkout/data.d.ts +37 -0
  18. package/dist/_internal/server/features/checkout/data.js +20 -3
  19. package/dist/_internal/server/features/checkout/group-rule-revalidation.d.ts +34 -0
  20. package/dist/_internal/server/features/checkout/group-rule-revalidation.js +124 -0
  21. package/dist/_internal/server/features/checkout/supplier-identity.d.ts +55 -0
  22. package/dist/_internal/server/features/checkout/supplier-identity.js +81 -0
  23. package/dist/_internal/server/features/classified/metadata.js +1 -1
  24. package/dist/_internal/server/features/classified/og.d.ts +3 -1
  25. package/dist/_internal/server/features/classified/og.js +3 -1
  26. package/dist/_internal/server/features/digital-code/metadata.js +1 -1
  27. package/dist/_internal/server/features/digital-code/og.d.ts +3 -1
  28. package/dist/_internal/server/features/digital-code/og.js +3 -1
  29. package/dist/_internal/server/features/digital-code/pool.d.ts +19 -4
  30. package/dist/_internal/server/features/digital-code/pool.js +19 -4
  31. package/dist/_internal/server/features/live/metadata.js +1 -1
  32. package/dist/_internal/server/features/live/og.d.ts +3 -1
  33. package/dist/_internal/server/features/live/og.js +3 -1
  34. package/dist/_internal/server/features/lottery/actions.js +9 -1
  35. package/dist/_internal/server/features/lottery/og.d.ts +40 -0
  36. package/dist/_internal/server/features/lottery/og.js +79 -0
  37. package/dist/_internal/server/features/messages/actions.js +5 -1
  38. package/dist/_internal/server/features/offers/adapters.js +17 -3
  39. package/dist/_internal/server/features/orders/actions.js +7 -2
  40. package/dist/_internal/server/features/parts/og.js +1 -1
  41. package/dist/_internal/server/features/pre-orders/og.d.ts +3 -1
  42. package/dist/_internal/server/features/pre-orders/og.js +3 -1
  43. package/dist/_internal/server/features/price-index/search.d.ts +18 -0
  44. package/dist/_internal/server/features/price-index/search.js +47 -7
  45. package/dist/_internal/server/features/prize-draws/og.d.ts +3 -1
  46. package/dist/_internal/server/features/prize-draws/og.js +3 -1
  47. package/dist/_internal/server/features/products/group-members.d.ts +26 -0
  48. package/dist/_internal/server/features/products/group-members.js +7 -1
  49. package/dist/_internal/server/features/products/og.d.ts +3 -1
  50. package/dist/_internal/server/features/products/og.js +3 -1
  51. package/dist/_internal/server/features/raffle/actions.d.ts +19 -0
  52. package/dist/_internal/server/features/raffle/actions.js +25 -0
  53. package/dist/_internal/server/features/reviews/actions.js +1 -1
  54. package/dist/_internal/server/features/reviews/data.d.ts +1 -1
  55. package/dist/_internal/server/features/search/index-build/artifact-store.d.ts +89 -0
  56. package/dist/_internal/server/features/search/index-build/artifact-store.js +208 -0
  57. package/dist/_internal/server/features/search/index-build/build.d.ts +57 -0
  58. package/dist/_internal/server/features/search/index-build/build.js +285 -0
  59. package/dist/_internal/server/features/search/index-build/sources.d.ts +53 -0
  60. package/dist/_internal/server/features/search/index-build/sources.js +385 -0
  61. package/dist/_internal/server/features/search/scoped-sources.d.ts +26 -0
  62. package/dist/_internal/server/features/search/scoped-sources.js +252 -0
  63. package/dist/_internal/server/features/search/search-everything.d.ts +57 -0
  64. package/dist/_internal/server/features/search/search-everything.js +70 -20
  65. package/dist/_internal/server/features/search/search-sources.d.ts +0 -15
  66. package/dist/_internal/server/features/search/search-sources.js +142 -7
  67. package/dist/_internal/server/features/seo/robots.js +21 -1
  68. package/dist/_internal/server/features/seo/sitemap.js +7 -1
  69. package/dist/_internal/server/features/shared/listing-adapters.js +4 -2
  70. package/dist/_internal/server/features/shared/listing-data-factory.js +16 -4
  71. package/dist/_internal/server/features/site-settings/adapters.d.ts +1 -1
  72. package/dist/_internal/server/features/site-settings/adapters.js +26 -0
  73. package/dist/_internal/server/features/sticker-trace/actions.d.ts +109 -0
  74. package/dist/_internal/server/features/sticker-trace/actions.js +172 -0
  75. package/dist/_internal/server/features/sticker-trace/adapters.d.ts +91 -0
  76. package/dist/_internal/server/features/sticker-trace/adapters.js +175 -0
  77. package/dist/_internal/server/features/sticker-trace/build-cut-file.d.ts +26 -0
  78. package/dist/_internal/server/features/sticker-trace/build-cut-file.js +127 -0
  79. package/dist/_internal/server/features/sticker-trace/coordinator.d.ts +27 -0
  80. package/dist/_internal/server/features/sticker-trace/coordinator.js +169 -0
  81. package/dist/_internal/server/features/sticker-trace/fanout.d.ts +43 -0
  82. package/dist/_internal/server/features/sticker-trace/fanout.js +180 -0
  83. package/dist/_internal/server/features/sticker-trace/finalizer.d.ts +25 -0
  84. package/dist/_internal/server/features/sticker-trace/finalizer.js +123 -0
  85. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.d.ts +30 -0
  86. package/dist/_internal/server/features/sticker-trace/mosaic-inputs.js +112 -0
  87. package/dist/_internal/server/features/sticker-trace/progress.d.ts +81 -0
  88. package/dist/_internal/server/features/sticker-trace/progress.js +198 -0
  89. package/dist/_internal/server/features/sticker-trace/promote-to-listings.d.ts +26 -0
  90. package/dist/_internal/server/features/sticker-trace/promote-to-listings.js +264 -0
  91. package/dist/_internal/server/features/sticker-trace/promote.d.ts +23 -0
  92. package/dist/_internal/server/features/sticker-trace/promote.js +193 -0
  93. package/dist/_internal/server/features/sticker-trace/shard.d.ts +50 -0
  94. package/dist/_internal/server/features/sticker-trace/shard.js +174 -0
  95. package/dist/_internal/server/features/sticker-trace/sheet-actions.d.ts +143 -0
  96. package/dist/_internal/server/features/sticker-trace/sheet-actions.js +311 -0
  97. package/dist/_internal/server/features/sticker-trace/storage.d.ts +154 -0
  98. package/dist/_internal/server/features/sticker-trace/storage.js +301 -0
  99. package/dist/_internal/server/features/stores/adapters.d.ts +1 -1
  100. package/dist/_internal/server/features/stores/adapters.js +16 -0
  101. package/dist/_internal/server/features/stores/index.d.ts +1 -0
  102. package/dist/_internal/server/features/stores/index.js +1 -0
  103. package/dist/_internal/server/features/stores/tabs.d.ts +25 -0
  104. package/dist/_internal/server/features/stores/tabs.js +122 -0
  105. package/dist/_internal/server/functions/scheduled.d.ts +2 -1
  106. package/dist/_internal/server/functions/scheduled.js +25 -1
  107. package/dist/_internal/server/jobs/core/_event-ref.d.ts +51 -0
  108. package/dist/_internal/server/jobs/core/_event-ref.js +63 -0
  109. package/dist/_internal/server/jobs/core/assignSpinPrize.d.ts +18 -0
  110. package/dist/_internal/server/jobs/core/assignSpinPrize.js +77 -16
  111. package/dist/_internal/server/jobs/core/auctionSettlement.js +13 -4
  112. package/dist/_internal/server/jobs/core/autoPayoutEligibility.js +44 -15
  113. package/dist/_internal/server/jobs/core/bundleStockSync.js +3 -4
  114. package/dist/_internal/server/jobs/core/cleanupRtdbEvents.js +44 -0
  115. package/dist/_internal/server/jobs/core/event-draw-reasons.d.ts +78 -0
  116. package/dist/_internal/server/jobs/core/event-draw-reasons.js +133 -0
  117. package/dist/_internal/server/jobs/core/listingProcessor.js +28 -8
  118. package/dist/_internal/server/jobs/core/onOrderCreate.js +12 -1
  119. package/dist/_internal/server/jobs/core/onScamReportCreate.js +13 -2
  120. package/dist/_internal/server/jobs/core/onScamReportRejected.js +8 -2
  121. package/dist/_internal/server/jobs/core/onScamReportVerified.js +8 -2
  122. package/dist/_internal/server/jobs/core/onStoreWrite.js +11 -4
  123. package/dist/_internal/server/jobs/core/prizeDrawAssignWinner.js +5 -4
  124. package/dist/_internal/server/jobs/core/prizeDrawExpiryReveal.js +1 -4
  125. package/dist/_internal/server/jobs/core/prizeDrawSoldOutReveal.js +1 -2
  126. package/dist/_internal/server/jobs/core/promotions.js +7 -4
  127. package/dist/_internal/server/jobs/core/searchIndexBuild.d.ts +7 -0
  128. package/dist/_internal/server/jobs/core/searchIndexBuild.js +211 -0
  129. package/dist/_internal/server/jobs/core/triggerEventRaffle.d.ts +35 -0
  130. package/dist/_internal/server/jobs/core/triggerEventRaffle.js +213 -31
  131. package/dist/_internal/server/jobs/core/weeklyPayoutEligibility.js +20 -14
  132. package/dist/_internal/server/jobs/handlers/assignSpinPrize.d.ts +8 -0
  133. package/dist/_internal/server/jobs/handlers/assignSpinPrize.js +15 -15
  134. package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
  135. package/dist/_internal/server/jobs/handlers/index.js +1 -0
  136. package/dist/_internal/server/jobs/handlers/onCategoryWrite.js +18 -0
  137. package/dist/_internal/server/jobs/handlers/onProductWrite.js +18 -0
  138. package/dist/_internal/server/jobs/handlers/onReviewWrite.js +18 -0
  139. package/dist/_internal/server/jobs/handlers/onScamReportUpdate.js +18 -0
  140. package/dist/_internal/server/jobs/handlers/onStoreWrite.js +18 -0
  141. package/dist/_internal/server/jobs/handlers/searchIndexBuild.d.ts +2 -0
  142. package/dist/_internal/server/jobs/handlers/searchIndexBuild.js +2 -0
  143. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.d.ts +8 -0
  144. package/dist/_internal/server/jobs/handlers/triggerEventRaffle.js +15 -6
  145. package/dist/_internal/shared/actions/action-registry.js +29 -0
  146. package/dist/_internal/shared/cache/revalidate-targets.d.ts +0 -1
  147. package/dist/_internal/shared/cache/revalidate-targets.js +10 -8
  148. package/dist/_internal/shared/checkout/rules/_defaults.js +0 -2
  149. package/dist/_internal/shared/checkout/rules/_limits.d.ts +14 -1
  150. package/dist/_internal/shared/checkout/rules/_limits.js +14 -1
  151. package/dist/_internal/shared/checkout/rules/_registry.js +2 -0
  152. package/dist/_internal/shared/checkout/rules/auction.rule.js +9 -1
  153. package/dist/_internal/shared/checkout/rules/bundle.rule.js +13 -0
  154. package/dist/_internal/shared/checkout/rules/index.d.ts +2 -0
  155. package/dist/_internal/shared/checkout/rules/index.js +9 -0
  156. package/dist/_internal/shared/checkout/rules/offer.rule.js +0 -1
  157. package/dist/_internal/shared/checkout/rules/payment-gate.d.ts +26 -0
  158. package/dist/_internal/shared/checkout/rules/payment-gate.js +133 -0
  159. package/dist/_internal/shared/checkout/rules/prize-draw.rule.js +29 -8
  160. package/dist/_internal/shared/checkout/rules/spares.rule.d.ts +16 -0
  161. package/dist/_internal/shared/checkout/rules/spares.rule.js +5 -0
  162. package/dist/_internal/shared/checkout/rules/types.d.ts +26 -2
  163. package/dist/_internal/shared/config/schema.d.ts +122 -0
  164. package/dist/_internal/shared/features/cart/schema.js +3 -2
  165. package/dist/_internal/shared/features/events/config.d.ts +14 -0
  166. package/dist/_internal/shared/features/events/config.js +14 -0
  167. package/dist/_internal/shared/features/notifications/action-url.js +8 -0
  168. package/dist/_internal/shared/features/products/group-rules.d.ts +75 -0
  169. package/dist/_internal/shared/features/products/group-rules.js +142 -0
  170. package/dist/_internal/shared/features/site-settings/types.d.ts +11 -0
  171. package/dist/_internal/shared/features/sticker-trace/codec.d.ts +81 -0
  172. package/dist/_internal/shared/features/sticker-trace/codec.js +30 -0
  173. package/dist/_internal/shared/features/sticker-trace/config.d.ts +81 -0
  174. package/dist/_internal/shared/features/sticker-trace/config.js +177 -0
  175. package/dist/_internal/shared/features/sticker-trace/cut-contour.d.ts +20 -0
  176. package/dist/_internal/shared/features/sticker-trace/cut-contour.js +60 -0
  177. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.d.ts +65 -0
  178. package/dist/_internal/shared/features/sticker-trace/export/build-export-set.js +176 -0
  179. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.d.ts +56 -0
  180. package/dist/_internal/shared/features/sticker-trace/export/cut-svg.js +120 -0
  181. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.d.ts +92 -0
  182. package/dist/_internal/shared/features/sticker-trace/export/machine-profiles.js +153 -0
  183. package/dist/_internal/shared/features/sticker-trace/export/nesting.d.ts +51 -0
  184. package/dist/_internal/shared/features/sticker-trace/export/nesting.js +110 -0
  185. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.d.ts +68 -0
  186. package/dist/_internal/shared/features/sticker-trace/export/page-sizes.js +223 -0
  187. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.d.ts +51 -0
  188. package/dist/_internal/shared/features/sticker-trace/export/part-tiling.js +178 -0
  189. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.d.ts +26 -0
  190. package/dist/_internal/shared/features/sticker-trace/export/simplify-budget.js +134 -0
  191. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.d.ts +40 -0
  192. package/dist/_internal/shared/features/sticker-trace/export/vectorise-art.js +195 -0
  193. package/dist/_internal/shared/features/sticker-trace/index.d.ts +2 -0
  194. package/dist/_internal/shared/features/sticker-trace/index.js +59 -0
  195. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.d.ts +11 -0
  196. package/dist/_internal/shared/features/sticker-trace/math/catmull-rom.js +66 -0
  197. package/dist/_internal/shared/features/sticker-trace/math/edt.d.ts +27 -0
  198. package/dist/_internal/shared/features/sticker-trace/math/edt.js +165 -0
  199. package/dist/_internal/shared/features/sticker-trace/math/label.d.ts +15 -0
  200. package/dist/_internal/shared/features/sticker-trace/math/label.js +156 -0
  201. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.d.ts +16 -0
  202. package/dist/_internal/shared/features/sticker-trace/math/marching-squares.js +242 -0
  203. package/dist/_internal/shared/features/sticker-trace/math/morphology.d.ts +46 -0
  204. package/dist/_internal/shared/features/sticker-trace/math/morphology.js +168 -0
  205. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.d.ts +88 -0
  206. package/dist/_internal/shared/features/sticker-trace/math/rasterize-path.js +286 -0
  207. package/dist/_internal/shared/features/sticker-trace/math/rdp.d.ts +10 -0
  208. package/dist/_internal/shared/features/sticker-trace/math/rdp.js +74 -0
  209. package/dist/_internal/shared/features/sticker-trace/resume.d.ts +50 -0
  210. package/dist/_internal/shared/features/sticker-trace/resume.js +160 -0
  211. package/dist/_internal/shared/features/sticker-trace/trace/cluster.d.ts +20 -0
  212. package/dist/_internal/shared/features/sticker-trace/trace/cluster.js +132 -0
  213. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.d.ts +28 -0
  214. package/dist/_internal/shared/features/sticker-trace/trace/cross-profile.js +120 -0
  215. package/dist/_internal/shared/features/sticker-trace/trace/flood.d.ts +21 -0
  216. package/dist/_internal/shared/features/sticker-trace/trace/flood.js +104 -0
  217. package/dist/_internal/shared/features/sticker-trace/trace/geometry.d.ts +3 -0
  218. package/dist/_internal/shared/features/sticker-trace/trace/geometry.js +140 -0
  219. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.d.ts +15 -0
  220. package/dist/_internal/shared/features/sticker-trace/trace/line-filter.js +138 -0
  221. package/dist/_internal/shared/features/sticker-trace/trace/merge.d.ts +27 -0
  222. package/dist/_internal/shared/features/sticker-trace/trace/merge.js +187 -0
  223. package/dist/_internal/shared/features/sticker-trace/trace/paper.d.ts +32 -0
  224. package/dist/_internal/shared/features/sticker-trace/trace/paper.js +147 -0
  225. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.d.ts +30 -0
  226. package/dist/_internal/shared/features/sticker-trace/trace/prefilter.js +125 -0
  227. package/dist/_internal/shared/features/sticker-trace/trace/quantise.d.ts +10 -0
  228. package/dist/_internal/shared/features/sticker-trace/trace/quantise.js +153 -0
  229. package/dist/_internal/shared/features/sticker-trace/trace/ridge.d.ts +88 -0
  230. package/dist/_internal/shared/features/sticker-trace/trace/ridge.js +344 -0
  231. package/dist/_internal/shared/features/sticker-trace/trace/segment.d.ts +10 -0
  232. package/dist/_internal/shared/features/sticker-trace/trace/segment.js +251 -0
  233. package/dist/_internal/shared/features/sticker-trace/types.d.ts +197 -0
  234. package/dist/_internal/shared/features/sticker-trace/types.js +49 -0
  235. package/dist/_internal/shared/listing-types/_registry.d.ts +35 -0
  236. package/dist/_internal/shared/listing-types/_registry.js +39 -1
  237. package/dist/_internal/shared/listing-types/art/config.d.ts +2 -0
  238. package/dist/_internal/shared/listing-types/art/config.js +3 -0
  239. package/dist/_internal/shared/listing-types/auction/config.d.ts +2 -0
  240. package/dist/_internal/shared/listing-types/auction/config.js +3 -0
  241. package/dist/_internal/shared/listing-types/availability.js +48 -0
  242. package/dist/_internal/shared/listing-types/capabilities.js +19 -0
  243. package/dist/_internal/shared/listing-types/classified/config.d.ts +2 -0
  244. package/dist/_internal/shared/listing-types/classified/config.js +3 -0
  245. package/dist/_internal/shared/listing-types/digital-code/config.d.ts +2 -0
  246. package/dist/_internal/shared/listing-types/digital-code/config.js +3 -0
  247. package/dist/_internal/shared/listing-types/feature-flags.d.ts +7 -0
  248. package/dist/_internal/shared/listing-types/feature-flags.js +10 -0
  249. package/dist/_internal/shared/listing-types/live/config.d.ts +2 -0
  250. package/dist/_internal/shared/listing-types/live/config.js +3 -0
  251. package/dist/_internal/shared/listing-types/pre-order/config.d.ts +2 -0
  252. package/dist/_internal/shared/listing-types/pre-order/config.js +3 -0
  253. package/dist/_internal/shared/listing-types/prize-draw/config.d.ts +2 -0
  254. package/dist/_internal/shared/listing-types/prize-draw/config.js +3 -0
  255. package/dist/_internal/shared/listing-types/spares/config.d.ts +74 -0
  256. package/dist/_internal/shared/listing-types/spares/config.js +60 -0
  257. package/dist/_internal/shared/listing-types/spares/ctas.d.ts +1 -0
  258. package/dist/_internal/shared/listing-types/spares/ctas.js +4 -0
  259. package/dist/_internal/shared/listing-types/spares/og.js +1 -0
  260. package/dist/_internal/shared/listing-types/spares/schema.d.ts +2 -0
  261. package/dist/_internal/shared/listing-types/spares/schema.js +3 -0
  262. package/dist/_internal/shared/listing-types/spares/seed-factory.d.ts +1 -0
  263. package/dist/_internal/shared/listing-types/spares/seed-factory.js +1 -0
  264. package/dist/_internal/shared/listing-types/standard/config.d.ts +2 -0
  265. package/dist/_internal/shared/listing-types/standard/config.js +3 -0
  266. package/dist/_internal/shared/listing-types/stickers/config.d.ts +2 -0
  267. package/dist/_internal/shared/listing-types/stickers/config.js +3 -0
  268. package/dist/_internal/shared/media/limits.d.ts +12 -2
  269. package/dist/_internal/shared/media/limits.js +12 -2
  270. package/dist/_internal/shared/search/artifact-url.d.ts +35 -0
  271. package/dist/_internal/shared/search/artifact-url.js +119 -0
  272. package/dist/_internal/shared/search/index-record.d.ts +68 -0
  273. package/dist/_internal/shared/search/index-record.js +96 -0
  274. package/dist/_internal/shared/search/match.d.ts +76 -0
  275. package/dist/_internal/shared/search/match.js +264 -0
  276. package/dist/_internal/shared/search/to-groups.d.ts +52 -0
  277. package/dist/_internal/shared/search/to-groups.js +141 -0
  278. package/dist/client.d.ts +16 -9
  279. package/dist/client.js +16 -6
  280. package/dist/configs/eslint.js +22 -2
  281. package/dist/constants/api-endpoints.d.ts +107 -15
  282. package/dist/constants/api-endpoints.js +60 -5
  283. package/dist/constants/cache-invalidation.js +3 -1
  284. package/dist/constants/field-names.d.ts +13 -1
  285. package/dist/constants/field-names.js +42 -1
  286. package/dist/contracts/repository.d.ts +8 -7
  287. package/dist/contracts/search.d.ts +2 -2
  288. package/dist/contracts/table.d.ts +3 -3
  289. package/dist/contracts/table.js +3 -3
  290. package/dist/core/contact-submissions.repository.js +2 -2
  291. package/dist/core/integration-keys.js +7 -1
  292. package/dist/core/newsletter.repository.js +2 -2
  293. package/dist/core/site-config.js +1 -1
  294. package/dist/errors/error-codes.d.ts +30 -0
  295. package/dist/errors/error-codes.js +30 -0
  296. package/dist/errors/error-display-map.js +40 -1
  297. package/dist/features/about/components/PolicyPageView.d.ts +22 -2
  298. package/dist/features/about/components/PolicyPageView.js +14 -2
  299. package/dist/features/about/components/PublicProfileView.js +2 -1
  300. package/dist/features/about/components/ShippingPolicyView.js +42 -2
  301. package/dist/features/account/api/[userId]/addresses/route.js +1 -1
  302. package/dist/features/account/components/NotificationBell.js +1 -1
  303. package/dist/features/account/components/UserBidsView.js +1 -1
  304. package/dist/features/account/components/index.d.ts +0 -8
  305. package/dist/features/account/components/index.js +0 -4
  306. package/dist/features/account/hooks/useProfileStats.js +5 -1
  307. package/dist/features/addresses/repository/addresses.repository.d.ts +33 -6
  308. package/dist/features/addresses/repository/addresses.repository.js +86 -9
  309. package/dist/features/addresses/schemas/firestore.d.ts +17 -6
  310. package/dist/features/admin/actions/admin-actions.js +16 -1
  311. package/dist/features/admin/actions/notification-actions.js +15 -6
  312. package/dist/features/admin/api/bids/route.js +1 -1
  313. package/dist/features/admin/api/coupons/route.js +1 -1
  314. package/dist/features/admin/api/products/route.js +1 -1
  315. package/dist/features/admin/api/reviews/route.js +1 -1
  316. package/dist/features/admin/components/AdminAdEditorView.js +19 -5
  317. package/dist/features/admin/components/AdminAuditLogView.js +1 -1
  318. package/dist/features/admin/components/AdminBlogEditorView.js +0 -1
  319. package/dist/features/admin/components/AdminBlogView.js +1 -1
  320. package/dist/features/admin/components/AdminBrandsView.js +17 -1
  321. package/dist/features/admin/components/AdminCategoryEditorView.js +19 -3
  322. package/dist/features/admin/components/AdminContactView.js +1 -1
  323. package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -3
  324. package/dist/features/admin/components/AdminNavigationView.js +1 -1
  325. package/dist/features/admin/components/AdminNewsletterView.js +1 -1
  326. package/dist/features/admin/components/AdminOrdersView.js +9 -2
  327. package/dist/features/admin/components/AdminPageHeader.js +1 -1
  328. package/dist/features/admin/components/AdminPayoutsView.js +1 -1
  329. package/dist/features/admin/components/AdminPrizeDrawsView.js +11 -0
  330. package/dist/features/admin/components/AdminProductEditorView.d.ts +10 -1
  331. package/dist/features/admin/components/AdminProductEditorView.js +41 -39
  332. package/dist/features/admin/components/AdminProductsView.js +10 -3
  333. package/dist/features/admin/components/AdminScammersView.js +1 -1
  334. package/dist/features/admin/components/AdminSectionsView.js +21 -5
  335. package/dist/features/admin/components/AdminSessionsView.js +1 -1
  336. package/dist/features/admin/components/AdminSidebar.js +1 -1
  337. package/dist/features/admin/components/AdminSiteSettingsView.js +39 -8
  338. package/dist/features/admin/components/AdminSparesView.d.ts +12 -0
  339. package/dist/features/admin/components/AdminSparesView.js +30 -0
  340. package/dist/features/admin/components/AdminSublistingCategoriesView.js +22 -1
  341. package/dist/features/admin/components/AdminTeamView.js +1 -1
  342. package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +0 -1
  343. package/dist/features/admin/components/AdminUsersView.js +10 -8
  344. package/dist/features/admin/components/DataListingView.d.ts +2 -1
  345. package/dist/features/admin/components/DataListingView.js +9 -4
  346. package/dist/features/admin/components/analytics/AdminPageViewsReportView.js +0 -2
  347. package/dist/features/admin/components/index.d.ts +2 -0
  348. package/dist/features/admin/components/index.js +1 -0
  349. package/dist/features/admin/components/sections/adminSectionsTypes.js +7 -0
  350. package/dist/features/admin/constants/filter-tabs.d.ts +3 -0
  351. package/dist/features/admin/constants/filter-tabs.js +1 -0
  352. package/dist/features/admin/hooks/useAdminListing.d.ts +1 -1
  353. package/dist/features/admin/repository/site-settings.repository.js +8 -3
  354. package/dist/features/admin/schemas/firestore.d.ts +88 -3
  355. package/dist/features/admin/schemas/firestore.js +32 -0
  356. package/dist/features/admin/types/index.d.ts +1 -1
  357. package/dist/features/auctions/actions/bid-actions.d.ts +2 -2
  358. package/dist/features/auctions/actions/bid-actions.js +16 -4
  359. package/dist/features/auctions/api/route.js +1 -1
  360. package/dist/features/auctions/components/AuctionBottomActions.js +4 -0
  361. package/dist/features/auctions/components/AuctionDetailPageView.js +4 -11
  362. package/dist/features/auctions/repository/bid.repository.d.ts +46 -4
  363. package/dist/features/auctions/repository/bid.repository.js +114 -13
  364. package/dist/features/auctions/schemas/firestore.d.ts +24 -4
  365. package/dist/features/auctions/schemas/firestore.js +1 -0
  366. package/dist/features/auth/actions/profile-actions.js +30 -4
  367. package/dist/features/auth/components/index.d.ts +0 -1
  368. package/dist/features/auth/components/index.js +0 -1
  369. package/dist/features/auth/repository/session.repository.d.ts +17 -3
  370. package/dist/features/auth/repository/session.repository.js +46 -5
  371. package/dist/features/auth/repository/token.repository.d.ts +27 -4
  372. package/dist/features/auth/repository/token.repository.js +65 -11
  373. package/dist/features/auth/repository/user.repository.d.ts +46 -7
  374. package/dist/features/auth/repository/user.repository.js +128 -15
  375. package/dist/features/auth/schemas/firestore.d.ts +65 -12
  376. package/dist/features/auth/schemas/firestore.js +13 -0
  377. package/dist/features/before-after/api/route.js +1 -1
  378. package/dist/features/blog/components/BlogListView.js +16 -3
  379. package/dist/features/blog/components/BlogPostView.js +1 -1
  380. package/dist/features/blog/schemas/index.d.ts +2 -2
  381. package/dist/features/business-documents/repository/business-documents.repository.d.ts +58 -0
  382. package/dist/features/business-documents/repository/business-documents.repository.js +54 -0
  383. package/dist/features/business-documents/schemas/firestore.d.ts +105 -0
  384. package/dist/features/business-documents/schemas/firestore.js +75 -0
  385. package/dist/features/cart/actions/cart-actions.js +83 -6
  386. package/dist/features/cart/api/route.js +1 -1
  387. package/dist/features/cart/repository/cart.repository.js +32 -4
  388. package/dist/features/cart/schemas/firestore.d.ts +20 -0
  389. package/dist/features/cart/schemas/index.d.ts +2 -2
  390. package/dist/features/catalogue/components/PublicCatalogueItemDetailView.js +1 -1
  391. package/dist/features/catalogue/repository/catalogue.repository.d.ts +7 -7
  392. package/dist/features/catalogue/repository/catalogue.repository.js +28 -10
  393. package/dist/features/catalogue/schemas/firestore.d.ts +11 -0
  394. package/dist/features/categories/api/[id]/price-guidance/route.d.ts +42 -0
  395. package/dist/features/categories/api/[id]/price-guidance/route.js +113 -0
  396. package/dist/features/categories/api/route.js +10 -10
  397. package/dist/features/categories/components/BrandDetailPageView.js +19 -3
  398. package/dist/features/categories/components/BrandDetailTabs.js +10 -0
  399. package/dist/features/categories/components/CategoriesIndexListing.js +23 -8
  400. package/dist/features/categories/components/CategoryDetailPageView.js +170 -13
  401. package/dist/features/categories/components/CategoryDetailTabs.js +12 -0
  402. package/dist/features/categories/components/CategoryGrid.js +10 -1
  403. package/dist/features/categories/components/CategorySelectorCreate.js +0 -1
  404. package/dist/features/categories/components/PriceGuidanceHint.d.ts +29 -0
  405. package/dist/features/categories/components/PriceGuidanceHint.js +61 -0
  406. package/dist/features/categories/components/SubcategoryCardRow.d.ts +27 -0
  407. package/dist/features/categories/components/SubcategoryCardRow.js +98 -0
  408. package/dist/features/categories/components/index.d.ts +0 -2
  409. package/dist/features/categories/components/index.js +0 -1
  410. package/dist/features/categories/constants/category-tabs.d.ts +20 -25
  411. package/dist/features/categories/constants/category-tabs.js +22 -39
  412. package/dist/features/categories/repository/categories.repository.d.ts +13 -0
  413. package/dist/features/categories/repository/categories.repository.js +51 -1
  414. package/dist/features/categories/schemas/firestore.d.ts +22 -1
  415. package/dist/features/categories/schemas/firestore.js +10 -0
  416. package/dist/features/categories/schemas/index.d.ts +8 -2
  417. package/dist/features/categories/schemas/index.js +2 -0
  418. package/dist/features/categories/types/index.d.ts +8 -0
  419. package/dist/features/categories/utils/taxonomy-visual.d.ts +34 -0
  420. package/dist/features/categories/utils/taxonomy-visual.js +74 -0
  421. package/dist/features/checkout/actions/checkout-value-otp-actions.js +8 -1
  422. package/dist/features/classified/components/ClassifiedDetailPageView.js +4 -9
  423. package/dist/features/collections/api/[slug]/route.js +3 -3
  424. package/dist/features/collections/api/route.js +1 -1
  425. package/dist/features/consultation/api/route.js +1 -1
  426. package/dist/features/consultation/repository/consultations.repository.js +1 -1
  427. package/dist/features/consultation/types/index.d.ts +1 -1
  428. package/dist/features/contact/components/ContactForm.js +1 -3
  429. package/dist/features/contact/components/ContactPageView.d.ts +33 -1
  430. package/dist/features/contact/components/ContactPageView.js +58 -28
  431. package/dist/features/corporate/api/route.js +1 -1
  432. package/dist/features/corporate/repository/corporate.repository.js +1 -1
  433. package/dist/features/corporate/types/index.d.ts +1 -1
  434. package/dist/features/cron/jobs/auction-expiry.job.js +1 -1
  435. package/dist/features/cron/jobs/preorder-reminder.job.js +1 -1
  436. package/dist/features/digital-codes/components/DigitalCodeDetailPageView.js +4 -9
  437. package/dist/features/events/actions/event-actions.d.ts +14 -0
  438. package/dist/features/events/actions/event-actions.js +82 -3
  439. package/dist/features/events/api/[id]/route.js +2 -2
  440. package/dist/features/events/components/AdminEventEditorView.js +22 -3
  441. package/dist/features/events/components/AdminEventsView.js +32 -8
  442. package/dist/features/events/components/EventRafflesSection.d.ts +34 -1
  443. package/dist/features/events/components/EventRafflesSection.js +52 -3
  444. package/dist/features/events/components/SpinWheelView.d.ts +2 -2
  445. package/dist/features/events/components/SpinWheelView.js +41 -4
  446. package/dist/features/events/repository/event-entry.repository.d.ts +14 -2
  447. package/dist/features/events/repository/event-entry.repository.js +41 -7
  448. package/dist/features/events/schemas/firestore.d.ts +17 -4
  449. package/dist/features/events/types/index.d.ts +37 -0
  450. package/dist/features/faq/repository/faqs.repository.js +1 -1
  451. package/dist/features/faq/schemas/index.d.ts +5 -2
  452. package/dist/features/faq/schemas/index.js +6 -0
  453. package/dist/features/faq/types/index.d.ts +0 -1
  454. package/dist/features/grouped/components/GroupedListingDetailView.js +9 -1
  455. package/dist/features/grouped/components/GroupedListingEditorView.js +17 -2
  456. package/dist/features/grouped/schemas/firestore.d.ts +5 -0
  457. package/dist/features/homepage/actions/homepage-section-actions.d.ts +3 -3
  458. package/dist/features/homepage/api/carousel/[id]/route.js +1 -1
  459. package/dist/features/homepage/api/carousel/route.js +4 -4
  460. package/dist/features/homepage/components/AnnouncementBar.d.ts +1 -9
  461. package/dist/features/homepage/components/AnnouncementBar.js +13 -19
  462. package/dist/features/homepage/components/CollectionCardsSection.d.ts +28 -6
  463. package/dist/features/homepage/components/CollectionCardsSection.js +43 -8
  464. package/dist/features/homepage/components/HowItWorksSection.d.ts +23 -6
  465. package/dist/features/homepage/components/HowItWorksSection.js +4 -4
  466. package/dist/features/homepage/components/MarketplaceHomepageView.js +6 -1
  467. package/dist/features/homepage/components/PromoGrid.d.ts +31 -2
  468. package/dist/features/homepage/components/PromoGrid.js +12 -3
  469. package/dist/features/homepage/components/TestimonialsCarousel.d.ts +34 -2
  470. package/dist/features/homepage/components/TestimonialsCarousel.js +1 -1
  471. package/dist/features/homepage/components/index.d.ts +0 -22
  472. package/dist/features/homepage/components/index.js +0 -12
  473. package/dist/features/homepage/index.d.ts +0 -2
  474. package/dist/features/homepage/index.js +0 -2
  475. package/dist/features/homepage/lib/section-renderer.d.ts +9 -0
  476. package/dist/features/homepage/lib/section-renderer.js +202 -58
  477. package/dist/features/homepage/repository/homepage-sections.repository.d.ts +35 -3
  478. package/dist/features/homepage/repository/homepage-sections.repository.js +58 -8
  479. package/dist/features/homepage/schemas/firestore.d.ts +112 -3
  480. package/dist/features/homepage/schemas/firestore.js +32 -2
  481. package/dist/features/homepage/schemas/index.d.ts +46 -17
  482. package/dist/features/homepage/schemas/index.js +39 -27
  483. package/dist/features/homepage/server.d.ts +0 -3
  484. package/dist/features/homepage/server.js +0 -3
  485. package/dist/features/homepage/types/index.d.ts +0 -47
  486. package/dist/features/homepage/types/index.js +49 -0
  487. package/dist/features/layout/AppLayoutShell.d.ts +11 -0
  488. package/dist/features/layout/AppLayoutShell.js +65 -13
  489. package/dist/features/layout/BottomActionsContext.d.ts +16 -0
  490. package/dist/features/layout/BottomActionsContext.js +5 -0
  491. package/dist/features/layout/BottomChrome.js +48 -9
  492. package/dist/features/layout/BottomNavItem.js +1 -1
  493. package/dist/features/layout/BottomNavbar.d.ts +14 -0
  494. package/dist/features/layout/BottomNavbar.js +43 -3
  495. package/dist/features/layout/BottomSheet.js +1 -1
  496. package/dist/features/layout/MainNavbar.d.ts +11 -0
  497. package/dist/features/layout/NavbarLayout.d.ts +3 -0
  498. package/dist/features/layout/NavbarLayout.js +88 -11
  499. package/dist/features/layout/SideActionDock.d.ts +1 -0
  500. package/dist/features/layout/SideActionDock.js +219 -0
  501. package/dist/features/layout/TitleBarLayout.js +1 -1
  502. package/dist/features/layout/cta-anchor.d.ts +31 -0
  503. package/dist/features/layout/cta-anchor.js +31 -0
  504. package/dist/features/layout/hooks/useBottomActions.d.ts +7 -0
  505. package/dist/features/layout/hooks/useBottomActions.js +6 -1
  506. package/dist/features/layout/index.d.ts +9 -1
  507. package/dist/features/layout/index.js +9 -1
  508. package/dist/features/layout/useCtaReveal.d.ts +24 -0
  509. package/dist/features/layout/useCtaReveal.js +82 -0
  510. package/dist/features/layout/useHoldToOpen.d.ts +41 -0
  511. package/dist/features/layout/useHoldToOpen.js +84 -0
  512. package/dist/features/live/components/LiveItemDetailPageView.js +4 -9
  513. package/dist/features/lottery/repository/lottery-entry.repository.d.ts +18 -3
  514. package/dist/features/lottery/repository/lottery-entry.repository.js +48 -6
  515. package/dist/features/lottery/schemas/firestore.d.ts +33 -5
  516. package/dist/features/loyalty/api/balance/route.js +1 -1
  517. package/dist/features/loyalty/api/history/route.js +1 -1
  518. package/dist/features/media/MediaImage.js +0 -1
  519. package/dist/features/media/MediaPickerModal.js +7 -1
  520. package/dist/features/media/hooks/useMedia.js +17 -0
  521. package/dist/features/media/modals/ImageEditor.js +5 -1
  522. package/dist/features/media/modals/VideoThumbnailSelector.js +17 -1
  523. package/dist/features/media/repository/media-assets.repository.d.ts +65 -0
  524. package/dist/features/media/repository/media-assets.repository.js +31 -0
  525. package/dist/features/media/trust-signals.d.ts +85 -0
  526. package/dist/features/media/trust-signals.js +126 -0
  527. package/dist/features/media/upload/CameraCapture.js +16 -1
  528. package/dist/features/media/upload/ImageUpload.js +42 -4
  529. package/dist/features/media/upload/MediaUploadField.js +69 -13
  530. package/dist/features/media/upload/downscale-image.d.ts +56 -0
  531. package/dist/features/media/upload/downscale-image.js +150 -0
  532. package/dist/features/messages/components/ConversationThreadView.js +45 -2
  533. package/dist/features/messages/components/MessageSellerButton.d.ts +15 -1
  534. package/dist/features/messages/components/MessageSellerButton.js +10 -2
  535. package/dist/features/messages/schemas/firestore.d.ts +15 -0
  536. package/dist/features/orders/hooks/useOrders.js +4 -2
  537. package/dist/features/orders/repository/orders.repository.d.ts +15 -4
  538. package/dist/features/orders/repository/orders.repository.js +52 -20
  539. package/dist/features/orders/schemas/firestore.d.ts +15 -4
  540. package/dist/features/orders/schemas/index.d.ts +8 -8
  541. package/dist/features/orders/types/index.d.ts +2 -2
  542. package/dist/features/parts/components/PartDetailPageView.d.ts +14 -1
  543. package/dist/features/parts/components/PartDetailPageView.js +2 -2
  544. package/dist/features/parts/components/PartsIndexPageView.d.ts +11 -2
  545. package/dist/features/parts/components/PartsIndexPageView.js +2 -2
  546. package/dist/features/parts/components/PartsSearchBox.d.ts +9 -0
  547. package/dist/features/parts/components/PartsSearchBox.js +57 -0
  548. package/dist/features/parts/schemas/firestore.d.ts +149 -3
  549. package/dist/features/parts/schemas/firestore.js +184 -0
  550. package/dist/features/payments/repository/payments.repository.js +2 -2
  551. package/dist/features/payments/repository/payout.repository.d.ts +38 -6
  552. package/dist/features/payments/repository/payout.repository.js +84 -23
  553. package/dist/features/payments/repository/saved-payment-methods.repository.d.ts +17 -6
  554. package/dist/features/payments/repository/saved-payment-methods.repository.js +59 -11
  555. package/dist/features/payments/schemas/firestore.d.ts +14 -3
  556. package/dist/features/payments/schemas/saved-methods-firestore.d.ts +12 -1
  557. package/dist/features/pre-orders/api/[slug]/route.js +1 -1
  558. package/dist/features/pre-orders/api/admin/route.js +1 -1
  559. package/dist/features/pre-orders/api/route.js +1 -1
  560. package/dist/features/pre-orders/components/PreOrderDetailPageView.js +4 -11
  561. package/dist/features/pre-orders/components/PreOrdersIndexListing.js +1 -1
  562. package/dist/features/pre-orders/repository/pre-orders.repository.d.ts +3 -3
  563. package/dist/features/pre-orders/repository/pre-orders.repository.js +6 -6
  564. package/dist/features/price-index/components/PriceIndexToolView.d.ts +3 -1
  565. package/dist/features/price-index/components/PriceIndexToolView.js +92 -13
  566. package/dist/features/products/api/[id]/route.js +1 -1
  567. package/dist/features/products/components/CompareOverlay.d.ts +18 -1
  568. package/dist/features/products/components/CompareOverlay.js +21 -2
  569. package/dist/features/products/components/CustomSectionTabContent.d.ts +31 -0
  570. package/dist/features/products/components/CustomSectionTabContent.js +29 -3
  571. package/dist/features/products/components/GroupMemberPicker.d.ts +19 -1
  572. package/dist/features/products/components/GroupMemberPicker.js +46 -8
  573. package/dist/features/products/components/GroupSettingsPanel.d.ts +11 -1
  574. package/dist/features/products/components/GroupSettingsPanel.js +91 -3
  575. package/dist/features/products/components/ListingBottomActions.js +4 -0
  576. package/dist/features/products/components/PrizeDrawDetailPageView.js +1 -1
  577. package/dist/features/products/components/PrizeDrawEntryActions.d.ts +15 -1
  578. package/dist/features/products/components/PrizeDrawEntryActions.js +70 -8
  579. package/dist/features/products/components/ProductDetailPageView.js +75 -15
  580. package/dist/features/products/components/ProductForm.d.ts +13 -1
  581. package/dist/features/products/components/ProductForm.js +16 -2
  582. package/dist/features/products/components/ProductGalleryClient.js +2 -2
  583. package/dist/features/products/components/ProductGrid.js +12 -1
  584. package/dist/features/products/components/ProductsIndexListing.d.ts +16 -1
  585. package/dist/features/products/components/ProductsIndexListing.js +3 -3
  586. package/dist/features/products/components/ShowGroupSection.js +15 -2
  587. package/dist/features/products/components/SparesListView.d.ts +7 -0
  588. package/dist/features/products/components/SparesListView.js +39 -0
  589. package/dist/features/products/components/index.d.ts +0 -2
  590. package/dist/features/products/components/index.js +0 -1
  591. package/dist/features/products/config/listing-type-listing-config.d.ts +0 -3
  592. package/dist/features/products/config/listing-type-listing-config.js +27 -2
  593. package/dist/features/products/constants/action-defs.d.ts +1 -0
  594. package/dist/features/products/constants/action-defs.js +1 -0
  595. package/dist/features/products/constants/listing-tabs.d.ts +9 -0
  596. package/dist/features/products/constants/listing-tabs.js +3 -2
  597. package/dist/features/products/hooks/useProducts.js +2 -2
  598. package/dist/features/products/repository/products.repository.d.ts +98 -0
  599. package/dist/features/products/repository/products.repository.js +248 -18
  600. package/dist/features/products/schemas/firestore.d.ts +97 -4
  601. package/dist/features/products/schemas/firestore.js +104 -0
  602. package/dist/features/products/schemas/index.d.ts +12 -21
  603. package/dist/features/products/schemas/index.js +23 -6
  604. package/dist/features/products/types/index.d.ts +46 -2
  605. package/dist/features/products/utils/group-member-image.d.ts +39 -0
  606. package/dist/features/products/utils/group-member-image.js +3 -0
  607. package/dist/features/products/utils/listing-badge-variant.js +4 -0
  608. package/dist/features/promotions/api/route.js +1 -1
  609. package/dist/features/reviews/actions/review-actions.d.ts +6 -6
  610. package/dist/features/reviews/actions/review-actions.js +22 -8
  611. package/dist/features/reviews/components/ReviewDetailPageView.js +13 -1
  612. package/dist/features/reviews/components/ReviewsIndexPageView.js +21 -4
  613. package/dist/features/reviews/components/ReviewsList.js +1 -1
  614. package/dist/features/reviews/repository/reviews.repository.d.ts +19 -7
  615. package/dist/features/reviews/repository/reviews.repository.js +63 -12
  616. package/dist/features/reviews/schemas/firestore.d.ts +13 -2
  617. package/dist/features/reviews/schemas/index.d.ts +2 -2
  618. package/dist/features/scams/actions/scam-actions.js +16 -4
  619. package/dist/features/scams/components/ScamProfileView.js +1 -1
  620. package/dist/features/search/components/EntityTypeahead.d.ts +44 -0
  621. package/dist/features/search/components/EntityTypeahead.js +92 -0
  622. package/dist/features/search/components/Search.d.ts +12 -1
  623. package/dist/features/search/components/Search.js +47 -3
  624. package/dist/features/search/components/SearchFacetRail.d.ts +11 -0
  625. package/dist/features/search/components/SearchFacetRail.js +92 -0
  626. package/dist/features/search/components/SearchResultsClient.d.ts +33 -0
  627. package/dist/features/search/components/SearchResultsClient.js +103 -0
  628. package/dist/features/search/components/SearchResultsPageView.d.ts +15 -1
  629. package/dist/features/search/components/SearchResultsPageView.js +3 -2
  630. package/dist/features/search/components/index.d.ts +0 -6
  631. package/dist/features/search/components/index.js +0 -3
  632. package/dist/features/search/hooks/useNavSuggestions.d.ts +13 -0
  633. package/dist/features/search/hooks/useScopedSearch.d.ts +34 -0
  634. package/dist/features/search/hooks/useScopedSearch.js +114 -0
  635. package/dist/features/search/hooks/useSearchIndex.d.ts +34 -0
  636. package/dist/features/search/hooks/useSearchIndex.js +172 -0
  637. package/dist/features/search/hooks/useSiteSearch.d.ts +26 -0
  638. package/dist/features/search/hooks/useSiteSearch.js +149 -0
  639. package/dist/features/search/index.d.ts +0 -4
  640. package/dist/features/search/index.js +0 -4
  641. package/dist/features/search/manifest.d.ts +12 -0
  642. package/dist/features/search/manifest.js +17 -2
  643. package/dist/features/search/server.d.ts +0 -3
  644. package/dist/features/search/server.js +0 -3
  645. package/dist/features/seller/actions/offer-actions.d.ts +5 -5
  646. package/dist/features/seller/actions/offer-actions.js +38 -8
  647. package/dist/features/seller/actions/seller-actions.js +34 -7
  648. package/dist/features/seller/api/coupons/route.js +1 -1
  649. package/dist/features/seller/api/products/route.js +1 -1
  650. package/dist/features/seller/api/store/route.js +1 -1
  651. package/dist/features/seller/components/SellerBidsView.js +1 -1
  652. package/dist/features/seller/components/SellerCouponsView.js +1 -1
  653. package/dist/features/seller/components/SellerListingTypeView.d.ts +1 -1
  654. package/dist/features/seller/components/SellerListingTypeView.js +29 -1
  655. package/dist/features/seller/components/SellerOrdersView.js +1 -1
  656. package/dist/features/seller/components/SellerPayoutSettingsView.js +35 -15
  657. package/dist/features/seller/components/SellerPayoutsView.js +1 -1
  658. package/dist/features/seller/components/SellerProductShell.d.ts +1 -1
  659. package/dist/features/seller/components/SellerProductShell.js +2 -2
  660. package/dist/features/seller/components/SellerProductsView.js +1 -1
  661. package/dist/features/seller/components/SellerShippingView.js +0 -1
  662. package/dist/features/seller/components/SellerSidebar.js +1 -1
  663. package/dist/features/seller/components/SellerSparesView.d.ts +17 -0
  664. package/dist/features/seller/components/SellerSparesView.js +6 -0
  665. package/dist/features/seller/components/SellerStorefrontView.js +0 -1
  666. package/dist/features/seller/components/index.d.ts +2 -4
  667. package/dist/features/seller/components/index.js +1 -2
  668. package/dist/features/seller/repository/offer.repository.d.ts +15 -3
  669. package/dist/features/seller/repository/offer.repository.js +43 -7
  670. package/dist/features/seller/schemas/firestore.d.ts +14 -3
  671. package/dist/features/seller/schemas/index.d.ts +4 -4
  672. package/dist/features/seller/schemas/order-forms.d.ts +39 -0
  673. package/dist/features/seller/schemas/order-forms.js +37 -0
  674. package/dist/features/shell/CommandPalette.js +1 -1
  675. package/dist/features/shell/FormShell.js +6 -2
  676. package/dist/features/shell/QuickFormDrawer.js +15 -1
  677. package/dist/features/shipments/components/AdminShipmentEditorView.js +0 -1
  678. package/dist/features/shipments/components/AdminShipmentsView.js +1 -1
  679. package/dist/features/sticker-trace/components/StickerCommitPanel.d.ts +30 -0
  680. package/dist/features/sticker-trace/components/StickerCommitPanel.js +93 -0
  681. package/dist/features/sticker-trace/components/StickerPrintPanel.d.ts +33 -0
  682. package/dist/features/sticker-trace/components/StickerPrintPanel.js +104 -0
  683. package/dist/features/sticker-trace/components/StickerRetryPanel.d.ts +20 -0
  684. package/dist/features/sticker-trace/components/StickerRetryPanel.js +128 -0
  685. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.d.ts +45 -0
  686. package/dist/features/sticker-trace/components/StickerRunHistoryPanel.js +84 -0
  687. package/dist/features/sticker-trace/components/StickerTraceStudio.d.ts +27 -0
  688. package/dist/features/sticker-trace/components/StickerTraceStudio.js +171 -0
  689. package/dist/features/sticker-trace/constants/help-content.d.ts +23 -0
  690. package/dist/features/sticker-trace/constants/help-content.js +172 -0
  691. package/dist/features/sticker-trace/hooks/useLiveTrace.d.ts +27 -0
  692. package/dist/features/sticker-trace/hooks/useLiveTrace.js +160 -0
  693. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.d.ts +22 -0
  694. package/dist/features/sticker-trace/hooks/useStickerTraceProgress.js +106 -0
  695. package/dist/features/sticker-trace/repository/sticker-sheets.repository.d.ts +113 -0
  696. package/dist/features/sticker-trace/repository/sticker-sheets.repository.js +146 -0
  697. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.d.ts +132 -0
  698. package/dist/features/sticker-trace/repository/sticker-trace-runs.repository.js +174 -0
  699. package/dist/features/sticker-trace/schemas/firestore.d.ts +267 -0
  700. package/dist/features/sticker-trace/schemas/firestore.js +79 -0
  701. package/dist/features/sticker-trace/server.d.ts +8 -0
  702. package/dist/features/sticker-trace/server.js +51 -0
  703. package/dist/features/stores/actions/store-query-actions.d.ts +2 -2
  704. package/dist/features/stores/actions/store-query-actions.js +7 -2
  705. package/dist/features/stores/api/[storeSlug]/auctions/route.js +3 -3
  706. package/dist/features/stores/api/[storeSlug]/products/route.js +3 -3
  707. package/dist/features/stores/api/[storeSlug]/reviews/route.js +1 -1
  708. package/dist/features/stores/api/[storeSlug]/route.js +1 -1
  709. package/dist/features/stores/components/StoreDetailLayoutView.d.ts +1 -1
  710. package/dist/features/stores/components/StoreDetailLayoutView.js +7 -82
  711. package/dist/features/stores/components/StoreHeader.js +1 -2
  712. package/dist/features/stores/components/StoreNavTabs.js +17 -2
  713. package/dist/features/stores/components/StoreSparesPageView.d.ts +27 -0
  714. package/dist/features/stores/components/StoreSparesPageView.js +48 -0
  715. package/dist/features/stores/manifest.js +8 -4
  716. package/dist/features/stores/schemas/firestore.d.ts +19 -0
  717. package/dist/features/support/repository/support.repository.d.ts +14 -3
  718. package/dist/features/support/repository/support.repository.js +93 -13
  719. package/dist/features/support/schemas/firestore.d.ts +16 -5
  720. package/dist/features/tester/seed-data/authored/admin__events-raffles-spin.js +61 -19
  721. package/dist/features/tester/seed-data/authored/buying__browsing-search.js +19 -3
  722. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.d.ts +2 -0
  723. package/dist/features/tester/seed-data/authored/buying__spares-and-groups.js +96 -0
  724. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.d.ts +4 -0
  725. package/dist/features/tester/seed-data/authored/content-discovery__authenticity-checker.js +478 -0
  726. package/dist/features/tester/seed-data/authored/content-discovery__category-tabs-franchise-bundles.js +54 -32
  727. package/dist/features/tester/seed-data/authored/content-discovery__events.js +36 -10
  728. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.d.ts +2 -0
  729. package/dist/features/tester/seed-data/authored/content-discovery__overflowing-pill-rows.js +209 -0
  730. package/dist/features/tester/seed-data/authored/content-discovery__parts-database.js +3 -2
  731. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.d.ts +2 -0
  732. package/dist/features/tester/seed-data/authored/content-discovery__price-index-and-compare.js +73 -0
  733. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.d.ts +2 -0
  734. package/dist/features/tester/seed-data/authored/content-discovery__site-wide-index.js +340 -0
  735. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.d.ts +2 -0
  736. package/dist/features/tester/seed-data/authored/design-ux__header-brand-mark-centring.js +90 -0
  737. package/dist/features/tester/seed-data/authored/index.js +24 -0
  738. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.d.ts +1 -0
  739. package/dist/features/tester/seed-data/authored/search-and-nav__header-search.js +57 -0
  740. package/dist/features/tester/seed-data/authored/selling__media-limits.js +19 -17
  741. package/dist/features/tester/seed-data/authored/selling__product-upload-details.js +10 -5
  742. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.d.ts +2 -0
  743. package/dist/features/tester/seed-data/authored/selling__spares-and-group-editing.js +77 -0
  744. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.d.ts +2 -0
  745. package/dist/features/tester/seed-data/authored/tools__sticker-promote-to-listings.js +58 -0
  746. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.d.ts +2 -0
  747. package/dist/features/tester/seed-data/authored/tools__sticker-tracer.js +284 -0
  748. package/dist/features/tester/seed-data/tester-checklist-seed-data.js +558 -34
  749. package/dist/index.d.ts +27 -80
  750. package/dist/index.js +62 -115
  751. package/dist/next/api/routeHandler.js +9 -0
  752. package/dist/next/routing/require-record.d.ts +13 -0
  753. package/dist/next/routing/require-record.js +62 -0
  754. package/dist/next/routing/route-map.d.ts +46 -5
  755. package/dist/next/routing/route-map.js +70 -3
  756. package/dist/providers/db-firebase/base.d.ts +4 -2
  757. package/dist/providers/db-firebase/base.js +21 -5
  758. package/dist/providers/db-firebase/base.repository.d.ts +33 -9
  759. package/dist/providers/db-firebase/base.repository.js +55 -0
  760. package/dist/providers/db-firebase/rtdb-paths.d.ts +12 -0
  761. package/dist/providers/db-firebase/rtdb-paths.js +12 -0
  762. package/dist/react/ErrorBoundary.js +6 -1
  763. package/dist/react/hooks/realtime-event-constants.d.ts +1 -0
  764. package/dist/react/hooks/realtime-event-constants.js +8 -0
  765. package/dist/react/hooks/useEntityDelete.js +5 -1
  766. package/dist/react/hooks/useMessage.js +5 -1
  767. package/dist/repositories/index.d.ts +2 -2
  768. package/dist/repositories/index.js +6 -1
  769. package/dist/schemas/registry.d.ts +28 -26
  770. package/dist/schemas/registry.js +31 -14
  771. package/dist/schemas/webhooks/google-oauth.d.ts +2 -2
  772. package/dist/security/blind-index-tokens.d.ts +54 -0
  773. package/dist/security/blind-index-tokens.js +152 -0
  774. package/dist/security/encrypted.d.ts +117 -0
  775. package/dist/security/encrypted.js +100 -0
  776. package/dist/security/index.d.ts +6 -3
  777. package/dist/security/index.js +17 -3
  778. package/dist/security/pii-accessors.d.ts +71 -0
  779. package/dist/security/pii-accessors.js +150 -0
  780. package/dist/security/pii-encrypt.d.ts +0 -8
  781. package/dist/security/pii-encrypt.js +22 -15
  782. package/dist/security/pii-mask.d.ts +18 -0
  783. package/dist/security/pii-mask.js +27 -0
  784. package/dist/security/settings-encryption.d.ts +35 -0
  785. package/dist/security/settings-encryption.js +91 -0
  786. package/dist/seed/_helpers/brand-rows.js +38 -14
  787. package/dist/seed/_helpers/category-forest.js +73 -7
  788. package/dist/seed/_helpers/category-images-generated.d.ts +25 -6
  789. package/dist/seed/_helpers/category-images-generated.js +81 -6
  790. package/dist/seed/_helpers/category-models.d.ts +1 -1
  791. package/dist/seed/_helpers/category-models.js +7 -1
  792. package/dist/seed/_helpers/category-parts-glossary-map.js +8 -0
  793. package/dist/seed/_helpers/category-parts.d.ts +1 -1
  794. package/dist/seed/_helpers/category-parts.js +50 -2
  795. package/dist/seed/_helpers/character-features.d.ts +1 -1
  796. package/dist/seed/_helpers/character-features.js +2 -1
  797. package/dist/seed/_helpers/franchise-rows.js +10 -2
  798. package/dist/seed/_helpers/media.d.ts +47 -0
  799. package/dist/seed/_helpers/media.js +34 -0
  800. package/dist/seed/_helpers/search-txt-wrappers.d.ts +6 -6
  801. package/dist/seed/_helpers/search-txt-wrappers.js +22 -0
  802. package/dist/seed/addresses-seed-data.d.ts +2 -2
  803. package/dist/seed/authenticity-knowledge-seed-data.d.ts +78 -0
  804. package/dist/seed/authenticity-knowledge-seed-data.js +10729 -0
  805. package/dist/seed/bids-seed-data.d.ts +2 -2
  806. package/dist/seed/bids-seed-data.js +23 -2
  807. package/dist/seed/categories-seed-data.js +124 -20
  808. package/dist/seed/events-seed-data.d.ts +2 -2
  809. package/dist/seed/events-seed-data.js +5 -0
  810. package/dist/seed/faq-seed-data.js +175 -5
  811. package/dist/seed/grouped-listings-seed-data.js +16 -0
  812. package/dist/seed/homepage-sections-seed-data.js +131 -26
  813. package/dist/seed/index.d.ts +3 -3
  814. package/dist/seed/index.js +3 -2
  815. package/dist/seed/lottery-entries-seed-data.d.ts +2 -2
  816. package/dist/seed/manifest.js +3 -0
  817. package/dist/seed/media-assets-seed-data.d.ts +1 -1
  818. package/dist/seed/media-assets-seed-data.js +746 -196
  819. package/dist/seed/model-composition-seed-data.js +122 -6
  820. package/dist/seed/offers-seed-data.d.ts +2 -2
  821. package/dist/seed/offers-seed-data.js +1 -1
  822. package/dist/seed/orders-seed-data.d.ts +2 -2
  823. package/dist/seed/part-glossary-seed-data.d.ts +1 -1
  824. package/dist/seed/part-glossary-seed-data.js +37219 -463
  825. package/dist/seed/payouts-seed-data.d.ts +2 -2
  826. package/dist/seed/payouts-seed-data.js +1 -1
  827. package/dist/seed/products-art-seed-data.js +7 -18
  828. package/dist/seed/products-auctions-seed-data.js +56 -47
  829. package/dist/seed/products-beyblade-x-seed-data.d.ts +2 -0
  830. package/dist/seed/products-beyblade-x-seed-data.js +441 -0
  831. package/dist/seed/products-catalogue-seed-data.d.ts +5 -5
  832. package/dist/seed/products-catalogue-seed-data.js +1500 -1240
  833. package/dist/seed/products-classifieds-seed-data.js +9 -27
  834. package/dist/seed/products-digital-codes-seed-data.js +9 -18
  835. package/dist/seed/products-live-items-seed-data.js +5 -13
  836. package/dist/seed/products-preorders-seed-data.js +67 -33
  837. package/dist/seed/products-prize-draws-seed-data.js +8 -17
  838. package/dist/seed/products-spares-seed-data.d.ts +2 -0
  839. package/dist/seed/products-spares-seed-data.js +368 -0
  840. package/dist/seed/products-standard-seed-data.js +39 -126
  841. package/dist/seed/products-stickers-seed-data.js +59 -15
  842. package/dist/seed/reviews-seed-data.d.ts +1 -2
  843. package/dist/seed/seed-purpose.js +7 -0
  844. package/dist/seed/sessions-seed-data.d.ts +2 -2
  845. package/dist/seed/sessions-seed-data.js +5 -0
  846. package/dist/seed/site-settings-seed-data.js +9 -1
  847. package/dist/seed/support-tickets-seed-data.d.ts +2 -2
  848. package/dist/seed/support-tickets-seed-data.js +1 -1
  849. package/dist/seed/users-seed-data.d.ts +2 -2
  850. package/dist/seed/users-seed-data.js +1 -1
  851. package/dist/seo/json-ld.d.ts +25 -0
  852. package/dist/seo/json-ld.js +33 -1
  853. package/dist/server-entry.d.ts +3 -1
  854. package/dist/server-entry.js +2 -2
  855. package/dist/server.d.ts +27 -12
  856. package/dist/server.js +86 -28
  857. package/dist/styles.css +438 -1
  858. package/dist/tailwind-input.css +31 -17
  859. package/dist/tailwind-utilities.css +1 -1
  860. package/dist/ui/components/Accordion.js +1 -1
  861. package/dist/ui/components/Breadcrumb.js +1 -1
  862. package/dist/ui/components/Button.js +7 -1
  863. package/dist/ui/components/DetailPageGallery.js +0 -2
  864. package/dist/ui/components/DetailPageHero.js +0 -1
  865. package/dist/ui/components/DetailPageTabs.js +1 -1
  866. package/dist/ui/components/Divider.js +3 -3
  867. package/dist/ui/components/FilterChipGroup.d.ts +11 -0
  868. package/dist/ui/components/FilterChipGroup.js +1 -1
  869. package/dist/ui/components/GatedPrice.js +5 -1
  870. package/dist/ui/components/HorizontalScroller.js +1 -1
  871. package/dist/ui/components/ImageGallery.js +6 -1
  872. package/dist/ui/components/ListingLayout.js +17 -11
  873. package/dist/ui/components/MediaTabs.style.css +81 -0
  874. package/dist/ui/components/OverflowRow.d.ts +92 -0
  875. package/dist/ui/components/OverflowRow.js +203 -0
  876. package/dist/ui/components/OverflowRow.style.css +235 -0
  877. package/dist/ui/components/Pagination.js +1 -1
  878. package/dist/ui/components/PendingValue.d.ts +45 -0
  879. package/dist/ui/components/PendingValue.js +7 -0
  880. package/dist/ui/components/Radio.style.css +119 -0
  881. package/dist/ui/components/RatingDisplay.js +2 -2
  882. package/dist/ui/components/RecordDetailModal.js +14 -1
  883. package/dist/ui/components/RowActionMenu.js +5 -1
  884. package/dist/ui/components/SettingsSection.js +0 -2
  885. package/dist/ui/components/SideDrawer.js +5 -1
  886. package/dist/ui/components/SideModal.js +9 -1
  887. package/dist/ui/components/SiteLogo.js +3 -0
  888. package/dist/ui/components/SiteMark.js +3 -0
  889. package/dist/ui/components/SortDropdown.js +1 -1
  890. package/dist/ui/components/SpecTable.d.ts +58 -0
  891. package/dist/ui/components/SpecTable.js +8 -0
  892. package/dist/ui/components/StarRating.js +1 -3
  893. package/dist/ui/components/SummaryCard.js +1 -1
  894. package/dist/ui/components/TabBarShell.d.ts +12 -1
  895. package/dist/ui/components/TabBarShell.js +3 -2
  896. package/dist/ui/components/Tabs.js +36 -24
  897. package/dist/ui/components/Toast.d.ts +3 -24
  898. package/dist/ui/components/Toast.js +2 -19
  899. package/dist/ui/components/TopBannerPortal.d.ts +15 -0
  900. package/dist/ui/components/TopBannerPortal.js +19 -0
  901. package/dist/ui/components/UnsavedChangesModal.js +5 -1
  902. package/dist/ui/components/index.style.css +2 -0
  903. package/dist/ui/components/row-collapse.d.ts +15 -0
  904. package/dist/ui/components/row-collapse.js +127 -0
  905. package/dist/ui/components/toast-context.d.ts +63 -0
  906. package/dist/ui/components/toast-context.js +48 -0
  907. package/dist/ui/components/top-banner-slot.d.ts +37 -0
  908. package/dist/ui/components/top-banner-slot.js +45 -0
  909. package/dist/ui/icons/icon-registry.d.ts +7 -0
  910. package/dist/ui/icons/icon-registry.js +25 -1
  911. package/dist/ui/index.d.ts +6 -0
  912. package/dist/ui/index.js +3 -0
  913. package/dist/utils/array.helper.d.ts +2 -2
  914. package/dist/utils/array.helper.js +5 -5
  915. package/dist/utils/id-generators.d.ts +6 -0
  916. package/dist/utils/id-generators.js +10 -0
  917. package/dist/utils/media-url.js +0 -2
  918. package/dist/utils/search-txt-builders.d.ts +28 -4
  919. package/dist/utils/search-txt-builders.js +41 -1
  920. package/dist/utils/search-txt-query.d.ts +12 -0
  921. package/dist/utils/search-txt-query.js +12 -0
  922. package/dist/validation/schemas.d.ts +8 -8
  923. package/package.json +6 -2
  924. package/scripts/dedupe-peer-deps.mjs +18 -0
  925. package/scripts/seed-cli.mjs +138 -26
  926. package/scripts/verify-css-build.mjs +118 -37
  927. package/dist/_internal/server/features/search/actions.d.ts +0 -7
  928. package/dist/_internal/server/features/search/actions.js +0 -21
  929. package/dist/_internal/server/features/search/data.d.ts +0 -15
  930. package/dist/_internal/server/features/search/data.js +0 -18
  931. package/dist/_internal/server/features/search/index.d.ts +0 -3
  932. package/dist/_internal/server/features/search/index.js +0 -2
  933. package/dist/features/account/components/UserAddressesView.d.ts +0 -13
  934. package/dist/features/account/components/UserAddressesView.js +0 -5
  935. package/dist/features/account/components/UserNotificationsView.d.ts +0 -15
  936. package/dist/features/account/components/UserNotificationsView.js +0 -12
  937. package/dist/features/account/components/UserSettingsView.d.ts +0 -16
  938. package/dist/features/account/components/UserSettingsView.js +0 -13
  939. package/dist/features/account/components/UserSupportView.d.ts +0 -3
  940. package/dist/features/account/components/UserSupportView.js +0 -166
  941. package/dist/features/admin/components/DemoSeedView.d.ts +0 -11
  942. package/dist/features/admin/components/DemoSeedView.js +0 -5
  943. package/dist/features/auth/components/AuthStatusPanel.d.ts +0 -10
  944. package/dist/features/auth/components/AuthStatusPanel.js +0 -22
  945. package/dist/features/categories/components/CategoryProductsView.d.ts +0 -45
  946. package/dist/features/categories/components/CategoryProductsView.js +0 -21
  947. package/dist/features/homepage/api/[id]/route.d.ts +0 -23
  948. package/dist/features/homepage/api/[id]/route.js +0 -103
  949. package/dist/features/homepage/api/route.d.ts +0 -14
  950. package/dist/features/homepage/api/route.js +0 -140
  951. package/dist/features/homepage/api/sections/[id]/route.d.ts +0 -26
  952. package/dist/features/homepage/api/sections/[id]/route.js +0 -95
  953. package/dist/features/homepage/api/sections/route.d.ts +0 -13
  954. package/dist/features/homepage/api/sections/route.js +0 -82
  955. package/dist/features/homepage/components/AdvertisementBanner.d.ts +0 -14
  956. package/dist/features/homepage/components/AdvertisementBanner.js +0 -35
  957. package/dist/features/homepage/components/BeforeAfterCard.d.ts +0 -9
  958. package/dist/features/homepage/components/BeforeAfterCard.js +0 -73
  959. package/dist/features/homepage/components/FeaturedResultsSection.d.ts +0 -17
  960. package/dist/features/homepage/components/FeaturedResultsSection.js +0 -17
  961. package/dist/features/homepage/components/HeroBanner.d.ts +0 -7
  962. package/dist/features/homepage/components/HeroBanner.js +0 -43
  963. package/dist/features/homepage/components/HeroSection.d.ts +0 -7
  964. package/dist/features/homepage/components/HeroSection.js +0 -6
  965. package/dist/features/homepage/components/HomepageSkeleton.d.ts +0 -2
  966. package/dist/features/homepage/components/HomepageSkeleton.js +0 -21
  967. package/dist/features/homepage/components/HomepageView.d.ts +0 -25
  968. package/dist/features/homepage/components/HomepageView.js +0 -5
  969. package/dist/features/homepage/components/HowItWorksInfoView.d.ts +0 -36
  970. package/dist/features/homepage/components/HowItWorksInfoView.js +0 -10
  971. package/dist/features/homepage/components/NewsletterBanner.d.ts +0 -23
  972. package/dist/features/homepage/components/NewsletterBanner.js +0 -37
  973. package/dist/features/homepage/components/SiteFeaturesSection.d.ts +0 -14
  974. package/dist/features/homepage/components/SiteFeaturesSection.js +0 -11
  975. package/dist/features/homepage/components/TrustBadges.d.ts +0 -6
  976. package/dist/features/homepage/components/TrustBadges.js +0 -46
  977. package/dist/features/homepage/components/TrustIndicatorsSection.d.ts +0 -12
  978. package/dist/features/homepage/components/TrustIndicatorsSection.js +0 -11
  979. package/dist/features/homepage/hooks/useHomepage.d.ts +0 -11
  980. package/dist/features/homepage/hooks/useHomepage.js +0 -17
  981. package/dist/features/homepage/hooks/useHomepageSections.d.ts +0 -2
  982. package/dist/features/homepage/hooks/useHomepageSections.js +0 -10
  983. package/dist/features/homepage/repository/homepage.repository.d.ts +0 -11
  984. package/dist/features/homepage/repository/homepage.repository.js +0 -25
  985. package/dist/features/layout/BottomActions.d.ts +0 -1
  986. package/dist/features/layout/BottomActions.js +0 -311
  987. package/dist/features/products/components/ProductsView.d.ts +0 -6
  988. package/dist/features/products/components/ProductsView.js +0 -5
  989. package/dist/features/search/actions/index.d.ts +0 -1
  990. package/dist/features/search/actions/index.js +0 -1
  991. package/dist/features/search/actions/search-actions.d.ts +0 -18
  992. package/dist/features/search/actions/search-actions.js +0 -43
  993. package/dist/features/search/api/route.d.ts +0 -22
  994. package/dist/features/search/api/route.js +0 -128
  995. package/dist/features/search/columns/index.d.ts +0 -17
  996. package/dist/features/search/columns/index.js +0 -49
  997. package/dist/features/search/components/SearchFiltersRow.d.ts +0 -22
  998. package/dist/features/search/components/SearchFiltersRow.js +0 -21
  999. package/dist/features/search/components/SearchResultsSection.d.ts +0 -53
  1000. package/dist/features/search/components/SearchResultsSection.js +0 -35
  1001. package/dist/features/search/components/SearchView.d.ts +0 -27
  1002. package/dist/features/search/components/SearchView.js +0 -8
  1003. package/dist/features/search/hooks/useSearch.d.ts +0 -21
  1004. package/dist/features/search/hooks/useSearch.js +0 -33
  1005. package/dist/features/search/repository/search.repository.d.ts +0 -14
  1006. package/dist/features/search/repository/search.repository.js +0 -59
  1007. package/dist/features/search/schemas/index.d.ts +0 -70
  1008. package/dist/features/search/schemas/index.js +0 -36
  1009. package/dist/features/search/types/index.d.ts +0 -48
  1010. package/dist/features/seller/components/SellerStoreView.d.ts +0 -8
  1011. package/dist/features/seller/components/SellerStoreView.js +0 -8
  1012. package/dist/features/stores/components/StoreScopedSearch.d.ts +0 -17
  1013. package/dist/features/stores/components/StoreScopedSearch.js +0 -27
  1014. package/dist/seed/defaults/homepage-sections.d.ts +0 -2
  1015. package/dist/seed/defaults/homepage-sections.js +0 -60
  1016. package/dist/seed/factories/homepage-section.factory.d.ts +0 -10
  1017. package/dist/seed/factories/homepage-section.factory.js +0 -13
  1018. /package/dist/{features/search/types/index.js → _internal/shared/listing-types/spares/og.d.ts} +0 -0
@@ -50,6 +50,7 @@ export declare const DEFAULT_ROUTE_MAP: {
50
50
  readonly STORE_DIGITAL_CODES: (storeSlug: string) => string;
51
51
  readonly STORE_LIVE: (storeSlug: string) => string;
52
52
  readonly STORE_ART: (storeSlug: string) => string;
53
+ readonly STORE_SPARES: (storeSlug: string) => string;
53
54
  readonly CATEGORIES: "/categories";
54
55
  readonly CATEGORY_DETAIL: (slug: string) => string;
55
56
  readonly BRANDS: "/brands";
@@ -63,7 +64,6 @@ export declare const DEFAULT_ROUTE_MAP: {
63
64
  readonly ABOUT: "/about";
64
65
  readonly DEVELOPER: "/developer";
65
66
  readonly CONTACT: "/contact";
66
- readonly BLOG: "/blog";
67
67
  readonly HELP: "/help";
68
68
  readonly HELP_SHOPPING: "/help/shopping";
69
69
  readonly HELP_AUCTIONS: "/help/auctions";
@@ -79,6 +79,19 @@ export declare const DEFAULT_ROUTE_MAP: {
79
79
  readonly COOKIE_POLICY: "/cookies";
80
80
  readonly REFUND_POLICY: "/refund-policy";
81
81
  readonly SHIPPING_POLICY: "/shipping-policy";
82
+ /**
83
+ * Cancellation policy. Distinct from the refund policy, which already
84
+ * covers cancellation in passing — PhonePe's merchant review asks for it
85
+ * by name, and so does the Consumer Protection (E-Commerce) Rules 2020
86
+ * disclosure list.
87
+ */
88
+ readonly CANCELLATION_POLICY: "/cancellation-policy";
89
+ /**
90
+ * Grievance officer. A MANDATORY published disclosure under the Consumer
91
+ * Protection (E-Commerce) Rules 2020 and the IT Rules 2021 — name,
92
+ * designation, contact and a response commitment.
93
+ */
94
+ readonly GRIEVANCE: "/grievance";
82
95
  readonly HOW_AUCTIONS_WORK: "/how-auctions-work";
83
96
  readonly HOW_PRE_ORDERS_WORK: "/how-pre-orders-work";
84
97
  readonly HOW_OFFERS_WORK: "/how-offers-work";
@@ -100,7 +113,6 @@ export declare const DEFAULT_ROUTE_MAP: {
100
113
  readonly EVENT_SPIN_RESULTS: (id: string) => string;
101
114
  readonly LOTTERIES: "/lottery";
102
115
  readonly LOTTERY_DETAIL: (id: string) => string;
103
- readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
104
116
  readonly SUBLISTING_CATEGORY: (slug: string) => string;
105
117
  readonly SUPPORT: "/support";
106
118
  readonly SCAMS: "/scams";
@@ -112,6 +124,8 @@ export declare const DEFAULT_ROUTE_MAP: {
112
124
  readonly ITEM_REQUESTS_NEW: "/item-requests/new";
113
125
  readonly TOOLS: "/tools";
114
126
  readonly TOOL_PRICE_INDEX: "/tools/price-index";
127
+ readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
128
+ readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
115
129
  readonly PARTS: "/parts";
116
130
  readonly PART_CLASSIFICATION: (classification: string) => string;
117
131
  readonly PART_DETAIL: (classification: string, code: string) => string;
@@ -124,6 +138,7 @@ export declare const DEFAULT_ROUTE_MAP: {
124
138
  readonly LIVE: "/live";
125
139
  readonly LIVE_DETAIL: (slug: string) => string;
126
140
  readonly ART: "/art";
141
+ readonly SPARES: "/spares";
127
142
  readonly CATALOGUE_ITEM_DETAIL: (ownerSlug: string, itemId: string) => string;
128
143
  };
129
144
  readonly ERRORS: {
@@ -246,6 +261,9 @@ export declare const DEFAULT_ROUTE_MAP: {
246
261
  readonly STICKERS: "/store/stickers";
247
262
  readonly STICKERS_NEW: "/store/stickers/new";
248
263
  readonly STICKERS_EDIT: (id: string) => string;
264
+ readonly SPARES: "/store/spares";
265
+ readonly SPARES_NEW: "/store/spares/new";
266
+ readonly SPARES_EDIT: (id: string) => string;
249
267
  readonly PRINT_CENTER: "/store/print-center";
250
268
  readonly FULFILLMENT: "/store/fulfillment";
251
269
  readonly PAYOUT_METHODS: "/store/payout-methods";
@@ -324,6 +342,7 @@ export declare const DEFAULT_ROUTE_MAP: {
324
342
  readonly LIVE: "/admin/live";
325
343
  readonly ART: "/admin/art";
326
344
  readonly STICKERS: "/admin/stickers";
345
+ readonly SPARES: "/admin/spares";
327
346
  readonly GROUPED_LISTINGS: "/admin/grouped-listings";
328
347
  readonly GROUPED_LISTINGS_NEW: "/admin/grouped-listings/new";
329
348
  readonly GROUPED_LISTINGS_EDIT: (id: string) => string;
@@ -466,6 +485,7 @@ export declare const ROUTES: {
466
485
  readonly STORE_DIGITAL_CODES: (storeSlug: string) => string;
467
486
  readonly STORE_LIVE: (storeSlug: string) => string;
468
487
  readonly STORE_ART: (storeSlug: string) => string;
488
+ readonly STORE_SPARES: (storeSlug: string) => string;
469
489
  readonly CATEGORIES: "/categories";
470
490
  readonly CATEGORY_DETAIL: (slug: string) => string;
471
491
  readonly BRANDS: "/brands";
@@ -479,7 +499,6 @@ export declare const ROUTES: {
479
499
  readonly ABOUT: "/about";
480
500
  readonly DEVELOPER: "/developer";
481
501
  readonly CONTACT: "/contact";
482
- readonly BLOG: "/blog";
483
502
  readonly HELP: "/help";
484
503
  readonly HELP_SHOPPING: "/help/shopping";
485
504
  readonly HELP_AUCTIONS: "/help/auctions";
@@ -495,6 +514,19 @@ export declare const ROUTES: {
495
514
  readonly COOKIE_POLICY: "/cookies";
496
515
  readonly REFUND_POLICY: "/refund-policy";
497
516
  readonly SHIPPING_POLICY: "/shipping-policy";
517
+ /**
518
+ * Cancellation policy. Distinct from the refund policy, which already
519
+ * covers cancellation in passing — PhonePe's merchant review asks for it
520
+ * by name, and so does the Consumer Protection (E-Commerce) Rules 2020
521
+ * disclosure list.
522
+ */
523
+ readonly CANCELLATION_POLICY: "/cancellation-policy";
524
+ /**
525
+ * Grievance officer. A MANDATORY published disclosure under the Consumer
526
+ * Protection (E-Commerce) Rules 2020 and the IT Rules 2021 — name,
527
+ * designation, contact and a response commitment.
528
+ */
529
+ readonly GRIEVANCE: "/grievance";
498
530
  readonly HOW_AUCTIONS_WORK: "/how-auctions-work";
499
531
  readonly HOW_PRE_ORDERS_WORK: "/how-pre-orders-work";
500
532
  readonly HOW_OFFERS_WORK: "/how-offers-work";
@@ -516,7 +548,6 @@ export declare const ROUTES: {
516
548
  readonly EVENT_SPIN_RESULTS: (id: string) => string;
517
549
  readonly LOTTERIES: "/lottery";
518
550
  readonly LOTTERY_DETAIL: (id: string) => string;
519
- readonly SUBLISTING_CATEGORIES: "/sublisting-categories";
520
551
  readonly SUBLISTING_CATEGORY: (slug: string) => string;
521
552
  readonly SUPPORT: "/support";
522
553
  readonly SCAMS: "/scams";
@@ -528,6 +559,8 @@ export declare const ROUTES: {
528
559
  readonly ITEM_REQUESTS_NEW: "/item-requests/new";
529
560
  readonly TOOLS: "/tools";
530
561
  readonly TOOL_PRICE_INDEX: "/tools/price-index";
562
+ readonly TOOL_STICKER_TRACER: "/tools/sticker-tracer";
563
+ readonly TOOL_STICKER_SHEET: (sheetId: string) => string;
531
564
  readonly PARTS: "/parts";
532
565
  readonly PART_CLASSIFICATION: (classification: string) => string;
533
566
  readonly PART_DETAIL: (classification: string, code: string) => string;
@@ -540,6 +573,7 @@ export declare const ROUTES: {
540
573
  readonly LIVE: "/live";
541
574
  readonly LIVE_DETAIL: (slug: string) => string;
542
575
  readonly ART: "/art";
576
+ readonly SPARES: "/spares";
543
577
  readonly CATALOGUE_ITEM_DETAIL: (ownerSlug: string, itemId: string) => string;
544
578
  };
545
579
  readonly ERRORS: {
@@ -662,6 +696,9 @@ export declare const ROUTES: {
662
696
  readonly STICKERS: "/store/stickers";
663
697
  readonly STICKERS_NEW: "/store/stickers/new";
664
698
  readonly STICKERS_EDIT: (id: string) => string;
699
+ readonly SPARES: "/store/spares";
700
+ readonly SPARES_NEW: "/store/spares/new";
701
+ readonly SPARES_EDIT: (id: string) => string;
665
702
  readonly PRINT_CENTER: "/store/print-center";
666
703
  readonly FULFILLMENT: "/store/fulfillment";
667
704
  readonly PAYOUT_METHODS: "/store/payout-methods";
@@ -740,6 +777,7 @@ export declare const ROUTES: {
740
777
  readonly LIVE: "/admin/live";
741
778
  readonly ART: "/admin/art";
742
779
  readonly STICKERS: "/admin/stickers";
780
+ readonly SPARES: "/admin/spares";
743
781
  readonly GROUPED_LISTINGS: "/admin/grouped-listings";
744
782
  readonly GROUPED_LISTINGS_NEW: "/admin/grouped-listings/new";
745
783
  readonly GROUPED_LISTINGS_EDIT: (id: string) => string;
@@ -903,6 +941,9 @@ export declare const SELLER_ROUTES: {
903
941
  readonly STICKERS: "/store/stickers";
904
942
  readonly STICKERS_NEW: "/store/stickers/new";
905
943
  readonly STICKERS_EDIT: (id: string) => string;
944
+ readonly SPARES: "/store/spares";
945
+ readonly SPARES_NEW: "/store/spares/new";
946
+ readonly SPARES_EDIT: (id: string) => string;
906
947
  readonly PRINT_CENTER: "/store/print-center";
907
948
  readonly FULFILLMENT: "/store/fulfillment";
908
949
  readonly PAYOUT_METHODS: "/store/payout-methods";
@@ -931,6 +972,6 @@ export declare const SELLER_ROUTES: {
931
972
  readonly GUIDE_SETTINGS: "/store/guide/settings";
932
973
  readonly GUIDE_WHATSAPP: "/store/guide/whatsapp";
933
974
  };
934
- export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
975
+ export declare const PUBLIC_ROUTES: readonly ["/", string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, string, "/unauthorized", "/auth/login", "/auth/register", "/auth/forgot-password", "/auth/reset-password", "/auth/verify-email"];
935
976
  export declare const PROTECTED_ROUTES: readonly [string, string, string, string, string, string, string];
936
977
  export declare const AUTH_ROUTES: readonly ["/auth/login", "/auth/register"];
@@ -43,6 +43,13 @@ export const DEFAULT_ROUTE_MAP = {
43
43
  // `standard` — so the tab showed a real non-zero count and then landed on
44
44
  // a page containing none of those items.
45
45
  STORE_ART: (storeSlug) => `/stores/${storeSlug}/art`,
46
+ /*
47
+ * 🛑 `STORE_PAGE_TABS` is DERIVED from the plugin registry, so this tab
48
+ * appears the moment the plugin exists — and a missing
49
+ * `stores/[storeSlug]/spares/page.tsx` is then a clickable 404 that no
50
+ * audit covers. The folder lands in the same commit as this key.
51
+ */
52
+ STORE_SPARES: (storeSlug) => `/stores/${storeSlug}/spares`,
46
53
  CATEGORIES: "/categories",
47
54
  CATEGORY_DETAIL: (slug) => `/categories/${slug}`,
48
55
  BRANDS: "/brands",
@@ -63,7 +70,14 @@ export const DEFAULT_ROUTE_MAP = {
63
70
  ABOUT: "/about",
64
71
  DEVELOPER: "/developer",
65
72
  CONTACT: "/contact",
66
- BLOG: "/blog",
73
+ /*
74
+ * 🛑 No `PUBLIC.BLOG`. `BLOG.LIST` is the one key for "/blog", and it sits
75
+ * beside `BLOG.ARTICLE` — which is the ONLY blog detail key, so `BLOG` was
76
+ * always the canonical section and `PUBLIC.BLOG` was an alias of its index.
77
+ * Two keys for one path is Root Cause #61's family: the duplicate was
78
+ * reported by `audit-dead-route-key` on every run, and nine call sites had
79
+ * drifted onto the alias while one used the real key.
80
+ */
67
81
  HELP: "/help",
68
82
  HELP_SHOPPING: "/help/shopping",
69
83
  HELP_AUCTIONS: "/help/auctions",
@@ -79,6 +93,19 @@ export const DEFAULT_ROUTE_MAP = {
79
93
  COOKIE_POLICY: "/cookies",
80
94
  REFUND_POLICY: "/refund-policy",
81
95
  SHIPPING_POLICY: "/shipping-policy",
96
+ /**
97
+ * Cancellation policy. Distinct from the refund policy, which already
98
+ * covers cancellation in passing — PhonePe's merchant review asks for it
99
+ * by name, and so does the Consumer Protection (E-Commerce) Rules 2020
100
+ * disclosure list.
101
+ */
102
+ CANCELLATION_POLICY: "/cancellation-policy",
103
+ /**
104
+ * Grievance officer. A MANDATORY published disclosure under the Consumer
105
+ * Protection (E-Commerce) Rules 2020 and the IT Rules 2021 — name,
106
+ * designation, contact and a response commitment.
107
+ */
108
+ GRIEVANCE: "/grievance",
82
109
  HOW_AUCTIONS_WORK: "/how-auctions-work",
83
110
  HOW_PRE_ORDERS_WORK: "/how-pre-orders-work",
84
111
  HOW_OFFERS_WORK: "/how-offers-work",
@@ -119,7 +146,14 @@ export const DEFAULT_ROUTE_MAP = {
119
146
  EVENT_SPIN_RESULTS: (id) => `/events/${id}/spin-results`,
120
147
  LOTTERIES: "/lottery",
121
148
  LOTTERY_DETAIL: (id) => `/lottery/${id}`,
122
- SUBLISTING_CATEGORIES: "/sublisting-categories",
149
+ /*
150
+ * 🛑 There is deliberately NO public `SUBLISTING_CATEGORIES` index key.
151
+ * `src/app/[locale]/sublisting-categories/` holds only `[slug]/`, so the
152
+ * index has never existed; the key promised a route with no page behind
153
+ * it, had zero references anywhere, and `audit-dead-route-key` carried it
154
+ * as its one grandfathered entry. A sub-listing is reached from the
155
+ * category or product it belongs to, not from a top-level list.
156
+ */
123
157
  SUBLISTING_CATEGORY: (slug) => `/sublisting-categories/${slug}`,
124
158
  SUPPORT: "/support",
125
159
  SCAMS: "/scams",
@@ -138,6 +172,14 @@ export const DEFAULT_ROUTE_MAP = {
138
172
  */
139
173
  TOOLS: "/tools",
140
174
  TOOL_PRICE_INDEX: "/tools/price-index",
175
+ /*
176
+ * Admin-only, and under a PUBLIC prefix on purpose — it is a tool, and
177
+ * /tools is where tools live. The guard is the layout, not the path: a
178
+ * non-admin is redirected server-side before any HTML is produced, so
179
+ * there is nothing indexable at this URL regardless of robots.txt.
180
+ */
181
+ TOOL_STICKER_TRACER: "/tools/sticker-tracer",
182
+ TOOL_STICKER_SHEET: (sheetId) => `/tools/sticker-tracer/${sheetId}`,
141
183
  /*
142
184
  * The PARTS database. A reference surface, so it lives beside the other
143
185
  * two things that answer a question rather than sell you something.
@@ -166,6 +208,21 @@ export const DEFAULT_ROUTE_MAP = {
166
208
  // detail page stays PRODUCT_DETAIL (`/products/{slug}`), already wired in
167
209
  // `_internal/shared/listing-types/{art,stickers}/config.ts`.
168
210
  ART: "/art",
211
+ /*
212
+ * Part Two — loose components off disassembled items.
213
+ *
214
+ * 🛑 A REAL page, not a redirect shim like `/live`. Its plugin sets
215
+ * `inGeneralCatalogue: false`, and the rule for that flag is nav
216
+ * reachability: a type kept out of `/products` must own a page that
217
+ * `MAIN_NAV_ITEMS` links, or it is reachable from nowhere at all (Root
218
+ * Cause #61). A shim pointing back at `/products` would re-open exactly
219
+ * that hole while looking like it had closed it.
220
+ *
221
+ * Detail route stays `PRODUCT_DETAIL` — a spare checks out like any
222
+ * standard item, so it needs no bespoke detail page, same reasoning as
223
+ * art/stickers above.
224
+ */
225
+ SPARES: "/spares",
169
226
  // Personal catalogue (Feature B) — a user's own photo inventory of owned
170
227
  // items, distinct from marketplace listings. Public when the owner sets
171
228
  // an item's visibility to "public". The owner's full catalogue listing
@@ -297,6 +354,10 @@ export const DEFAULT_ROUTE_MAP = {
297
354
  STICKERS: "/store/stickers",
298
355
  STICKERS_NEW: "/store/stickers/new",
299
356
  STICKERS_EDIT: (id) => `/store/stickers/${id}/edit`,
357
+ // Part Two — spares
358
+ SPARES: "/store/spares",
359
+ SPARES_NEW: "/store/spares/new",
360
+ SPARES_EDIT: (id) => `/store/spares/${id}/edit`,
300
361
  PRINT_CENTER: "/store/print-center",
301
362
  FULFILLMENT: "/store/fulfillment",
302
363
  // S-STORE Tier — new extension routes
@@ -390,6 +451,8 @@ export const DEFAULT_ROUTE_MAP = {
390
451
  // EMI/art-stickers session — art / stickers
391
452
  ART: "/admin/art",
392
453
  STICKERS: "/admin/stickers",
454
+ // Part Two — spares
455
+ SPARES: "/admin/spares",
393
456
  GROUPED_LISTINGS: "/admin/grouped-listings",
394
457
  GROUPED_LISTINGS_NEW: "/admin/grouped-listings/new",
395
458
  GROUPED_LISTINGS_EDIT: (id) => `/admin/grouped-listings/${id}/edit`,
@@ -552,12 +615,16 @@ export const PUBLIC_ROUTES = [
552
615
  ROUTES.PUBLIC.PROMOTIONS,
553
616
  ROUTES.PUBLIC.ABOUT,
554
617
  ROUTES.PUBLIC.CONTACT,
555
- ROUTES.PUBLIC.BLOG,
618
+ ROUTES.BLOG.LIST,
556
619
  ROUTES.PUBLIC.HELP,
557
620
  ROUTES.PUBLIC.TERMS,
558
621
  ROUTES.PUBLIC.PRIVACY,
559
622
  ROUTES.PUBLIC.ETHICS,
560
623
  ROUTES.PUBLIC.CODE_OF_CONDUCT,
624
+ ROUTES.PUBLIC.CANCELLATION_POLICY,
625
+ // Public by necessity: a grievance officer a complainant must sign in to
626
+ // find is not a published disclosure.
627
+ ROUTES.PUBLIC.GRIEVANCE,
561
628
  ROUTES.ERRORS.UNAUTHORIZED,
562
629
  ROUTES.AUTH.LOGIN,
563
630
  ROUTES.AUTH.REGISTER,
@@ -19,6 +19,7 @@
19
19
  */
20
20
  import type { CollectionReference, DocumentData, DocumentSnapshot, Firestore } from "firebase-admin/firestore";
21
21
  import type { IRepository, PagedResult, SieveQuery, WhereOp } from "../../contracts";
22
+ import type { Plaintext } from "../../security/encrypted";
22
23
  export declare class FirebaseRepository<T extends DocumentData> implements IRepository<T> {
23
24
  protected readonly collection: string;
24
25
  constructor(collectionName: string);
@@ -29,8 +30,9 @@ export declare class FirebaseRepository<T extends DocumentData> implements IRepo
29
30
  findById(id: string): Promise<T | null>;
30
31
  findAll(query?: SieveQuery): Promise<PagedResult<T>>;
31
32
  findWhere(field: keyof T, op: WhereOp, value: unknown): Promise<T[]>;
32
- create(data: Omit<T, "id" | "createdAt" | "updatedAt">): Promise<T>;
33
- update(id: string, data: Partial<T>): Promise<T>;
33
+ create(data: Omit<Plaintext<T>, "id" | "createdAt" | "updatedAt">): Promise<T>;
34
+ /** Accepts the PLAINTEXT shape — see `create` for why. */
35
+ update(id: string, data: Partial<Plaintext<T>>): Promise<T>;
34
36
  delete(id: string): Promise<void>;
35
37
  batchCreate(items: Array<Omit<T, "id" | "createdAt" | "updatedAt">>): Promise<T[]>;
36
38
  batchDelete(ids: string[]): Promise<void>;
@@ -46,7 +46,7 @@ export class FirebaseRepository {
46
46
  }
47
47
  async findAll(query) {
48
48
  const page = Math.max(1, query?.page ?? 1);
49
- const perPage = Math.max(1, Math.min(query?.perPage ?? 20, 500));
49
+ const pageSize = Math.max(1, Math.min(query?.pageSize ?? 20, 500));
50
50
  let q = this.getCollection();
51
51
  // -- Sort ------------------------------------------------------------------
52
52
  // SieveQuery.sort supports a leading "-" prefix for descending order
@@ -89,11 +89,11 @@ export class FirebaseRepository {
89
89
  // -- Count -----------------------------------------------------------------
90
90
  const total = await getFirestoreCount(q);
91
91
  // -- Paginate --------------------------------------------------------------
92
- const offset = (page - 1) * perPage;
93
- const pagedSnap = await q.offset(offset).limit(perPage).get();
92
+ const offset = (page - 1) * pageSize;
93
+ const pagedSnap = await q.offset(offset).limit(pageSize).get();
94
94
  const data = pagedSnap.docs.map((d) => this.mapDoc(d));
95
- const totalPages = total === 0 ? 0 : Math.max(1, Math.ceil(total / perPage));
96
- return { data, total, page, perPage, totalPages };
95
+ const totalPages = total === 0 ? 0 : Math.max(1, Math.ceil(total / pageSize));
96
+ return { data, total, page, pageSize, totalPages };
97
97
  }
98
98
  async findWhere(field, op, value) {
99
99
  const snap = await this.getCollection()
@@ -102,6 +102,21 @@ export class FirebaseRepository {
102
102
  return snap.docs.map((d) => this.mapDoc(d));
103
103
  }
104
104
  // -- IWriteRepository -------------------------------------------------------
105
+ /*
106
+ * 🛑 Accepts the PLAINTEXT shape, because this method ENCRYPTS.
107
+ *
108
+ * `applyWriteHooks` runs `encryptPiiFields` over the subclass's `piiFields`,
109
+ * so a caller legitimately hands over a real email and gets ciphertext in
110
+ * Firestore. Typing the parameter `Omit<T, …>` demanded `Encrypted<string>`
111
+ * from every caller — and the only way to produce one without encrypting is
112
+ * `asEncrypted(value)`, which labels plaintext as ciphertext and is the
113
+ * misuse that helper's own docstring forbids. The alternative was a cast at
114
+ * each of the dozens of write sites across fourteen repositories; one honest
115
+ * signature here is the same change made once.
116
+ *
117
+ * `Plaintext<T>` is the identity on any document with no branded field, so
118
+ * this is a no-op for every repository that holds no PII.
119
+ */
105
120
  async create(data) {
106
121
  const now = new Date();
107
122
  const payload = prepareForFirestore({
@@ -113,6 +128,7 @@ export class FirebaseRepository {
113
128
  const snap = await ref.get();
114
129
  return this.mapDoc(snap);
115
130
  }
131
+ /** Accepts the PLAINTEXT shape — see `create` for why. */
116
132
  async update(id, data) {
117
133
  const payload = prepareForFirestore({
118
134
  ...data,
@@ -1,3 +1,4 @@
1
+ import type { Plaintext } from "../../security/encrypted";
1
2
  import type { FirestoreDocument } from "@mohasinac/appkit";
2
3
  import type { CollectionReference, DocumentData, DocumentReference, DocumentSnapshot, Firestore, Query, Transaction, WriteBatch } from "firebase-admin/firestore";
3
4
  import { type FirebaseSieveFields, type FirebaseSieveOptions, type FirebaseSieveResult, type SieveModel } from "./sieve";
@@ -48,6 +49,28 @@ export declare abstract class BaseRepository<T extends DocumentData> {
48
49
  * text, so indexing an encrypted field would undo the encryption.
49
50
  */
50
51
  protected buildSearchTxtFor(_data: Record<string, JsonValue>): string[] | null;
52
+ /**
53
+ * Build this document's `*TokensIndex` fields — whole-word HMAC digests
54
+ * over PII, for admin search without decryption. Return `null` to leave
55
+ * the document alone (the default).
56
+ *
57
+ * Mirrors `buildSearchTxtFor`'s shape exactly, and for the reason that
58
+ * shape exists: a hook run from `applyWriteHooks` reaches EVERY write path
59
+ * — create, createWithId, update, the `*InTx`/`*InBatch` family, and a
60
+ * seed load, which goes through the same repository methods. A one-off
61
+ * backfill script cannot reach any of those; it only catches documents
62
+ * that already existed when it ran.
63
+ *
64
+ * 🛑 This is NOT `buildSearchTxtFor`'s inverse rule. `searchTxt` must never
65
+ * carry PII; this hook exists FOR PII, and runs in the only place that
66
+ * sees the plaintext before `encryptPiiFields` replaces it. See
67
+ * `security/blind-index-tokens.ts` for why the tokens are whole-word only.
68
+ *
69
+ * Return shape is `{ fieldName: digests[] }` rather than a single array,
70
+ * because a document can carry more than one token field (a payout has
71
+ * `sellerTokensIndex`, nothing else does yet, but the hook is general).
72
+ */
73
+ protected buildTokensIndexFor(_data: Record<string, JsonValue>): Record<string, string[]> | null;
51
74
  /**
52
75
  * The one place writes are transformed. Every write path routes through here
53
76
  * so a new method cannot silently skip encryption.
@@ -111,7 +134,7 @@ export declare abstract class BaseRepository<T extends DocumentData> {
111
134
  doc: T | null | undefined;
112
135
  patch: Partial<T>;
113
136
  }>): Promise<number>;
114
- create(data: Partial<T> | FirestoreDocument): Promise<T>;
137
+ create(data: Partial<Plaintext<T>> | FirestoreDocument): Promise<T>;
115
138
  /**
116
139
  * Write a document at a CALLER-CHOSEN id.
117
140
  *
@@ -143,8 +166,9 @@ export declare abstract class BaseRepository<T extends DocumentData> {
143
166
  * NAME: `createWithId` reads as "create" and behaves as "replace", and that
144
167
  * gap is what made the wrong conclusion so easy to reach.
145
168
  */
146
- createWithId(id: string, data: Partial<T>): Promise<T>;
147
- update(id: string, data: Partial<T>): Promise<T>;
169
+ createWithId(id: string, data: Partial<Plaintext<T>>): Promise<T>;
170
+ /** Accepts the PLAINTEXT shape — see `create` for why. */
171
+ update(id: string, data: Partial<Plaintext<T>>): Promise<T>;
148
172
  delete(id: string): Promise<void>;
149
173
  exists(id: string): Promise<boolean>;
150
174
  /**
@@ -195,12 +219,12 @@ export declare abstract class BaseRepository<T extends DocumentData> {
195
219
  }): Promise<Record<string, number | undefined>>;
196
220
  findByIdInTx(tx: Transaction, id: string): Promise<T | null>;
197
221
  findByIdOrFailInTx(tx: Transaction, id: string): Promise<T>;
198
- createInTx(tx: Transaction, data: Partial<T> | FirestoreDocument): DocumentReference;
199
- createWithIdInTx(tx: Transaction, id: string, data: Partial<T> | FirestoreDocument): DocumentReference;
200
- updateInTx(tx: Transaction, id: string, data: Partial<T>): void;
222
+ createInTx(tx: Transaction, data: Partial<Plaintext<T>> | FirestoreDocument): DocumentReference;
223
+ createWithIdInTx(tx: Transaction, id: string, data: Partial<Plaintext<T>> | FirestoreDocument): DocumentReference;
224
+ updateInTx(tx: Transaction, id: string, data: Partial<Plaintext<T>>): void;
201
225
  deleteInTx(tx: Transaction, id: string): void;
202
- createInBatch(batch: WriteBatch, data: Partial<T> | FirestoreDocument): DocumentReference;
203
- createWithIdInBatch(batch: WriteBatch, id: string, data: Partial<T> | FirestoreDocument): void;
204
- updateInBatch(batch: WriteBatch, id: string, data: Partial<T>): void;
226
+ createInBatch(batch: WriteBatch, data: Partial<Plaintext<T>> | FirestoreDocument): DocumentReference;
227
+ createWithIdInBatch(batch: WriteBatch, id: string, data: Partial<Plaintext<T>> | FirestoreDocument): void;
228
+ updateInBatch(batch: WriteBatch, id: string, data: Partial<Plaintext<T>>): void;
205
229
  deleteInBatch(batch: WriteBatch, id: string): void;
206
230
  }
@@ -5,6 +5,7 @@ import { applySieveToFirestore, countSieveMatches, } from "./sieve.js";
5
5
  import { deserializeTimestamps, prepareForFirestore } from "./helpers.js";
6
6
  import { getAdminDb } from "./admin.js";
7
7
  import { encryptPiiFields, piiIndicesFor } from "../../security/pii-encrypt.js";
8
+ import { BLIND_INDEX_KEY_VERSION_FIELD, CURRENT_BLIND_INDEX_KEY_VERSION, } from "../../security/blind-index-tokens.js";
8
9
  /**
9
10
  * The underlying failure's message, for interpolation into a DatabaseError.
10
11
  *
@@ -133,6 +134,30 @@ export class BaseRepository {
133
134
  buildSearchTxtFor(_data) {
134
135
  return null;
135
136
  }
137
+ /**
138
+ * Build this document's `*TokensIndex` fields — whole-word HMAC digests
139
+ * over PII, for admin search without decryption. Return `null` to leave
140
+ * the document alone (the default).
141
+ *
142
+ * Mirrors `buildSearchTxtFor`'s shape exactly, and for the reason that
143
+ * shape exists: a hook run from `applyWriteHooks` reaches EVERY write path
144
+ * — create, createWithId, update, the `*InTx`/`*InBatch` family, and a
145
+ * seed load, which goes through the same repository methods. A one-off
146
+ * backfill script cannot reach any of those; it only catches documents
147
+ * that already existed when it ran.
148
+ *
149
+ * 🛑 This is NOT `buildSearchTxtFor`'s inverse rule. `searchTxt` must never
150
+ * carry PII; this hook exists FOR PII, and runs in the only place that
151
+ * sees the plaintext before `encryptPiiFields` replaces it. See
152
+ * `security/blind-index-tokens.ts` for why the tokens are whole-word only.
153
+ *
154
+ * Return shape is `{ fieldName: digests[] }` rather than a single array,
155
+ * because a document can carry more than one token field (a payout has
156
+ * `sellerTokensIndex`, nothing else does yet, but the hook is general).
157
+ */
158
+ buildTokensIndexFor(_data) {
159
+ return null;
160
+ }
136
161
  /**
137
162
  * The one place writes are transformed. Every write path routes through here
138
163
  * so a new method cannot silently skip encryption.
@@ -154,6 +179,17 @@ export class BaseRepository {
154
179
  const searchTxt = this.buildSearchTxtFor(out);
155
180
  if (searchTxt)
156
181
  out.searchTxt = searchTxt;
182
+ /*
183
+ * `data`, not `out` — the plaintext source, same as `piiIndicesFor`
184
+ * above. By this point `out` may already hold ciphertext, and hashing
185
+ * ciphertext would make the index meaningless.
186
+ */
187
+ const tokensIndex = this.buildTokensIndexFor(data);
188
+ if (tokensIndex) {
189
+ Object.assign(out, tokensIndex, {
190
+ [BLIND_INDEX_KEY_VERSION_FIELD]: CURRENT_BLIND_INDEX_KEY_VERSION,
191
+ });
192
+ }
157
193
  return out;
158
194
  }
159
195
  /**
@@ -268,6 +304,21 @@ export class BaseRepository {
268
304
  await batch.commit();
269
305
  return present.length;
270
306
  }
307
+ /*
308
+ * 🛑 Accepts the PLAINTEXT shape, because this method ENCRYPTS.
309
+ *
310
+ * `applyWriteHooks` runs `encryptPiiFields` over the subclass's `piiFields`,
311
+ * so a caller legitimately hands over a real email and Firestore holds
312
+ * ciphertext. Typing this `Partial<T>` demanded `Encrypted<string>` from
313
+ * every caller once the PII fields were branded — and the only way to make
314
+ * one without encrypting is `asEncrypted(value)`, which labels plaintext as
315
+ * ciphertext and is the misuse that helper's docstring forbids. The
316
+ * alternative was a cast at each of the dozens of write sites across
317
+ * fourteen repositories; one honest signature here is that change made once.
318
+ *
319
+ * `Plaintext<T>` is the identity on a document with no branded member, so
320
+ * this is a no-op for every repository holding no PII.
321
+ */
271
322
  async create(data) {
272
323
  try {
273
324
  const cleanData = prepareForFirestore({
@@ -315,6 +366,7 @@ export class BaseRepository {
315
366
  * NAME: `createWithId` reads as "create" and behaves as "replace", and that
316
367
  * gap is what made the wrong conclusion so easy to reach.
317
368
  */
369
+ // Plaintext<T> — these methods ENCRYPT via applyWriteHooks; see `create`.
318
370
  async createWithId(id, data) {
319
371
  try {
320
372
  const now = new Date();
@@ -339,6 +391,7 @@ export class BaseRepository {
339
391
  throw new DatabaseError(`Failed to create document with ID: ${id}: ${detailOf(error)}`, error);
340
392
  }
341
393
  }
394
+ /** Accepts the PLAINTEXT shape — see `create` for why. */
342
395
  async update(id, data) {
343
396
  try {
344
397
  const cleanData = prepareForFirestore({
@@ -496,6 +549,7 @@ export class BaseRepository {
496
549
  }));
497
550
  return docRef;
498
551
  }
552
+ // Plaintext<T> — these methods ENCRYPT via applyWriteHooks; see `create`.
499
553
  updateInTx(tx, id, data) {
500
554
  const docRef = this.getCollection().doc(id);
501
555
  tx.update(docRef, prepareForFirestore({ ...this.applyWriteHooks(data), updatedAt: new Date() }));
@@ -523,6 +577,7 @@ export class BaseRepository {
523
577
  updatedAt: now,
524
578
  }));
525
579
  }
580
+ // Plaintext<T> — these methods ENCRYPT via applyWriteHooks; see `create`.
526
581
  updateInBatch(batch, id, data) {
527
582
  const docRef = this.getCollection().doc(id);
528
583
  batch.update(docRef, prepareForFirestore({ ...this.applyWriteHooks(data), updatedAt: new Date() }));
@@ -34,4 +34,16 @@ export declare const RTDB_PATHS: {
34
34
  * Pruned by `cleanupRtdbEvents`'s sixth block.
35
35
  */
36
36
  readonly CHAT_EVENTS: "chat_events";
37
+ /**
38
+ * Per-run progress for the sticker kiss-cut tracer — stage, pct, parts and
39
+ * shards done. The DURABLE record is `stickerTraceRuns.events[]`; this is
40
+ * only the live bar, which is why losing it is survivable and why the run
41
+ * document is what a failure is diagnosed from weeks later.
42
+ *
43
+ * 🛑 Pruned at SIXTY minutes, not fifteen. A `max`-tier fan-out across sixty
44
+ * parts can outlast a fifteen-minute window, and a channel pruned mid-run
45
+ * reads to the client as "it died" — the same false negative `EMAIL_EVENTS`
46
+ * carries a longer window to avoid.
47
+ */
48
+ readonly STICKER_TRACE: "sticker_trace";
37
49
  };
@@ -34,4 +34,16 @@ export const RTDB_PATHS = {
34
34
  * Pruned by `cleanupRtdbEvents`'s sixth block.
35
35
  */
36
36
  CHAT_EVENTS: "chat_events",
37
+ /**
38
+ * Per-run progress for the sticker kiss-cut tracer — stage, pct, parts and
39
+ * shards done. The DURABLE record is `stickerTraceRuns.events[]`; this is
40
+ * only the live bar, which is why losing it is survivable and why the run
41
+ * document is what a failure is diagnosed from weeks later.
42
+ *
43
+ * 🛑 Pruned at SIXTY minutes, not fifteen. A `max`-tier fan-out across sixty
44
+ * parts can outlast a fifteen-minute window, and a channel pruned mid-run
45
+ * reads to the client as "it died" — the same false negative `EMAIL_EVENTS`
46
+ * carries a longer window to avoid.
47
+ */
48
+ STICKER_TRACE: "sticker_trace",
37
49
  };
@@ -10,7 +10,12 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  */
11
11
  import { Component } from "react";
12
12
  import { Logger } from "../core/Logger.js";
13
- import { Button, Heading, Text } from "../ui/index.js";
13
+ // Defining modules, not the sibling barrel — Root Cause #18. `ui/index.ts` and
14
+ // `react/index.ts` re-exported into each other, which is the whole of
15
+ // `audit-import-cycles` component 1: an 18-module knot held together entirely
16
+ // by barrel hops, none of which needed the barrel.
17
+ import { Button } from "../ui/components/Button.js";
18
+ import { Heading, Text } from "../ui/components/Typography.js";
14
19
  import { trackError, ErrorCategory, ErrorSeverity, } from "../monitoring/error-tracking.js";
15
20
  function DefaultFallback({ error, onReset, }) {
16
21
  return (_jsxs("div", { role: "alert", style: {
@@ -20,6 +20,7 @@ export declare const RealtimeEventType: {
20
20
  readonly CHAT: "chat";
21
21
  readonly BID: "bid";
22
22
  readonly BULK: "bulk";
23
+ readonly STICKER_TRACE: "sticker-trace";
23
24
  };
24
25
  export type RealtimeEventType = (typeof RealtimeEventType)[keyof typeof RealtimeEventType];
25
26
  export declare const RealtimeEventStatus: {
@@ -19,6 +19,14 @@ export const RealtimeEventType = {
19
19
  CHAT: "chat",
20
20
  BID: "bid",
21
21
  BULK: "bulk",
22
+ /*
23
+ * The sticker kiss-cut tracer's per-run progress channel. Added rather than
24
+ * reusing BULK: the type selects this event's message strings and its
25
+ * claim/path conventions, and a trace reports a STAGE out of eleven where a
26
+ * bulk job reports a count — borrowing BULK's vocabulary would make the
27
+ * progress row say the wrong thing about every failure.
28
+ */
29
+ STICKER_TRACE: "sticker-trace",
22
30
  };
23
31
  export const RealtimeEventStatus = {
24
32
  IDLE: "idle",