@anker-in/lib 1.1.0 → 1.1.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 (369) hide show
  1. package/.turbo/turbo-build.log +12 -8
  2. package/.turbo/turbo-test.log +1 -1
  3. package/dist/cart/context/index.d.ts +47 -0
  4. package/dist/cart/context/index.d.ts.map +1 -0
  5. package/dist/cart/hooks/basic/useAddToCart.d.ts +30 -0
  6. package/dist/cart/hooks/basic/useAddToCart.d.ts.map +1 -0
  7. package/dist/cart/hooks/basic/useApplyCartCodes.d.ts +11 -0
  8. package/dist/cart/hooks/basic/useApplyCartCodes.d.ts.map +1 -0
  9. package/dist/cart/hooks/basic/useCreateCart.d.ts +7 -0
  10. package/dist/cart/hooks/basic/useCreateCart.d.ts.map +1 -0
  11. package/dist/cart/hooks/basic/useRemoveCartCodes.d.ts +11 -0
  12. package/dist/cart/hooks/basic/useRemoveCartCodes.d.ts.map +1 -0
  13. package/dist/cart/hooks/basic/useRemoveCartLines.d.ts +11 -0
  14. package/dist/cart/hooks/basic/useRemoveCartLines.d.ts.map +1 -0
  15. package/dist/cart/hooks/basic/useUpdateCartAttributes.d.ts +8 -0
  16. package/dist/cart/hooks/basic/useUpdateCartAttributes.d.ts.map +1 -0
  17. package/dist/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts +8 -0
  18. package/dist/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts.map +1 -0
  19. package/dist/cart/hooks/basic/useUpdateCartLines.d.ts +8 -0
  20. package/dist/cart/hooks/basic/useUpdateCartLines.d.ts.map +1 -0
  21. package/dist/cart/hooks/feature/useCalcAutoFreeGift.d.ts +10 -0
  22. package/dist/cart/hooks/feature/useCalcAutoFreeGift.d.ts.map +1 -0
  23. package/dist/cart/hooks/feature/useCalcOrderDiscount.d.ts +21 -0
  24. package/dist/cart/hooks/feature/useCalcOrderDiscount.d.ts.map +1 -0
  25. package/dist/cart/hooks/feature/useCartAttributes.d.ts +10 -0
  26. package/dist/cart/hooks/feature/useCartAttributes.d.ts.map +1 -0
  27. package/dist/cart/hooks/feature/useCartItemQuantityLimit.d.ts +19 -0
  28. package/dist/cart/hooks/feature/useCartItemQuantityLimit.d.ts.map +1 -0
  29. package/dist/cart/hooks/feature/useScriptAutoFreeGift.d.ts +37 -0
  30. package/dist/cart/hooks/feature/useScriptAutoFreeGift.d.ts.map +1 -0
  31. package/dist/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts +9 -0
  32. package/dist/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts.map +1 -0
  33. package/dist/cart/track/gtm.d.ts +26 -0
  34. package/dist/cart/track/gtm.d.ts.map +1 -0
  35. package/dist/cart/types/autoFreeGift.d.ts +135 -0
  36. package/dist/cart/types/autoFreeGift.d.ts.map +1 -0
  37. package/dist/cart/types/orderDiscount.d.ts +35 -0
  38. package/dist/cart/types/orderDiscount.d.ts.map +1 -0
  39. package/dist/cart/types/priceDiscount.d.ts +20 -0
  40. package/dist/cart/types/priceDiscount.d.ts.map +1 -0
  41. package/dist/cart/utils/autoFreeGift.d.ts +21 -0
  42. package/dist/cart/utils/autoFreeGift.d.ts.map +1 -0
  43. package/dist/cjs/cart/context/index.d.ts +47 -0
  44. package/dist/cjs/cart/context/index.d.ts.map +1 -0
  45. package/dist/cjs/cart/context/index.js +2 -0
  46. package/dist/cjs/cart/context/index.js.map +7 -0
  47. package/dist/cjs/cart/hooks/basic/useAddToCart.d.ts +30 -0
  48. package/dist/cjs/cart/hooks/basic/useAddToCart.d.ts.map +1 -0
  49. package/dist/cjs/cart/hooks/basic/useAddToCart.js +2 -0
  50. package/dist/cjs/cart/hooks/basic/useAddToCart.js.map +7 -0
  51. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.d.ts +11 -0
  52. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.d.ts.map +1 -0
  53. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.js +2 -0
  54. package/dist/cjs/cart/hooks/basic/useApplyCartCodes.js.map +7 -0
  55. package/dist/cjs/cart/hooks/basic/useBuyNow.d.ts.map +1 -1
  56. package/dist/cjs/cart/hooks/basic/useBuyNow.js +1 -1
  57. package/dist/cjs/cart/hooks/basic/useBuyNow.js.map +3 -3
  58. package/dist/cjs/cart/hooks/basic/useCreateCart.d.ts +7 -0
  59. package/dist/cjs/cart/hooks/basic/useCreateCart.d.ts.map +1 -0
  60. package/dist/cjs/cart/hooks/basic/useCreateCart.js +2 -0
  61. package/dist/cjs/cart/hooks/basic/useCreateCart.js.map +7 -0
  62. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.d.ts +11 -0
  63. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.d.ts.map +1 -0
  64. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.js +2 -0
  65. package/dist/cjs/cart/hooks/basic/useRemoveCartCodes.js.map +7 -0
  66. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.d.ts +11 -0
  67. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.d.ts.map +1 -0
  68. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.js +2 -0
  69. package/dist/cjs/cart/hooks/basic/useRemoveCartLines.js.map +7 -0
  70. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.d.ts +8 -0
  71. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.d.ts.map +1 -0
  72. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.js +2 -0
  73. package/dist/cjs/cart/hooks/basic/useUpdateCartAttributes.js.map +7 -0
  74. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts +8 -0
  75. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts.map +1 -0
  76. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.js +2 -0
  77. package/dist/cjs/cart/hooks/basic/useUpdateCartBuyerIdentity.js.map +7 -0
  78. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.d.ts +8 -0
  79. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.d.ts.map +1 -0
  80. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.js +2 -0
  81. package/dist/cjs/cart/hooks/basic/useUpdateCartLines.js.map +7 -0
  82. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.d.ts +10 -0
  83. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.d.ts.map +1 -0
  84. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.js +2 -0
  85. package/dist/cjs/cart/hooks/feature/useCalcAutoFreeGift.js.map +7 -0
  86. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.d.ts +21 -0
  87. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.d.ts.map +1 -0
  88. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.js +2 -0
  89. package/dist/cjs/cart/hooks/feature/useCalcOrderDiscount.js.map +7 -0
  90. package/dist/cjs/cart/hooks/feature/useCartAttributes.d.ts +10 -0
  91. package/dist/cjs/cart/hooks/feature/useCartAttributes.d.ts.map +1 -0
  92. package/dist/cjs/cart/hooks/feature/useCartAttributes.js +2 -0
  93. package/dist/cjs/cart/hooks/feature/useCartAttributes.js.map +7 -0
  94. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.d.ts +19 -0
  95. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.d.ts.map +1 -0
  96. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.js +2 -0
  97. package/dist/cjs/cart/hooks/feature/useCartItemQuantityLimit.js.map +7 -0
  98. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.d.ts +37 -0
  99. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.d.ts.map +1 -0
  100. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.js +2 -0
  101. package/dist/cjs/cart/hooks/feature/useScriptAutoFreeGift.js.map +7 -0
  102. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts +9 -0
  103. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts.map +1 -0
  104. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js +2 -0
  105. package/dist/cjs/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js.map +7 -0
  106. package/dist/cjs/cart/track/fbq.d.ts +2 -9
  107. package/dist/cjs/cart/track/fbq.d.ts.map +1 -1
  108. package/dist/cjs/cart/track/fbq.js +1 -1
  109. package/dist/cjs/cart/track/fbq.js.map +3 -3
  110. package/dist/cjs/cart/track/gtm.d.ts +26 -0
  111. package/dist/cjs/cart/track/gtm.d.ts.map +1 -0
  112. package/dist/cjs/cart/track/gtm.js +2 -0
  113. package/dist/cjs/cart/track/gtm.js.map +7 -0
  114. package/dist/cjs/cart/types/autoFreeGift.d.ts +135 -0
  115. package/dist/cjs/cart/types/autoFreeGift.d.ts.map +1 -0
  116. package/dist/cjs/cart/types/autoFreeGift.js +2 -0
  117. package/dist/cjs/cart/types/autoFreeGift.js.map +7 -0
  118. package/dist/cjs/cart/types/index.d.ts +1 -0
  119. package/dist/cjs/cart/types/index.d.ts.map +1 -1
  120. package/dist/cjs/cart/types/index.js +1 -1
  121. package/dist/cjs/cart/types/index.js.map +1 -1
  122. package/dist/cjs/cart/types/orderDiscount.d.ts +35 -0
  123. package/dist/cjs/cart/types/orderDiscount.d.ts.map +1 -0
  124. package/dist/cjs/cart/types/orderDiscount.js +2 -0
  125. package/dist/cjs/cart/types/orderDiscount.js.map +7 -0
  126. package/dist/cjs/cart/types/priceDiscount.d.ts +20 -0
  127. package/dist/cjs/cart/types/priceDiscount.d.ts.map +1 -0
  128. package/dist/cjs/cart/types/priceDiscount.js +2 -0
  129. package/dist/cjs/cart/types/priceDiscount.js.map +7 -0
  130. package/dist/cjs/cart/utils/autoFreeGift.d.ts +21 -0
  131. package/dist/cjs/cart/utils/autoFreeGift.d.ts.map +1 -0
  132. package/dist/cjs/cart/utils/autoFreeGift.js +2 -0
  133. package/dist/cjs/cart/utils/autoFreeGift.js.map +7 -0
  134. package/dist/cjs/cart/utils/index.d.ts +1 -0
  135. package/dist/cjs/cart/utils/index.d.ts.map +1 -1
  136. package/dist/cjs/cart/utils/index.js +1 -1
  137. package/dist/cjs/cart/utils/index.js.map +3 -3
  138. package/dist/cjs/constants.d.ts +2 -0
  139. package/dist/cjs/constants.d.ts.map +1 -0
  140. package/dist/cjs/constants.js +2 -0
  141. package/dist/cjs/constants.js.map +7 -0
  142. package/dist/cjs/context/index.js.map +1 -1
  143. package/dist/cjs/index.d.ts +1 -0
  144. package/dist/cjs/index.d.ts.map +1 -1
  145. package/dist/cjs/index.js +1 -1
  146. package/dist/cjs/index.js.map +2 -2
  147. package/dist/cjs/registration/hooks/index.d.ts +1 -0
  148. package/dist/cjs/registration/hooks/index.d.ts.map +1 -1
  149. package/dist/cjs/registration/hooks/index.js +1 -1
  150. package/dist/cjs/registration/hooks/index.js.map +2 -2
  151. package/dist/cjs/registration/hooks/useEmailValidation.d.ts.map +1 -1
  152. package/dist/cjs/registration/hooks/useEmailValidation.js +1 -1
  153. package/dist/cjs/registration/hooks/useEmailValidation.js.map +3 -3
  154. package/dist/cjs/registration/hooks/useSendEmailValidation.d.ts.map +1 -1
  155. package/dist/cjs/registration/hooks/useSendEmailValidation.js +1 -1
  156. package/dist/cjs/registration/hooks/useSendEmailValidation.js.map +3 -3
  157. package/dist/cjs/registration/hooks/useSubscriptions.d.ts +15 -0
  158. package/dist/cjs/registration/hooks/useSubscriptions.d.ts.map +1 -0
  159. package/dist/cjs/registration/hooks/useSubscriptions.js +2 -0
  160. package/dist/cjs/registration/hooks/useSubscriptions.js.map +7 -0
  161. package/dist/cjs/registration/index.d.ts +0 -1
  162. package/dist/cjs/registration/index.d.ts.map +1 -1
  163. package/dist/cjs/registration/index.js +1 -1
  164. package/dist/cjs/registration/index.js.map +2 -2
  165. package/dist/cjs/shopify/fetchers/index.d.ts +2 -0
  166. package/dist/cjs/shopify/fetchers/index.d.ts.map +1 -1
  167. package/dist/cjs/shopify/fetchers/index.js +1 -1
  168. package/dist/cjs/shopify/fetchers/index.js.map +3 -3
  169. package/dist/esm/cart/context/index.d.ts +47 -0
  170. package/dist/esm/cart/context/index.d.ts.map +1 -0
  171. package/dist/esm/cart/context/index.js +2 -0
  172. package/dist/esm/cart/context/index.js.map +7 -0
  173. package/dist/esm/cart/hooks/basic/useAddToCart.d.ts +30 -0
  174. package/dist/esm/cart/hooks/basic/useAddToCart.d.ts.map +1 -0
  175. package/dist/esm/cart/hooks/basic/useAddToCart.js +2 -0
  176. package/dist/esm/cart/hooks/basic/useAddToCart.js.map +7 -0
  177. package/dist/esm/cart/hooks/basic/useApplyCartCodes.d.ts +11 -0
  178. package/dist/esm/cart/hooks/basic/useApplyCartCodes.d.ts.map +1 -0
  179. package/dist/esm/cart/hooks/basic/useApplyCartCodes.js +2 -0
  180. package/dist/esm/cart/hooks/basic/useApplyCartCodes.js.map +7 -0
  181. package/dist/esm/cart/hooks/basic/useBuyNow.d.ts.map +1 -1
  182. package/dist/esm/cart/hooks/basic/useBuyNow.js +1 -1
  183. package/dist/esm/cart/hooks/basic/useBuyNow.js.map +3 -3
  184. package/dist/esm/cart/hooks/basic/useCreateCart.d.ts +7 -0
  185. package/dist/esm/cart/hooks/basic/useCreateCart.d.ts.map +1 -0
  186. package/dist/esm/cart/hooks/basic/useCreateCart.js +2 -0
  187. package/dist/esm/cart/hooks/basic/useCreateCart.js.map +7 -0
  188. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.d.ts +11 -0
  189. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.d.ts.map +1 -0
  190. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.js +2 -0
  191. package/dist/esm/cart/hooks/basic/useRemoveCartCodes.js.map +7 -0
  192. package/dist/esm/cart/hooks/basic/useRemoveCartLines.d.ts +11 -0
  193. package/dist/esm/cart/hooks/basic/useRemoveCartLines.d.ts.map +1 -0
  194. package/dist/esm/cart/hooks/basic/useRemoveCartLines.js +2 -0
  195. package/dist/esm/cart/hooks/basic/useRemoveCartLines.js.map +7 -0
  196. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.d.ts +8 -0
  197. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.d.ts.map +1 -0
  198. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.js +2 -0
  199. package/dist/esm/cart/hooks/basic/useUpdateCartAttributes.js.map +7 -0
  200. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts +8 -0
  201. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.d.ts.map +1 -0
  202. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.js +2 -0
  203. package/dist/esm/cart/hooks/basic/useUpdateCartBuyerIdentity.js.map +7 -0
  204. package/dist/esm/cart/hooks/basic/useUpdateCartLines.d.ts +8 -0
  205. package/dist/esm/cart/hooks/basic/useUpdateCartLines.d.ts.map +1 -0
  206. package/dist/esm/cart/hooks/basic/useUpdateCartLines.js +2 -0
  207. package/dist/esm/cart/hooks/basic/useUpdateCartLines.js.map +7 -0
  208. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.d.ts +10 -0
  209. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.d.ts.map +1 -0
  210. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.js +2 -0
  211. package/dist/esm/cart/hooks/feature/useCalcAutoFreeGift.js.map +7 -0
  212. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.d.ts +21 -0
  213. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.d.ts.map +1 -0
  214. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.js +2 -0
  215. package/dist/esm/cart/hooks/feature/useCalcOrderDiscount.js.map +7 -0
  216. package/dist/esm/cart/hooks/feature/useCartAttributes.d.ts +10 -0
  217. package/dist/esm/cart/hooks/feature/useCartAttributes.d.ts.map +1 -0
  218. package/dist/esm/cart/hooks/feature/useCartAttributes.js +2 -0
  219. package/dist/esm/cart/hooks/feature/useCartAttributes.js.map +7 -0
  220. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.d.ts +19 -0
  221. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.d.ts.map +1 -0
  222. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.js +2 -0
  223. package/dist/esm/cart/hooks/feature/useCartItemQuantityLimit.js.map +7 -0
  224. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.d.ts +37 -0
  225. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.d.ts.map +1 -0
  226. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.js +2 -0
  227. package/dist/esm/cart/hooks/feature/useScriptAutoFreeGift.js.map +7 -0
  228. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts +9 -0
  229. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.d.ts.map +1 -0
  230. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js +2 -0
  231. package/dist/esm/cart/hooks/feature/useUpdateLineCodeAmountAttributes.js.map +7 -0
  232. package/dist/esm/cart/track/fbq.d.ts +2 -9
  233. package/dist/esm/cart/track/fbq.d.ts.map +1 -1
  234. package/dist/esm/cart/track/fbq.js +1 -1
  235. package/dist/esm/cart/track/fbq.js.map +3 -3
  236. package/dist/esm/cart/track/gtm.d.ts +26 -0
  237. package/dist/esm/cart/track/gtm.d.ts.map +1 -0
  238. package/dist/esm/cart/track/gtm.js +2 -0
  239. package/dist/esm/cart/track/gtm.js.map +7 -0
  240. package/dist/esm/cart/types/autoFreeGift.d.ts +135 -0
  241. package/dist/esm/cart/types/autoFreeGift.d.ts.map +1 -0
  242. package/dist/esm/cart/types/autoFreeGift.js +2 -0
  243. package/dist/esm/cart/types/autoFreeGift.js.map +7 -0
  244. package/dist/esm/cart/types/index.d.ts +1 -0
  245. package/dist/esm/cart/types/index.d.ts.map +1 -1
  246. package/dist/esm/cart/types/orderDiscount.d.ts +35 -0
  247. package/dist/esm/cart/types/orderDiscount.d.ts.map +1 -0
  248. package/dist/esm/cart/types/orderDiscount.js +2 -0
  249. package/dist/esm/cart/types/orderDiscount.js.map +7 -0
  250. package/dist/esm/cart/types/priceDiscount.d.ts +20 -0
  251. package/dist/esm/cart/types/priceDiscount.d.ts.map +1 -0
  252. package/dist/esm/cart/types/priceDiscount.js +2 -0
  253. package/dist/esm/cart/types/priceDiscount.js.map +7 -0
  254. package/dist/esm/cart/utils/autoFreeGift.d.ts +21 -0
  255. package/dist/esm/cart/utils/autoFreeGift.d.ts.map +1 -0
  256. package/dist/esm/cart/utils/autoFreeGift.js +2 -0
  257. package/dist/esm/cart/utils/autoFreeGift.js.map +7 -0
  258. package/dist/esm/cart/utils/index.d.ts +1 -0
  259. package/dist/esm/cart/utils/index.d.ts.map +1 -1
  260. package/dist/esm/cart/utils/index.js +1 -1
  261. package/dist/esm/cart/utils/index.js.map +3 -3
  262. package/dist/esm/constants.d.ts +2 -0
  263. package/dist/esm/constants.d.ts.map +1 -0
  264. package/dist/esm/constants.js +2 -0
  265. package/dist/esm/constants.js.map +7 -0
  266. package/dist/esm/context/index.js.map +1 -1
  267. package/dist/esm/index.d.ts +1 -0
  268. package/dist/esm/index.d.ts.map +1 -1
  269. package/dist/esm/index.js +1 -1
  270. package/dist/esm/index.js.map +2 -2
  271. package/dist/esm/registration/hooks/index.d.ts +1 -0
  272. package/dist/esm/registration/hooks/index.d.ts.map +1 -1
  273. package/dist/esm/registration/hooks/index.js +1 -1
  274. package/dist/esm/registration/hooks/index.js.map +2 -2
  275. package/dist/esm/registration/hooks/useEmailValidation.d.ts.map +1 -1
  276. package/dist/esm/registration/hooks/useEmailValidation.js +1 -1
  277. package/dist/esm/registration/hooks/useEmailValidation.js.map +3 -3
  278. package/dist/esm/registration/hooks/useSendEmailValidation.d.ts.map +1 -1
  279. package/dist/esm/registration/hooks/useSendEmailValidation.js +1 -1
  280. package/dist/esm/registration/hooks/useSendEmailValidation.js.map +2 -2
  281. package/dist/esm/registration/hooks/useSubscriptions.d.ts +15 -0
  282. package/dist/esm/registration/hooks/useSubscriptions.d.ts.map +1 -0
  283. package/dist/esm/registration/hooks/useSubscriptions.js +2 -0
  284. package/dist/esm/registration/hooks/useSubscriptions.js.map +7 -0
  285. package/dist/esm/registration/index.d.ts +0 -1
  286. package/dist/esm/registration/index.d.ts.map +1 -1
  287. package/dist/esm/registration/index.js +1 -1
  288. package/dist/esm/registration/index.js.map +2 -2
  289. package/dist/esm/shopify/fetchers/index.d.ts +2 -0
  290. package/dist/esm/shopify/fetchers/index.d.ts.map +1 -1
  291. package/dist/esm/shopify/fetchers/index.js +1 -1
  292. package/dist/esm/shopify/fetchers/index.js.map +3 -3
  293. package/dist/registration/hooks/index.d.ts +4 -0
  294. package/dist/registration/hooks/index.d.ts.map +1 -0
  295. package/dist/registration/hooks/useEmailValidation.d.ts +17 -0
  296. package/dist/registration/hooks/useEmailValidation.d.ts.map +1 -0
  297. package/dist/registration/hooks/useSendEmailValidation.d.ts +9 -0
  298. package/dist/registration/hooks/useSendEmailValidation.d.ts.map +1 -0
  299. package/dist/registration/hooks/useSubscriptions.d.ts +15 -0
  300. package/dist/registration/hooks/useSubscriptions.d.ts.map +1 -0
  301. package/dist/registration/index.d.ts +2 -0
  302. package/dist/registration/index.d.ts.map +1 -0
  303. package/dist/utils/classnames.d.ts +3 -0
  304. package/dist/utils/classnames.d.ts.map +1 -0
  305. package/dist/utils/fetcher/fetchResponse.d.ts +14 -0
  306. package/dist/utils/fetcher/fetchResponse.d.ts.map +1 -0
  307. package/dist/utils/fetcher/fetcher.d.ts +2 -0
  308. package/dist/utils/fetcher/fetcher.d.ts.map +1 -0
  309. package/dist/utils/fetcher/index.d.ts +3 -0
  310. package/dist/utils/fetcher/index.d.ts.map +1 -0
  311. package/dist/utils/index.d.ts +5 -0
  312. package/dist/utils/index.d.ts.map +1 -0
  313. package/dist/utils/track.d.ts +16 -0
  314. package/dist/utils/track.d.ts.map +1 -0
  315. package/dist/utils/useCountDown.d.ts +6 -0
  316. package/dist/utils/useCountDown.d.ts.map +1 -0
  317. package/esbuild-esm.mjs +1 -0
  318. package/jest.config.ts +3 -0
  319. package/package.json +4 -5
  320. package/src/cart/context/index.tsx +310 -0
  321. package/src/cart/hooks/basic/useAddToCart.ts +161 -0
  322. package/src/cart/hooks/basic/useApplyCartCodes.ts +72 -0
  323. package/src/cart/hooks/basic/useBuyNow.ts +7 -5
  324. package/src/cart/hooks/basic/useCreateCart.ts +32 -0
  325. package/src/cart/hooks/basic/useRemoveCartCodes.ts +55 -0
  326. package/src/cart/hooks/basic/useRemoveCartLines.ts +51 -0
  327. package/src/cart/hooks/basic/useUpdateCartAttributes.ts +42 -0
  328. package/src/cart/hooks/basic/useUpdateCartBuyerIdentity.ts +34 -0
  329. package/src/cart/hooks/basic/useUpdateCartLines.ts +34 -0
  330. package/src/cart/hooks/feature/useCalcAutoFreeGift.tsx +178 -0
  331. package/src/cart/hooks/feature/useCalcOrderDiscount.tsx +127 -0
  332. package/src/cart/hooks/feature/useCartAttributes.tsx +133 -0
  333. package/src/cart/hooks/feature/useCartItemQuantityLimit.tsx +59 -0
  334. package/src/cart/hooks/feature/useScriptAutoFreeGift.tsx +256 -0
  335. package/src/cart/hooks/feature/useUpdateLineCodeAmountAttributes.tsx +184 -0
  336. package/src/cart/track/fbq.ts +4 -29
  337. package/src/cart/track/gtm.ts +159 -0
  338. package/src/cart/types/autoFreeGift.ts +169 -0
  339. package/src/cart/types/index.ts +1 -0
  340. package/src/cart/types/orderDiscount.ts +38 -0
  341. package/src/cart/types/priceDiscount.ts +21 -0
  342. package/src/cart/utils/autoFreeGift.ts +297 -0
  343. package/src/cart/utils/index.ts +13 -0
  344. package/src/constants.ts +1 -0
  345. package/src/context/index.ts +0 -1
  346. package/src/index.ts +6 -0
  347. package/src/registration/hooks/index.ts +3 -0
  348. package/src/registration/hooks/useEmailValidation.ts +28 -0
  349. package/src/registration/hooks/useSendEmailValidation.ts +21 -0
  350. package/src/registration/hooks/useSubscriptions.ts +36 -0
  351. package/src/registration/index.ts +2 -0
  352. package/src/shopify/fetchers/index.ts +2 -0
  353. package/src/utils/classnames.ts +6 -0
  354. package/src/utils/fetcher/fetchResponse.ts +33 -0
  355. package/src/utils/fetcher/fetcher.ts +38 -0
  356. package/src/utils/fetcher/index.ts +2 -0
  357. package/src/utils/index.ts +4 -0
  358. package/src/utils/track.ts +57 -0
  359. package/src/utils/useCountDown.tsx +41 -0
  360. package/tsconfig.json +4 -0
  361. package/tsup.config.ts +10 -8
  362. package/dist/cjs/registration/context/index.d.ts +0 -24
  363. package/dist/cjs/registration/context/index.d.ts.map +0 -1
  364. package/dist/cjs/registration/context/index.js +0 -2
  365. package/dist/cjs/registration/context/index.js.map +0 -7
  366. package/dist/esm/registration/context/index.d.ts +0 -24
  367. package/dist/esm/registration/context/index.d.ts.map +0 -1
  368. package/dist/esm/registration/context/index.js +0 -2
  369. package/dist/esm/registration/context/index.js.map +0 -7
