spree_core 5.2.8 → 5.3.0.rc1

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 (296) hide show
  1. checksums.yaml +4 -4
  2. data/app/helpers/spree/addresses_helper.rb +1 -23
  3. data/app/helpers/spree/base_helper.rb +25 -77
  4. data/app/helpers/spree/currency_helper.rb +2 -2
  5. data/app/helpers/spree/images_helper.rb +5 -0
  6. data/app/helpers/spree/mail_helper.rb +1 -1
  7. data/app/helpers/spree/products_helper.rb +1 -1
  8. data/app/jobs/spree/events/subscriber_job.rb +58 -0
  9. data/app/jobs/spree/products/refresh_metrics_job.rb +14 -0
  10. data/app/jobs/spree/products/touch_taxons_job.rb +0 -1
  11. data/app/jobs/spree/variants/touch_job.rb +9 -0
  12. data/app/models/concerns/spree/adjustment_source.rb +8 -0
  13. data/app/models/concerns/spree/parameterizable_name.rb +1 -1
  14. data/app/models/concerns/spree/product_scopes.rb +54 -8
  15. data/app/models/concerns/spree/publishable.rb +253 -0
  16. data/app/models/concerns/spree/unique_name.rb +1 -1
  17. data/app/models/concerns/spree/user_methods.rb +21 -1
  18. data/app/models/spree/ability.rb +3 -3
  19. data/app/models/spree/address.rb +0 -3
  20. data/app/models/spree/adjustable/promotion_accumulator.rb +1 -1
  21. data/app/models/spree/adjustment.rb +32 -6
  22. data/app/models/spree/asset.rb +6 -3
  23. data/app/models/spree/base.rb +3 -1
  24. data/app/models/spree/classification.rb +2 -2
  25. data/app/models/spree/credit_card.rb +0 -3
  26. data/app/models/spree/current.rb +24 -3
  27. data/app/models/spree/custom_domain.rb +1 -1
  28. data/app/models/spree/customer_group.rb +94 -0
  29. data/app/models/spree/customer_group_user.rb +16 -0
  30. data/app/models/spree/customer_return.rb +2 -3
  31. data/app/models/spree/digital.rb +2 -4
  32. data/app/models/spree/digital_link.rb +2 -3
  33. data/app/models/spree/event.rb +104 -0
  34. data/app/models/spree/export.rb +9 -3
  35. data/app/models/spree/gift_card.rb +13 -1
  36. data/app/models/spree/gift_card_batch.rb +3 -1
  37. data/app/models/spree/image.rb +20 -5
  38. data/app/models/spree/import.rb +17 -12
  39. data/app/models/spree/import_row.rb +13 -26
  40. data/app/models/spree/inventory_unit.rb +0 -3
  41. data/app/models/spree/invitation.rb +12 -6
  42. data/app/models/spree/line_item.rb +57 -4
  43. data/app/models/spree/newsletter_subscriber.rb +2 -0
  44. data/app/models/spree/option_type.rb +2 -5
  45. data/app/models/spree/option_value.rb +1 -4
  46. data/app/models/spree/order/address_book.rb +4 -12
  47. data/app/models/spree/order/checkout.rb +7 -2
  48. data/app/models/spree/order/emails.rb +3 -11
  49. data/app/models/spree/order/store_credit.rb +5 -1
  50. data/app/models/spree/order.rb +80 -31
  51. data/app/models/spree/order_updater.rb +28 -9
  52. data/app/models/spree/payment/custom_events.rb +37 -0
  53. data/app/models/spree/payment.rb +13 -4
  54. data/app/models/spree/payment_capture_event.rb +0 -4
  55. data/app/models/spree/payment_method.rb +1 -1
  56. data/app/models/spree/permission_sets/default_customer.rb +3 -3
  57. data/app/models/spree/policy.rb +1 -8
  58. data/app/models/spree/post.rb +2 -7
  59. data/app/models/spree/post_category.rb +2 -0
  60. data/app/models/spree/price.rb +8 -6
  61. data/app/models/spree/price_list.rb +263 -0
  62. data/app/models/spree/price_rule.rb +26 -0
  63. data/app/models/spree/price_rules/customer_group_rule.rb +21 -0
  64. data/app/models/spree/price_rules/user_rule.rb +19 -0
  65. data/app/models/spree/price_rules/volume_rule.rb +21 -0
  66. data/app/models/spree/price_rules/zone_rule.rb +19 -0
  67. data/app/models/spree/product.rb +117 -76
  68. data/app/models/spree/product_property.rb +2 -2
  69. data/app/models/spree/promotion/rules/customer_group.rb +22 -0
  70. data/app/models/spree/promotion/rules/user.rb +2 -2
  71. data/app/models/spree/promotion.rb +3 -4
  72. data/app/models/spree/promotion_handler/coupon.rb +3 -3
  73. data/app/models/spree/property.rb +3 -6
  74. data/app/models/spree/prototype.rb +0 -3
  75. data/app/models/spree/refund.rb +2 -3
  76. data/app/models/spree/reimbursement.rb +5 -3
  77. data/app/models/spree/report.rb +7 -1
  78. data/app/models/spree/reports/products_performance.rb +1 -1
  79. data/app/models/spree/reports/sales_total.rb +1 -1
  80. data/app/models/spree/return_authorization.rb +7 -3
  81. data/app/models/spree/return_item.rb +15 -4
  82. data/app/models/spree/shipment/custom_events.rb +47 -0
  83. data/app/models/spree/shipment.rb +12 -5
  84. data/app/models/spree/shipping_category.rb +0 -3
  85. data/app/models/spree/shipping_method.rb +0 -3
  86. data/app/models/spree/stock/quantifier.rb +1 -1
  87. data/app/models/spree/stock_item.rb +2 -0
  88. data/app/models/spree/stock_location.rb +0 -3
  89. data/app/models/spree/stock_movement/custom_events.rb +44 -0
  90. data/app/models/spree/stock_movement.rb +3 -0
  91. data/app/models/spree/stock_transfer.rb +2 -3
  92. data/app/models/spree/store.rb +64 -92
  93. data/app/models/spree/store_credit.rb +3 -4
  94. data/app/models/spree/store_product.rb +14 -0
  95. data/app/models/spree/subscriber.rb +186 -0
  96. data/app/models/spree/tax_category.rb +0 -4
  97. data/app/models/spree/tax_rate.rb +0 -3
  98. data/app/models/spree/taxon.rb +3 -36
  99. data/app/models/spree/taxonomy.rb +0 -3
  100. data/app/models/spree/variant.rb +114 -21
  101. data/app/models/spree/webhook_delivery.rb +60 -0
  102. data/app/models/spree/webhook_endpoint.rb +53 -0
  103. data/app/models/spree/wished_item.rb +2 -4
  104. data/app/models/spree/wishlist.rb +2 -3
  105. data/app/models/spree/zone.rb +0 -9
  106. data/app/paginators/spree/shared/paginate.rb +4 -0
  107. data/app/serializers/spree/events/asset_serializer.rb +22 -0
  108. data/app/serializers/spree/events/base_serializer.rb +61 -0
  109. data/app/serializers/spree/events/customer_return_serializer.rb +20 -0
  110. data/app/serializers/spree/events/digital_link_serializer.rb +20 -0
  111. data/app/serializers/spree/events/digital_serializer.rb +18 -0
  112. data/app/serializers/spree/events/export_serializer.rb +22 -0
  113. data/app/serializers/spree/events/gift_card_batch_serializer.rb +24 -0
  114. data/app/serializers/spree/events/gift_card_serializer.rb +29 -0
  115. data/app/serializers/spree/events/image_serializer.rb +9 -0
  116. data/app/serializers/spree/events/import_row_serializer.rb +23 -0
  117. data/app/serializers/spree/events/import_serializer.rb +24 -0
  118. data/app/serializers/spree/events/invitation_serializer.rb +28 -0
  119. data/app/serializers/spree/events/line_item_serializer.rb +31 -0
  120. data/app/serializers/spree/events/newsletter_subscriber_serializer.rb +21 -0
  121. data/app/serializers/spree/events/order_serializer.rb +39 -0
  122. data/app/serializers/spree/events/payment_serializer.rb +24 -0
  123. data/app/serializers/spree/events/post_category_serializer.rb +20 -0
  124. data/app/serializers/spree/events/post_serializer.rb +26 -0
  125. data/app/serializers/spree/events/price_serializer.rb +22 -0
  126. data/app/serializers/spree/events/product_serializer.rb +24 -0
  127. data/app/serializers/spree/events/promotion_serializer.rb +32 -0
  128. data/app/serializers/spree/events/refund_serializer.rb +23 -0
  129. data/app/serializers/spree/events/reimbursement_serializer.rb +22 -0
  130. data/app/serializers/spree/events/report_serializer.rb +23 -0
  131. data/app/serializers/spree/events/return_authorization_serializer.rb +22 -0
  132. data/app/serializers/spree/events/return_item_serializer.rb +27 -0
  133. data/app/serializers/spree/events/shipment_serializer.rb +24 -0
  134. data/app/serializers/spree/events/stock_item_serializer.rb +22 -0
  135. data/app/serializers/spree/events/stock_movement_serializer.rb +22 -0
  136. data/app/serializers/spree/events/stock_transfer_serializer.rb +22 -0
  137. data/app/serializers/spree/events/store_credit_serializer.rb +30 -0
  138. data/app/serializers/spree/events/user_serializer.rb +18 -0
  139. data/app/serializers/spree/events/variant_serializer.rb +34 -0
  140. data/app/serializers/spree/events/wished_item_serializer.rb +20 -0
  141. data/app/serializers/spree/events/wishlist_serializer.rb +22 -0
  142. data/app/services/spree/addresses/update.rb +1 -1
  143. data/app/services/spree/cart/add_item.rb +1 -1
  144. data/app/services/spree/coupon_codes/coupon_codes_handler.rb +2 -1
  145. data/app/services/spree/data_feeds/google/required_attributes.rb +4 -4
  146. data/app/services/spree/newsletter/verify.rb +5 -0
  147. data/app/services/spree/products/auto_match_taxons.rb +1 -1
  148. data/app/services/spree/seeds/all.rb +1 -1
  149. data/app/services/spree/taxons/add_products.rb +8 -4
  150. data/app/services/spree/taxons/regenerate_products.rb +8 -0
  151. data/app/services/spree/taxons/remove_products.rb +12 -7
  152. data/app/subscribers/spree/event_log_subscriber.rb +64 -0
  153. data/app/subscribers/spree/export_subscriber.rb +26 -0
  154. data/app/subscribers/spree/invitation_email_subscriber.rb +40 -0
  155. data/app/subscribers/spree/product_metrics_subscriber.rb +29 -0
  156. data/app/subscribers/spree/report_subscriber.rb +26 -0
  157. data/config/locales/en.yml +126 -0
  158. data/db/migrate/20251110120000_create_spree_price_lists.rb +22 -0
  159. data/db/migrate/20251110120001_create_spree_price_rules.rb +13 -0
  160. data/db/migrate/20251110120002_add_price_list_id_to_spree_prices.rb +6 -0
  161. data/db/migrate/20251110120003_add_price_list_id_to_spree_line_items.rb +5 -0
  162. data/db/migrate/20251201172118_fix_indexes_on_friendly_id_slugs.rb +8 -0
  163. data/db/migrate/20251214000001_create_spree_webhook_endpoints.rb +19 -0
  164. data/db/migrate/20251214000002_create_spree_webhook_deliveries.rb +23 -0
  165. data/db/migrate/20251222000000_add_performance_indexes_to_spree_adjustments.rb +25 -0
  166. data/db/migrate/20260112000000_fix_spree_prices_unique_indexes.rb +33 -0
  167. data/db/migrate/20260115120000_create_spree_customer_groups.rb +14 -0
  168. data/db/migrate/20260115120001_create_spree_customer_group_users.rb +14 -0
  169. data/db/migrate/20260117140831_remove_not_null_constraint_from_policy_name.rb +5 -0
  170. data/db/migrate/20260118120000_add_statistics_to_store_products.rb +11 -0
  171. data/db/migrate/20260119120000_add_counter_caches_to_spree_products.rb +9 -0
  172. data/db/migrate/20260119170000_add_counter_caches_to_spree_taxons.rb +9 -0
  173. data/db/migrate/20260120120000_add_image_count_to_spree_variants.rb +9 -0
  174. data/lib/generators/spree/dummy/dummy_generator.rb +14 -2
  175. data/lib/spree/core/configuration.rb +1 -0
  176. data/lib/spree/core/controller_helpers/auth.rb +0 -15
  177. data/lib/spree/core/controller_helpers/currency.rb +13 -9
  178. data/lib/spree/core/controller_helpers/search.rb +1 -1
  179. data/lib/spree/core/controller_helpers/store.rb +5 -1
  180. data/lib/spree/core/engine.rb +61 -78
  181. data/lib/spree/core/importer/order.rb +1 -1
  182. data/lib/spree/core/importer/product.rb +1 -1
  183. data/lib/spree/core/preferences/preferable.rb +14 -1
  184. data/lib/spree/core/pricing/context.rb +63 -0
  185. data/lib/spree/core/pricing/resolver.rb +129 -0
  186. data/lib/spree/core/search/base.rb +1 -1
  187. data/lib/spree/core/token_generator.rb +1 -1
  188. data/lib/spree/core/version.rb +1 -1
  189. data/lib/spree/core.rb +42 -47
  190. data/lib/spree/events/adapters/active_support_notifications.rb +112 -0
  191. data/lib/spree/events/adapters/base.rb +193 -0
  192. data/lib/spree/events/registry.rb +99 -0
  193. data/lib/spree/events.rb +240 -0
  194. data/lib/spree/permitted_attributes.rb +13 -2
  195. data/lib/spree/testing_support/common_rake.rb +68 -35
  196. data/lib/spree/testing_support/factories/customer_group_factory.rb +6 -0
  197. data/lib/spree/testing_support/factories/customer_group_user_factory.rb +6 -0
  198. data/lib/spree/testing_support/factories/price_factory.rb +4 -0
  199. data/lib/spree/testing_support/factories/price_list_factory.rb +34 -0
  200. data/lib/spree/testing_support/factories/price_rule_factory.rb +49 -0
  201. data/lib/spree/testing_support/factories/promotion_rule_factory.rb +12 -0
  202. data/lib/spree/testing_support/factories/stock_item_factory.rb +6 -4
  203. data/lib/spree/testing_support/factories/store_product_factory.rb +6 -0
  204. data/lib/spree/testing_support/factories/taxon_factory.rb +0 -1
  205. data/lib/spree/testing_support/factories/webhook_delivery_factory.rb +48 -0
  206. data/lib/spree/testing_support/factories/webhook_endpoint_factory.rb +22 -0
  207. data/lib/spree/testing_support/lifecycle_events.rb +38 -0
  208. data/lib/spree/testing_support/store.rb +4 -2
  209. data/lib/spree/webhooks.rb +22 -0
  210. data/lib/tasks/products.rake +40 -0
  211. data/lib/tasks/taxons.rake +19 -0
  212. data/lib/tasks/variants.rake +18 -0
  213. metadata +112 -115
  214. data/app/jobs/spree/themes/duplicate_components_job.rb +0 -59
  215. data/app/jobs/spree/themes/screenshot_job.rb +0 -81
  216. data/app/models/concerns/spree/has_page_links.rb +0 -53
  217. data/app/models/spree/page.rb +0 -188
  218. data/app/models/spree/page_block.rb +0 -73
  219. data/app/models/spree/page_blocks/buttons.rb +0 -29
  220. data/app/models/spree/page_blocks/heading.rb +0 -18
  221. data/app/models/spree/page_blocks/image.rb +0 -20
  222. data/app/models/spree/page_blocks/link.rb +0 -21
  223. data/app/models/spree/page_blocks/mega_nav.rb +0 -33
  224. data/app/models/spree/page_blocks/mega_nav_with_subcategories.rb +0 -32
  225. data/app/models/spree/page_blocks/metafields.rb +0 -18
  226. data/app/models/spree/page_blocks/nav.rb +0 -15
  227. data/app/models/spree/page_blocks/newsletter_form.rb +0 -18
  228. data/app/models/spree/page_blocks/products/brand.rb +0 -15
  229. data/app/models/spree/page_blocks/products/buy_buttons.rb +0 -24
  230. data/app/models/spree/page_blocks/products/description.rb +0 -18
  231. data/app/models/spree/page_blocks/products/price.rb +0 -18
  232. data/app/models/spree/page_blocks/products/quantity_selector.rb +0 -20
  233. data/app/models/spree/page_blocks/products/share.rb +0 -8
  234. data/app/models/spree/page_blocks/products/title.rb +0 -19
  235. data/app/models/spree/page_blocks/products/variant_picker.rb +0 -13
  236. data/app/models/spree/page_blocks/subheading.rb +0 -17
  237. data/app/models/spree/page_blocks/text.rb +0 -16
  238. data/app/models/spree/page_link.rb +0 -60
  239. data/app/models/spree/page_section.rb +0 -222
  240. data/app/models/spree/page_sections/announcement_bar.rb +0 -28
  241. data/app/models/spree/page_sections/breadcrumbs.rb +0 -12
  242. data/app/models/spree/page_sections/collection_banner.rb +0 -18
  243. data/app/models/spree/page_sections/custom_code.rb +0 -11
  244. data/app/models/spree/page_sections/featured_posts.rb +0 -45
  245. data/app/models/spree/page_sections/featured_product.rb +0 -50
  246. data/app/models/spree/page_sections/featured_taxon.rb +0 -90
  247. data/app/models/spree/page_sections/featured_taxons.rb +0 -45
  248. data/app/models/spree/page_sections/footer.rb +0 -101
  249. data/app/models/spree/page_sections/header.rb +0 -62
  250. data/app/models/spree/page_sections/image_banner.rb +0 -55
  251. data/app/models/spree/page_sections/image_with_text.rb +0 -65
  252. data/app/models/spree/page_sections/main_password_footer.rb +0 -18
  253. data/app/models/spree/page_sections/main_password_header.rb +0 -20
  254. data/app/models/spree/page_sections/newsletter.rb +0 -54
  255. data/app/models/spree/page_sections/page_title.rb +0 -19
  256. data/app/models/spree/page_sections/post_details.rb +0 -19
  257. data/app/models/spree/page_sections/post_grid.rb +0 -19
  258. data/app/models/spree/page_sections/product_details.rb +0 -53
  259. data/app/models/spree/page_sections/product_grid.rb +0 -13
  260. data/app/models/spree/page_sections/related_products.rb +0 -58
  261. data/app/models/spree/page_sections/rich_text.rb +0 -31
  262. data/app/models/spree/page_sections/taxon_banner.rb +0 -18
  263. data/app/models/spree/page_sections/taxon_grid.rb +0 -17
  264. data/app/models/spree/page_sections/video.rb +0 -107
  265. data/app/models/spree/pages/account.rb +0 -19
  266. data/app/models/spree/pages/cart.rb +0 -19
  267. data/app/models/spree/pages/checkout.rb +0 -15
  268. data/app/models/spree/pages/custom.rb +0 -38
  269. data/app/models/spree/pages/homepage.rb +0 -72
  270. data/app/models/spree/pages/login.rb +0 -19
  271. data/app/models/spree/pages/password.rb +0 -59
  272. data/app/models/spree/pages/post.rb +0 -27
  273. data/app/models/spree/pages/post_list.rb +0 -36
  274. data/app/models/spree/pages/product_details.rb +0 -30
  275. data/app/models/spree/pages/search_results.rb +0 -43
  276. data/app/models/spree/pages/shop_all.rb +0 -40
  277. data/app/models/spree/pages/taxon.rb +0 -29
  278. data/app/models/spree/pages/taxon_list.rb +0 -41
  279. data/app/models/spree/pages/wishlist.rb +0 -15
  280. data/app/models/spree/theme.rb +0 -233
  281. data/app/models/spree/themes/default.rb +0 -97
  282. data/app/presenters/spree/csv/formula_sanitizer.rb +0 -28
  283. data/app/services/spree/taxons/touch_featured_sections.rb +0 -21
  284. data/db/migrate/20250120094216_create_page_builder_models.rb +0 -78
  285. data/db/migrate/20250305121352_remove_page_builder_indices.rb +0 -11
  286. data/db/migrate/20250825175217_add_missing_page_builder_indexes.rb +0 -7
  287. data/db/migrate/20250913130044_add_page_links_counter_cache_to_spree_stores.rb +0 -10
  288. data/lib/generators/spree/dummy/templates/initializers/devise.rb +0 -3
  289. data/lib/generators/spree/install/install_generator.rb +0 -219
  290. data/lib/generators/spree/install/templates/config/initializers/spree.rb +0 -126
  291. data/lib/spree/core/webhooks.rb +0 -21
  292. data/lib/spree/testing_support/factories/page_block_factory.rb +0 -22
  293. data/lib/spree/testing_support/factories/page_factory.rb +0 -33
  294. data/lib/spree/testing_support/factories/page_link_factory.rb +0 -7
  295. data/lib/spree/testing_support/factories/page_section_factory.rb +0 -27
  296. data/lib/spree/testing_support/factories/theme_factory.rb +0 -14
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.8
4
+ version: 5.3.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
@@ -87,20 +87,6 @@ dependencies:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
- - !ruby/object:Gem::Dependency
91
- name: auto_strip_attributes
92
- requirement: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '2.6'
97
- type: :runtime
98
- prerelease: false
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '2.6'
104
90
  - !ruby/object:Gem::Dependency
