spree_core 5.3.4 → 5.4.0.beta

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 (239) hide show
  1. checksums.yaml +4 -4
  2. data/app/finders/spree/orders/find_complete.rb +33 -2
  3. data/app/finders/spree/stores/find_default.rb +17 -0
  4. data/app/finders/spree/variants/visible_finder.rb +1 -0
  5. data/app/helpers/spree/addresses_helper.rb +1 -2
  6. data/app/helpers/spree/base_helper.rb +5 -4
  7. data/app/jobs/spree/api_key_touch_job.rb +9 -0
  8. data/app/models/concerns/spree/admin_user_methods.rb +32 -0
  9. data/app/models/concerns/spree/number_as_param.rb +5 -3
  10. data/app/models/concerns/spree/prefixed_id.rb +82 -0
  11. data/app/models/concerns/spree/product_scopes.rb +33 -18
  12. data/app/models/concerns/spree/publishable.rb +47 -47
  13. data/app/models/concerns/spree/{multi_store_resource.rb → store_scoped_resource.rb} +1 -10
  14. data/app/models/concerns/spree/stores/markets.rb +124 -0
  15. data/app/models/concerns/spree/user_methods.rb +7 -7
  16. data/app/models/concerns/spree/user_payment_source.rb +2 -0
  17. data/app/models/concerns/spree/user_roles.rb +1 -0
  18. data/app/models/spree/ability.rb +13 -0
  19. data/app/models/spree/address.rb +30 -0
  20. data/app/models/spree/adjustment.rb +2 -0
  21. data/app/models/spree/api_key.rb +47 -0
  22. data/app/models/spree/asset.rb +2 -0
  23. data/app/models/spree/authentication/strategies/base_strategy.rb +55 -0
  24. data/app/models/spree/authentication/strategies/email_password_strategy.rb +47 -0
  25. data/app/models/spree/base.rb +1 -0
  26. data/app/models/spree/calculator.rb +2 -0
  27. data/app/models/spree/country.rb +56 -0
  28. data/app/models/spree/coupon_code.rb +2 -0
  29. data/app/models/spree/credit_card.rb +2 -0
  30. data/app/models/spree/current.rb +9 -4
  31. data/app/models/spree/customer_group.rb +2 -0
  32. data/app/models/spree/customer_return.rb +2 -0
  33. data/app/models/spree/data_feed.rb +2 -0
  34. data/app/models/spree/digital.rb +2 -0
  35. data/app/models/spree/digital_link.rb +2 -0
  36. data/app/models/spree/export.rb +3 -2
  37. data/app/models/spree/fulfilment_changer.rb +8 -2
  38. data/app/models/spree/gateway/bogus.rb +60 -0
  39. data/app/models/spree/gateway_customer.rb +2 -0
  40. data/app/models/spree/gift_card.rb +2 -0
  41. data/app/models/spree/gift_card_batch.rb +2 -0
  42. data/app/models/spree/image.rb +18 -0
  43. data/app/models/spree/import.rb +5 -3
  44. data/app/models/spree/import_mapping.rb +2 -0
  45. data/app/models/spree/import_row.rb +2 -0
  46. data/app/models/spree/import_schemas/customers.rb +21 -0
  47. data/app/models/spree/imports/customers.rb +9 -0
  48. data/app/models/spree/integration.rb +2 -0
  49. data/app/models/spree/inventory_unit.rb +2 -0
  50. data/app/models/spree/invitation.rb +6 -6
  51. data/app/models/spree/legacy_admin_user.rb +31 -0
  52. data/app/models/spree/legacy_user.rb +19 -1
  53. data/app/models/spree/line_item.rb +15 -4
  54. data/app/models/spree/log_entry.rb +2 -0
  55. data/app/models/spree/market.rb +83 -0
  56. data/app/models/spree/market_country.rb +25 -0
  57. data/app/models/spree/metafield.rb +2 -0
  58. data/app/models/spree/metafield_definition.rb +2 -0
  59. data/app/models/spree/newsletter_subscriber.rb +2 -0
  60. data/app/models/spree/option_type.rb +2 -0
  61. data/app/models/spree/option_value.rb +2 -0
  62. data/app/models/spree/order/address_book.rb +2 -1
  63. data/app/models/spree/order.rb +73 -45
  64. data/app/models/spree/payment.rb +6 -1
  65. data/app/models/spree/payment_capture_event.rb +2 -0
  66. data/app/models/spree/payment_method.rb +59 -1
  67. data/app/models/spree/payment_session.rb +109 -0
  68. data/app/models/spree/payment_sessions/bogus.rb +4 -0
  69. data/app/models/spree/payment_setup_session.rb +79 -0
  70. data/app/models/spree/payment_source.rb +2 -0
  71. data/app/models/spree/permission_sets/default_customer.rb +19 -0
  72. data/app/models/spree/policy.rb +2 -0
  73. data/app/models/spree/post.rb +2 -0
  74. data/app/models/spree/post_category.rb +2 -0
  75. data/app/models/spree/price.rb +26 -2
  76. data/app/models/spree/price_list.rb +2 -0
  77. data/app/models/spree/price_rule.rb +2 -0
  78. data/app/models/spree/price_rules/market_rule.rb +19 -0
  79. data/app/models/spree/product.rb +41 -29
  80. data/app/models/spree/promotion/rules/country.rb +1 -1
  81. data/app/models/spree/promotion.rb +3 -1
  82. data/app/models/spree/promotion_action.rb +2 -0
  83. data/app/models/spree/promotion_category.rb +2 -0
  84. data/app/models/spree/promotion_rule.rb +2 -0
  85. data/app/models/spree/prototype.rb +2 -0
  86. data/app/models/spree/refund.rb +2 -0
  87. data/app/models/spree/refund_reason.rb +2 -0
  88. data/app/models/spree/reimbursement/credit.rb +2 -0
  89. data/app/models/spree/reimbursement.rb +2 -0
  90. data/app/models/spree/reimbursement_type.rb +2 -0
  91. data/app/models/spree/report.rb +3 -1
  92. data/app/models/spree/return_authorization.rb +2 -0
  93. data/app/models/spree/return_authorization_reason.rb +2 -0
  94. data/app/models/spree/return_item.rb +2 -0
  95. data/app/models/spree/role.rb +2 -0
  96. data/app/models/spree/shipment.rb +11 -1
  97. data/app/models/spree/shipping_category.rb +2 -0
  98. data/app/models/spree/shipping_method.rb +2 -0
  99. data/app/models/spree/shipping_method_category.rb +2 -0
  100. data/app/models/spree/shipping_rate.rb +2 -0
  101. data/app/models/spree/state_change.rb +2 -0
  102. data/app/models/spree/stock_item.rb +2 -0
  103. data/app/models/spree/stock_location.rb +2 -0
  104. data/app/models/spree/stock_movement.rb +2 -0
  105. data/app/models/spree/stock_transfer.rb +2 -1
  106. data/app/models/spree/store.rb +110 -179
  107. data/app/models/spree/store_credit.rb +2 -0
  108. data/app/models/spree/store_credit_category.rb +2 -0
  109. data/app/models/spree/store_credit_event.rb +2 -0
  110. data/app/models/spree/store_credit_type.rb +2 -0
  111. data/app/models/spree/store_product.rb +2 -0
  112. data/app/models/spree/tax_category.rb +2 -0
  113. data/app/models/spree/tax_rate.rb +2 -0
  114. data/app/models/spree/taxon.rb +4 -1
  115. data/app/models/spree/taxon_image.rb +8 -0
  116. data/app/models/spree/taxon_rule.rb +2 -0
  117. data/app/models/spree/taxonomy.rb +2 -0
  118. data/app/models/spree/user_identity.rb +81 -0
  119. data/app/models/spree/variant.rb +13 -3
  120. data/app/models/spree/webhook_delivery.rb +2 -0
  121. data/app/models/spree/webhook_endpoint.rb +2 -0
  122. data/app/models/spree/wished_item.rb +15 -0
  123. data/app/models/spree/wishlist.rb +2 -8
  124. data/app/models/spree/zone.rb +2 -6
  125. data/app/presenters/spree/filters/price_presenter.rb +1 -0
  126. data/app/presenters/spree/filters/price_range_presenter.rb +1 -0
  127. data/app/presenters/spree/filters/quantified_price_range_presenter.rb +1 -0
  128. data/app/presenters/spree/product_summary_presenter.rb +1 -0
  129. data/app/services/spree/addresses/helper.rb +22 -3
  130. data/app/services/spree/cart/associate.rb +19 -6
  131. data/app/services/spree/checkout/select_shipping_method.rb +13 -1
  132. data/app/services/spree/classifications/reposition.rb +5 -0
  133. data/app/services/spree/imports/row_processors/customer.rb +70 -0
  134. data/app/services/spree/orders/approve.rb +5 -3
  135. data/app/services/spree/orders/cancel.rb +9 -4
  136. data/app/services/spree/products/prepare_nested_attributes.rb +1 -1
  137. data/app/services/spree/sample_data/import_runner.rb +54 -0
  138. data/app/services/spree/sample_data/loader.rb +78 -0
  139. data/app/services/spree/seeds/admin_user.rb +2 -3
  140. data/app/services/spree/seeds/all.rb +1 -0
  141. data/app/services/spree/seeds/api_keys.rb +16 -0
  142. data/app/services/spree/seeds/stores.rb +2 -4
  143. data/app/sorters/spree/orders/sort.rb +4 -0
  144. data/app/subscribers/spree/product_metrics_subscriber.rb +4 -4
  145. data/config/brakeman.ignore +120 -0
  146. data/config/locales/en.yml +20 -1
  147. data/db/migrate/20250923141900_create_spree_user_identities.rb +17 -0
  148. data/db/migrate/20260123000000_create_spree_api_keys.rb +19 -0
  149. data/db/migrate/20260131000000_add_thumbnail_id_to_spree_variants_and_products.rb +9 -0
  150. data/db/migrate/20260213000000_create_spree_payment_sessions.rb +27 -0
  151. data/db/migrate/20260218000000_create_spree_payment_setup_sessions.rb +24 -0
  152. data/db/migrate/20260220000000_create_spree_markets.rb +29 -0
  153. data/db/sample_data/customers.csv +21 -0
  154. data/db/sample_data/metafield_definitions.rb +7 -0
  155. data/db/sample_data/orders.rb +131 -0
  156. data/db/sample_data/payment_methods.rb +17 -0
  157. data/db/sample_data/posts.rb +7 -0
  158. data/db/sample_data/products.csv +1083 -0
  159. data/db/sample_data/promotions.rb +8 -0
  160. data/db/sample_data/shipping_methods.rb +39 -0
  161. data/lib/generators/spree/authentication/devise/devise_generator.rb +2 -2
  162. data/lib/generators/spree/authentication/dummy/dummy_generator.rb +54 -0
  163. data/lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt +52 -0
  164. data/lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt +33 -0
  165. data/lib/generators/spree/dummy/dummy_generator.rb +1 -1
  166. data/lib/spree/core/configuration.rb +1 -0
  167. data/lib/spree/core/controller_helpers/common.rb +6 -0
  168. data/lib/spree/core/controller_helpers/currency.rb +5 -0
  169. data/lib/spree/core/controller_helpers/order.rb +5 -1
  170. data/lib/spree/core/controller_helpers/store.rb +1 -1
  171. data/lib/spree/core/dependencies.rb +1 -1
  172. data/lib/spree/core/engine.rb +17 -4
  173. data/lib/spree/core/pricing/context.rb +6 -3
  174. data/lib/spree/core/product_filters.rb +14 -0
  175. data/lib/spree/core/query_filters/comparable.rb +4 -0
  176. data/lib/spree/core/query_filters/text.rb +4 -0
  177. data/lib/spree/core/version.rb +1 -1
  178. data/lib/spree/core.rb +4 -4
  179. data/lib/spree/database_type_utilities.rb +7 -0
  180. data/lib/spree/events.rb +17 -10
  181. data/lib/spree/money.rb +2 -9
  182. data/lib/spree/permitted_attributes.rb +19 -7
  183. data/lib/spree/testing_support/capybara_config.rb +2 -2
  184. data/lib/spree/testing_support/common_rake.rb +15 -4
  185. data/lib/spree/testing_support/factories/api_key_factory.rb +19 -0
  186. data/lib/spree/testing_support/factories/custom_domain_factory.rb +7 -5
  187. data/lib/spree/testing_support/factories/import_factory.rb +12 -0
  188. data/lib/spree/testing_support/factories/market_factory.rb +35 -0
  189. data/lib/spree/testing_support/factories/order_factory.rb +3 -1
  190. data/lib/spree/testing_support/factories/payment_method_factory.rb +2 -0
  191. data/lib/spree/testing_support/factories/payment_session_factory.rb +47 -0
  192. data/lib/spree/testing_support/factories/payment_setup_session_factory.rb +31 -0
  193. data/lib/spree/testing_support/factories/price_rule_factory.rb +10 -0
  194. data/lib/spree/testing_support/factories/user_identity_factory.rb +15 -0
  195. data/lib/spree/testing_support/store.rb +3 -2
  196. data/lib/spree/webhooks.rb +7 -7
  197. data/lib/tasks/images.rake +20 -0
  198. data/lib/tasks/markets.rake +40 -0
  199. data/lib/tasks/sample_data.rake +15 -0
  200. data/spec/fixtures/files/customers_import.csv +4 -0
  201. metadata +99 -59
  202. data/LICENSE.md +0 -57
  203. data/app/finders/spree/stores/find_current.rb +0 -28
  204. data/app/models/spree/custom_domain.rb +0 -59
  205. data/app/serializers/spree/events/asset_serializer.rb +0 -22
  206. data/app/serializers/spree/events/base_serializer.rb +0 -61
  207. data/app/serializers/spree/events/customer_return_serializer.rb +0 -20
  208. data/app/serializers/spree/events/digital_link_serializer.rb +0 -20
  209. data/app/serializers/spree/events/digital_serializer.rb +0 -18
  210. data/app/serializers/spree/events/export_serializer.rb +0 -22
  211. data/app/serializers/spree/events/gift_card_batch_serializer.rb +0 -24
  212. data/app/serializers/spree/events/gift_card_serializer.rb +0 -29
  213. data/app/serializers/spree/events/image_serializer.rb +0 -9
  214. data/app/serializers/spree/events/import_row_serializer.rb +0 -23
  215. data/app/serializers/spree/events/import_serializer.rb +0 -24
  216. data/app/serializers/spree/events/invitation_serializer.rb +0 -28
  217. data/app/serializers/spree/events/line_item_serializer.rb +0 -31
  218. data/app/serializers/spree/events/newsletter_subscriber_serializer.rb +0 -21
  219. data/app/serializers/spree/events/order_serializer.rb +0 -39
  220. data/app/serializers/spree/events/payment_serializer.rb +0 -24
  221. data/app/serializers/spree/events/post_category_serializer.rb +0 -20
  222. data/app/serializers/spree/events/post_serializer.rb +0 -26
  223. data/app/serializers/spree/events/price_serializer.rb +0 -22
  224. data/app/serializers/spree/events/product_serializer.rb +0 -24
  225. data/app/serializers/spree/events/promotion_serializer.rb +0 -32
  226. data/app/serializers/spree/events/refund_serializer.rb +0 -23
  227. data/app/serializers/spree/events/reimbursement_serializer.rb +0 -22
  228. data/app/serializers/spree/events/report_serializer.rb +0 -23
  229. data/app/serializers/spree/events/return_authorization_serializer.rb +0 -22
  230. data/app/serializers/spree/events/return_item_serializer.rb +0 -27
  231. data/app/serializers/spree/events/shipment_serializer.rb +0 -24
  232. data/app/serializers/spree/events/stock_item_serializer.rb +0 -22
  233. data/app/serializers/spree/events/stock_movement_serializer.rb +0 -22
  234. data/app/serializers/spree/events/stock_transfer_serializer.rb +0 -22
  235. data/app/serializers/spree/events/store_credit_serializer.rb +0 -30
  236. data/app/serializers/spree/events/user_serializer.rb +0 -18
  237. data/app/serializers/spree/events/variant_serializer.rb +0 -34
  238. data/app/serializers/spree/events/wished_item_serializer.rb +0 -20
  239. data/app/serializers/spree/events/wishlist_serializer.rb +0 -22
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.3.4
4
+ version: 5.4.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sean Schofield
8
8
  - Spark Solutions Sp. z o.o.
