cloudcommerce 0.0.126 → 0.0.128

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 (313) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/CHANGELOG.md +50 -0
  3. package/action.yml +50 -10
  4. package/ecomplus-stores/monocard/README.md +0 -15
  5. package/ecomplus-stores/monocard/README.pt-BR.md +0 -15
  6. package/ecomplus-stores/monocard/functions/core/package.json +1 -1
  7. package/ecomplus-stores/monocard/functions/events/package.json +2 -2
  8. package/ecomplus-stores/monocard/functions/modules/package.json +2 -2
  9. package/ecomplus-stores/monocard/functions/passport/package.json +2 -2
  10. package/ecomplus-stores/monocard/functions/ssr/package.json +8 -8
  11. package/ecomplus-stores/monocard/functions/ssr/tailwind.config.cjs +1 -3
  12. package/ecomplus-stores/monocard/functions/ssr/{uno.config.ts → uno.config.cjs} +1 -1
  13. package/ecomplus-stores/monocard/package.json +1 -1
  14. package/ecomplus-stores/tia-sonia/README.md +0 -15
  15. package/ecomplus-stores/tia-sonia/README.pt-BR.md +0 -15
  16. package/ecomplus-stores/tia-sonia/functions/core/package.json +1 -1
  17. package/ecomplus-stores/tia-sonia/functions/events/package.json +2 -2
  18. package/ecomplus-stores/tia-sonia/functions/modules/package.json +2 -2
  19. package/ecomplus-stores/tia-sonia/functions/passport/package.json +2 -2
  20. package/ecomplus-stores/tia-sonia/functions/ssr/package.json +7 -7
  21. package/ecomplus-stores/tia-sonia/functions/ssr/tailwind.config.cjs +1 -3
  22. package/ecomplus-stores/tia-sonia/functions/ssr/{uno.config.ts → uno.config.cjs} +1 -1
  23. package/ecomplus-stores/tia-sonia/package.json +1 -1
  24. package/package.json +14 -14
  25. package/packages/api/lib/api.d.ts +4 -4
  26. package/packages/api/lib/types.d.ts +41 -41
  27. package/packages/api/package.json +1 -1
  28. package/packages/apps/correios/package.json +2 -2
  29. package/packages/apps/custom-shipping/package.json +1 -1
  30. package/packages/apps/discounts/lib-mjs/apply-discount.mjs +94 -20
  31. package/packages/apps/discounts/package.json +2 -2
  32. package/packages/apps/emails/CHANGELOG.md +1 -0
  33. package/packages/apps/emails/README.md +1 -0
  34. package/packages/apps/emails/lib/events-to-app-emails.js +19 -0
  35. package/packages/apps/emails/lib/events-to-app-emails.js.map +1 -0
  36. package/packages/apps/emails/lib/firebase.js +19 -0
  37. package/packages/apps/emails/lib/firebase.js.map +1 -0
  38. package/packages/apps/emails/lib/functios-lib/abandoned-carts.js +86 -0
  39. package/packages/apps/emails/lib/functios-lib/abandoned-carts.js.map +1 -0
  40. package/packages/apps/emails/lib/functios-lib/handle-orders.js +174 -0
  41. package/packages/apps/emails/lib/functios-lib/handle-orders.js.map +1 -0
  42. package/packages/apps/emails/lib/functios-lib/trigger-actions.js +178 -0
  43. package/packages/apps/emails/lib/functios-lib/trigger-actions.js.map +1 -0
  44. package/packages/apps/emails/lib/functios-lib/utils.js +33 -0
  45. package/packages/apps/emails/lib/functios-lib/utils.js.map +1 -0
  46. package/packages/apps/emails/lib/index.js +2 -0
  47. package/packages/apps/emails/lib/index.js.map +1 -0
  48. package/packages/apps/emails/package.json +33 -0
  49. package/packages/apps/emails/src/events-to-app-emails.ts +27 -0
  50. package/packages/apps/emails/src/firebase.ts +25 -0
  51. package/packages/apps/emails/src/functios-lib/abandoned-carts.ts +100 -0
  52. package/packages/apps/emails/src/functios-lib/handle-orders.ts +232 -0
  53. package/packages/apps/emails/src/functios-lib/trigger-actions.ts +177 -0
  54. package/packages/apps/emails/src/functios-lib/utils.ts +44 -0
  55. package/packages/apps/emails/src/index.ts +1 -0
  56. package/packages/apps/emails/tsconfig.json +3 -0
  57. package/packages/apps/frenet/package.json +2 -2
  58. package/packages/apps/infinitepay/CHANGELOG.md +1 -0
  59. package/packages/apps/infinitepay/README.md +1 -0
  60. package/packages/apps/infinitepay/assets/onload-expression.js +57 -0
  61. package/packages/apps/infinitepay/lib/functions-lib/add-installments.d.ts +55 -0
  62. package/packages/apps/infinitepay/lib/functions-lib/add-installments.js +63 -0
  63. package/packages/apps/infinitepay/lib/functions-lib/add-installments.js.map +1 -0
  64. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-access.d.ts +14 -0
  65. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-access.js +63 -0
  66. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-access.js.map +1 -0
  67. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-axios.d.ts +2 -0
  68. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-axios.js +19 -0
  69. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-axios.js.map +1 -0
  70. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/oauth.d.ts +2 -0
  71. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/oauth.js +25 -0
  72. package/packages/apps/infinitepay/lib/functions-lib/ip-auth/oauth.js.map +1 -0
  73. package/packages/apps/infinitepay/lib/functions-lib/utils.d.ts +8 -0
  74. package/packages/apps/infinitepay/lib/functions-lib/utils.js +17 -0
  75. package/packages/apps/infinitepay/lib/functions-lib/utils.js.map +1 -0
  76. package/packages/apps/infinitepay/lib/index.d.ts +1 -0
  77. package/packages/apps/infinitepay/lib/index.js +3 -0
  78. package/packages/apps/infinitepay/lib/index.js.map +1 -0
  79. package/packages/apps/infinitepay/lib/infinitepay.d.ts +76 -0
  80. package/packages/apps/infinitepay/lib/infinitepay.js +13 -0
  81. package/packages/apps/infinitepay/lib/infinitepay.js.map +1 -0
  82. package/packages/apps/infinitepay/lib/ip-create-transaction.d.ts +72 -0
  83. package/packages/apps/infinitepay/lib/ip-create-transaction.js +305 -0
  84. package/packages/apps/infinitepay/lib/ip-create-transaction.js.map +1 -0
  85. package/packages/apps/infinitepay/lib/ip-list-payments.d.ts +8 -0
  86. package/packages/apps/infinitepay/lib/ip-list-payments.js +130 -0
  87. package/packages/apps/infinitepay/lib/ip-list-payments.js.map +1 -0
  88. package/packages/apps/infinitepay/lib/ip-webhook.d.ts +5 -0
  89. package/packages/apps/infinitepay/lib/ip-webhook.js +152 -0
  90. package/packages/apps/infinitepay/lib/ip-webhook.js.map +1 -0
  91. package/packages/apps/infinitepay/package.json +38 -0
  92. package/packages/apps/infinitepay/scripts/build.sh +5 -0
  93. package/packages/apps/infinitepay/src/functions-lib/add-installments.ts +78 -0
  94. package/packages/apps/infinitepay/src/functions-lib/ip-auth/create-access.ts +85 -0
  95. package/packages/apps/infinitepay/src/functions-lib/ip-auth/create-axios.ts +20 -0
  96. package/packages/apps/infinitepay/src/functions-lib/ip-auth/oauth.ts +30 -0
  97. package/packages/apps/infinitepay/src/functions-lib/utils.ts +23 -0
  98. package/packages/apps/infinitepay/src/index.ts +2 -0
  99. package/packages/apps/infinitepay/src/infinitepay.ts +13 -0
  100. package/packages/apps/infinitepay/src/ip-create-transaction.ts +418 -0
  101. package/packages/apps/infinitepay/src/ip-list-payments.ts +158 -0
  102. package/packages/apps/infinitepay/src/ip-webhook.ts +184 -0
  103. package/packages/apps/infinitepay/tsconfig.json +6 -0
  104. package/packages/apps/infinitepay/webhook.js +1 -0
  105. package/packages/apps/mercadopago/lib/mp-create-transaction.js +1 -1
  106. package/packages/apps/mercadopago/lib/mp-create-transaction.js.map +1 -1
  107. package/packages/apps/mercadopago/lib/mp-webhook.js +1 -1
  108. package/packages/apps/mercadopago/lib/mp-webhook.js.map +1 -1
  109. package/packages/apps/mercadopago/package.json +4 -4
  110. package/packages/apps/mercadopago/src/mp-create-transaction.ts +1 -1
  111. package/packages/apps/mercadopago/src/mp-webhook.ts +1 -1
  112. package/packages/apps/pagarme/CHANGELOG.md +1 -0
  113. package/packages/apps/pagarme/README.md +1 -0
  114. package/packages/apps/pagarme/assets/onload-expression.js +18 -0
  115. package/packages/apps/pagarme/lib/functions-lib/add-installments.d.ts +55 -0
  116. package/packages/apps/pagarme/lib/functions-lib/add-installments.js +48 -0
  117. package/packages/apps/pagarme/lib/functions-lib/add-installments.js.map +1 -0
  118. package/packages/apps/pagarme/lib/functions-lib/parse-status-to-ecom.d.ts +2 -0
  119. package/packages/apps/pagarme/lib/functions-lib/parse-status-to-ecom.js +24 -0
  120. package/packages/apps/pagarme/lib/functions-lib/parse-status-to-ecom.js.map +1 -0
  121. package/packages/apps/pagarme/lib/index.d.ts +1 -0
  122. package/packages/apps/pagarme/lib/index.js +3 -0
  123. package/packages/apps/pagarme/lib/index.js.map +1 -0
  124. package/packages/apps/pagarme/lib/pagarme-create-transaction.d.ts +82 -0
  125. package/packages/apps/pagarme/lib/pagarme-create-transaction.js +275 -0
  126. package/packages/apps/pagarme/lib/pagarme-create-transaction.js.map +1 -0
  127. package/packages/apps/pagarme/lib/pagarme-list-payments.d.ts +7 -0
  128. package/packages/apps/pagarme/lib/pagarme-list-payments.js +139 -0
  129. package/packages/apps/pagarme/lib/pagarme-list-payments.js.map +1 -0
  130. package/packages/apps/pagarme/lib/pagarme-webhook.d.ts +4 -0
  131. package/packages/apps/pagarme/lib/pagarme-webhook.js +80 -0
  132. package/packages/apps/pagarme/lib/pagarme-webhook.js.map +1 -0
  133. package/packages/apps/pagarme/lib/pagarme.d.ts +86 -0
  134. package/packages/apps/pagarme/lib/pagarme.js +12 -0
  135. package/packages/apps/pagarme/lib/pagarme.js.map +1 -0
  136. package/packages/apps/pagarme/package.json +38 -0
  137. package/packages/apps/pagarme/scripts/build.sh +5 -0
  138. package/packages/apps/pagarme/src/functions-lib/add-installments.ts +59 -0
  139. package/packages/apps/pagarme/src/functions-lib/parse-status-to-ecom.ts +23 -0
  140. package/packages/apps/pagarme/src/index.ts +2 -0
  141. package/packages/apps/pagarme/src/pagarme-create-transaction.ts +307 -0
  142. package/packages/apps/pagarme/src/pagarme-list-payments.ts +158 -0
  143. package/packages/apps/pagarme/src/pagarme-webhook.ts +88 -0
  144. package/packages/apps/pagarme/src/pagarme.ts +12 -0
  145. package/packages/apps/pagarme/tsconfig.json +6 -0
  146. package/packages/apps/pagarme/webhook.js +1 -0
  147. package/packages/apps/pix/CHANGELOG.md +1 -0
  148. package/packages/apps/pix/README.md +1 -0
  149. package/packages/apps/pix/lib/functions-lib/get-certificate.d.ts +2 -0
  150. package/packages/apps/pix/lib/functions-lib/get-certificate.js +21 -0
  151. package/packages/apps/pix/lib/functions-lib/get-certificate.js.map +1 -0
  152. package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.d.ts +15 -0
  153. package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.js +65 -0
  154. package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.js.map +1 -0
  155. package/packages/apps/pix/lib/functions-lib/pix-auth/create-axios.d.ts +6 -0
  156. package/packages/apps/pix/lib/functions-lib/pix-auth/create-axios.js +20 -0
  157. package/packages/apps/pix/lib/functions-lib/pix-auth/create-axios.js.map +1 -0
  158. package/packages/apps/pix/lib/functions-lib/pix-auth/oauth.d.ts +12 -0
  159. package/packages/apps/pix/lib/functions-lib/pix-auth/oauth.js +36 -0
  160. package/packages/apps/pix/lib/functions-lib/pix-auth/oauth.js.map +1 -0
  161. package/packages/apps/pix/lib/index.d.ts +1 -0
  162. package/packages/apps/pix/lib/index.js +3 -0
  163. package/packages/apps/pix/lib/index.js.map +1 -0
  164. package/packages/apps/pix/lib/pix-create-transaction.d.ts +73 -0
  165. package/packages/apps/pix/lib/pix-create-transaction.js +221 -0
  166. package/packages/apps/pix/lib/pix-create-transaction.js.map +1 -0
  167. package/packages/apps/pix/lib/pix-list-payments.d.ts +14 -0
  168. package/packages/apps/pix/lib/pix-list-payments.js +80 -0
  169. package/packages/apps/pix/lib/pix-list-payments.js.map +1 -0
  170. package/packages/apps/pix/lib/pix-webhook.d.ts +5 -0
  171. package/packages/apps/pix/lib/pix-webhook.js +146 -0
  172. package/packages/apps/pix/lib/pix-webhook.js.map +1 -0
  173. package/packages/apps/pix/lib/pix.d.ts +77 -0
  174. package/packages/apps/pix/lib/pix.js +13 -0
  175. package/packages/apps/pix/lib/pix.js.map +1 -0
  176. package/packages/apps/pix/package.json +36 -0
  177. package/packages/apps/pix/src/functions-lib/get-certificate.ts +24 -0
  178. package/packages/apps/pix/src/functions-lib/pix-auth/construtor.ts +87 -0
  179. package/packages/apps/pix/src/functions-lib/pix-auth/create-axios.ts +24 -0
  180. package/packages/apps/pix/src/functions-lib/pix-auth/oauth.ts +50 -0
  181. package/packages/apps/pix/src/index.ts +2 -0
  182. package/packages/apps/pix/src/pix-create-transaction.ts +261 -0
  183. package/packages/apps/pix/src/pix-list-payments.ts +93 -0
  184. package/packages/apps/pix/src/pix-webhook.ts +171 -0
  185. package/packages/apps/pix/src/pix.ts +13 -0
  186. package/packages/apps/pix/tsconfig.json +6 -0
  187. package/packages/apps/pix/webhook.js +1 -0
  188. package/packages/apps/tiny-erp/package.json +5 -5
  189. package/packages/cli/bin/run.mjs +1 -1
  190. package/packages/cli/lib/build.js +14 -7
  191. package/packages/cli/lib/{index.js → cli.js} +2 -2
  192. package/packages/cli/lib/setup-gcloud.js +1 -1
  193. package/packages/cli/package.json +3 -3
  194. package/packages/cli/src/build.ts +17 -10
  195. package/packages/cli/src/{index.ts → cli.ts} +2 -2
  196. package/packages/cli/src/setup-gcloud.ts +1 -1
  197. package/packages/config/lib/config.d.ts +4 -2
  198. package/packages/config/lib/config.js +11 -4
  199. package/packages/config/lib/config.js.map +1 -1
  200. package/packages/config/lib/env.d.ts +1 -1
  201. package/packages/config/package.json +2 -2
  202. package/packages/config/src/config.ts +14 -5
  203. package/packages/emails/CHANGELOG.md +1 -0
  204. package/packages/emails/README.md +1 -0
  205. package/packages/emails/lib/index.d.ts +56 -0
  206. package/packages/emails/lib/index.js +83 -0
  207. package/packages/emails/lib/index.js.map +1 -0
  208. package/packages/emails/lib/parse-template-to-html.d.ts +3 -0
  209. package/packages/emails/lib/parse-template-to-html.js +16 -0
  210. package/packages/emails/lib/parse-template-to-html.js.map +1 -0
  211. package/packages/emails/lib/providers/sendgrid/index.d.ts +8 -0
  212. package/packages/emails/lib/providers/sendgrid/index.js +54 -0
  213. package/packages/emails/lib/providers/sendgrid/index.js.map +1 -0
  214. package/packages/emails/lib/providers/sendgrid/parse-to-data.d.ts +5 -0
  215. package/packages/emails/lib/providers/sendgrid/parse-to-data.js +55 -0
  216. package/packages/emails/lib/providers/sendgrid/parse-to-data.js.map +1 -0
  217. package/packages/emails/lib/providers/smtp/index.d.ts +13 -0
  218. package/packages/emails/lib/providers/smtp/index.js +79 -0
  219. package/packages/emails/lib/providers/smtp/index.js.map +1 -0
  220. package/packages/emails/package.json +35 -0
  221. package/packages/emails/src/index.ts +144 -0
  222. package/packages/emails/src/parse-template-to-html.ts +19 -0
  223. package/packages/emails/src/providers/sendgrid/index.ts +78 -0
  224. package/packages/emails/src/providers/sendgrid/parse-to-data.ts +92 -0
  225. package/packages/emails/src/providers/smtp/index.ts +115 -0
  226. package/packages/emails/tests/assets/customer.json +68 -0
  227. package/packages/emails/tests/assets/order.json +190 -0
  228. package/packages/emails/tests/assets/store.json +25 -0
  229. package/packages/emails/tests/ex.config-sendgrid.json +19 -0
  230. package/packages/emails/tests/ex.config-smtp.json +21 -0
  231. package/packages/emails/tests/sendgrid.test.ts +156 -0
  232. package/packages/emails/tests/smtp.test.ts +147 -0
  233. package/packages/emails/tests/templates/new-order.ejs +37 -0
  234. package/packages/emails/tsconfig.json +6 -0
  235. package/packages/emails/types/index.d.ts +84 -0
  236. package/packages/emails/types/sendgrid.d.ts +28 -0
  237. package/packages/events/lib/firebase.js +8 -0
  238. package/packages/events/lib/firebase.js.map +1 -1
  239. package/packages/events/package.json +7 -3
  240. package/packages/events/src/firebase.ts +8 -0
  241. package/packages/firebase/lib/config.d.ts +15 -1
  242. package/packages/firebase/lib/config.js +28 -1
  243. package/packages/firebase/lib/config.js.map +1 -1
  244. package/packages/firebase/lib/helpers/pubsub.d.ts +2 -2
  245. package/packages/firebase/package.json +5 -5
  246. package/packages/firebase/src/config.ts +31 -1
  247. package/packages/i18n/package.json +1 -1
  248. package/packages/modules/lib/firebase/call-app-module.js +36 -0
  249. package/packages/modules/lib/firebase/call-app-module.js.map +1 -1
  250. package/packages/modules/package.json +9 -6
  251. package/packages/modules/schemas/apply_discount.cjs +47 -0
  252. package/packages/modules/src/firebase/call-app-module.ts +36 -0
  253. package/packages/passport/lib/firebase/authenticate-customer.js +1 -1
  254. package/packages/passport/lib/firebase/authenticate-customer.js.map +1 -1
  255. package/packages/passport/package.json +3 -3
  256. package/packages/passport/src/firebase/authenticate-customer.ts +2 -2
  257. package/packages/ssr/package.json +8 -8
  258. package/packages/storefront/.eslintrc.cjs +4 -0
  259. package/packages/storefront/astro.config.mjs +12 -6
  260. package/packages/storefront/dist/client/HeaderButtons.bc4a5c97.js +1 -0
  261. package/packages/storefront/dist/client/assets/_...slug_.acb18581.css +1 -0
  262. package/packages/storefront/dist/client/chunks/HeaderButtons.861af799.js +1 -0
  263. package/packages/storefront/dist/client/chunks/{LoginForm.0c5ba697.js → LoginForm.7e9c481c.js} +4 -4
  264. package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.1b578f5a.js +1 -0
  265. package/packages/storefront/dist/client/{client.69fdbd1b.js → client.75c18572.js} +1 -1
  266. package/packages/storefront/dist/client/manifest.webmanifest +1 -1
  267. package/packages/storefront/dist/client/page.5a6f3db5.js +1 -0
  268. package/packages/storefront/dist/client/sw.js +1 -1
  269. package/packages/storefront/dist/server/{avif → chunks/avif}/avif_node_dec.wasm +0 -0
  270. package/packages/storefront/dist/server/{avif → chunks/avif}/avif_node_enc.wasm +0 -0
  271. package/packages/storefront/dist/server/chunks/image-pool.f66f99fb.mjs +10791 -0
  272. package/packages/storefront/dist/server/{mozjpeg → chunks/mozjpeg}/mozjpeg_node_dec.wasm +0 -0
  273. package/packages/storefront/dist/server/{mozjpeg → chunks/mozjpeg}/mozjpeg_node_enc.wasm +0 -0
  274. package/packages/storefront/dist/server/{png → chunks/png}/squoosh_oxipng_bg.wasm +0 -0
  275. package/packages/storefront/dist/server/{png → chunks/png}/squoosh_png_bg.wasm +0 -0
  276. package/packages/storefront/dist/server/{resize → chunks/resize}/squoosh_resize_bg.wasm +0 -0
  277. package/packages/storefront/dist/server/{rotate → chunks/rotate}/rotate.wasm +0 -0
  278. package/packages/storefront/dist/server/{webp → chunks/webp}/webp_node_dec.wasm +0 -0
  279. package/packages/storefront/dist/server/{webp → chunks/webp}/webp_node_enc.wasm +0 -0
  280. package/packages/storefront/dist/server/entry.mjs +10832 -13568
  281. package/packages/storefront/dist/server/manifest.webmanifest +1 -1
  282. package/packages/storefront/package.json +22 -18
  283. package/packages/storefront/src/lib/assets/base.css +110 -0
  284. package/packages/storefront/src/lib/assets/dark.css +92 -0
  285. package/packages/storefront/src/lib/assets/forms.css +0 -0
  286. package/packages/storefront/src/lib/assets/pico.css +29 -130
  287. package/packages/storefront/src/lib/assets/preflight.css +362 -0
  288. package/packages/storefront/src/lib/assets/typography.css +15 -0
  289. package/packages/storefront/src/lib/components/ADrawer.vue +11 -11
  290. package/packages/storefront/src/lib/components/LoginDrawer.vue +1 -1
  291. package/packages/storefront/src/lib/layouts/BaseBody.astro +2 -1
  292. package/packages/storefront/src/lib/layouts/BaseHead.astro +13 -3
  293. package/packages/storefront/src/lib/layouts/BaseStateJson.astro +3 -12
  294. package/packages/storefront/src/lib/ssr/image.ts +11 -5
  295. package/packages/storefront/src/lib/ssr-context.ts +3 -3
  296. package/packages/storefront/src/lib/state/shopping-cart/add-cart-item.ts +37 -57
  297. package/packages/storefront/src/lib/state/shopping-cart/parse-product.ts +36 -0
  298. package/packages/storefront/src/lib/state/shopping-cart.ts +32 -1
  299. package/packages/storefront/src/lib/types/cms-settings.d.ts +3 -1
  300. package/packages/storefront/storefront.cms.cjs +41 -0
  301. package/packages/storefront/storefront.cms.mjs +7 -2
  302. package/packages/storefront/storefront.config.mjs +1 -0
  303. package/packages/storefront/tailwind.config.cjs +142 -113
  304. package/packages/storefront/uno.config.cjs +126 -0
  305. package/packages/types/index.ts +21 -0
  306. package/packages/types/modules/apply_discount:response.d.ts +32 -0
  307. package/packages/types/package.json +1 -1
  308. package/packages/storefront/dist/client/HeaderButtons.b5b4a939.js +0 -1
  309. package/packages/storefront/dist/client/assets/_...slug_.8d138f36.css +0 -4
  310. package/packages/storefront/dist/client/chunks/HeaderButtons.308edb4d.js +0 -1
  311. package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.f00ab3bd.js +0 -1
  312. package/packages/storefront/dist/client/page.33c44e88.js +0 -1
  313. package/packages/storefront/uno.config.ts +0 -167