105
91
  name: awesome_nested_set
106
92
  requirement: !ruby/object:Gem::Requirement
@@ -217,20 +203,6 @@ dependencies:
217
203
  - - "<"
218
204
  - !ruby/object:Gem::Version
219
205
  version: '4'
220
- - !ruby/object:Gem::Dependency
221
- name: kaminari
222
- requirement: !ruby/object:Gem::Requirement
223
- requirements:
224
- - - "~>"
225
- - !ruby/object:Gem::Version
226
- version: '1.2'
227
- type: :runtime
228
- prerelease: false
229
- version_requirements: !ruby/object:Gem::Requirement
230
- requirements:
231
- - - "~>"
232
- - !ruby/object:Gem::Version
233
- version: '1.2'
234
206
  - !ruby/object:Gem::Dependency
235
207
  name: money
236
208
  requirement: !ruby/object:Gem::Requirement
@@ -573,6 +545,20 @@ dependencies:
573
545
  - - "~>"
574
546
  - !ruby/object:Gem::Version
575
547
  version: '0.10'
548
+ - !ruby/object:Gem::Dependency
549
+ name: ar_lazy_preload
550
+ requirement: !ruby/object:Gem::Requirement
551
+ requirements:
552
+ - - "~>"
553
+ - !ruby/object:Gem::Version
554
+ version: '2.0'
555
+ type: :runtime
556
+ prerelease: false
557
+ version_requirements: !ruby/object:Gem::Requirement
558
+ requirements:
559
+ - - "~>"
560
+ - !ruby/object:Gem::Version
561
+ version: '2.0'
576
562
  description: Spree Models, Helpers, Services and core libraries