9
9
  - Vendo Connect Inc.
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 1980-01-02 00:00:00.000000000 Z
13
+ date: 2026-02-25 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: i18n-tasks
@@ -217,6 +218,20 @@ dependencies:
217
218
  - - "<"
218
219
  - !ruby/object:Gem::Version
219
220
  version: '4'
221
+ - !ruby/object:Gem::Dependency
222
+ name: jwt
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '3.1'
228
+ type: :runtime
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - "~>"
233
+ - !ruby/object:Gem::Version
234
+ version: '3.1'
220
235
  - !ruby/object:Gem::Dependency
221
236
  name: money
222
237
  requirement: !ruby/object:Gem::Requirement
@@ -489,20 +504,6 @@ dependencies:
489
504
  - - "~>"
490
505
  - !ruby/object:Gem::Version
491
506
  version: '1.0'
492
- - !ruby/object:Gem::Dependency
493
- name: request_store
494
- requirement: !ruby/object:Gem::Requirement
495
- requirements:
496
- - - "~>"
497
- - !ruby/object:Gem::Version
498
- version: '1.7'
499
- type: :runtime
500
- prerelease: false
501
- version_requirements: !ruby/object:Gem::Requirement
502
- requirements:
503
- - - "~>"
504
- - !ruby/object:Gem::Version
505
- version: '1.7'
506
507
  - !ruby/object:Gem::Dependency