@@ -0,0 +1,159 @@
1
+ // GA 埋点
2
+ import { Decimal } from 'decimal.js'
3
+
4
+ import { AddToCartLineItems, BuyNowLineItems, GtmParams } from '../types'
5
+ import { Cart } from '../../shopify/types/cart'
6
+ import { getQuery } from '../utils'
7
+
8
+ declare global {
9
+ interface Window {
10
+ dataLayer?: any[]
11
+ gtag?: (...args: any) => void
12
+ }
13
+ }
14
+
15
+ export const gaTrack = (data: any) => {
16
+ if (typeof window === 'undefined') {
17
+ return ''
18
+ }
19
+ window.dataLayer = window?.dataLayer || []
20
+ if (!Array.isArray(window.dataLayer)) {
21
+ return ''
22
+ }
23
+
24
+ try {
25
+ window?.dataLayer?.push({ event_parameters: null })
26
+ window?.dataLayer?.push(data || {})
27
+ } catch (error) {
28
+ console.log('pageGTMEvent error', error)
29
+ }
30
+ }
31
+
32
+ export const addToCartGa = ({
33
+ lineItems = [],
34
+ gtmParams = {},
35
+ }: {
36
+ lineItems: AddToCartLineItems
37
+ gtmParams?: GtmParams
38
+ }) => {
39
+ if (!lineItems.length) {
40
+ return
41
+ }
42
+
43
+ const { variant } = lineItems[0]
44
+
45
+ const currencyCode = variant?.price?.currencyCode
46
+ const totalPrice = lineItems?.reduce(
47
+ (prev, { variant }) => new Decimal(prev || 0).plus(variant?.price?.amount || 0).toNumber(),
48
+ 0
49
+ )
50
+
51
+ const searchTerm = getQuery().searchTerm
52
+
53
+ gaTrack({
54
+ event: 'ga4Event',
55
+ event_name: 'add_to_cart',
56
+ event_parameters: {
57
+ page_group: gtmParams?.pageGroup,
58
+ currency: currencyCode,
59
+ value: totalPrice, // Total price after discount
60
+ position: gtmParams?.position || '', // Module name
61
+ ...(searchTerm && {
62
+ // 站内搜索参数
63
+ search_term: searchTerm,
64
+ item_list_name: 'innersite_search',
65
+ }),
66
+ items: lineItems?.map(({ variant, quantity }) => ({
67
+ item_id: variant?.sku,
68
+ item_name: variant?.product?.title || variant?.product?.name,
69
+ item_brand: gtmParams?.brand || '',
70
+ item_category: variant?.product?.productType || '',
71
+ item_variant: variant?.title || variant?.name,
72
+ price: variant?.finalPrice?.amount ?? variant?.price?.amount, // Product unit price
73
+ quantity: quantity || 1,
74
+ })),
75
+ ...gtmParams?.ga4Params,
76
+ },
77
+ })
78
+ }
79
+
80
+ export const buyNowGa = ({ lineItems = [], gtmParams = {} }: { lineItems: BuyNowLineItems; gtmParams?: GtmParams }) => {
81
+ if (!lineItems.length) {
82
+ return
83
+ } else {
84
+ const currencyCode = lineItems[0].variant.price.currencyCode
85
+ const totalPrice = lineItems?.reduce(
86
+ (prev, lineItem) =>
87
+ new Decimal(prev || 0)
88
+ .plus(lineItem?.finalPrice?.amount ?? (lineItem?.variant.price.amount || 0))
89
+ .mul(lineItem.quantity || 1)
90
+ .toNumber(),
91
+ 0
92
+ )
93
+ const searchTerm = getQuery().searchTerm
94
+ gaTrack({
95
+ event: 'ga4Event',
96
+ event_name: 'begin_checkout',
97
+ value: totalPrice, // Total price after discount
98
+ event_parameters: {
99
+ ...(searchTerm && {
100
+ search_term: searchTerm, // Use query directly
101
+ item_list_name: 'innersite_search',
102
+ }),
103
+ position: gtmParams?.position,
104
+ page_group: gtmParams.pageGroup,
105
+ currency: currencyCode,
106
+ value: totalPrice, // Total price after discount
107
+ items: lineItems?.map(lineItem => ({
108
+ item_id: lineItem.variant.sku,
109
+ item_name: lineItem.variant.product.title,
110
+ item_brand: lineItem.variant.product.vendor || gtmParams?.brand || '',
111
+ item_category: lineItem.variant.product.productType,
112
+ item_variant: lineItem.variant.title,
113
+ price: lineItem.finalPrice?.amount || lineItem.variant.price.amount, //产品单价
114
+ quantity: lineItem.quantity || 1,
115
+ })),
116
+ ...gtmParams.ga4Params,
117
+ },
118
+ })
119
+ }
120
+ }
121
+
122
+ export const cartCheckoutGa = ({ cart, gtmParams = {} }: { cart: Cart; gtmParams?: GtmParams }) => {
123
+ if (!cart?.lineItems.length) {
124
+ return
125
+ }
126
+
127
+ gaTrack({
128
+ event: 'ga4Event',
129
+ event_name: 'begin_checkout',
130
+ event_parameters: {
131
+ page_group: gtmParams?.pageGroup,
132
+ position: 'Cart Pop Up_Checkout',
133
+ currency: cart?.currency?.code,
134
+ value: cart?.totalPrice,
135
+ items: cart?.lineItems.map(product => {
136
+ const variant = product?.variant
137
+ return {
138
+ item_id: variant?.sku,
139
+ item_name: product?.name,
140
+ item_variant: variant?.title,
141
+ price: variant?.price,
142
+ quantity: product?.quantity || 1,
143
+ }
144
+ }),
145
+ },
146
+ })
147
+ }
148
+
149
+ export function gaNormalClick({ position, label }: { position: string; label: string }) {
150
+ gaTrack({
151
+ event: 'ga4Event',
152
+ event_name: 'lp_button',
153
+ event_parameters: {
154
+ page_group: 'soundcoreCredits Rewards Program',
155
+ position: position,
156
+ button_name: label,
157
+ },
158
+ })
159
+ }
@@ -0,0 +1,169 @@
1
+ import { ProductVariant } from '../../shopify/types/product'
2
+ import { Product } from '../../shopify/types'
3
+ import { LineItem } from '../../shopify/types/cart'
4
+
5
+ export type AutoFreeGift = {
6
+ currentTier: {
7
+ amount: number
8
+ gift?: ProductVariant
9
+ }
10
+ nextTierGoal: {
11
+ amount: number
12
+ gift?: ProductVariant
13
+ }
14
+ }
15
+
16
+ export type DiscountLabel = {
17
+ cart_checkout_label: string
18
+ product_label: string
19
+ sold_out_label: string
20
+ }
21
+
22
+ export type AutoFreeGiftMainProduct = {
23
+ spend_money_type: number
24
+ variant_id_list: string[]
25
+ all_store_variant: boolean
26
+ }
27
+
28
+ export type GiftProduct = {
29
+ spend_sum_money: number
30
+ gift_type: number
31
+ reward_list: {
32
+ get_unit: number
33
+ variant_id: string
34
+ bak_variant_id_list: null
35
+ }[]
36
+ }
37
+
38
+ export type AutoFreeGiftConfig = Config[]
39
+
40
+ // 定义规则条件类型
41
+ export type RuleCondition = {
42
+ with_special_url_params: string[] // 包含特殊URL参数
43
+ without_special_url_params: string[] // 不包含特殊URL参数
44
+ with_user_tags: string[] // 包含用户标签
45
+ without_user_tags: string[] // 不包含用户标签
46
+ }
47
+
48
+ // main_product
49
+ export type MainProductInfo = {
50
+ spend_money_type: SpendMoneyType
51
+ variant_list: VariantItem[]
52
+ all_store_variant: boolean
53
+ }
54
+
55
+ // 定义配置类型 - 根据JSON结构更新
56
+ export type Config = {
57
+ // 规则ID
58
+ rule_id: number
59
+ // 规则类型
60
+ rule_type: RuleType
61
+ // 折扣标签
62
+ discount_label: {
63
+ cart_checkout_label: string
64
+ product_label: string
65
+ sold_out_label: string
66
+ }
67
+ // 前端标签
68
+ frontend_labels: { key: string; label: string; desc: string }[]
69
+ // 应用单位
70
+ apply_unit: number
71
+ // 规则结果
72
+ rule_result: {
73
+ // 购买规则类型
74
+ buy_rule_type: BuyRuleType
75
+ // 花费获取奖励
76
+ spend_get_reward: {
77
+ // 主产品
78
+ main_product: MainProductInfo
79
+ // 礼品产品
80
+ gift_product: GiftProductItem[]
81
+ }
82
+ // 买赠奖励
83
+ buy_get_reward: {
84
+ // 主产品
85
+ main_product: MainProductInfo
86
+ // 礼品产品
87
+ gift_product: GiftProductItem[] | null
88
+ }
89
+ }
90
+ // 规则条件
91
+ rule_conditions?: RuleCondition[]
92
+ }
93
+
94
+ export interface GiftTier {
95
+ spend_sum_money: number // 消费门槛金额
96
+ gift_type: number // 礼品类型
97
+ reward_list: RewardItem[] // 满足此门槛后可获得的奖励列表
98
+ }
99
+
100
+ export interface RewardItem {
101
+ get_unit: number // 获得单位
102
+ variant_list: VariantItem[] // 变体列表
103
+ }
104
+
105
+ export interface VariantItem {
106
+ variant_id: string // 变体ID
107
+ sku: string // 库存单位
108
+ handle: string // 处理标识
109
+ discount_value: number // 折扣值
110
+ }
111
+
112
+ export interface GiftProductItem {
113
+ spend_sum_money: number // 消费总金额
114
+ gift_type: number // 礼品类型
115
+ reward_list: RewardItem[] // 奖励列表
116
+ }
117
+
118
+ export enum RuleType {
119
+ AUTO_FREE_GIFT = 1, // 自动赠品
120
+ BUNDLE = 2, // 组合
121
+ VOLUME_DISCOUNT = 3, // 量价折扣
122
+ ORDER_DISCOUNT = 4, // 订单折扣
123
+ PRICE_DISCOUNT = 5, // 价格折扣
124
+ }
125
+
126
+ export enum BuyRuleType {
127
+ BUY_GET_GIFT = 1, // 买赠
128
+ SPEND_GET_GIFT = 2, // 满赠
129
+ }
130
+
131
+ export enum SpendMoneyType {
132
+ ORIGIN_PRICE = 1, // 原价
133
+ DISCOUNT_PRICE = 2, // 折扣价
134
+ }
135
+
136
+ // calcAutoFreeGift
137
+ // 计算型 Hook 的返回类型
138
+ export interface FunctionGiftResult {
139
+ qualifyingGift: FormattedGift | null // 当前应得的赠品
140
+ nextTierGoal: GiftTier | null // 下一个目标阶梯
141
+ activeCampaign: Config | null // 当前生效的活动配置
142
+ isLoading: boolean // 依赖数据是否加载中
143
+ giftProductsResult?: Product[] | []
144
+ }
145
+
146
+ // 格式化后的赠品信息,用于添加购物车
147
+ export interface FormattedGift {
148
+ tier: GiftTier // 原始阶梯信息
149
+ itemsToAdd: CartLineInput[] // 准备好添加购物车的商品列表
150
+ }
151
+
152
+ // 购物车行项目输入类型 (Shopify API)
153
+ export interface CartLineInput {
154
+ variant: {
155
+ id: string
156
+ handle: string
157
+ sku: string
158
+ }
159
+ quantity: number
160
+ attributes: { key: string; value: string }[]
161
+ }
162
+
163
+ // cart context AutoFreeGift
164
+ export type AutoFreeGiftItem = {
165
+ line: LineItem
166
+ isSoldOut: boolean
167
+ }
168
+
169
+ export type AutoFreeGiftList = AutoFreeGiftItem[] | []
@@ -19,6 +19,7 @@ export type BuyNowLineItems = Array<{
19
19
  }>