577
563
  email: hello@spreecommerce.org
578
564
  executables: []
@@ -836,19 +822,20 @@ files:
836
822
  - app/jobs/spree/addresses/geocode_address_job.rb
837
823
  - app/jobs/spree/base_job.rb
838
824
  - app/jobs/spree/coupon_codes/bulk_generate_job.rb
825
+ - app/jobs/spree/events/subscriber_job.rb
839
826
  - app/jobs/spree/exports/generate_job.rb
840
827
  - app/jobs/spree/gift_cards/bulk_generate_job.rb
841
828
  - app/jobs/spree/images/save_from_url_job.rb
842
829
  - app/jobs/spree/imports/create_rows_job.rb
843
830
  - app/jobs/spree/imports/process_rows_job.rb
844
831
  - app/jobs/spree/products/auto_match_taxons_job.rb
832
+ - app/jobs/spree/products/refresh_metrics_job.rb
845
833
  - app/jobs/spree/products/touch_taxons_job.rb
846
834
  - app/jobs/spree/reports/generate_job.rb
847
835
  - app/jobs/spree/stock_locations/stock_items/create_job.rb
848
- - app/jobs/spree/themes/duplicate_components_job.rb
849
- - app/jobs/spree/themes/screenshot_job.rb
850
836
  - app/jobs/spree/variants/remove_from_incomplete_orders_job.rb