507
508
  name: wannabe_bool
508
509
  requirement: !ruby/object:Gem::Requirement
@@ -573,13 +574,40 @@ dependencies:
573
574
  - - "~>"
574
575
  - !ruby/object:Gem::Version
575
576
  version: '2.0'
577
+ - !ruby/object:Gem::Dependency
578
+ name: bcrypt
579
+ requirement: !ruby/object:Gem::Requirement
580
+ requirements:
581
+ - - "~>"
582
+ - !ruby/object:Gem::Version
583
+ version: '3.1'
584
+ type: :runtime
585
+ prerelease: false
586
+ version_requirements: !ruby/object:Gem::Requirement
587
+ requirements:
588
+ - - "~>"
589
+ - !ruby/object:Gem::Version
590
+ version: '3.1'
591
+ - !ruby/object:Gem::Dependency
592
+ name: sqids
593
+ requirement: !ruby/object:Gem::Requirement
594
+ requirements:
595
+ - - "~>"
596
+ - !ruby/object:Gem::Version
597
+ version: '0.2'
598
+ type: :runtime
599
+ prerelease: false
600
+ version_requirements: !ruby/object:Gem::Requirement
601
+ requirements:
602
+ - - "~>"
603
+ - !ruby/object:Gem::Version
604
+ version: '0.2'
576
605
  description: Spree Models, Helpers, Services and core libraries