@@ -9,16 +9,16 @@ import type { Customers } from './types/customers';
9
9
  import type { Stores } from './types/stores';
10
10
  import type { Applications } from './types/applications';
11
11
  import type { Authentications } from './types/authentications';
12
- declare type Resource = 'products' | 'categories' | 'brands' | 'collections' | 'grids' | 'carts' | 'orders' | 'customers' | 'stores' | 'applications' | 'authentications';
13
- declare type ResourceId = string & {
12
+ type Resource = 'products' | 'categories' | 'brands' | 'collections' | 'grids' | 'carts' | 'orders' | 'customers' | 'stores' | 'applications' | 'authentications';
13
+ type ResourceId = string & {
14
14
  length: 24;
15
15
  };
16
- declare type ResourceAndId = `${Resource}/${ResourceId}`;
17
- declare type ResourceOpQuery = Resource | `${Resource}?${string}`;
18
- declare type EventsEndpoint = `events/${Resource}` | `events/${ResourceAndId}` | 'events/me';
19
- declare type Endpoint = ResourceOpQuery | ResourceAndId | `${ResourceAndId}/${string}` | `slugs/${string}` | 'search/v1' | EventsEndpoint | 'login' | 'authenticate' | 'ask-auth-callback' | 'check-username' | `$aggregate/${Exclude<Resource, 'stores' | 'applications' | 'authentications'>}` | `schemas/${Resource}`;
20
- declare type Method = 'get' | 'post' | 'put' | 'patch' | 'delete';
21
- declare type Config = {
16
+ type ResourceAndId = `${Resource}/${ResourceId}`;
17
+ type ResourceOpQuery = Resource | `${Resource}?${string}`;
18
+ type EventsEndpoint = `events/${Resource}` | `events/${ResourceAndId}` | 'events/me';
19
+ type Endpoint = ResourceOpQuery | ResourceAndId | `${ResourceAndId}/${string}` | `slugs/${string}` | 'search/v1' | EventsEndpoint | 'login' | 'authenticate' | 'ask-auth-callback' | 'check-username' | `$aggregate/${Exclude<Resource, 'stores' | 'applications' | 'authentications'>}` | `schemas/${Resource}`;
20
+ type Method = 'get' | 'post' | 'put' | 'patch' | 'delete';
21
+ type Config = {
22
22
  baseUrl?: string;
23
23
  storeId?: number;
24
24
  accessToken?: string;
@@ -36,27 +36,27 @@ declare type Config = {
36
36
  cacheMaxAge?: number;
37
37
  fetch?: typeof fetch;
38
38
  };
39
- declare type BaseListResultMeta = {
39
+ type BaseListResultMeta = {
40
40
  offset: number;
41
41
  limit: number;
42
42
  fields: Array<string>;
43
43
  };
44
- declare type ListResultDocs<Document extends any> = Array<Partial<Document> & {
44
+ type ListResultDocs<Document extends any> = Array<Partial<Document> & {
45
45
  _id: ResourceId;
46
46
  }>;
47
- declare type ProductsList = ListResultDocs<Products>;
48
- declare type CategoriesList = ListResultDocs<Categories>;
49
- declare type BrandsList = ListResultDocs<Brands>;
50
- declare type CollectionsList = ListResultDocs<Collections>;
51
- declare type GridsList = ListResultDocs<Grids>;
52
- declare type CartsList = ListResultDocs<Carts>;
53
- declare type OrdersList = ListResultDocs<Orders>;
54
- declare type CustomersList = ListResultDocs<Customers>;
55
- declare type StoresList = ListResultDocs<Stores>;
56
- declare type ApplicationsList = ListResultDocs<Applications>;
57
- declare type AuthenticationsList = ListResultDocs<Authentications>;
58
- declare type ListEndpoint<TResource extends Resource> = TResource | `${TResource}?${string}`;
59
- declare type ResourceListResult<TEndpoint extends ResourceOpQuery> = {
47
+ type ProductsList = ListResultDocs<Products>;
48
+ type CategoriesList = ListResultDocs<Categories>;
49
+ type BrandsList = ListResultDocs<Brands>;
50
+ type CollectionsList = ListResultDocs<Collections>;
51
+ type GridsList = ListResultDocs<Grids>;
52
+ type CartsList = ListResultDocs<Carts>;
53
+ type OrdersList = ListResultDocs<Orders>;
54
+ type CustomersList = ListResultDocs<Customers>;
55
+ type StoresList = ListResultDocs<Stores>;
56
+ type ApplicationsList = ListResultDocs<Applications>;
57
+ type AuthenticationsList = ListResultDocs<Authentications>;
58
+ type ListEndpoint<TResource extends Resource> = TResource | `${TResource}?${string}`;
59
+ type ResourceListResult<TEndpoint extends ResourceOpQuery> = {
60
60
  result: TEndpoint extends ListEndpoint<'products'> ? ProductsList : TEndpoint extends ListEndpoint<'categories'> ? CategoriesList : TEndpoint extends ListEndpoint<'brands'> ? BrandsList : TEndpoint extends ListEndpoint<'collections'> ? CollectionsList : TEndpoint extends ListEndpoint<'grids'> ? GridsList : TEndpoint extends ListEndpoint<'carts'> ? CartsList : TEndpoint extends ListEndpoint<'orders'> ? OrdersList : TEndpoint extends ListEndpoint<'customers'> ? CustomersList : TEndpoint extends ListEndpoint<'stores'> ? StoresList : TEndpoint extends ListEndpoint<'applications'> ? ApplicationsList : TEndpoint extends ListEndpoint<'authentications'> ? AuthenticationsList : never;
61
61
  meta: BaseListResultMeta & {
62
62
  count?: number;
@@ -69,7 +69,7 @@ declare type ResourceListResult<TEndpoint extends ResourceOpQuery> = {
69
69
  };
70
70
  };
71
71
  };
72
- declare type EventFieldsByEndpoint<TEndpoint extends EventsEndpoint> = TEndpoint extends `events/${Resource}` ? {
72
+ type EventFieldsByEndpoint<TEndpoint extends EventsEndpoint> = TEndpoint extends `events/${Resource}` ? {
73
73
  resource_id: ResourceId;
74
74
  authentication_id: ResourceId | null;
75
75
  } : TEndpoint extends `events/${ResourceAndId}` ? {
@@ -78,7 +78,7 @@ declare type EventFieldsByEndpoint<TEndpoint extends EventsEndpoint> = TEndpoint
78
78
  resource: Resource;
79
79
  resource_id: ResourceId;
80
80
  } : never;
81
- declare type EventsResult<TEndpoint extends EventsEndpoint> = {
81
+ type EventsResult<TEndpoint extends EventsEndpoint> = {
82
82
  result: Array<{
83
83
  timestamp: string;
84
84
  store_id?: number;
@@ -94,7 +94,7 @@ declare type EventsResult<TEndpoint extends EventsEndpoint> = {
94
94
  } & EventFieldsByEndpoint<TEndpoint>>;
95
95
  meta: BaseListResultMeta;
96
96
  };
97
- declare type ResponseBody<TConfig extends Config> = TConfig['method'] extends 'post' ? TConfig['endpoint'] extends 'login' ? {
97
+ type ResponseBody<TConfig extends Config> = TConfig['method'] extends 'post' ? TConfig['endpoint'] extends 'login' ? {
98
98
  _id: ResourceId;
99
99
  store_ids: number[];
100
100
  api_key: string;
@@ -105,21 +105,21 @@ declare type ResponseBody<TConfig extends Config> = TConfig['method'] extends 'p
105
105
  } : {
106
106
  _id: ResourceId;
107
107
  } : TConfig['method'] extends 'put' | 'patch' | 'delete' ? null : TConfig['endpoint'] extends `${string}/${ResourceId}/${string}` ? any : TConfig['endpoint'] extends `products/${ResourceId}` ? Products : TConfig['endpoint'] extends `categories/${ResourceId}` ? Categories : TConfig['endpoint'] extends `brands/${ResourceId}` ? Brands : TConfig['endpoint'] extends `collections/${ResourceId}` ? Collections : TConfig['endpoint'] extends `grids/${ResourceId}` ? Grids : TConfig['endpoint'] extends `carts/${ResourceId}` ? Carts : TConfig['endpoint'] extends `orders/${ResourceId}` ? Orders : TConfig['endpoint'] extends `customers/${ResourceId}` ? Customers : TConfig['endpoint'] extends `stores/${ResourceId}` ? Stores : TConfig['endpoint'] extends `applications/${ResourceId}` ? Applications : TConfig['endpoint'] extends `authentications/${ResourceId}` ? Authentications : TConfig['endpoint'] extends ResourceOpQuery ? ResourceListResult<TConfig['endpoint']> : TConfig['endpoint'] extends EventsEndpoint ? EventsResult<TConfig['endpoint']> : any;
108
- declare type DocSchema<Document extends any> = Omit<Document, '_id' | 'store_id' | 'store_ids' | 'created_at' | 'updated_at'>;
109
- declare type CustomerSet = DocSchema<Customers>;
110
- declare type OrderSet = DocSchema<Orders>;
111
- declare type CartSet = DocSchema<Carts>;
112
- declare type ProductSet = DocSchema<Products>;
113
- declare type CategorySet = DocSchema<Categories>;
114
- declare type BrandSet = DocSchema<Brands>;
115
- declare type CollectionSet = DocSchema<Collections>;
116
- declare type GridSet = DocSchema<Grids>;
117
- declare type StoreSet = DocSchema<Stores>;
118
- declare type ApplicationSet = DocSchema<Applications>;
119
- declare type AuthenticationSet = DocSchema<Authentications>;
120
- declare type SetDocEndpoint<TResource extends Resource> = TResource | `${TResource}/${ResourceId}`;
121
- declare type RequestBody<TConfig extends Config> = TConfig['method'] extends undefined | 'get' | 'delete' ? undefined : TConfig['method'] extends 'patch' ? any : TConfig['endpoint'] extends SetDocEndpoint<'products'> ? ProductSet : TConfig['endpoint'] extends SetDocEndpoint<'categories'> ? CategorySet : TConfig['endpoint'] extends SetDocEndpoint<'brands'> ? BrandSet : TConfig['endpoint'] extends SetDocEndpoint<'collections'> ? CollectionSet : TConfig['endpoint'] extends SetDocEndpoint<'grids'> ? GridSet : TConfig['endpoint'] extends SetDocEndpoint<'carts'> ? CartSet : TConfig['endpoint'] extends SetDocEndpoint<'orders'> ? OrderSet : TConfig['endpoint'] extends SetDocEndpoint<'customers'> ? CustomerSet : TConfig['endpoint'] extends SetDocEndpoint<'stores'> ? StoreSet : TConfig['endpoint'] extends SetDocEndpoint<'applications'> ? ApplicationSet : TConfig['endpoint'] extends SetDocEndpoint<'authentications'> ? AuthenticationSet : any;
122
- declare type ErrorBody = {
108
+ type DocSchema<Document extends any> = Omit<Document, '_id' | 'store_id' | 'store_ids' | 'created_at' | 'updated_at'>;
109
+ type CustomerSet = DocSchema<Customers>;
110
+ type OrderSet = DocSchema<Orders>;
111
+ type CartSet = DocSchema<Carts>;
112
+ type ProductSet = DocSchema<Products>;
113
+ type CategorySet = DocSchema<Categories>;
114
+ type BrandSet = DocSchema<Brands>;
115
+ type CollectionSet = DocSchema<Collections>;
116
+ type GridSet = DocSchema<Grids>;
117
+ type StoreSet = DocSchema<Stores>;
118
+ type ApplicationSet = DocSchema<Applications>;
119
+ type AuthenticationSet = DocSchema<Authentications>;
120
+ type SetDocEndpoint<TResource extends Resource> = TResource | `${TResource}/${ResourceId}`;
121
+ type RequestBody<TConfig extends Config> = TConfig['method'] extends undefined | 'get' | 'delete' ? undefined : TConfig['method'] extends 'patch' ? any : TConfig['endpoint'] extends SetDocEndpoint<'products'> ? ProductSet : TConfig['endpoint'] extends SetDocEndpoint<'categories'> ? CategorySet : TConfig['endpoint'] extends SetDocEndpoint<'brands'> ? BrandSet : TConfig['endpoint'] extends SetDocEndpoint<'collections'> ? CollectionSet : TConfig['endpoint'] extends SetDocEndpoint<'grids'> ? GridSet : TConfig['endpoint'] extends SetDocEndpoint<'carts'> ? CartSet : TConfig['endpoint'] extends SetDocEndpoint<'orders'> ? OrderSet : TConfig['endpoint'] extends SetDocEndpoint<'customers'> ? CustomerSet : TConfig['endpoint'] extends SetDocEndpoint<'stores'> ? StoreSet : TConfig['endpoint'] extends SetDocEndpoint<'applications'> ? ApplicationSet : TConfig['endpoint'] extends SetDocEndpoint<'authentications'> ? AuthenticationSet : any;
122
+ type ErrorBody = {
123
123
  status: number;
124
124
  error_code: number;
125
125
  message: string;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/api",
3
3
  "type": "module",
4
- "version": "0.0.126",
4
+ "version": "0.0.128",
5
5
  "description": "E-Com Plus Cloud Commerce APIs client/adapter",
6
6
  "main": "lib/api.js",
7
7
  "types": "lib/api.d.ts",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-correios",
3
3
  "type": "module",
4
- "version": "0.0.126",
4
+ "version": "0.0.128",
5
5
  "description": "E-Com Plus Cloud Commerce app for Correios shipping calculation",
6
6
  "main": "lib/correios.js",
7
7
  "repository": {
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@cloudcommerce/api": "workspace:*",
23
- "axios": "^1.1.3",
23
+ "axios": "^1.2.0",
24
24
  "xml2js": "^0.4.23"
25
25
  },
26
26
  "devDependencies": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-custom-shipping",
3
3
  "type": "module",
4
- "version": "0.0.126",
4
+ "version": "0.0.128",
5
5
  "description": "E-Com Plus Cloud Commerce app for custom shipping methods",
6
6
  "main": "lib/custom-shipping.js",
7
7
  "repository": {
@@ -32,9 +32,11 @@ export default async ({ params, application }) => {
32
32
  return response;
33
33
  };
34
34
 
35
- const addDiscount = (discount, flag, label) => {
35
+ const addDiscount = (discount, flag, label, maxDiscount) => {
36
36
  let value;
37
- const maxDiscount = params.amount[discount.apply_at || 'total'];
37
+ if (typeof maxDiscount !== 'number') {
38
+ maxDiscount = params.amount[discount.apply_at || 'total'];
39
+ }
38
40
  if (maxDiscount) {
39
41
  // update amount discount and total
40
42
  if (discount.type === 'percentage') {
@@ -82,6 +84,11 @@ export default async ({ params, application }) => {
82
84
  }
83
85
  const kitDiscounts = getValidDiscountRules(config.product_kit_discounts, params, params.items)
84
86
  .sort((a, b) => {
87
+ if (!Array.isArray(a.product_ids) || !a.product_ids.length) {
88
+ if (Array.isArray(b.product_ids) && b.product_ids.length) {
89
+ return 1;
90
+ }
91
+ }
85
92
  if (a.min_quantity > b.min_quantity) {
86
93
  return -1;
87
94
  }
@@ -98,6 +105,8 @@ export default async ({ params, application }) => {
98
105
  });
99
106
  // prevent applying duplicated kit discount for same items
100
107
  let discountedItemIds = [];
108
+ // check buy together recommendations
109
+ const buyTogether = [];
101
110
 
102
111
  kitDiscounts.forEach((kitDiscount, index) => {
103
112
  if (kitDiscount) {
@@ -106,39 +115,101 @@ export default async ({ params, application }) => {
106
115
  : [];
107
116
  let kitItems = productIds.length
108
117
  ? params.items.filter((item) => item.quantity && productIds.indexOf(item.product_id) > -1)
109
- : params.items;
110
- kitItems = kitItems.filter((item) => discountedItemIds.indexOf(item._id) === -1);
118
+ : params.items.filter((item) => item.quantity);
119
+ kitItems = kitItems.filter((item) => discountedItemIds.indexOf(item.product_id) === -1);
120
+ if (!kitItems.length) {
121
+ return;
122
+ }
123
+
124
+ const recommendBuyTogether = () => {
125
+ if (
126
+ params.items.length === 1
127
+ && productIds.length <= 4
128
+ && buyTogether.length < 300
129
+ ) {
130
+ const baseProductId = params.items[0].product_id;
131
+ if (productIds.indexOf(baseProductId) === -1) {
132
+ return;
133
+ }
134
+ const baseItemQuantity = params.items[0].quantity || 1;
135
+ const perItemQuantity = kitDiscount.min_quantity > 2
136
+ ? Math.max(kitDiscount.min_quantity / (productIds.length - 1) - baseItemQuantity, 1)
137
+ : 1;
138
+ const buyTogetherProducts = {};
139
+ productIds.forEach((productId) => {
140
+ if (productId !== baseProductId) {
141
+ buyTogetherProducts[productId] = perItemQuantity;
142
+ }
143
+ });
144
+ if (Object.keys(buyTogetherProducts).length) {
145
+ buyTogether.push({
146
+ products: buyTogetherProducts,
147
+ discount: {
148
+ type: kitDiscount.discount.type,
149
+ value: kitDiscount.discount.value,
150
+ },
151
+ });
152
+ }
153
+ }
154
+ };
155
+
156
+ const discount = { ...kitDiscount.discount };
111
157
  if (kitDiscount.min_quantity > 0) {
112
158
  // check total items quantity
113
- let totalQuantity = 0;
114
- kitItems.forEach(({ quantity }) => {
115
- totalQuantity += quantity;
116
- });
117
- if (totalQuantity < kitDiscount.min_quantity) {
118
- return;
119
- }
120
- if (kitDiscount.discount.type === 'fixed' && kitDiscount.cumulative_discount !== false) {
121
- kitDiscount.discount.value *= Math.floor(totalQuantity / kitDiscount.min_quantity);
159
+ if (kitDiscount.same_product_quantity) {
160
+ kitItems = kitItems.filter((item) => item.quantity >= kitDiscount.min_quantity);
161
+ } else {
162
+ let totalQuantity = 0;
163
+ kitItems.forEach(({ quantity }) => {
164
+ totalQuantity += quantity;
165
+ });
166
+ if (totalQuantity < kitDiscount.min_quantity) {
167
+ if (productIds.length > 1 && kitDiscount.check_all_items !== false) {
168
+ recommendBuyTogether();
169
+ return;
170
+ }
171
+ return;
172
+ }
173
+ if (discount.type === 'fixed' && kitDiscount.cumulative_discount !== false) {
174
+ discount.value *= Math.floor(totalQuantity / kitDiscount.min_quantity);
175
+ }
122
176
  }
123
177
  }
124
178
 
125
- if (!params.amount || !(kitDiscount.discount.min_amount > params.amount.total)) {
179
+ if (!params.amount || !(discount.min_amount > params.amount.total)) {
126
180
  if (kitDiscount.check_all_items !== false) {
127
181
  for (let i = 0; i < productIds.length; i++) {
128
182
  const productId = productIds[i];
129
- if (productId
130
- && !kitItems.find((item) => item.quantity && item.product_id === productId)) {
183
+ if (
184
+ productId
185
+ && !kitItems.find((item) => item.quantity && item.product_id === productId)
186
+ ) {
131
187
  // product not on current cart
188
+ recommendBuyTogether();
132
189
  return;
133
190
  }
134
191
  }
135
192
  }
136
193
  // apply cumulative discount \o/
137
- addDiscount(kitDiscount.discount, `KIT-${(index + 1)}`, kitDiscount.label);
194
+ if (kitDiscount.same_product_quantity) {
195
+ kitItems.forEach((item, i) => {
196
+ addDiscount(
197
+ discount,
198
+ `KIT-${(index + 1)}-${i}`,
199
+ kitDiscount.label,
200
+ ecomUtils.price(item) * (item.quantity || 1),
201
+ );
202
+ });
203
+ } else {
204
+ addDiscount(discount, `KIT-${(index + 1)}`, kitDiscount.label);
205
+ }
138
206
  discountedItemIds = discountedItemIds.concat(kitItems.map((item) => item.product_id));
139
207
  }
140
208
  }
141
209
  });
210
+ if (buyTogether.length) {
211
+ response.buy_together = buyTogether;
212
+ }
142
213
 
143
214
  // gift products (freebies) campaings
144
215
  if (Array.isArray(config.freebies_rules)) {
@@ -162,7 +233,7 @@ export default async ({ params, application }) => {
162
233
  // start calculating discount
163
234
  let value = 0;
164
235
  rule.product_ids.forEach((productId) => {
165
- const item = params.items.find((item) => productId === item.product_id);
236
+ const item = params.items.find((_item) => productId === _item.product_id);
166
237
  if (item) {
167
238
  value += ecomUtils.price(item);
168
239
  }
@@ -302,8 +373,11 @@ export default async ({ params, application }) => {
302
373
  // eslint-disable-next-line no-await-in-loop
303
374
  const { data } = await api.get(`${endpoint}${query}`);
304
375
  countOrders = data.result.length;
305
- } catch (e) {
306
- countOrders = max;
376
+ } catch (err) {
377
+ return {
378
+ error: 'CANT_CHECK_USAGE_LIMITS',
379
+ message: err.message,
380
+ };
307
381
  }
308
382
 
309
383
  if (countOrders >= max) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-discounts",
3
3
  "type": "module",
4
- "version": "0.0.126",
4
+ "version": "0.0.128",
5
5
  "description": "E-Com Plus Cloud Commerce app for complex discount rules",
6
6
  "main": "lib/discounts.js",
7
7
  "repository": {
@@ -20,7 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@cloudcommerce/api": "workspace:*",
23
- "@ecomplus/utils": "^1.4.1"
23
+ "@ecomplus/utils": "1.5.0-rc.3"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@cloudcommerce/types": "workspace:*"
@@ -0,0 +1 @@
1
+ Please refer to GitHub [repository releases](https://github.com/ecomplus/cloud-commerce/releases) or monorepo unified [CHANGELOG.md](https://github.com/ecomplus/cloud-commerce/blob/main/CHANGELOG.md).
@@ -0,0 +1 @@
1
+ # `@cloudcommerce/app-emails`
@@ -0,0 +1,19 @@
1
+ import logger from 'firebase-functions/logger';
2
+ import handleOrder from './functios-lib/handle-orders.js';
3
+
4
+ const handleApiEvent = async ({
5
+ evName, apiEvent, apiDoc, app,
6
+ }) => {
7
+ const appData = { ...app.data, ...app.hidden_data };
8
+ const resourceId = apiEvent.resource_id;
9
+ const key = `${evName}_${resourceId}`;
10
+ if (Array.isArray(appData.ignore_events)
11
+ && appData.ignore_events.includes(evName)) {
12
+ logger.info('>> ', key, ' - Ignored event');
13
+ return null;
14
+ }
15
+ return handleOrder(apiEvent, app, apiDoc);
16
+ };
17
+
18
+ export default handleApiEvent;
19
+ // # sourceMappingURL=events-to-app-emails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events-to-app-emails.js","sourceRoot":"","sources":["../src/events-to-app-emails.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,WAAW,MAAM,8BAA8B,CAAC;AAEvD,MAAM,cAAc,GAAoB,KAAK,EAAE,EAC7C,MAAM,EACN,QAAQ,EACR,MAAM,EACN,GAAG,GACJ,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC;IACxC,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,UAAU,EAAE,CAAC;IAEtC,IACE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;WACjC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EACzC;QACA,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,kBAAkB,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC;KACb;IAED,OAAO,WAAW,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAgB,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ /* eslint-disable import/prefer-default-export */
2
+ import '@cloudcommerce/firebase/lib/init';
3
+ import config from '@cloudcommerce/firebase/lib/config';
4
+ import functions from 'firebase-functions';
5
+ import { createAppEventsFunction } from '@cloudcommerce/firebase/lib/helpers/pubsub';
6
+ import handleApiEvent from './events-to-app-emails.js';
7
+ import handleAbandonedCarts from './functios-lib/abandoned-carts.js';
8
+
9
+ const { httpsFunctionOptions: { region } } = config.get();
10
+
11
+ export const emails = {
12
+ onStoreEvent: createAppEventsFunction('emails', handleApiEvent),
13
+ cronAbandonedCarts: functions.region(region).pubsub
14
+ .schedule('25 */3 * * *')
15
+ .onRun(() => {
16
+ return handleAbandonedCarts();
17
+ }),
18
+ };
19
+ // # sourceMappingURL=firebase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firebase.js","sourceRoot":"","sources":["../src/firebase.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,OAAO,kCAAkC,CAAC;AAC1C,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,uBAAuB,GAExB,MAAM,4CAA4C,CAAC;AACpD,OAAO,cAAc,MAAM,wBAAwB,CAAC;AACpD,OAAO,oBAAoB,MAAM,gCAAgC,CAAC;AAElE,MAAM,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;AAE1D,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,YAAY,EAAE,uBAAuB,CACnC,QAAQ,EACR,cAAiC,CAClC;IAED,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM;SAChD,QAAQ,CAAC,cAAc,CAAC;SACxB,KAAK,CAAC,GAAG,EAAE;QACV,OAAO,oBAAoB,EAAE,CAAC;IAChC,CAAC,CAAC;CACL,CAAC"}
@@ -0,0 +1,86 @@
1
+ import logger from 'firebase-functions/lib/logger';
2
+ import api from '@cloudcommerce/api';
3
+ import transactionalMails from '@ecomplus/transactional-mails';
4
+ import { getFirestore } from 'firebase-admin/firestore';
5
+ import email from '@cloudcommerce/emails';
6
+ import triggerActions from './trigger-actions.js';
7
+ import { getStore } from './utils.js';
8
+
9
+ export default async () => {
10
+ try {
11
+ // logger.log('# Check abandoned carts');
12
+ const [application] = (await api.get('applications?app_id=1243&fields=hidden_data,data')).data.result;
13
+ const store = getStore();
14
+ const appData = {
15
+ ...application.data,
16
+ ...application.hidden_data,
17
+ };
18
+ const lang = (appData.lang && appData.lang === 'Inglês') ? 'en_us' : (store.lang || 'pt_br');
19
+ let filterCartsDate = '';
20
+ const limitDate = new Date();
21
+ /*
22
+ TODO:
23
+ SES app abandoned_cart_delay is set in days rather than hours as suggested here
24
+ */
25
+ limitDate.setHours(limitDate.getHours() - (appData.abandoned_cart_delay || 3));
26
+ const lastNotificationSent = (await getFirestore().doc('emails/lastCartSent').get()).data();
27
+ if (lastNotificationSent && lastNotificationSent.time) {
28
+ const lastNotifiedCart = new Date(lastNotificationSent.time);
29
+ filterCartsDate += `&create_at>=${lastNotifiedCart.toISOString()}`;
30
+ } else {
31
+ const limitStartDate = new Date();
32
+ limitStartDate.setHours(limitDate.getHours() - (8 * (appData.abandoned_cart_delay || 3)));
33
+ filterCartsDate += `&create_at>=${limitStartDate.toISOString()}`;
34
+ }
35
+ filterCartsDate += `&created_at<=${limitDate.toISOString()}`;
36
+ const { data: { result: abandonedCarts } } = await api.get(`carts?completed=false&available=true${filterCartsDate}&limit=100&sort=created_at`);
37
+ if (abandonedCarts.length && store) {
38
+ for (let i = 0; i < abandonedCarts.length; i++) {
39
+ const cart = abandonedCarts[i];
40
+ const customerId = cart.customers ? cart.customers[0] : null;
41
+ // logger.log(`>> Preparing to send email to: ${customerId}, about cart:${cart._id} `);
42
+ if (customerId) {
43
+ // eslint-disable-next-line no-await-in-loop
44
+ const customer = (await api.get(`customers/${customerId}`)).data;
45
+ if (cart && customer) {
46
+ // eslint-disable-next-line no-await-in-loop
47
+ const html = await transactionalMails.abandonedCart(store, customer, cart, lang);
48
+ const subject = triggerActions.abandonedCart.subject[lang];
49
+ const to = [{
50
+ name: customer.display_name,
51
+ email: customer.main_email,
52
+ }];
53
+ const { templateId } = appData.abandoned_car;
54
+ // const template = transactionalMails.template(abandonedCart)
55
+ // TODO: Or another APP? (template MJML)
56
+ if (html && subject && to) {
57
+ // eslint-disable-next-line no-await-in-loop
58
+ await email.send({
59
+ to,
60
+ subject,
61
+ html,
62
+ templateId,
63
+ templateData: {
64
+ store,
65
+ customer,
66
+ cart,
67
+ lang,
68
+ },
69
+ // template
70
+ });
71
+ // save last cart
72
+ getFirestore()
73
+ .doc('emails/lastCartSent')
74
+ .set({
75
+ time: cart.created_at,
76
+ }).catch(logger.error);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ }
82
+ } catch (err) {
83
+ logger.error('(App Emails) Error => ', err);
84
+ }
85
+ };
86
+ // # sourceMappingURL=abandoned-carts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abandoned-carts.js","sourceRoot":"","sources":["../../src/functios-lib/abandoned-carts.ts"],"names":[],"mappings":"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"}