851
837
  - app/jobs/spree/variants/remove_line_item_job.rb
838
+ - app/jobs/spree/variants/touch_job.rb
852
839
  - app/mailers/spree/base_mailer.rb
853
840
  - app/mailers/spree/export_mailer.rb
854
841
  - app/mailers/spree/invitation_mailer.rb
@@ -865,7 +852,6 @@ files:
865
852
  - app/models/concerns/spree/filter_param.rb
866
853
  - app/models/concerns/spree/has_image_alt_text.rb
867
854
  - app/models/concerns/spree/has_one_link.rb
868
- - app/models/concerns/spree/has_page_links.rb
869
855
  - app/models/concerns/spree/image_methods.rb
870
856
  - app/models/concerns/spree/integrations_concern.rb
871
857
  - app/models/concerns/spree/linkable.rb
@@ -881,6 +867,7 @@ files:
881
867
  - app/models/concerns/spree/payment_source_concern.rb
882
868
  - app/models/concerns/spree/previewable.rb
883
869
  - app/models/concerns/spree/product_scopes.rb
870
+ - app/models/concerns/spree/publishable.rb
884
871
  - app/models/concerns/spree/ransackable_attributes.rb
885
872
  - app/models/concerns/spree/single_store_resource.rb
886
873
  - app/models/concerns/spree/stores/setup.rb
@@ -930,11 +917,14 @@ files:
930
917
  - app/models/spree/credit_card.rb
931
918
  - app/models/spree/current.rb
932
919
  - app/models/spree/custom_domain.rb
920
+ - app/models/spree/customer_group.rb
921
+ - app/models/spree/customer_group_user.rb
933
922
  - app/models/spree/customer_return.rb
934
923
  - app/models/spree/data_feed.rb
935
924
  - app/models/spree/data_feed/google.rb
936
925
  - app/models/spree/digital.rb
937
926
  - app/models/spree/digital_link.rb
927
+ - app/models/spree/event.rb
938
928
  - app/models/spree/exchange.rb
939
929
  - app/models/spree/export.rb
940
930
  - app/models/spree/exports/customers.rb
@@ -994,70 +984,8 @@ files:
994
984
  - app/models/spree/order_merger.rb
995
985
  - app/models/spree/order_promotion.rb
996
986
  - app/models/spree/order_updater.rb