577
606
  email: hello@spreecommerce.org
578
607
  executables: []
579
608
  extensions: []
580
609
  extra_rdoc_files: []
581
610
  files:
582
- - LICENSE.md
583
611
  - README.md
584
612
  - Rakefile
585
613
  - app/assets/config/spree_core_manifest.js
@@ -813,7 +841,7 @@ files:
813
841
  - app/finders/spree/posts/find.rb
814
842
  - app/finders/spree/product_properties/find_available.rb
815
843
  - app/finders/spree/products/find.rb
816
- - app/finders/spree/stores/find_current.rb
844
+ - app/finders/spree/stores/find_default.rb
817
845
  - app/finders/spree/taxons/find.rb
818
846
  - app/finders/spree/variants/find.rb
819
847
  - app/finders/spree/variants/option_types_finder.rb
@@ -835,6 +863,7 @@ files:
835
863
  - app/javascript/spree/core/helpers/debounce.js
836
864
  - app/javascript/spree/core/helpers/scroll_lock.js
837
865
  - app/jobs/spree/addresses/geocode_address_job.rb
866
+ - app/jobs/spree/api_key_touch_job.rb
838
867
  - app/jobs/spree/base_job.rb
839
868
  - app/jobs/spree/coupon_codes/bulk_generate_job.rb
840
869
  - app/jobs/spree/events/subscriber_job.rb
@@ -874,17 +903,19 @@ files:
874
903
  - app/models/concerns/spree/metadata.rb
875
904
  - app/models/concerns/spree/metafields.rb
876
905
  - app/models/concerns/spree/multi_searchable.rb
877
- - app/models/concerns/spree/multi_store_resource.rb
878
906
  - app/models/concerns/spree/named_type.rb
879
907
  - app/models/concerns/spree/number_as_param.rb
880
908
  - app/models/concerns/spree/number_identifier.rb
881
909
  - app/models/concerns/spree/parameterizable_name.rb
882
910
  - app/models/concerns/spree/payment_source_concern.rb
911
+ - app/models/concerns/spree/prefixed_id.rb
883
912
  - app/models/concerns/spree/previewable.rb
884
913
  - app/models/concerns/spree/product_scopes.rb
885
914
  - app/models/concerns/spree/publishable.rb
886
915
  - app/models/concerns/spree/ransackable_attributes.rb
887
916
  - app/models/concerns/spree/single_store_resource.rb
917
+ - app/models/concerns/spree/store_scoped_resource.rb
918
+ - app/models/concerns/spree/stores/markets.rb
888
919
  - app/models/concerns/spree/stores/setup.rb
889
920
  - app/models/concerns/spree/stores/socials.rb
890
921
  - app/models/concerns/spree/translatable_resource.rb
@@ -906,8 +937,11 @@ files:
906
937
  - app/models/spree/adjustable/adjustments_updater.rb
907
938
  - app/models/spree/adjustable/promotion_accumulator.rb
908
939
  - app/models/spree/adjustment.rb
940
+ - app/models/spree/api_key.rb
909
941
  - app/models/spree/asset.rb
910
942
  - app/models/spree/asset/support/active_storage.rb
943
+ - app/models/spree/authentication/strategies/base_strategy.rb
944
+ - app/models/spree/authentication/strategies/email_password_strategy.rb
911
945
  - app/models/spree/base.rb
912
946
  - app/models/spree/base_analytics_event_handler.rb
913
947
  - app/models/spree/calculator.rb
@@ -931,7 +965,6 @@ files:
931
965
  - app/models/spree/coupon_code.rb
932
966
  - app/models/spree/credit_card.rb
933
967
  - app/models/spree/current.rb
934
- - app/models/spree/custom_domain.rb
935
968
  - app/models/spree/customer_group.rb
936
969
  - app/models/spree/customer_group_user.rb
937
970
  - app/models/spree/customer_return.rb
@@ -961,15 +994,20 @@ files:
961
994
  - app/models/spree/import_mapping.rb