20
20
 
21
21
  export type GtmParams = {
22
+ brand?: string // ga4 brand
22
23
  position?: string // ga4 position
23
24
  pageGroup?: string // ga4 pageGroup
24
25
  ga4Params?: Record<string, any> // ga4 额外埋点字段
@@ -0,0 +1,38 @@
1
+ import { RuleCondition } from './autoFreeGift'
2
+
3
+ export enum DiscountType {
4
+ PERCENTAGE = 1, // 百分比折扣
5
+ FIXED_AMOUNT = 2, // 固定金额折扣
6
+ REDUCE_PRICE = 3, // 降低指定价格
7
+ }
8
+
9
+ export enum BasePriceType {
10
+ ORIGIN_PRICE = 1, // 原价
11
+ MIN_DISCOUNTED_PRICE = 2, // 最低折扣价
12
+ }
13
+
14
+ export type TieredDiscount = {
15
+ amount: number // 消费门槛金额
16
+ discount: number // 折扣金额
17
+ discount_type: DiscountType // 折扣类型
18
+ }
19
+
20
+ export type OrderDiscountConfig = {
21
+ rule_id: number
22
+ rule_type: number
23
+ rule_conditions?: RuleCondition[]
24
+ result_detail: {
25
+ main_product: {
26
+ variant_list: Array<{
27
+ variant_id: string
28
+ sku: string
29
+ handle: string
30
+ }>
31
+ all_store_variant: boolean
32
+ }
33
+ order_discount_conf: {
34
+ base_price: BasePriceType
35
+ tiered_discounts: TieredDiscount[]
36
+ }
37
+ }
38
+ }
@@ -0,0 +1,21 @@
1
+ export enum DiscountType {
2
+ PERCENTAGE = 1, // 百分比折扣
3
+ FIXED_AMOUNT = 2, // 固定金额折扣
4
+ }
5
+
6
+ export enum BasePriceType {
7
+ MIN_DISCOUNTED_PRICE = 1, // 最低折扣价
8
+ MIN_TOTAL_PRICE = 2, // 最低总价
9
+ }
10
+
11
+ export type PriceDiscountConfig = {
12
+ rule_id: number
13
+ rule_type: number
14
+ discount_type: DiscountType
15
+ discount_value: number
16
+ base_price_type: BasePriceType
17
+ applicable_products: Array<{
18
+ product_id: string
19
+ variant_id?: string
20
+ }>
21
+ }
@@ -0,0 +1,297 @@
1
+ import { AutoFreeGiftMainProduct, SpendMoneyType, RuleCondition, FormattedGift } from '../types/autoFreeGift'
2
+ import { CUSTOMER_ATTRIBUTE_KEY } from '../../shopify/utils/const'
3
+ import { atobID } from '../../shopify/utils/helper'
4
+ import { UseScriptAutoFreeGiftResult } from '../hooks/feature/useScriptAutoFreeGift'
5
+ import Cookies from 'js-cookie'
6
+ import Decimal from 'decimal.js'
7
+ import { Product } from '../../shopify/types'
8
+ import { getQuery } from '../utils'
9
+
10
+ export const getMatchedMainProductSubTotal = (
11
+ cartData: any,
12
+ variant_list: AutoFreeGiftMainProduct['variant_id_list'],
13
+ main_product: AutoFreeGiftMainProduct
14
+ ) => {
15
+ const isAllStoreVariant = main_product?.all_store_variant ?? false
16
+ const matchedList = cartData?.lineItems?.filter((line: any) => {
17
+ // 包含在主商品列表中
18
+ const { is_gift } = getDiscountEnvAttributeValue(line.customAttributes) // 获取折扣环境属性值
19
+ return isAllStoreVariant
20
+ ? !is_gift
21
+ : variant_list?.find((item: any) => {
22
+ return !is_gift && atobID(line.variantId) === item
23
+ })
24
+ })
25
+ return (
26
+ matchedList?.reduce((acc: number, line: any) => {
27
+ return (
28
+ acc +
29
+ (main_product?.spend_money_type === SpendMoneyType.ORIGIN_PRICE
30
+ ? Number(line.subtotalAmount) || 0
31
+ : Number(line.totalAmount) || 0)
32
+ )
33
+ }, 0) || 0 // 计算总金额
34
+ )
35
+ }
36
+
37
+ export const getDiscountEnvAttributeValue = (
38
+ // 函数接受一个名为 attributes 的参数,其类型为包含 key 和 value 字符串属性的对象数组,默认值为空数组
39
+ attributes: { key: string; value: string }[] = []
40
+ ) => {
41
+ // 在 attributes 数组中查找 key 值等于 CUSTOMER_ATTRIBUTE_KEY 的对象,并将其赋值给 attr 变量
42
+ const attr = attributes.find(attr => attr.key === CUSTOMER_ATTRIBUTE_KEY)
43
+ // 尝试解析 attr 对象的 value 属性为 JSON,如果解析失败或 attr 不存在,则返回一个空对象
44
+ return safeParseJson(attr?.value ?? '') ?? {}
45
+ }
46
+
47
+ export const safeParseJson = (str: string) => {
48
+ try {
49
+ return JSON.parse(str)
50
+ } catch (err) {
51
+ return {}
52
+ }
53
+ }
54
+
55
+ /**
56
+ * 检查 source 数组是否包含 requiredItems 数组中的所有元素。
57
+ * @param source - 源数据数组,例如用户的标签列表。
58
+ * @param requiredItems - 必须包含的项的数组。
59
+ * @returns boolean
60
+ */
61
+ const containsAll = (source: string[], requiredItems: string[] = []): boolean => {
62
+ // 如果没有必须包含的项,则条件默认满足。
63
+ if (!requiredItems?.length) return true
64
+
65
+ const sourceSet = new Set(source)
66
+ // 检查每一个 requiredItem 是否都存在于 sourceSet 中。
67
+ return requiredItems.every(item => sourceSet.has(item))
68
+ }
69
+
70
+ /**
71
+ * 检查 source 数组是否不包含 forbiddenItems 数组中的任何元素。
72
+ * @param source - 源数据数组。
73
+ * @param forbiddenItems - 禁止包含的项的数组。
74
+ * @returns boolean
75
+ */
76
+ const containsNone = (source: string[], forbiddenItems: string[] = []): boolean => {
77
+ // 如果没有禁止的项,则条件默认满足。
78
+ if (!forbiddenItems?.length) return true
79
+
80
+ const sourceSet = new Set(source)
81
+ // 只要在 sourceSet 中找到任何一个 forbiddenItem,条件就不满足。
82
+ return !forbiddenItems.some(item => sourceSet.has(item))
83
+ }
84
+
85
+ export function preCheck(rule_conditions: RuleCondition[], userTags: string[], currentDealsTypes: string[]): boolean {
86
+ // 1. 处理边界情况 (Guard Clauses),保持不变
87
+ if (!Array.isArray(rule_conditions)) return false
88
+ if (rule_conditions.length === 0) return true
89
+
90
+ // 2. 使用 .some() 替代 for...of 循环和 break
91
+ // .some() 会在找到第一个满足条件的元素后立即返回 true,并停止遍历,
92
+ // 这完美地复刻了 for + break 的行为。
93
+ return rule_conditions.some(rule => {
94
+ // 检查标签条件是否满足
95
+ const tagsAreValid = containsAll(userTags, rule.with_user_tags) && containsNone(userTags, rule.without_user_tags)
96
+
97
+ // 检查URL参数条件是否满足
98
+ const paramsAreValid =
99
+ containsAll(currentDealsTypes, rule.with_special_url_params) &&
100
+ containsNone(currentDealsTypes, rule.without_special_url_params)
101
+
102
+ // 只有当两个条件都满足时,此规则才算匹配
103
+ return tagsAreValid && paramsAreValid
104
+ })
105
+ }
106
+
107
+ // 缓存上一次的结果,避免重复计算
108
+ let formatScriptAutoFreeGiftCache: {
109
+ key: string
110
+ result: any[]
111
+ } | null = null
112
+
113
+ export const formatScriptAutoFreeGift = ({
114
+ scriptAutoFreeGiftResult,
115
+ gradient_gifts,
116
+ locale,
117
+ }: {
118
+ scriptAutoFreeGiftResult: UseScriptAutoFreeGiftResult
119
+ gradient_gifts: any
120
+ locale: string
121
+ }) => {
122
+ // 生成缓存键,用于判断输入是否发生变化
123
+ const cacheKey = JSON.stringify({
124
+ freeGiftLevel: scriptAutoFreeGiftResult?.freeGiftLevel
125
+ ? {
126
+ items:
127
+ scriptAutoFreeGiftResult.freeGiftLevel.giveawayProducts?.map(item => ({
128
+ handle: item.handle,
129
+ sku: item.sku,
130
+ quantity: 1,
131
+ })) || [],
132
+ }
133
+ : null,
134
+ giftProductsLength: scriptAutoFreeGiftResult?.giftProductsResult?.length || 0,
135
+ giftProductsIds: scriptAutoFreeGiftResult?.giftProductsResult?.map(p => p.id).sort() || [],
136
+ gradientGiftsId: gradient_gifts?.id || gradient_gifts?.name || '',
137
+ locale,
138
+ })
139
+
140
+ // 如果缓存存在且键相同,直接返回缓存结果
141
+ if (formatScriptAutoFreeGiftCache && formatScriptAutoFreeGiftCache.key === cacheKey) {
142
+ return formatScriptAutoFreeGiftCache.result
143
+ }
144
+
145
+ // 计算新结果
146
+ const result =
147
+ scriptAutoFreeGiftResult?.freeGiftLevel?.giveawayProducts
148
+ ?.filter(item => scriptAutoFreeGiftResult?.giftProductsResult?.some(product => product.handle === item.handle))
149
+ .map((item, index) => {
150
+ const product = scriptAutoFreeGiftResult?.giftProductsResult?.find(product => product.handle === item.handle)
151
+ const variant = product?.variants?.find((v: any) => v.sku === item.sku)
152
+
153
+ const query = getQuery()
154
+ const utmCampaign = Cookies.get('utm_campaign') || (query as any)?.utm_campaign
155
+ const addUTMFreeItem =
156
+ gradient_gifts.activityAvailableQuery && utmCampaign?.includes(gradient_gifts.activityAvailableQuery)
157
+
158
+ let points_subscribe = false
159
+ if (locale === 'au') {
160
+ const isPointsSubscribe = Cookies.get('points_subscribe')
161
+ points_subscribe = !!isPointsSubscribe
162
+ }
163
+
164
+ const customAttributes: { key: string; value: string }[] = [
165
+ {
166
+ key: '_giveaway_gradient_gifts',
167
+ value: '_giveaway_gradient_gifts',
168
+ },
169
+ ...(points_subscribe
170
+ ? [
171
+ { key: '_amount_upgrade_multiple', value: '1.2' },
172
+ { key: '_amount_upgrade_value', value: '40' },
173
+ ]
174
+ : []),
175
+ ...(addUTMFreeItem && gradient_gifts?.activityQroperty
176
+ ? [
177
+ {
178
+ key: gradient_gifts.activityQroperty,
179
+ value: gradient_gifts.activityQroperty,
180
+ },
181
+ ]
182
+ : []),
183
+ ]
184
+
185
+ const line = {
186
+ id: product?.id + '_' + index,
187
+ variantId: String(variant?.id),
188
+ productId: String(product?.id),
189
+ name: (product as any)?.name || (product as any)?.title || '',
190
+ quantity: 1,
191
+ discounts: [],
192
+ path: product?.handle || '',
193
+ variant: variant,
194
+ totalAmount: 0,
195
+ subtotalAmount: new Decimal(variant?.price || 0).toNumber(),
196
+ options: [],
197
+ discountAllocations: [],
198
+ product: product,
199
+ customAttributes,
200
+ freeGiftVariant: undefined,
201
+ relatedVariant: undefined,
202
+ } as any
203
+
204
+ return {
205
+ line,
206
+ isSoldOut: !variant?.availableForSale,
207
+ }
208
+ }) || []
209
+
210
+ // 缓存结果
211
+ formatScriptAutoFreeGiftCache = {
212
+ key: cacheKey,
213
+ result: result,
214
+ }
215
+
216
+ return result
217
+ }
218
+
219
+ // 缓存上一次的结果,避免重复计算
220
+ let formatFunctionAutoFreeGiftCache: {
221
+ key: string
222
+ result: any[]
223
+ } | null = null
224
+
225
+ export const formatFunctionAutoFreeGift = ({
226
+ qualifyingGift,
227
+ giftProductsResult,
228
+ locale,
229
+ }: {
230
+ locale: string
231
+ qualifyingGift?: FormattedGift | null
232
+ giftProductsResult?: Product[] | []
233
+ }) => {
234
+ // 生成缓存键,用于判断输入是否发生变化
235
+ const cacheKey = JSON.stringify({
236
+ qualifyingGift: qualifyingGift
237
+ ? {
238
+ spend: qualifyingGift.tier?.spend_sum_money,
239
+ items:
240
+ qualifyingGift.itemsToAdd?.map(item => ({
241
+ variantId: item.variant.id,
242
+ handle: item.variant.handle,
243
+ sku: item.variant.sku,
244
+ quantity: item.quantity ?? 1,
245
+ attributes: item.attributes,
246
+ })) || [],
247
+ }
248
+ : null,
249
+ giftProductsLength: giftProductsResult?.length || 0,
250
+ giftProductsIds: giftProductsResult?.map(p => p.id).sort() || [],
251
+ locale,
252
+ })
253
+
254
+ // 如果缓存存在且键相同,直接返回缓存结果
255
+ if (formatFunctionAutoFreeGiftCache && formatFunctionAutoFreeGiftCache.key === cacheKey) {
256
+ return formatFunctionAutoFreeGiftCache.result
257
+ }
258
+
259
+ // 计算新结果
260
+ const result =
261
+ qualifyingGift?.itemsToAdd?.map((item, index) => {
262
+ const product = giftProductsResult?.find(product => product.handle === item.variant.handle)
263
+ const variant = product?.variants?.find(v => v.sku === item.variant.sku)
264
+ console.log('qualifyingGift variant', product, variant)
265
+
266
+ const line = {
267
+ id: product?.id + '_' + index,
268
+ variantId: String(variant?.id),
269
+ productId: String(product?.id),
270
+ name: (product as any)?.name || (product as any)?.title || '',
271
+ quantity: 1,
272
+ discounts: [],
273
+ path: product?.handle || '',
274
+ variant: variant,
275
+ totalAmount: 0,
276
+ subtotalAmount: new Decimal(variant?.price || 0).toNumber(),
277
+ options: [],
278
+ discountAllocations: [],
279
+ product: product,
280
+ customAttributes: item.attributes,
281
+ freeGiftVariant: undefined,
282
+ relatedVariant: undefined,
283
+ } as any
284
+ return {
285
+ line,
286
+ isSoldOut: !variant?.availableForSale,
287
+ }
288
+ }) || []
289
+
290
+ // 缓存结果
291
+ formatFunctionAutoFreeGiftCache = {
292
+ key: cacheKey,
293
+ result: result,
294
+ }
295
+
296
+ return result
297
+ }