997
- - app/models/spree/page.rb
998
- - app/models/spree/page_block.rb
999
- - app/models/spree/page_blocks/buttons.rb
1000
- - app/models/spree/page_blocks/heading.rb
1001
- - app/models/spree/page_blocks/image.rb
1002
- - app/models/spree/page_blocks/link.rb
1003
- - app/models/spree/page_blocks/mega_nav.rb
1004
- - app/models/spree/page_blocks/mega_nav_with_subcategories.rb
1005
- - app/models/spree/page_blocks/metafields.rb
1006
- - app/models/spree/page_blocks/nav.rb
1007
- - app/models/spree/page_blocks/newsletter_form.rb
1008
- - app/models/spree/page_blocks/products/brand.rb
1009
- - app/models/spree/page_blocks/products/buy_buttons.rb
1010
- - app/models/spree/page_blocks/products/description.rb
1011
- - app/models/spree/page_blocks/products/price.rb
1012
- - app/models/spree/page_blocks/products/quantity_selector.rb
1013
- - app/models/spree/page_blocks/products/share.rb
1014
- - app/models/spree/page_blocks/products/title.rb
1015
- - app/models/spree/page_blocks/products/variant_picker.rb
1016
- - app/models/spree/page_blocks/subheading.rb
1017
- - app/models/spree/page_blocks/text.rb
1018
- - app/models/spree/page_link.rb
1019
- - app/models/spree/page_section.rb
1020
- - app/models/spree/page_sections/announcement_bar.rb
1021
- - app/models/spree/page_sections/breadcrumbs.rb
1022
- - app/models/spree/page_sections/collection_banner.rb
1023
- - app/models/spree/page_sections/custom_code.rb
1024
- - app/models/spree/page_sections/featured_posts.rb
1025
- - app/models/spree/page_sections/featured_product.rb
1026
- - app/models/spree/page_sections/featured_taxon.rb
1027
- - app/models/spree/page_sections/featured_taxons.rb
1028
- - app/models/spree/page_sections/footer.rb
1029
- - app/models/spree/page_sections/header.rb
1030
- - app/models/spree/page_sections/image_banner.rb
1031
- - app/models/spree/page_sections/image_with_text.rb
1032
- - app/models/spree/page_sections/main_password_footer.rb
1033
- - app/models/spree/page_sections/main_password_header.rb
1034
- - app/models/spree/page_sections/newsletter.rb
1035
- - app/models/spree/page_sections/page_title.rb
1036
- - app/models/spree/page_sections/post_details.rb
1037
- - app/models/spree/page_sections/post_grid.rb
1038
- - app/models/spree/page_sections/product_details.rb
1039
- - app/models/spree/page_sections/product_grid.rb
1040
- - app/models/spree/page_sections/related_products.rb
1041
- - app/models/spree/page_sections/rich_text.rb
1042
- - app/models/spree/page_sections/taxon_banner.rb
1043
- - app/models/spree/page_sections/taxon_grid.rb
1044
- - app/models/spree/page_sections/video.rb
1045
- - app/models/spree/pages/account.rb
1046
- - app/models/spree/pages/cart.rb
1047
- - app/models/spree/pages/checkout.rb
1048
- - app/models/spree/pages/custom.rb
1049
- - app/models/spree/pages/homepage.rb
1050
- - app/models/spree/pages/login.rb
1051
- - app/models/spree/pages/password.rb
1052
- - app/models/spree/pages/post.rb
1053
- - app/models/spree/pages/post_list.rb
1054
- - app/models/spree/pages/product_details.rb
1055
- - app/models/spree/pages/search_results.rb
1056
- - app/models/spree/pages/shop_all.rb
1057
- - app/models/spree/pages/taxon.rb
1058
- - app/models/spree/pages/taxon_list.rb
1059
- - app/models/spree/pages/wishlist.rb
1060
987
  - app/models/spree/payment.rb
988
+ - app/models/spree/payment/custom_events.rb
1061
989
  - app/models/spree/payment/gateway_options.rb
1062
990
  - app/models/spree/payment/processing.rb
1063
991
  - app/models/spree/payment/webhooks.rb
@@ -1086,6 +1014,12 @@ files:
1086
1014
  - app/models/spree/post_category.rb
1087
1015
  - app/models/spree/preference.rb
1088
1016
  - app/models/spree/price.rb
1017
+ - app/models/spree/price_list.rb
1018
+ - app/models/spree/price_rule.rb
1019
+ - app/models/spree/price_rules/customer_group_rule.rb
1020
+ - app/models/spree/price_rules/user_rule.rb
1021
+ - app/models/spree/price_rules/volume_rule.rb
1022
+ - app/models/spree/price_rules/zone_rule.rb
1089
1023
  - app/models/spree/product.rb
1090
1024
  - app/models/spree/product/slugs.rb
1091
1025
  - app/models/spree/product/webhooks.rb
@@ -1099,6 +1033,7 @@ files:
1099
1033
  - app/models/spree/promotion/actions/free_shipping.rb
1100
1034
  - app/models/spree/promotion/rules/country.rb
1101
1035
  - app/models/spree/promotion/rules/currency.rb
1036
+ - app/models/spree/promotion/rules/customer_group.rb
1102
1037
  - app/models/spree/promotion/rules/first_order.rb
1103
1038
  - app/models/spree/promotion/rules/item_total.rb
1104
1039
  - app/models/spree/promotion/rules/one_use_per_user.rb
@@ -1159,6 +1094,7 @@ files:
1159
1094
  - app/models/spree/role.rb
1160
1095
  - app/models/spree/role_user.rb
1161
1096
  - app/models/spree/shipment.rb
1097
+ - app/models/spree/shipment/custom_events.rb
1162
1098
  - app/models/spree/shipment/emails.rb
1163
1099
  - app/models/spree/shipment/webhooks.rb
1164
1100
  - app/models/spree/shipment_handler.rb
@@ -1190,6 +1126,7 @@ files:
1190
1126
  - app/models/spree/stock_item/webhooks.rb
1191
1127
  - app/models/spree/stock_location.rb
1192
1128
  - app/models/spree/stock_movement.rb
1129
+ - app/models/spree/stock_movement/custom_events.rb
1193
1130
  - app/models/spree/stock_movement/webhooks.rb
1194
1131
  - app/models/spree/stock_transfer.rb
1195
1132
  - app/models/spree/store.rb
@@ -1203,6 +1140,7 @@ files:
1203
1140
  - app/models/spree/store_payment_method.rb
1204
1141
  - app/models/spree/store_product.rb
1205
1142
  - app/models/spree/store_promotion.rb
1143
+ - app/models/spree/subscriber.rb
1206
1144
  - app/models/spree/tax_category.rb
1207
1145
  - app/models/spree/tax_rate.rb
1208
1146
  - app/models/spree/taxon.rb
@@ -1213,17 +1151,16 @@ files:
1213
1151
  - app/models/spree/taxon_rules/sale.rb
1214
1152
  - app/models/spree/taxon_rules/tag.rb
1215
1153
  - app/models/spree/taxonomy.rb
1216
- - app/models/spree/theme.rb
1217
- - app/models/spree/themes/default.rb
1218
1154
  - app/models/spree/variant.rb
1219
1155
  - app/models/spree/variant/webhooks.rb
1156
+ - app/models/spree/webhook_delivery.rb
1157
+ - app/models/spree/webhook_endpoint.rb
1220
1158
  - app/models/spree/wished_item.rb
1221
1159
  - app/models/spree/wishlist.rb
1222
1160
  - app/models/spree/zone.rb
1223
1161
  - app/models/spree/zone_member.rb
1224
1162
  - app/paginators/spree/shared/paginate.rb
1225
1163
  - app/presenters/spree/csv/customer_presenter.rb
1226
- - app/presenters/spree/csv/formula_sanitizer.rb
1227
1164
  - app/presenters/spree/csv/gift_card_presenter.rb
1228
1165
  - app/presenters/spree/csv/metafields_helper.rb
1229
1166
  - app/presenters/spree/csv/newsletter_subscriber_presenter.rb
@@ -1239,6 +1176,41 @@ files:
1239
1176
  - app/presenters/spree/variant_presenter.rb
1240
1177
  - app/presenters/spree/variants/option_types_presenter.rb
1241
1178
  - app/presenters/spree/variants/options_presenter.rb