962
995
  - app/models/spree/import_row.rb
963
996
  - app/models/spree/import_schema.rb
997
+ - app/models/spree/import_schemas/customers.rb
964
998
  - app/models/spree/import_schemas/products.rb
999
+ - app/models/spree/imports/customers.rb
965
1000
  - app/models/spree/imports/products.rb
966
1001
  - app/models/spree/integration.rb
967
1002
  - app/models/spree/inventory_unit.rb
968
1003
  - app/models/spree/invitation.rb
969
1004
  - app/models/spree/invitations/store.rb
1005
+ - app/models/spree/legacy_admin_user.rb
970
1006
  - app/models/spree/legacy_user.rb
971
1007
  - app/models/spree/line_item.rb
972
1008
  - app/models/spree/log_entry.rb
1009
+ - app/models/spree/market.rb
1010
+ - app/models/spree/market_country.rb
973
1011
  - app/models/spree/metafield.rb
974
1012
  - app/models/spree/metafield_definition.rb
975
1013
  - app/models/spree/metafields/boolean.rb
@@ -1008,6 +1046,9 @@ files:
1008
1046
  - app/models/spree/payment_method.rb
1009
1047
  - app/models/spree/payment_method/check.rb
1010
1048
  - app/models/spree/payment_method/store_credit.rb
1049
+ - app/models/spree/payment_session.rb
1050
+ - app/models/spree/payment_sessions/bogus.rb
1051
+ - app/models/spree/payment_setup_session.rb
1011
1052
  - app/models/spree/payment_source.rb
1012
1053
  - app/models/spree/permission_sets/base.rb
1013
1054
  - app/models/spree/permission_sets/configuration_management.rb
@@ -1032,6 +1073,7 @@ files:
1032
1073
  - app/models/spree/price_list.rb
1033
1074
  - app/models/spree/price_rule.rb
1034
1075
  - app/models/spree/price_rules/customer_group_rule.rb
1076
+ - app/models/spree/price_rules/market_rule.rb
1035
1077
  - app/models/spree/price_rules/user_rule.rb
1036
1078
  - app/models/spree/price_rules/volume_rule.rb
1037
1079
  - app/models/spree/price_rules/zone_rule.rb
@@ -1166,6 +1208,7 @@ files:
1166
1208
  - app/models/spree/taxon_rules/sale.rb
1167
1209
  - app/models/spree/taxon_rules/tag.rb
1168
1210
  - app/models/spree/taxonomy.rb
1211
+ - app/models/spree/user_identity.rb
1169
1212
  - app/models/spree/variant.rb
1170
1213
  - app/models/spree/variant/webhooks.rb
1171
1214
  - app/models/spree/webhook_delivery.rb
@@ -1191,41 +1234,6 @@ files:
1191
1234
  - app/presenters/spree/variant_presenter.rb
1192
1235
  - app/presenters/spree/variants/option_types_presenter.rb
1193
1236
  - app/presenters/spree/variants/options_presenter.rb
1194
- - app/serializers/spree/events/asset_serializer.rb
1195
- - app/serializers/spree/events/base_serializer.rb
1196
- - app/serializers/spree/events/customer_return_serializer.rb
1197
- - app/serializers/spree/events/digital_link_serializer.rb
1198
- - app/serializers/spree/events/digital_serializer.rb
1199
- - app/serializers/spree/events/export_serializer.rb
1200
- - app/serializers/spree/events/gift_card_batch_serializer.rb
1201
- - app/serializers/spree/events/gift_card_serializer.rb
1202
- - app/serializers/spree/events/image_serializer.rb
1203
- - app/serializers/spree/events/import_row_serializer.rb
1204
- - app/serializers/spree/events/import_serializer.rb
1205
- - app/serializers/spree/events/invitation_serializer.rb
1206
- - app/serializers/spree/events/line_item_serializer.rb
1207
- - app/serializers/spree/events/newsletter_subscriber_serializer.rb
1208
- - app/serializers/spree/events/order_serializer.rb
1209
- - app/serializers/spree/events/payment_serializer.rb
1210
- - app/serializers/spree/events/post_category_serializer.rb
1211
- - app/serializers/spree/events/post_serializer.rb
1212
- - app/serializers/spree/events/price_serializer.rb
1213
- - app/serializers/spree/events/product_serializer.rb
1214
- - app/serializers/spree/events/promotion_serializer.rb
1215
- - app/serializers/spree/events/refund_serializer.rb
1216
- - app/serializers/spree/events/reimbursement_serializer.rb
1217
- - app/serializers/spree/events/report_serializer.rb
1218
- - app/serializers/spree/events/return_authorization_serializer.rb
1219
- - app/serializers/spree/events/return_item_serializer.rb
1220
- - app/serializers/spree/events/shipment_serializer.rb
1221
- - app/serializers/spree/events/stock_item_serializer.rb
1222
- - app/serializers/spree/events/stock_movement_serializer.rb
1223
- - app/serializers/spree/events/stock_transfer_serializer.rb
1224
- - app/serializers/spree/events/store_credit_serializer.rb
1225
- - app/serializers/spree/events/user_serializer.rb
1226
- - app/serializers/spree/events/variant_serializer.rb
1227
- - app/serializers/spree/events/wished_item_serializer.rb
1228
- - app/serializers/spree/events/wishlist_serializer.rb
1229
1237
  - app/services/spree/account/addresses/create.rb
1230
1238
  - app/services/spree/account/addresses/update.rb
1231
1239
  - app/services/spree/account/create.rb
@@ -1270,6 +1278,7 @@ files:
1270
1278
  - app/services/spree/gift_cards/redeem.rb
1271
1279
  - app/services/spree/gift_cards/remove.rb
1272
1280
  - app/services/spree/imports/row_processors/base.rb
1281
+ - app/services/spree/imports/row_processors/customer.rb
1273
1282
  - app/services/spree/imports/row_processors/product_variant.rb
1274
1283
  - app/services/spree/line_items/create.rb
1275
1284
  - app/services/spree/line_items/destroy.rb
@@ -1286,8 +1295,11 @@ files:
1286
1295
  - app/services/spree/products/auto_match_taxons.rb
1287
1296
  - app/services/spree/products/duplicator.rb
1288
1297
  - app/services/spree/products/prepare_nested_attributes.rb
1298
+ - app/services/spree/sample_data/import_runner.rb
1299
+ - app/services/spree/sample_data/loader.rb
1289
1300
  - app/services/spree/seeds/admin_user.rb
1290
1301
  - app/services/spree/seeds/all.rb
1302
+ - app/services/spree/seeds/api_keys.rb
1291
1303
  - app/services/spree/seeds/countries.rb
1292
1304
  - app/services/spree/seeds/default_reimbursement_types.rb
1293
1305
  - app/services/spree/seeds/digital_delivery.rb
@@ -1351,6 +1363,7 @@ files:
1351
1363
  - app/views/spree/shared/_payment.html.erb
1352
1364
  - app/views/spree/test_mailer/test_email.html.erb
1353
1365
  - app/views/spree/test_mailer/test_email.text.erb
1366
+ - config/brakeman.ignore
1354
1367
  - config/i18n-tasks.yml
1355
1368
  - config/importmap.rb
1356
1369
  - config/initializers/active_storage.rb
@@ -1475,6 +1488,7 @@ files:
1475
1488
  - db/migrate/20250914101955_add_missing_indexes_on_spree_adjustments.rb
1476
1489
  - db/migrate/20250915093930_add_metadata_to_spree_newsletter_subscribers.rb
1477
1490
  - db/migrate/20250923141845_create_spree_imports.rb
1491
+ - db/migrate/20250923141900_create_spree_user_identities.rb
1478
1492
  - db/migrate/20251110120000_create_spree_price_lists.rb
1479
1493
  - db/migrate/20251110120001_create_spree_price_rules.rb
1480
1494
  - db/migrate/20251110120002_add_price_list_id_to_spree_prices.rb
@@ -1491,6 +1505,19 @@ files:
1491
1505
  - db/migrate/20260119120000_add_counter_caches_to_spree_products.rb
1492
1506
  - db/migrate/20260119170000_add_counter_caches_to_spree_taxons.rb
1493
1507
  - db/migrate/20260120120000_add_image_count_to_spree_variants.rb
1508
+ - db/migrate/20260123000000_create_spree_api_keys.rb
1509
+ - db/migrate/20260131000000_add_thumbnail_id_to_spree_variants_and_products.rb
1510
+ - db/migrate/20260213000000_create_spree_payment_sessions.rb
1511
+ - db/migrate/20260218000000_create_spree_payment_setup_sessions.rb
1512
+ - db/migrate/20260220000000_create_spree_markets.rb
1513
+ - db/sample_data/customers.csv
1514
+ - db/sample_data/metafield_definitions.rb
1515
+ - db/sample_data/orders.rb
1516
+ - db/sample_data/payment_methods.rb
1517
+ - db/sample_data/posts.rb
1518
+ - db/sample_data/products.csv
1519
+ - db/sample_data/promotions.rb
1520
+ - db/sample_data/shipping_methods.rb
1494
1521
  - db/seeds.rb
1495
1522
  - lib/friendly_id/history_decorator.rb
1496
1523
  - lib/friendly_id/paranoia.rb
@@ -1498,6 +1525,9 @@ files:
1498
1525
  - lib/generators/spree/authentication/custom/templates/authentication_helpers.rb.tt
1499
1526
  - lib/generators/spree/authentication/devise/devise_generator.rb
1500
1527
  - lib/generators/spree/authentication/devise/templates/authentication_helpers.rb.tt
1528
+ - lib/generators/spree/authentication/dummy/dummy_generator.rb
1529
+ - lib/generators/spree/authentication/dummy/templates/authentication_helpers.rb.tt
1530
+ - lib/generators/spree/authentication/dummy/templates/create_spree_admin_users.rb.tt
1501
1531
  - lib/generators/spree/cursor_rules/cursor_rules_generator.rb
1502
1532
  - lib/generators/spree/cursor_rules/templates/spree_rules.mdc
1503
1533
  - lib/generators/spree/dummy/dummy_generator.rb
@@ -1580,6 +1610,7 @@ files:
1580
1610
  - lib/spree/testing_support/factories.rb
1581
1611
  - lib/spree/testing_support/factories/address_factory.rb
1582
1612
  - lib/spree/testing_support/factories/adjustment_factory.rb
1613
+ - lib/spree/testing_support/factories/api_key_factory.rb
1583
1614
  - lib/spree/testing_support/factories/asset_factory.rb
1584
1615
  - lib/spree/testing_support/factories/calculator_factory.rb
1585
1616
  - lib/spree/testing_support/factories/classification_factory.rb
@@ -1607,6 +1638,7 @@ files:
1607
1638
  - lib/spree/testing_support/factories/invitation_factory.rb
1608
1639
  - lib/spree/testing_support/factories/line_item_factory.rb
1609
1640
  - lib/spree/testing_support/factories/log_entry_factory.rb
1641
+ - lib/spree/testing_support/factories/market_factory.rb
1610
1642
  - lib/spree/testing_support/factories/metafield_definition_factory.rb
1611
1643
  - lib/spree/testing_support/factories/metafield_factory.rb
1612
1644
  - lib/spree/testing_support/factories/newsletter_subscriber_factory.rb
@@ -1616,6 +1648,8 @@ files:
1616
1648
  - lib/spree/testing_support/factories/payment_capture_event_factory.rb
1617
1649
  - lib/spree/testing_support/factories/payment_factory.rb
1618
1650
  - lib/spree/testing_support/factories/payment_method_factory.rb