1179
+ - app/serializers/spree/events/asset_serializer.rb
1180
+ - app/serializers/spree/events/base_serializer.rb
1181
+ - app/serializers/spree/events/customer_return_serializer.rb
1182
+ - app/serializers/spree/events/digital_link_serializer.rb
1183
+ - app/serializers/spree/events/digital_serializer.rb
1184
+ - app/serializers/spree/events/export_serializer.rb
1185
+ - app/serializers/spree/events/gift_card_batch_serializer.rb
1186
+ - app/serializers/spree/events/gift_card_serializer.rb
1187
+ - app/serializers/spree/events/image_serializer.rb
1188
+ - app/serializers/spree/events/import_row_serializer.rb
1189
+ - app/serializers/spree/events/import_serializer.rb
1190
+ - app/serializers/spree/events/invitation_serializer.rb
1191
+ - app/serializers/spree/events/line_item_serializer.rb
1192
+ - app/serializers/spree/events/newsletter_subscriber_serializer.rb
1193
+ - app/serializers/spree/events/order_serializer.rb
1194
+ - app/serializers/spree/events/payment_serializer.rb
1195
+ - app/serializers/spree/events/post_category_serializer.rb
1196
+ - app/serializers/spree/events/post_serializer.rb
1197
+ - app/serializers/spree/events/price_serializer.rb
1198
+ - app/serializers/spree/events/product_serializer.rb
1199
+ - app/serializers/spree/events/promotion_serializer.rb
1200
+ - app/serializers/spree/events/refund_serializer.rb
1201
+ - app/serializers/spree/events/reimbursement_serializer.rb
1202
+ - app/serializers/spree/events/report_serializer.rb
1203
+ - app/serializers/spree/events/return_authorization_serializer.rb
1204
+ - app/serializers/spree/events/return_item_serializer.rb
1205
+ - app/serializers/spree/events/shipment_serializer.rb
1206
+ - app/serializers/spree/events/stock_item_serializer.rb
1207
+ - app/serializers/spree/events/stock_movement_serializer.rb
1208
+ - app/serializers/spree/events/stock_transfer_serializer.rb
1209
+ - app/serializers/spree/events/store_credit_serializer.rb
1210
+ - app/serializers/spree/events/user_serializer.rb
1211
+ - app/serializers/spree/events/variant_serializer.rb
1212
+ - app/serializers/spree/events/wished_item_serializer.rb
1213
+ - app/serializers/spree/events/wishlist_serializer.rb
1242
1214
  - app/services/spree/account/addresses/create.rb
1243
1215
  - app/services/spree/account/addresses/update.rb
1244
1216
  - app/services/spree/account/create.rb
@@ -1327,7 +1299,6 @@ files:
1327
1299
  - app/services/spree/taxons/add_products.rb
1328
1300
  - app/services/spree/taxons/regenerate_products.rb
1329
1301
  - app/services/spree/taxons/remove_products.rb
1330
- - app/services/spree/taxons/touch_featured_sections.rb
1331
1302
  - app/services/spree/themes/duplicator.rb
1332
1303
  - app/services/spree/tracking_numbers/base_service.rb
1333
1304
  - app/services/spree/variants/remove_line_items.rb
@@ -1337,6 +1308,11 @@ files:
1337
1308
  - app/sorters/spree/orders/sort.rb
1338
1309
  - app/sorters/spree/posts/sort.rb
1339
1310
  - app/sorters/spree/products/sort.rb
1311
+ - app/subscribers/spree/event_log_subscriber.rb
1312
+ - app/subscribers/spree/export_subscriber.rb
1313
+ - app/subscribers/spree/invitation_email_subscriber.rb
1314
+ - app/subscribers/spree/product_metrics_subscriber.rb
1315
+ - app/subscribers/spree/report_subscriber.rb
1340
1316
  - app/validators/email_validator.rb
1341
1317
  - app/validators/spree/addresses/phone_validator.rb
1342
1318
  - app/validators/spree/url_validator.rb
@@ -1447,7 +1423,6 @@ files:
1447
1423
  - db/migrate/20250113180019_add_preferences_to_spree_stores.rb
1448
1424
  - db/migrate/20250114193857_add_metadata_to_spree_stores.rb
1449
1425
  - db/migrate/20250119165904_create_spree_custom_domains.rb
1450
- - db/migrate/20250120094216_create_page_builder_models.rb
1451
1426
  - db/migrate/20250120152208_add_default_locale_to_action_text_rich_texts.rb
1452
1427
  - db/migrate/20250121160028_create_spree_posts_and_spree_post_categories.rb
1453
1428
  - db/migrate/20250122113708_add_first_and_last_name_to_spree_admin_class.rb
@@ -1459,7 +1434,6 @@ files:
1459
1434
  - db/migrate/20250207084000_add_accepts_email_marketing_field_to_spree_users_table.rb
1460
1435
  - db/migrate/20250217171018_create_action_text_video_embeds.rb
1461
1436
  - db/migrate/20250304115943_add_performed_by_to_spree_reimbursements.rb
1462
- - db/migrate/20250305121352_remove_page_builder_indices.rb
1463
1437
  - db/migrate/20250305121657_remove_spree_posts_indices.rb
1464
1438
  - db/migrate/20250311105934_create_spree_gateway_customers.rb
1465
1439
  - db/migrate/20250312202705_add_unique_index_on_promotion_rules_associations.rb
@@ -1480,14 +1454,28 @@ files:
1480
1454
  - db/migrate/20250730154601_add_unique_index_on_spree_properties_name.rb
1481
1455
  - db/migrate/20250811112056_create_spree_policies.rb
1482
1456
  - db/migrate/20250821211705_fix_unique_index_on_spree_order_promotions.rb
1483
- - db/migrate/20250825175217_add_missing_page_builder_indexes.rb
1484
1457
  - db/migrate/20250826093602_create_spree_newsletter_subscribers.rb
1485
1458
  - db/migrate/20250902143122_fix_policies_store_association.rb
1486
1459
  - db/migrate/20250911205659_add_missing_index_on_spree_products_promotionable.rb
1487
- - db/migrate/20250913130044_add_page_links_counter_cache_to_spree_stores.rb
1488
1460
  - db/migrate/20250914101955_add_missing_indexes_on_spree_adjustments.rb
1489
1461
  - db/migrate/20250915093930_add_metadata_to_spree_newsletter_subscribers.rb
1490
1462
  - db/migrate/20250923141845_create_spree_imports.rb
1463
+ - db/migrate/20251110120000_create_spree_price_lists.rb
1464
+ - db/migrate/20251110120001_create_spree_price_rules.rb
1465
+ - db/migrate/20251110120002_add_price_list_id_to_spree_prices.rb
1466
+ - db/migrate/20251110120003_add_price_list_id_to_spree_line_items.rb
1467
+ - db/migrate/20251201172118_fix_indexes_on_friendly_id_slugs.rb
1468
+ - db/migrate/20251214000001_create_spree_webhook_endpoints.rb
1469
+ - db/migrate/20251214000002_create_spree_webhook_deliveries.rb
1470
+ - db/migrate/20251222000000_add_performance_indexes_to_spree_adjustments.rb
1471
+ - db/migrate/20260112000000_fix_spree_prices_unique_indexes.rb
1472
+ - db/migrate/20260115120000_create_spree_customer_groups.rb
1473
+ - db/migrate/20260115120001_create_spree_customer_group_users.rb
1474
+ - db/migrate/20260117140831_remove_not_null_constraint_from_policy_name.rb
1475
+ - db/migrate/20260118120000_add_statistics_to_store_products.rb
1476
+ - db/migrate/20260119120000_add_counter_caches_to_spree_products.rb
1477
+ - db/migrate/20260119170000_add_counter_caches_to_spree_taxons.rb
1478
+ - db/migrate/20260120120000_add_image_count_to_spree_variants.rb
1491
1479
  - db/seeds.rb