1651
+ - lib/spree/testing_support/factories/payment_session_factory.rb
1652
+ - lib/spree/testing_support/factories/payment_setup_session_factory.rb
1619
1653
  - lib/spree/testing_support/factories/payment_source_factory.rb
1620
1654
  - lib/spree/testing_support/factories/policy_factory.rb
1621
1655
  - lib/spree/testing_support/factories/post_category_factory.rb
@@ -1666,6 +1700,7 @@ files:
1666
1700
  - lib/spree/testing_support/factories/taxon_rule_factory.rb
1667
1701
  - lib/spree/testing_support/factories/taxonomy_factory.rb
1668
1702
  - lib/spree/testing_support/factories/user_factory.rb
1703
+ - lib/spree/testing_support/factories/user_identity_factory.rb
1669
1704
  - lib/spree/testing_support/factories/variant_factory.rb
1670
1705
  - lib/spree/testing_support/factories/webhook_delivery_factory.rb
1671
1706
  - lib/spree/testing_support/factories/webhook_endpoint_factory.rb
@@ -1694,10 +1729,14 @@ files:
1694
1729
  - lib/tasks/core.rake
1695
1730
  - lib/tasks/dependencies.rake
1696
1731
  - lib/tasks/exchanges.rake
1732
+ - lib/tasks/images.rake
1733
+ - lib/tasks/markets.rake
1697
1734
  - lib/tasks/products.rake
1735
+ - lib/tasks/sample_data.rake
1698
1736
  - lib/tasks/taxons.rake
1699
1737
  - lib/tasks/variants.rake
1700
1738
  - spec/fixtures/favicon.ico
1739
+ - spec/fixtures/files/customers_import.csv
1701
1740
  - spec/fixtures/files/example.json
1702
1741
  - spec/fixtures/files/icon_256x256.gif
1703
1742
  - spec/fixtures/files/icon_256x256.png
@@ -1713,13 +1752,13 @@ files:
1713
1752
  - vendor/javascript/tailwindcss-stimulus-components.js
1714
1753
  homepage: https://spreecommerce.org
1715
1754
  licenses:
1716
- - AGPL-3.0-or-later
1717
1755
  - BSD-3-Clause
1718
1756
  metadata:
1719
1757
  bug_tracker_uri: https://github.com/spree/spree/issues
1720
- changelog_uri: https://github.com/spree/spree/releases/tag/v5.3.4
1758
+ changelog_uri: https://github.com/spree/spree/releases/tag/v5.4.0.beta
1721
1759
  documentation_uri: https://docs.spreecommerce.org/
1722
- source_code_uri: https://github.com/spree/spree/tree/v5.3.4
1760
+ source_code_uri: https://github.com/spree/spree/tree/v5.4.0.beta
1761
+ post_install_message:
1723
1762
  rdoc_options: []
1724
1763
  require_paths:
1725
1764
  - lib
@@ -1734,7 +1773,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1734
1773
  - !ruby/object:Gem::Version
1735
1774
  version: 1.8.23
1736
1775
  requirements: []
1737
- rubygems_version: 4.0.3
1776
+ rubygems_version: 3.5.22
1777
+ signing_key:
1738
1778
  specification_version: 4
1739
1779
  summary: The bare bones necessary for Spree
1740
1780
  test_files: []
data/LICENSE.md DELETED
@@ -1,57 +0,0 @@
1
- # License
2
-
3
- Copyright © 2024-present, Vendo Connect Inc.
4
-
5
- Copyright © 2015-2024, Spark Solutions Sp. z o.o.
6
-
7
- Copyright © 2007-2015, Spree Commerce Inc.
8
-
9
- Spree Commerce is a free, open-source eCommerce framework giving you full control and customizability.
10
-
11
- For **Spree Commerce versions 4.10** and later in the [spree/spree](https://github.com/spree/spree) repository two licenses apply simultaneously and users are required to comply with the terms of these two licenses at the same time:
12
-
13
- * [AGPL-3.0](https://opensource.org/license/agpl-v3) - for all contributions from version 4.10 onwards
14
-
15
- * [BSD-3-Clause](https://opensource.org/license/bsd-3-clause) - for all other contributions predating version 4.10
16
- Effectively, for versions 4.10 and upwards **AGPL-3.0** license applies.
17
-
18
- **Spree Commerce versions 4.9** and earlier in the [spree/spree](https://github.com/spree/spree) repository are available under the **BSD-3-Clause** license and users are required to comply with its terms.
19
-
20
- If you’d like to use Spree Commerce without the AGPL-3.0 restrictions e.g. for a **SaaS** business, please talk to us about obtaining a [Commercial License](#commercial-license).
21
-
22
- All third party components incorporated into this software are licensed under the original license provided by the owner of the applicable component.
23
-
24
- Please refer to our [Licensing FAQ](https://spreecommerce.org/why-spree-is-changing-its-open-source-license-to-agpl-3-0-and-introducing-a-commercial-license/) in case of questions.
25
-
26
- ## AGPL-3.0 License - Spree 4.10 upwards
27
-
28
- If you decide to accept the AGPL-3.0 license by using Spree Commerce version 4.10 or later, you must comply with the following terms:
29
-
30
- This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
31
-
32
- This program is distributed in the hope that it will be useful,
33
- but WITHOUT ANY WARRANTY; without even the implied warranty of
34
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35
- GNU Affero General Public License for more details.
36
-
37
- You should have received a copy of the GNU Affero General Public License
38
- along with this program. If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/).
39
-
40
- ## BSD 3-Clause License
41
-
42
- If you decide to accept the BSD-3-Clause license by using Spree Commerce, you must comply with the following terms:
43
-
44
- Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
45
- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
46
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
47
- Neither the name of Spree Commerce Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
48
-
49
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
50
-
51
- ## Commercial License
52
-
53
- Should you decide to use Spree Commerce version 4.10 or later for commercial redistribution (eg. SaaS) - also known as Commercial Distribution - you must do so in accordance with the terms and conditions contained in a separate written agreement between you and [Vendo Connect Inc.](https://www.getvendo.com/).
54
-
55
- For more information about the Commercial License (CL) please contact [sales@getvendo.com](mailto:sales@getvendo.com).
56
-
57
- Please refer to our [Licensing FAQ](https://spreecommerce.org/why-spree-is-changing-its-open-source-license-to-agpl-3-0-and-introducing-a-commercial-license/) in case of questions.
@@ -1,28 +0,0 @@
1
- module Spree
2
- module Stores
3
- class FindCurrent
4
- def initialize(scope: nil, url: nil)
5
- @scope = scope || Spree::Store
6
- @url = url
7
- end
8
-
9
- def execute
10
- store = by_url(scope) || scope.default
11
- return if store.nil?
12
-
13
- Spree::Current.store = store
14
- store
15
- end
16
-
17
- protected
18
-
19
- attr_reader :scope, :url
20
-
21
- def by_url(scope)
22
- return if url.blank?
23
-
24
- scope.by_custom_domain(url).or(scope.by_url(url)).first
25
- end
26
- end
27
- end
28
- end
@@ -1,59 +0,0 @@
1
- module Spree
2
- class CustomDomain < Spree::Base
3
- include Spree::SingleStoreResource
4
- include Spree::Metafields
5
- include Spree::Metadata
6
-
7
- normalizes :url, with: ->(value) { value&.to_s&.squish&.presence }
8
-
9
- #
10
- # Associations
11
- #
12
- belongs_to :store, class_name: 'Spree::Store', inverse_of: :custom_domains, touch: true
13
-
14
- #
15
- # Validations
16
- #
17
- validates :url, presence: true, uniqueness: true, format: {
18
- with: %r{\A(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\z}i
19
- }, length: { in: 1..63 }
20
- validate :url_is_valid
21
-
22
- #
23
- # Callbacks
24
- #
25
- before_validation :sanitize_url
26
- after_save :ensure_has_one_default
27
- after_validation :ensure_default, on: :create
28
-
29
- def url_is_valid
30
- return if url.blank?
31
- parts = url.split('.')
32
-
33
- errors.add(:url, 'use domain or subdomain') if parts.size > 4 || parts.size < 2
34
- end
35
-
36
- def ensure_default
37
- self.default = store.custom_domains.count.zero?
38
- end
39
-
40
- def ensure_has_one_default
41
- store.custom_domains.where.not(id: id).update_all(default: false) if default?
42
- end
43
-
44
- def active?
45
- true
46
- end
47
-
48
- def name
49
- url
50
- end
51
-
52
- private
53
-
54
- # remove https:// and http:// from the url
55
- def sanitize_url
56
- self.url = url&.gsub(%r{https?://}, '')
57
- end
58
- end
59
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class AssetSerializer < BaseSerializer
6
- protected
7
-
8
- def attributes
9
- {
10
- id: resource.id,
11
- type: resource.type,
12
- viewable_type: resource.viewable_type,
13
- viewable_id: resource.viewable_id,
14
- position: resource.position,
15
- alt: resource.alt,
16
- created_at: timestamp(resource.created_at),
17
- updated_at: timestamp(resource.updated_at)
18
- }
19
- end
20
- end
21
- end
22
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class BaseSerializer
6
- attr_reader :resource, :context
7
-
8
- def initialize(resource, context = {})
9
- @resource = resource
10
- @context = context
11
- end
12
-
13
- # Main serialization method
14
- def as_json
15
- attributes
16
- end
17
-
18
- # Class method for convenience
19
- def self.serialize(resource, context = {})
20
- new(resource, context).as_json
21
- end
22
-
23
- protected
24
-
25
- # Override in subclasses to define attributes
26
- def attributes
27
- {
28
- id: resource.id
29
- }
30
- end
31
-
32
- # Context helpers
33
- def event_name
34
- context[:event_name]
35
- end
36
-
37
- def triggered_at
38
- context[:triggered_at] || Time.current
39
- end
40
-
41
- # Attribute helpers
42
-
43
- # Safely get attribute, returns nil if not present
44
- def attribute(name)
45
- resource.public_send(name) if resource.respond_to?(name)
46
- end
47
-
48
- # Timestamp helper - ISO8601 format
49
- def timestamp(time)
50
- time&.iso8601
51
- end
52
-
53
- # Money helper - decimal value for events
54
- def money(amount)
55
- return nil if amount.nil?
56
-
57
- amount.respond_to?(:to_d) ? amount.to_d : amount
58
- end
59
- end
60
- end
61
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class CustomerReturnSerializer < BaseSerializer
6
- protected
7
-
8
- def attributes
9
- {
10
- id: resource.id,
11
- number: resource.number,
12
- stock_location_id: resource.stock_location_id,
13
- store_id: resource.store_id,
14
- created_at: timestamp(resource.created_at),
15
- updated_at: timestamp(resource.updated_at)
16
- }
17
- end
18
- end
19
- end
20
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class DigitalLinkSerializer < BaseSerializer
6
- protected
7
-
8
- def attributes
9
- {
10
- id: resource.id,
11
- digital_id: resource.digital_id,
12
- line_item_id: resource.line_item_id,
13
- access_counter: resource.access_counter,
14
- created_at: timestamp(resource.created_at),
15
- updated_at: timestamp(resource.updated_at)
16
- }
17
- end
18
- end
19
- end
20
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Spree
4
- module Events
5
- class DigitalSerializer < BaseSerializer
6
- protected
7
-
8
- def attributes
9
- {
10
- id: resource.id,
11
- variant_id: resource.variant_id,
12
- created_at: timestamp(resource.created_at),
13
- updated_at: timestamp(resource.updated_at)
14
- }
15
- end
16
- end
17
- end
18
- end