1492
1480
  - lib/friendly_id/history_decorator.rb
1493
1481
  - lib/friendly_id/paranoia.rb
@@ -1499,7 +1487,6 @@ files:
1499
1487
  - lib/generators/spree/cursor_rules/templates/spree_rules.mdc
1500
1488
  - lib/generators/spree/dummy/dummy_generator.rb
1501
1489
  - lib/generators/spree/dummy/templates/app/assets/config/manifest.js
1502
- - lib/generators/spree/dummy/templates/initializers/devise.rb
1503
1490
  - lib/generators/spree/dummy/templates/rails/application.rb
1504
1491
  - lib/generators/spree/dummy/templates/rails/boot.rb
1505
1492
  - lib/generators/spree/dummy/templates/rails/database.yml
@@ -1508,8 +1495,6 @@ files:
1508
1495
  - lib/generators/spree/dummy_model/dummy_model_generator.rb
1509
1496
  - lib/generators/spree/dummy_model/templates/migration.rb.tt
1510
1497
  - lib/generators/spree/dummy_model/templates/model.rb.tt
1511
- - lib/generators/spree/install/install_generator.rb
1512
- - lib/generators/spree/install/templates/config/initializers/spree.rb
1513
1498
  - lib/generators/spree/model/model_generator.rb
1514
1499
  - lib/generators/spree/model/templates/model.rb.tt
1515
1500
  - lib/generators/spree/model_decorator/model_decorator_generator.rb
@@ -1544,6 +1529,8 @@ files:
1544
1529
  - lib/spree/core/preferences/runtime_configuration.rb
1545
1530
  - lib/spree/core/preferences/scoped_store.rb
1546
1531
  - lib/spree/core/preferences/store.rb
1532
+ - lib/spree/core/pricing/context.rb
1533
+ - lib/spree/core/pricing/resolver.rb
1547
1534
  - lib/spree/core/product_filters.rb
1548
1535
  - lib/spree/core/query_filters.rb
1549
1536
  - lib/spree/core/query_filters/comparable.rb
@@ -1555,8 +1542,11 @@ files:
1555
1542
  - lib/spree/core/search/base.rb
1556
1543
  - lib/spree/core/token_generator.rb
1557
1544
  - lib/spree/core/version.rb
1558
- - lib/spree/core/webhooks.rb
1559
1545
  - lib/spree/database_type_utilities.rb
1546
+ - lib/spree/events.rb
1547
+ - lib/spree/events/adapters/active_support_notifications.rb
1548
+ - lib/spree/events/adapters/base.rb
1549
+ - lib/spree/events/registry.rb
1560
1550
  - lib/spree/i18n.rb
1561
1551
  - lib/spree/localized_number.rb
1562
1552
  - lib/spree/migrations.rb
@@ -1582,6 +1572,8 @@ files:
1582
1572
  - lib/spree/testing_support/factories/coupon_code_factory.rb
1583
1573
  - lib/spree/testing_support/factories/credit_card_factory.rb
1584
1574
  - lib/spree/testing_support/factories/custom_domain_factory.rb
1575
+ - lib/spree/testing_support/factories/customer_group_factory.rb
1576
+ - lib/spree/testing_support/factories/customer_group_user_factory.rb
1585
1577
  - lib/spree/testing_support/factories/customer_return_factory.rb
1586
1578
  - lib/spree/testing_support/factories/digital_factory.rb
1587
1579
  - lib/spree/testing_support/factories/digital_link_factory.rb
@@ -1606,10 +1598,6 @@ files:
1606
1598
  - lib/spree/testing_support/factories/options_factory.rb
1607
1599
  - lib/spree/testing_support/factories/order_factory.rb
1608
1600
  - lib/spree/testing_support/factories/order_promotion_factory.rb
1609
- - lib/spree/testing_support/factories/page_block_factory.rb
1610
- - lib/spree/testing_support/factories/page_factory.rb
1611
- - lib/spree/testing_support/factories/page_link_factory.rb
1612
- - lib/spree/testing_support/factories/page_section_factory.rb
1613
1601
  - lib/spree/testing_support/factories/payment_capture_event_factory.rb
1614
1602
  - lib/spree/testing_support/factories/payment_factory.rb
1615
1603
  - lib/spree/testing_support/factories/payment_method_factory.rb
@@ -1618,6 +1606,8 @@ files:
1618
1606
  - lib/spree/testing_support/factories/post_category_factory.rb
1619
1607
  - lib/spree/testing_support/factories/post_factory.rb
1620
1608
  - lib/spree/testing_support/factories/price_factory.rb
1609
+ - lib/spree/testing_support/factories/price_list_factory.rb
1610
+ - lib/spree/testing_support/factories/price_rule_factory.rb
1621
1611
  - lib/spree/testing_support/factories/product_factory.rb
1622
1612
  - lib/spree/testing_support/factories/product_option_type_factory.rb
1623
1613
  - lib/spree/testing_support/factories/product_property_factory.rb
@@ -1653,15 +1643,17 @@ files:
1653
1643
  - lib/spree/testing_support/factories/store_credit_factory.rb
1654
1644
  - lib/spree/testing_support/factories/store_credit_type_factory.rb
1655
1645
  - lib/spree/testing_support/factories/store_factory.rb
1646
+ - lib/spree/testing_support/factories/store_product_factory.rb
1656
1647
  - lib/spree/testing_support/factories/tax_category_factory.rb
1657
1648
  - lib/spree/testing_support/factories/tax_rate_factory.rb
1658
1649
  - lib/spree/testing_support/factories/taxon_factory.rb
1659
1650
  - lib/spree/testing_support/factories/taxon_image_factory.rb
1660
1651
  - lib/spree/testing_support/factories/taxon_rule_factory.rb
1661
1652
  - lib/spree/testing_support/factories/taxonomy_factory.rb
1662
- - lib/spree/testing_support/factories/theme_factory.rb
1663
1653
  - lib/spree/testing_support/factories/user_factory.rb
1664
1654
  - lib/spree/testing_support/factories/variant_factory.rb
1655
+ - lib/spree/testing_support/factories/webhook_delivery_factory.rb
1656
+ - lib/spree/testing_support/factories/webhook_endpoint_factory.rb
1665
1657
  - lib/spree/testing_support/factories/wished_variant_factory.rb
1666
1658
  - lib/spree/testing_support/factories/wishlist_factory.rb
1667
1659
  - lib/spree/testing_support/factories/zone_factory.rb
@@ -1672,6 +1664,7 @@ files:
1672
1664
  - lib/spree/testing_support/image_helpers.rb
1673
1665
  - lib/spree/testing_support/jobs.rb
1674
1666
  - lib/spree/testing_support/kernel.rb
1667
+ - lib/spree/testing_support/lifecycle_events.rb
1675
1668
  - lib/spree/testing_support/locale_helpers.rb
1676
1669
  - lib/spree/testing_support/metadata.rb
1677
1670
  - lib/spree/testing_support/next_instance_of.rb
@@ -1681,10 +1674,14 @@ files:
1681
1674
  - lib/spree/testing_support/store.rb
1682
1675
  - lib/spree/testing_support/url_helpers.rb
1683
1676
  - lib/spree/translation_migrations.rb
1677
+ - lib/spree/webhooks.rb
1684
1678
  - lib/spree_core.rb
1685
1679
  - lib/tasks/core.rake
1686
1680
  - lib/tasks/dependencies.rake
1687
1681
  - lib/tasks/exchanges.rake
1682
+ - lib/tasks/products.rake
1683
+ - lib/tasks/taxons.rake
1684
+ - lib/tasks/variants.rake
1688
1685
  - spec/fixtures/favicon.ico
1689
1686
  - spec/fixtures/files/example.json
1690
1687
  - spec/fixtures/files/icon_256x256.gif
@@ -1705,9 +1702,9 @@ licenses:
1705
1702
  - BSD-3-Clause
1706
1703
  metadata:
1707
1704
  bug_tracker_uri: https://github.com/spree/spree/issues
1708
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.2.8
1705
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.3.0.rc1
1709
1706
  documentation_uri: https://docs.spreecommerce.org/
1710
- source_code_uri: https://github.com/spree/spree/tree/v5.2.8
1707
+ source_code_uri: https://github.com/spree/spree/tree/v5.3.0.rc1
1711
1708
  rdoc_options: []
1712
1709
  require_paths:
1713
1710
  - lib
@@ -1715,7 +1712,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
1715
1712
  requirements:
1716
1713
  - - ">="
1717
1714
  - !ruby/object:Gem::Version
1718
- version: '3.0'
1715
+ version: '3.2'
1719
1716
  required_rubygems_version: !ruby/object:Gem::Requirement
1720
1717
  requirements:
1721
1718
  - - ">="
@@ -1,59 +0,0 @@
1
- module Spree
2
- module Themes
3
- class DuplicateComponentsJob < Spree::BaseJob
4
- queue_as Spree.queues.themes
5
-
6
- # We need to duplicate:
7
- # 1. Theme files + sections with pageable_type Spree::Theme.
8
- # 2. Duplicate pages + sections.
9
- # 3. Adjust linkable on page links for Spree::PageSection and Spree::PageBlock parents and Spree::Page linkable.
10
-
11
- def perform(theme_id, duplicated_theme_id)
12
- theme = Spree::Theme.find(theme_id)
13
- duplicated_theme = Spree::Theme.find(duplicated_theme_id)
14
-
15
- ApplicationRecord.transaction do
16
- duplicated_pages = duplicate_pages(theme, duplicated_theme)
17
-
18
- # Duplicated links on pages and blocks have references to pages from the previous theme
19
- # We need to look for a duplicated page and update the link with it
20
- duplicate_layout_sections(theme, duplicated_theme)
21
- adjust_page_links(theme, duplicated_theme, duplicated_pages)
22
-
23
- duplicated_theme.update!(ready: true)
24
- end
25
- end
26
-
27
- private
28
-
29
- def duplicate_layout_sections(theme, duplicated_theme)
30
- theme.layout_sections.each { |section| section.deep_clone(duplicated_theme) }
31
- end
32
-
33
- def duplicate_pages(theme, duplicated_theme)
34
- theme.pages.map { |page| page.duplicate(duplicated_theme) }
35
- end
36
-
37
- def adjust_page_links(theme, duplicated_theme, duplicated_pages)
38
- page_sections = Spree::PageSection.where(pageable: duplicated_pages)
39
- layout_sections = duplicated_theme.layout_sections
40
- all_section_ids = page_sections.ids + layout_sections.ids
41
-
42
- all_page_blocks = Spree::PageBlock.where(section_id: all_section_ids)
43
-
44
- all_parent_ids = all_section_ids + all_page_blocks.ids
45
- all_page_links = Spree::PageLink.
46
- includes(:linkable, parent: :pageable).
47
- where(linkable_type: 'Spree::Page').
48
- where(parent_id: all_parent_ids, linkable_id: theme.pages)
49
-
50
- all_page_links.each do |page_link|
51
- linkable_type = page_link.linkable.type
52
- duplicated_page = duplicated_theme.pages.find_by(type: linkable_type)
53
-
54
- page_link.update!(linkable: duplicated_page)
55
- end
56
- end
57
- end
58
- end
59
- end
@@ -1,81 +0,0 @@
1
- require 'uri'
2
- require 'net/http'
3
-
4
- module Spree
5
- module Themes
6
- class ScreenshotJob < Spree::BaseJob
7
- queue_as Spree.queues.themes
8
-
9
- BASE_SCREENSHOT_API_URL = 'https://shot.screenshotapi.net/v3/screenshot'.freeze
10
- SCREENSHOT_OUTPUT = 'image'.freeze
11
- SCREENSHOT_FILE_TYPE = 'png'.freeze
12
-
13
- def perform(theme_id)
14
- theme = Spree::Theme.find(theme_id)
15
-
16
- Rails.logger.warn('Screenshot API token is missing') and return if screenshot_api_token.blank?
17
-
18
- return if theme.screenshot.attached?
19
-
20
- url = URI.encode_www_form_component("#{theme.store.url_or_custom_domain}?theme_id=#{theme_id}")
21
- query_params = {
22
- token: screenshot_api_token,
23
- url: url,
24
- output: SCREENSHOT_OUTPUT,
25
- file_type: SCREENSHOT_FILE_TYPE,
26
- retina: true,
27
- enable_caching: true
28
- }
29
- query = "#{BASE_SCREENSHOT_API_URL}?#{query_params.to_query}"
30
-
31
- # Send a GET request to the API
32
- uri = URI.parse(query)
33
- response = Net::HTTP.get_response(uri)
34
-
35
- case response.code
36
- when '301', '302'
37
- redirect_uri = response['location']
38
- redirect_uri = URI.parse(redirect_uri)
39
- response = Net::HTTP.get_response(redirect_uri)
40
- save_screenshot(theme, response)
41
- when '200'
42
- save_screenshot(theme, response)
43
- else
44
- Rails.error.report('Screenshot API returned non-200 status code')
45
- end
46
- end
47
-
48
- private
49
-
50
- def screenshot_api_token
51
- @screenshot_api_token ||= Spree.screenshot_api_token
52
- end
53
-
54
- def save_screenshot(theme, response)
55
- temp_file_path = "theme-screenshot-#{theme.id}.png"
56
-
57
- # Create a temporary file
58
- File.open(temp_file_path, "wb") do |file|
59
- file.write(response.body)
60
- end
61
-
62
- # Open the file for reading to attach it
63
- file = File.open(temp_file_path, "rb")
64
-
65
- # Attach the file
66
- theme.screenshot.attach(
67
- io: file,
68
- filename: "theme-screenshot-#{theme.id}.#{SCREENSHOT_FILE_TYPE}",
69
- content_type: "image/#{SCREENSHOT_FILE_TYPE}"
70
- )
71
- theme.save!
72
-
73
- # Close the file before attempting to delete it
74
- file.close
75
-
76
- # Remove the temporary file
77
- File.delete(temp_file_path) if File.exist?(temp_file_path)
78
- end
79
- end
80
- end
81
- end